自从重置我的 xorg.conf 以使用第二台显示器以来,XMonad.Layout.NoBorders.smartBorders
不再有效:即使任一显示器上仅打开一个窗口,并且没有停靠栏,主窗口仍然有边框。
有人可能知道如何进行调试吗?例如将 XMonad 堆栈集转储到标准输出?谢谢。
编辑:或者,假设 smartBorders 的实现不正确或者与其他 layoutHooks 有奇怪的交互或者我犯了一个错误,是否有一种快速简便的方法来编写 layoutHook 来检查 XMonad 堆栈集,检查length the_current_stack
(当前屏幕中的窗口)是否为 1,然后动态地将布局切换到全屏(如果打开了新窗口,则反之亦然)?
编辑:noBorders
似乎有效。其他模块(例如smartBorder
flag)XMonad.Layout.Spacing.smartBorder
在多屏模式下工作没有问题。上面的代码底部似乎有一个部分涉及“歧义”组合器。
答案1
您可以定义一个X ()
可以通过按键绑定触发的。
例如:
import System.IO
debugStuff :: X ()
debugStuff = withWindowSet (\ws -> do
liftIO $ print ws
liftIO $ logToTmpFile $ show ws
)
myAppendFile :: FilePath -> String -> IO ()
myAppendFile f s = do
withFile f AppendMode $ \h -> do
hPutStrLn h s
logToTmpFile :: String -> IO ()
logToTmpFile = myAppendFile "/tmp/xmonad.log" . (++ "\n")
绑定debugStuff
到按键绑定。