If I start the application with command line parameters that will make
it try to get fullscreen mode, then:
- the current layout of the workspace is ignored, and the xpdf window
indeed fill the whole workspace.
- the keys for cycling through windows in the current workspace are
ignored. (keys for switching to another workspace still works).
The first behaviour is not really a problem, but the second is
ennoying. It makes fullscreen-mode usable only with one window per
workspace.
examples of problematic apps/parameters
xpdf -fullscreen
rdesktop -f
Other applications, like mplayer and zathura, does the right thing,
they honor the size of the window that the windowmanager gives them
AND they are willing to be cycled into smaller windows.
My version of xmonad is from debian squeeze:
xmonad (0.9.1-2+b1) unstable; urgency=low
* Binary-only non-maintainer upload for i386; no source changes.
* Rebuild with ghc6-6.12.1-10
-- i386 Build Daemon Sat, 20 Feb 2010 13:00:47 +0000
Here is my .xmonad/xmonad.hs
-----------------------------
import XMonad
import XMonad.Hooks.ManageHelpers
import XMonad.Actions.CycleWS
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import XMonad.Layout.NoBorders
myKeys conf@(XConfig {modMask = modm}) = M.fromList $
-- Remap switching workspaces to M-[jklnm;uio]
[((m .|. modm, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_j, xK_k, xK_l, xK_f, xK_d, xK_u, xK_i, xK_o]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]
]
++
[
-- Restore some essential functions whose keybindings are now stolen
((modm .|. shiftMask, xK_s), windows W.swapMaster)
]
++
[
-- launch dmenu (shift-caps lock "p")
((modm .|. shiftMask, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
-- launch a terminal, ssh and screen into
-- F1 -> code.cjb.net
, ((modm .|. shiftMask, xK_F1 ), spawn "x-terminal-emulator -e \"ssh -t code.cjb.net screen -D -R\"")
-- F2 -> jobbet
, ((modm .|. shiftMask, xK_F2 ), spawn "x-terminal-emulator -e \"ssh -t pc5.socio.gu.se screen -D -R\"")
-- F3 -> esset (@ 192.168.0.252, or 192.168.0.3)
, ((modm .|. shiftMask, xK_F3 ), spawn "x-terminal-emulator -e 'ssh -t -X -C 192.168.0.252 ~/bin/attach-or-create-a-screen-session'")
-- F4 -> fekweb
, ((modm .|. shiftMask, xK_F4 ), spawn "x-terminal-emulator -e \"ssh -t fek@fekweb.hgus.gu.se screen -D -R\"")
-- F5 -> noels (@ 192.168.0.138, or code.cjb.net:19828)
, ((modm .|. shiftMask, xK_F5 ), spawn "x-terminal-emulator -e 'ssh -t -X -C -p 19828 code.cjb.net ~/bin/attach-or-create-a-screen-session'")
]
++
[
-- -- -- a basic CycleWS setup
((modm, xK_Down), nextWS)
, ((modm, xK_n ), windows W.focusDown)
, ((modm, xK_p ), windows W.focusUp)
, ((modm, xK_Up), prevWS)
, ((modm .|. shiftMask, xK_Down), shiftToNext)
, ((modm .|. shiftMask, xK_Up), shiftToPrev)
, ((modm, xK_Right), nextScreen)
, ((modm, xK_Left), prevScreen)
, ((modm .|. shiftMask, xK_Right), shiftNextScreen)
, ((modm .|. shiftMask, xK_Left), shiftPrevScreen)
, ((modm, xK_z), toggleWS)
]
-- myManageHook = composeAll [ resource =? "realplay.bin" --> doFloat
-- , resource =? "win" --> doF (W.shift "doc") -- xpdf
-- , resource =? "firefox-bin" --> doF (W.shift "web")
-- ]
-- newManageHook = myManageHook <+> manageHook defaultConfig
main = do
xmonad $ defaultConfig {
layoutHook = smartBorders $ layoutHook defaultConfig
, borderWidth = 1
, modMask = mod3Mask -- Rebind Mod to Caps lock
, normalBorderColor = "#cccccc"
, focusedBorderColor = "#cd8b00"
, keys = \c -> myKeys c `M.union` keys defaultConfig c
, manageHook = composeOne [
isKDETrayWindow -?> doIgnore,
transience,
isFullscreen -?> doFullFloat,
resource =? "stalonetray" -?> doIgnore
]
}