Xmobar не отображается при использовании с Xmonad

Сегодня я начал с Xmonad и не могу сделать так, чтобы Xmobar отображался поверх макетов. На моем .xmobarrc у меня есть этот код:

...
   , position =     TopW L 100
   , lowerOnStart =     True
   , hideOnStart =      False
   , allDesktops =      True
   , overrideRedirect = True
   , pickBroadest =     False
   , persistent =       True

...

А это мой xmonad.hs:

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import System.IO

main = do
  xmproc <- spawnPipe "xmobar"
  xmonad $ defaultConfig
    { manageHook = manageDocks <+> manageHook defaultConfig
    , layoutHook = avoidStruts  $  layoutHook defaultConfig
    , logHook = dynamicLogWithPP xmobarPP
                    { ppOutput = hPutStrLn xmproc
                    , ppTitle = xmobarColor "green" "" . shorten 50
                    }
    , terminal = "urxvt"
    , modMask = mod4Mask
    }

Xmobar работает с Xmonad, но его не видно. Как я могу это решить? Мне нужно, чтобы Xmobar всегда был виден вверху монитора.


person sivakov512    schedule 13.06.2017    source источник
comment
Я думаю, что некоторые части опоры стойки переместились в модуль EWMH. Можете ли вы попробовать импортировать XMonad.Hooks.EwmhDesktops и изменить вызов xmonad на xmonad . ewmh $ def ...? Если это сработает, я с радостью добавлю это в ответ. Если нет, моим следующим тестом будет проверка того, что xmobar запрашивает нужное количество места, запустив xprop | grep _NET_WM_STRUT и щелкнув xmobar.   -  person Daniel Wagner    schedule 13.06.2017
comment
Это должно выглядеть так? gist.github.com/cryptomaniac512/   -  person sivakov512    schedule 14.06.2017
comment
Мне это кажется правильным. Это работает?   -  person Daniel Wagner    schedule 14.06.2017
comment
Нет( Xmobar работает, но скрыт другими окнами.   -  person sivakov512    schedule 14.06.2017
comment
Тогда... ты провел предложенный мною следующий тест? Что он сказал?   -  person Daniel Wagner    schedule 14.06.2017
comment
Когда я запускаю xprop | grep _NET_WM_STRUT, я получаю этот вывод: _NET_WM_STRUT(CARDINAL) = 0, 0, 21, 0 _NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 21, 0, 0, 0, 0, 0, 0, 1919, 0, 0   -  person sivakov512    schedule 14.06.2017
comment
Мне эти стойки кажутся правильными. Это происходит на всех рабочих пространствах? Это сохраняется, если вы перезагрузите макет? (По умолчанию mod+shift+space перезагрузит макет.)   -  person Daniel Wagner    schedule 14.06.2017
comment
да. Без изменений.   -  person sivakov512    schedule 14.06.2017


Ответы (2)


Решение основано на https://unix.stackexchange.com/questions/288037/.

Я добавляю этот handleEventHook = handleEventHook defaultConfig <+> docksEventHook и теперь Xmobar всегда виден.

person sivakov512    schedule 14.06.2017

Хотя многие другие опубликованные решения также важны, мне пришлось добавить lowerOnStart = False в .xmobarrc, чтобы он не попадал в нижнюю часть стека окон при запуске.

person bbarker    schedule 07.01.2020