XMobar在第一个XMonad工作区隐藏了

8

我安装了XMonad和XMobar,并进行了配置。当我启动XMonad并在任何非第一个工作区打开XMobar时,已打开的程序将位于XMobar下方。但是,在第一个工作区打开任何程序时,XMobar会隐藏起来。

以下是我的XMonad和XMobar配置:

--XMonad:
import XMonad
import XMonad.Util.Run(spawnPipe)
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.EZConfig(additionalKeys)
import System.IO
main = do
    xmproc <- spawnPipe "xmobar ~/.xmobarrc"
    xmonad $ defaultConfig
        {  manageHook = manageDocks <+> manageHook defaultConfig
        , layoutHook = avoidStruts $ layoutHook defaultConfig
        , logHook = dynamicLogWithPP xmobarPP
                        { ppOutput = hPutStrLn xmproc
                        , ppTitle = xmobarColor "green" "" . shorten 50 
                        }
        , borderWidth = 2
        , terminal = "terminator"
        , normalBorderColor = "#cccccc"
        , focusedBorderColor = "#cd8b00"        
        }
--XMobar:
Config { font = "-misc-fixed-*-*-*-*-33-*-*-*-*-*-*-*"
    , bgColor = "black"
    , fgColor = "grey"
    , position = TopW L 90
    , commands = [ Run Cpu ["-L","3","-H","50",
                               "--normal","green","--high","red"] 10
                     , Run Memory ["-t","Mem: <usedratio>%"] 10
                     , Run Swap [] 10
                     , Run Com "uname" ["-s","-r"] "" 36000
                     , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
                     , Run Com "~/.xmonad/batt" [] "" 300
                     , Run StdinReader
                     ]
    , sepChar = "%"
    , alignSep = "}{"
    , template = "%StdinReader% }{ %cpu% | %memory% | %.xmonad/batt% | <fc=#ee9a00>%date%</fc>"
    }

如果我理解正确的话,只有在第一个工作区程序才会被放置在 xmobar 的上方?使用您的设置我无法复现这个问题(使用 xterm 进行测试)。我猜测您可能同时启动了其他类型的窗口管理器和 xmonad。请尝试从“~/.xsession”中启动 xmonad 而不加载任何其他程序,看看是否可以重现此行为。 - deshtop
当我重新编译xmonad后,我遇到了同样的问题,之后xmobar总是隐藏起来了。 - Cirquit
我认为状态栏会掉落到背景图像下面。除了硬编码“lowerOnStart = False”之外,我不知道有什么解决方法。 - Konrad Eisele
1个回答

7
我在使用 xmobar v0.24 和 xmonad v0.12 时遇到了同样的问题。当我快速重新编译两次(meta-q)时,我也在所有工作区遇到了这个问题。我通过在我的 .xmobarrc 中将 overrideRedirect 设置为False 来解决了这个问题。

overrideRedirect

如果您正在运行一个平铺窗口管理器中的 xmobar,则可能需要将此选项设置为 False,以便它像一个停靠应用程序一样运行。默认值为 True。


4
我刚刚发现 overrideRedirect 可能被认为是不好的做法?这个解决方案同样有效:http://unix.stackexchange.com/a/303242/24690 - Stephen Niedzielski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接