Как использовать 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 я также могу предоставляем весь файл..