I have been using xmonad on Ubuntu Hardy and extremely happy with its model. When compared to my previous window manager stumpwm, it is missing a few niceties but more than makes up for those with its flexible layout management. But I nearly gave up on xmonad when I started running into an issue which is a real deal breaker.
The problem is this: everything is fine and dandy and for no apparent reason, xmonad stops responding to keyboard. The current window, however, accepts the keyboard input. My only workaround was to restart my session. Completely unacceptable.
Googling for "xmonad stops responding" brought up this bug report http://code.google.com/p/xmonad/issues/detail?id=97. Comment number 26 clued me in to what might be happening. Some more googling and I chanced upon this http://markmail.org/message/4gmek2d5pxv76dlw#query:xmonad%20xmobar%20dynamiclog+page:1+mid:rnmlvyyft33gnjpm+state:results, Andrea Rossato's last entry on that thread gives you the solution which is to run the StdinReader in xmobar's configuration.
Finally, I understand what is happening. xmonad is writing to stdout and xmobar to which the xmonad's output is being piped, must read it or xmonad will block when the pipe fills up. The problem is with xmobar configuration below.
Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"The "Run StdinReader" line is the key to fixing this problem. I think it is optional to add %StdinReader% to the template.
, bgColor = "black"
, fgColor = "grey"
, position = Top
, commands = [ Run Weather "KSQL" ["-t",": F/ C","-L","18","-H","80","--normal","green","--high","red","--low","lightblue"] 36000
, Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10
, Run Network "eth1" ["-L","0","-H","32","--normal","green","--high","red"] 10
, Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
, Run Memory ["-t","Mem:%"] 10
, Run Swap [] 10
, Run Com "uname" ["-s","-r"] "" 36000
, Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
, Run StdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = "%cpu% | %memory% * %swap% | %eth0% - %eth1% }{%date% | %KSQL% %StdinReader%"
}
http://code.google.com/p/xmonad/issues/detail?id=91
ReplyDeleteIs issue specifically about status bar pipes, and talks about how to unblock so can restart xmonad with fixed configurations. Was thought to be fixed, so not an open bug, currently, but still can reproduce in darcs xmonad as of end of Feb 2009.