如何调试 XMonad.Layout.NoBorders.smartBorders 不起作用?

如何调试 XMonad.Layout.NoBorders.smartBorders 不起作用?

自从重置我的 xorg.conf 以使用第二台显示器以来,XMonad.Layout.NoBorders.smartBorders不再有效:即使任一显示器上仅打开一个窗口,并且没有停靠栏,主窗口仍然有边框。

有人可能知道如何进行调试吗?例如将 XMonad 堆栈集转储到标准输出?谢谢。

编辑:或者,假设 smartBorders 的实现不正确或者与其他 layoutHooks 有奇怪的交互或者我犯了一个错误,是否有一种快速简便的方法来编写 layoutHook 来检查 XMonad 堆栈集,检查length the_current_stack(当前屏幕中的窗口)是否为 1,然后动态地将布局切换到全屏(如果打开了新窗口,则反之亦然)?

编辑:noBorders似乎有效。其他模块(例如smartBorderflag)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到按键绑定。

相关内容