如何配置XMonad让Conky作为dock不被窗口遮挡?
解决XMonad为Conky预留空间的问题
一、调整Conky配置(.conkyrc)
- 将
own_window_type固定设置为dock,desktop类型无法被XMonad的manageDocks识别为需要预留空间的dock组件。 - 添加窗口提示配置,明确告知窗口管理器Conky的属性:
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pagerbelow:确保Conky始终处于其他窗口后方sticky:让Conky在所有工作区保持显示skip_taskbar/skip_pager:避免Conky出现在任务栏和分页器中
- 配置
alignment指定Conky的固定位置(如alignment top_right或bottom_left),同时设置minimum_size固定其尺寸,避免布局因窗口大小变化混乱。
二、修正XMonad配置
- 删除
className =? "Conky" --> doIgnore这一行:doIgnore会让XMonad完全忽略Conky窗口,导致manageDocks无法识别它并预留空间。 - 确保
avoidStruts正确包裹所有布局,示例:myLayout = avoidStruts (tiled ||| Mirror tiled ||| Full) where tiled = Tall nmaster delta ratio nmaster = 1 ratio = 1/2 delta = 3/100 - 确认
main函数中docks转换器已正确应用,它是处理dock窗口空间预留的核心逻辑。
三、验证与额外处理
- 修改配置后,先执行
killall conky关闭现有进程,按Mod+Q重启XMonad,再重新启动Conky。 - 若问题仍存在,用
xprop工具点击Conky窗口,查看WM_CLASS值,确认XMonad配置中匹配的类名是否正确(部分版本Conky的类名为小写conky)。 - 关于dzen2替代方案:若Conky配置始终不生效,可尝试将Conky输出管道到dzen2,它天生适配窗口管理器的dock场景。示例启动命令:
此方式下dzen2窗口会被conky -c ~/.conkyrc_dzen | dzen2 -x 0 -y 0 -w 1920 -h 24 -fn "Monospace-10" -bg "#222222" -fg "#ffffff"manageDocks自动识别,无需额外复杂配置。
内容的提问来源于stack exchange,提问作者hilbor
相关产品推荐
相关产品推荐

