Xmonad

如何調試 XMonad.Layout.NoBorders.smartBorders 不起作用?

  • March 8, 2020

由於重置我的 xorg.conf 以使用第二個監視器,XMonad.Layout.NoBorders.smartBorders不再起作用:即使在任一監視器上只打開一個視窗,並且沒有停靠,主視窗仍然有邊框。

可能有人知道如何進行調試嗎?例如通過將 XMonad 堆棧集轉儲到標準輸出?謝謝你。

編輯:或者,假設 smartBorders 的實現不正確或與其他 layoutHooks 有奇怪的互動,或者我犯了錯誤,是否有一種快速簡便的方法來編寫一個檢查 XMonad 堆棧集的 layoutHook,檢查是否length the_current_stack(目前螢幕中的視窗)為 1,然後將佈局動態切換為全屏(如果打開新視窗,反之亦然)?

編輯:noBorders似乎工作。其他模組如smartBorder標誌XMonad.Layout.Spacing.smartBorder在多屏模式下工作沒有問題。上面的程式碼底部似乎有一個部分涉及“歧義”組合器。

您可以定義一個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到鍵綁定。

引用自:https://unix.stackexchange.com/questions/571208