chvt
позволяет Вам изменять свой виртуальный терминал.
От man chvt
:
Команда chvt N делает/dev/ttyN приоритетным терминалом. (Соответствующий экран создается, если он еще не существовал. Для избавлений от неиспользованного VTs используйте deallocvt (1).) Сочетание клавиш (Ctrl-)LeftAlt-FN (с N в диапазоне 1-12) обычно имеет подобный эффект.
Смотря на contrib пакеты XMONAD, Вы найдете XMonad.Actions.WindowGo
, который экспортирует следующую функцию:
runOrRaiseMaster :: String -> Query Bool -> X ()
который берет аргумент строки программы для выполнения, например, "Firefox"; и логический запрос, который используется, чтобы узнать, работает ли он уже через свойства X11, например. (className =? "Firefox")
(см. вершину XMonad.Actions.WindowGo
страница для вариантов).
Так, все, в чем Вы нуждаетесь, должно связать runOrRaiseMaster "firefox" (className =? "Firefox")
к ключу Вы хотите, как объяснено в XMonad.Doc.Extending
, через
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
как часть привязок клавиш Data.Map
из Вашей конфигурации (детали не соглашаются с Вашим способом настроек это, т.е., весь Ваш xmonad.hs
, посмотрите Добавляющие Привязки клавиш).
Обратите внимание, что нет никакого реального смысла в максимизации окна в XMonad. При установке вещей, как объяснено у Вас будет действие Mod4+f следующим образом:
Максимизация может быть эмулирована путем выбора Full
расположение после вызова runOrRaiseMaster
, как описан здесь:
("M-<F1>", sendMessage $ JumpToLayout "Full")
(обратите внимание, что этот пример также демонстрирует XMonad.Util.EZConfig
разрешение более легких определений привязки клавиш)
Объединение этих двух вещей возможно, также. Оба имеют тип X ()
, т.е. они находятся в X Монадах. Используя >>
, который имеет тип (свериться :t (>>)
в ghci
)
(>>) :: Monad m => m a -> m b -> m b
мы имеем (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")
как комбинация два X ()
типы типа X ()
Также и это может таким образом быть связано с ключом.
Пропавшие без вести РЕДАКТИРОВАНИЯ )
в строке кода с >>
Edit2 modm
-> modMask
.
>> (sendMessage $ JumptoLayout "Full")
существует некоторая ошибка с конструктором. Возможно, это - что-то легкое, которое я решу после изучения Haskell. – xralf 24.11.2011, 15:08modm
не работает, я все еще используюcontrolMask
. – xralf 24.11.2011, 15:10xmonad.hs
зафиксировать это; лучше просто взгляните здесь, архив конфигурации и посмотрите, как другие делают это или используют упомянутыйEZConfig
. – sr_ 24.11.2011, 16:17X ()
связывать с ключом должно быть(runOrRaiseMaster ...) >> (sendMessage ...)
, получающийся в,((...,...), (runOrR...) >> (send...) )
(a(
преждеrun...
) – sr_ 24.11.2011, 18:44