Как использовать Dzen вместо Xmobar в этой необычной настройке
Я новичок Haskell, и в настоящее время у меня нет времени, чтобы действительно узнать Haskell, поэтому я прошу помощи у экспертов, которые уже выяснили это. :)
Это моя текущая xmonad.файл hs: https://github.com/Greduan/dotfiles/blob/dd45d287fade73a3191ad313ec37231a8c802942/xmonad/xmonad.hs
Как добавить / настроить привязки клавиш (см. myKeys
переменная) и как я могу изменить с Xmobar на базовый (еще нет конфигурации) Dzen установка.
это настройка, которая, похоже, не используется в любой конфигурации, которую я нашел, и каждый раз, когда eI пытается преобразовать ее в другой формат, она не работает так хорошо.
другой формат main = do etc. etc. etc.
кстати.
а также, как я могу просто преобразование из этого формата в тот, который чаще используется.
2 ответов
о "конвертировании" :
как xmonad.hs - это просто исходный код haskell, который скомпилирован в" ваш "xmonad, на самом деле нет" формата", и есть много способов написать то же самое.
если вы имеете в виду, как конвертировать main
С помощью = to сделать нотация :
main = xmonad =<< statusBar myBar myPP statusbarToggleKey myConfig
здесь вы используете две функции:
на строка состояния функцию, которая принимает четыре аргумента и возвращает
IO (XConfig (ModifiedLayout AvoidStruts l)
. Так что в основном, используя то, что вы передали емуstatusBar
создает соответствующий XConfig и возвращает его, завернутый в монаду ввода-вывода.на xmonad функция принимает XConfig и возвращает IO ()
= statusBar из монады IO и передать его xmonad
.
эквивалент в нотации :
main = do
config <- statusBar myBar myPP statusbarToggleKey myConfig
xmonad config
но как только вы понимаете, что делают операторы монад, они могут выглядеть более элегантно, чем нотация.
использование dzen:
если вы хотите продолжать использовать statusBar
функция, вам просто нужно изменить аргументы, которые вы передаете ей.
-- the command line to launch the status bar
myBar = "dzen2 -y -1" --that's for dzen at the bottom of the screen
-- the PP
myPP = defaultPP
комбинации клавиш :
вы можете увидеть типа keys
на определение XConfig. Это принимая функции XConfig и возврат карты.
вот пример "красивого" способа написать его, используя
что касается клавиш, используйте additionalKeys
(из модуля XMonad.Утиль.EZConfig).
Вот некоторые ключевые привязки, которые я использую (возможно, вам нужно больше импорта, чтобы все работало):
defaultConfig
{
-- stuff
} `additionalKeys`
[ ((0, xK_Print), spawn "scrot")
, ((mod1Mask, xK_Print), spawn "scrot -m -d 1")
, ((mod1Mask .|. shiftMask, xK_t), spawn "killall trayer && trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --transparent true --width 5 --alpha 255 --tint 0x191970 --height 17")
, ((mod1Mask, xK_p), spawn "dmenu_run")
, ((mod1Mask, xK_b ), sendMessage ToggleStruts)
, ((mod1Mask, xK_m ), focusUrgent)
, ((mod1Mask, xK_n ), D.dzen "Hi, mom!" (seconds 4))
, ((mod1Mask, xK_f ), goToSelected defaultGSConfig)
, ((mod4Mask, xK_l ), spawn "cmus-remote -n ") --next song
, ((mod4Mask, xK_h ), spawn "cmus-remote -r") --previous song
, ((mod4Mask, xK_s ), spawn "cmus-remote -s") --stop
, ((mod4Mask, xK_p ), spawn "cmus-remote -p") --play
, ((mod4Mask, xK_Right ), spawn "cmus-remote -k +5") --forward 5 sec
, ((mod4Mask, xK_Left ), spawn "cmus-remote -k -5") --rewind 5 sec
, ((mod4Mask, xK_KP_Subtract ), spawn "amixer -q sset PCM 2dB-") --quieter
, ((mod4Mask, xK_KP_Add ), spawn "amixer -q sset PCM 2dB+") --louder
, ((mod1Mask .|. shiftMask, xK_udiaeresis), removeWorkspace)
, ((mod1Mask .|. shiftMask, xK_numbersign), selectWorkspace defaultXPConfig)
]
на D.dzen
происходит от import qualified XMonad.Util.Dzen as D
. Я не использую dzen в качестве строки состояния, но, возможно, просмотр этого модуля может дать вам некоторые подсказки.
edit: вот конфигурация dzen:И1's_xmonad.hs. Взято с этого сайта со многими примерами: Config_archive.
edit2: я просто немного поиграл с новым statusBar
функция, которая, по-видимому, совершенно новая и придумала рабочий пример.
edit3: удалил logHook, поскольку он не нужен с statusBar
. main
теперь выглядит так:
main = do
xmonad =<< statusBar "dzen2" myPP toggleStrutsKey
defaultConfig { --stuff
}
на keys
настройка не сработала для меня, и я должен был придерживаться additionalKeys
(не забудьте тогда скобки):
main = do
xmonad =<< statusBar "dzen2" myPP toggleStrutsKey
(defaultConfig { --stuff
} `additionalKeys`
[ -- key bindings
])
однажды я привел в порядок свою xmonad.hs я также могу предоставляем весь файл..