[xmonad] xmonad problem or application stealing keys?

Hans Ekbrand hans at sociologi.cjb.net
Tue Aug 9 11:08:45 CEST 2011


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 <buildd_i386-biber at buildd.debian.org>  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 at 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
         ]
        }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://www.haskell.org/pipermail/xmonad/attachments/20110809/41149c11/attachment.pgp>


More information about the xmonad mailing list