You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XMonad如何仅保留分块间间距,移除外围间距?

如何在XMonad中仅保留分块间间距、移除外围间距?

我想实现的效果是:只保留分块(tiles)之间的间距,让最左侧分块的左侧、最顶部分块的顶部等外围区域没有间距。当前的布局效果如下:
XMonad带外围间距的分块布局

我查阅了XMonad的两个相关模块文档,但没找到合适的移除外围间距的选项:

  • XMonad.Layout.Spacing
  • XMonad.Layout.Gaps

以下是我当前在xmonad.hs中的间距配置:

myConfig = def
    ...
    -- , layoutHook = smartSpacingWithEdge 10 $ myLayout
    , layoutHook = smartSpacing 10 $ myLayout
    ...

编辑:测试解决方案后的问题

我尝试了相关解决方案,但发现屏幕边框、窗口边框和间隙(gaps)是完全独立的叠加关系——没法通过将屏幕边框设为0来抵消最外层的窗口边框,我也搞不清间隙和屏幕边框的区别,二者看起来都是在同一位置添加外围边框。

测试代码如下:

testSpace = spacingRaw True (Border 30 30 30 30) True (Border 40 40 40 40) True
testGaps = gaps [(U,20), (D,20), (L,20), (R,20)]
expandedL = testGaps . testSpace $ myLayout

我把间隙设为绿色、屏幕边框设为蓝色、窗口边框设为红色,不确定哪个层级在最外层,当前间隙(绿色)是最靠近屏幕边缘的:
间距与间隙叠加效果

进一步测试后发现,间隙、屏幕边框和窗口边框三者互不影响。比如使用以下代码:

--                                           `False` 和左侧参数设为全0的`True`效果一致
--                                           |
testSpace = spacingRaw True (Border 0 0 0 0) True (Border 40 40 40 40) True
testGaps = gaps [(U,0), (D,0), (L,0), (R,0)]
expandedL = testGaps . testSpace $ myLayout

虽然移除了间隙和屏幕边框(绿色和蓝色矩形),但窗口边框(红色矩形)依然存在,导致外围间距还是没被去掉。


内容的提问来源于stack exchange,提问作者Andreas Näsman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:55:23