如何使用 xmonad 在每个 window 焦点上做间距?
How to do spacing per window on focus with xmonad?
我正在尝试在 window 周围设置焦点而不是边框。它更容易看到,window 是重点。
XMonad.Actions.Spacing
模块不包含根据 window id 制作间距的方法,我可以这样做:
myHook ConfigureEvent{ev_event_type = focusIn, ev_window = id} = do
setSpacing id opacity
有什么办法吗,我需要什么?
免责声明:下面的代码尚未经过测试,很可能不会编译,即使编译了,也可能有xmonad
或 xmonad-contrib
不导出此功能的充分理由,因为它似乎破坏了平铺设置......这个答案不适合评论,但应该考虑建议而不是解决方案.
您可以复制粘贴一些操作代码并根据您的意愿进行修改。例如从 XMonad.Actions.NoBorders
模仿 toggleBorder
你可以获得 width 和 heigth 属性并将它们设置为原始值的 95%。
-- Maybe more inputs are necesary, check for compiler errors
import XMonad
resizeOnFocus :: Window -> X ()
resizeOnFocus w = do
withDisplay $ \d -> io $ do
windowW <- wa_width <$> getWindowAttributes d w
windowH <- wa_height <$> getWindowAttributes d w
let newW = floor $ fromIntegral windowW * 0.95
newH = floor $ fromIntegral windowH * 0.95
resizeWindow d w newW newH
将它与 withFocused
一起作为标准动作使用 ((modMask x, xK_g ), withFocused resizeOnFocus )
我正在尝试在 window 周围设置焦点而不是边框。它更容易看到,window 是重点。
XMonad.Actions.Spacing
模块不包含根据 window id 制作间距的方法,我可以这样做:
myHook ConfigureEvent{ev_event_type = focusIn, ev_window = id} = do
setSpacing id opacity
有什么办法吗,我需要什么?
免责声明:下面的代码尚未经过测试,很可能不会编译,即使编译了,也可能有xmonad
或 xmonad-contrib
不导出此功能的充分理由,因为它似乎破坏了平铺设置......这个答案不适合评论,但应该考虑建议而不是解决方案.
您可以复制粘贴一些操作代码并根据您的意愿进行修改。例如从 XMonad.Actions.NoBorders
模仿 toggleBorder
你可以获得 width 和 heigth 属性并将它们设置为原始值的 95%。
-- Maybe more inputs are necesary, check for compiler errors
import XMonad
resizeOnFocus :: Window -> X ()
resizeOnFocus w = do
withDisplay $ \d -> io $ do
windowW <- wa_width <$> getWindowAttributes d w
windowH <- wa_height <$> getWindowAttributes d w
let newW = floor $ fromIntegral windowW * 0.95
newH = floor $ fromIntegral windowH * 0.95
resizeWindow d w newW newH
将它与 withFocused
一起作为标准动作使用 ((modMask x, xK_g ), withFocused resizeOnFocus )