On Fri, Aug 03, 2007 at 06:58:02PM -0700, Michael Vanier wrote:
I've been playing around with xmonad 0.2, and so far it's been pretty pleasant. I have a few questions. I'm running xmonad in wide mode exclusively, since my laptop screen is fairly small.
First, when I run emacs, it initially comes up in non-fullscreen mode (basically, it uses the default dimensions I set in my .Xresources file, which don't quite fill the screen). When I cycle through other windows and come back to emacs the WM resizes it correctly. I'm wondering why it doesn't do so right away. Is this a bug?
Yes, it's a bug, fixed in darcs: Sun Jun 3 13:31:53 PDT 2007 Stefan O'Rear <stefanor@cox.net> * Correctly handle resize requests (-12 +22) Xmonad now implements resize requests in a consistent manner. * If the window is FLOATING, we implement the program's request, and correctly update the StackSet; so it will keep the new size. This should work correctly even for non-current windows. * Otherwise, we ignore the request. As per ICCCM, we send a fake ConfigureNotify containing the new (unchanged) geometry. This is perfectly ICCCM compliant, and if it breaks your client, it's your own fault. This patch requires setConfigureEvent, which is added to X11-extras by a patch approximately contemporaneous with this one.
Second, I was wondering if there is a way to display the current workspace number and/or window title in a dzen status bar.
It's been done. I think it involves: (in Config.hs) logHook = do whatever and print status to stdout (in .xinitrc) tail -f xmonadout | dzen2 -options & xmonad > xmonadout
Third, is it possible to swap workspaces i.e. change workspace 2 to 1 and vice-versa?
Not in the standard code, but implementing such a command is pretty simple. (in Config.hs, untested code!) swap :: WorkspaceId -> WorkspaceId -> X () swap i1 i2 = windows $ \ss -> ss{ current = fudge' (current ss) , visible = map fudge' (visible ss) , hidden = map fudge (hidden ss) } where fudge' ws = ws{ workspace = fudge (workspace ws) } fudge ws | tag ws == i1 = ws{ tag = i2 } | tag ws == i2 = ws{ tag = i1 } | otherwise = ws Stefan