
On Mon, Nov 03, 2008 at 08:13:46AM -0800, Andrew Sackville-West wrote:
On Sun, Nov 02, 2008 at 07:56:56PM -0800, Andrew Sackville-West wrote:
I finally got around to tweaking my xmonad.hs and had to start using avoidStruts but, it doesn't work with xmobar with a Static position. Works fine with the other positions: Top, Bottom, etc, but with Static, xmonad seems to not know it exists.
So here is a clue. It appears that the Static position doesn't export it's dimensions. Here is xprop on xmobar run with Top position:
andrew@basement:~$ xprop _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK _NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 18, 0, 0, 0, 0, 0, 0, 1279, 0, 0
and xprop of xmobar with Static position:
andrew@basement:~$ xprop _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK _NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
so I guess it's safe to say this is an xmobar problem?
In Xmobar.hs at line 174 is the following: getStrutValues (Rectangle x _ w h) c = case position c of Top -> [0, 0, nh, 0, 0, 0, 0, 0, nx, nw, 0, 0] TopW _ _ -> [0, 0, nh, 0, 0, 0, 0, 0, nx, nw, 0, 0] Bottom -> [0, 0, 0, nh, 0, 0, 0, 0, 0, 0, nx, nw] BottomW _ _ -> [0, 0, 0, nh, 0, 0, 0, 0, 0, 0, nx, nw] _ -> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] where nh = fi h nx = fi x nw = fi (x + fi w - 1) which makes no allowance for defining strut values for Static. Any reason why not? I made this crude hack (because I don't really understand what's going on: getStrutValues (Rectangle x _ w h) c = case position c of Top -> [0, 0, nh, 0, 0, 0, 0, 0, nx, nw, 0, 0] TopW _ _ -> [0, 0, nh, 0, 0, 0, 0, 0, nx, nw, 0, 0] Bottom -> [0, 0, 0, nh, 0, 0, 0, 0, 0, 0, nx, nw] BottomW _ _ -> [0, 0, 0, nh, 0, 0, 0, 0, 0, 0, nx, nw] Static _ _ _ _ -> [0, 0, nh, 0, 0, 0, 0, 0, nx, nw, 0, 0] _ -> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] where nh = fi h nx = fi x nw = fi (x + fi w - 1) and this works. With xprop reporting: andrew@basement:~$ xprop _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK _NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 18, 0, 0, 0, 0, 0, 0, 2559, 0, 0 and avoidStruts working properly :) (the 2559 is because I force my xmobar to be two screens wide). So I call this a hack because I don't understand what all the coordinates mean in the case statement. I just mimicked the one for Top since that is where I put it anyway. I suspect there needs to be a little math done to a Static position so that it will work in any position. Can anybody provide insight into what those coordinates represent? Then I could possible put together a proper fix. A