XMonad.Layout.NoBorders.smartBorders가 작동하지 않는 것을 디버깅하는 방법은 무엇입니까?

XMonad.Layout.NoBorders.smartBorders가 작동하지 않는 것을 디버깅하는 방법은 무엇입니까?

두 번째 모니터를 사용하도록 xorg.conf를 재설정한 이후,XMonad.Layout.NoBorders.smartBorders더 이상 작동하지 않음: 양쪽 모니터에 하나의 창만 열려 있고 도킹 장치가 없더라도 기본 창에는 여전히 테두리가 있습니다.

누구든지 이것을 디버깅하는 방법을 알 수 있습니까? 예를 들어, 표준 출력으로 설정된 XMonad 스택을 덤프하시겠습니까? 감사해요.

편집: 또는 smartBorders가 잘못 구현되었거나 다른layoutHooks와 이상한 상호 작용이 있거나 실수를 했다고 가정하면 XMonad 스택 세트를 확인하고 length the_current_stack창(현재 화면)을 1로 변경한 다음 레이아웃을 전체 화면으로 동적으로 전환합니까(또는 새 창이 열린 경우 그 반대로)?

편집 : noBorders작동하는 것 같습니다. 다른 모듈(예: smartBorder플래그)은 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키 바인딩에 바인딩됩니다 .

관련 정보