From e29db941e75488dfafc4268b5c8f297de1381bad Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 18 Jul 2011 14:05:19 +0200 Subject: Fixed window ordering --- xmonad.hs | 47 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 9 deletions(-) (limited to 'xmonad.hs') diff --git a/xmonad.hs b/xmonad.hs index 6c8b522..a9c321d 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -1,6 +1,5 @@ import XMonad import XMonad.Config.Desktop -import XMonad.Config.Gnome import XMonad.Actions.CycleWS import XMonad.Actions.NoBorders import XMonad.Actions.PhysicalScreens @@ -17,8 +16,11 @@ import Control.Monad.Trans import Data.Maybe import Data.Monoid import Ratio((%)) +import System.Exit --import ConfigurableBorders +import DynamicPerScreenWorkspaces +import EwmhDesktops import FullscreenManager import NoBorders import ProcessWorkspaces @@ -26,13 +28,15 @@ import ProcessWorkspaces modm = mod4Mask -main = xmonad $ gnomeConfig +main = xmonad $ ewmh $ defaultConfig { modMask = modm , manageHook = myManageHook , layoutHook = desktopLayoutModifiers myLayoutHook , startupHook = myStartupHook , handleEventHook = myEventHook , workspaces = myWorkspaces + , borderWidth = 0 + , logHook = ewmhDesktopsLogHook } `additionalKeysP` ( [ ("M-a", sendMessage MirrorShrink) @@ -42,13 +46,16 @@ main = xmonad $ gnomeConfig , ("M-S-", shiftToPrev) , ("M-S-", shiftToNext) , ("M-S-b", withFocused toggleBorder >> refresh) - , ("M1-", kill) , ("M-", viewOrWarp 0) , ("M-", viewOrWarp 1) , ("M-", viewOrWarp 2) , ("M-b", banishScreen LowerRight) , ("M-p", spawnOnCurrent "exe=`dmenu_path | /home/neoraider/bin/dmemu -b` && eval \"exec $exe\"") , ("M-g", gets (W.currentTag . windowset) >>= regroupProcess) + , ("M-S-q", io (exitWith ExitSuccess)) + , ("C-M1-l", spawn "gnome-screensaver-command --lock") + , ("M-`", spawn "xclip -o | qrencode -s 10 -o- | display -geometry +0+0") + , ("M1-", kill) ] ++ [ (("M-" ++ show n, windows $ W.greedyView ws)) | (ws, n) <- zip myWorkspaces ([1..9]++[0])] ++ [ (("M-S-" ++ show n, shiftGroup ws)) | (ws, n) <- zip myWorkspaces ([1..9]++[0])] @@ -62,7 +69,7 @@ main = xmonad $ gnomeConfig ] -myWorkspaces = ["Firefox", "Thunderbird", "Emacs", "4", "5", "6", "7", "8", "Chat", "10"] +myWorkspaces = map (show . flip mod 10) [1..10] viewOrWarp :: Int -> X () @@ -80,24 +87,46 @@ viewOrWarp n = do -- startupHook gnomeConfig -- spawn "killall -u `id -un` -q xcompmgr; exec xcompmgr" + +setFullscreenSupported :: X () +setFullscreenSupported = withDisplay $ \dpy -> do + r <- asks theRoot + a <- getAtom "_NET_SUPPORTED" + c <- getAtom "ATOM" + f <- getAtom "_NET_WM_STATE_FULLSCREEN" + io $ changeProperty32 dpy r a c propModeAppend [fromIntegral f] + + + myStartupHook :: X () myStartupHook = do - startupHook gnomeConfig + startupHook desktopConfig setWMName "LG3D" - + setFullscreenSupported + spawn "ibus-daemon -r -x" isUtility :: Query Bool isUtility = isInProperty "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_UTILITY" +moveToBottom :: ManageHook +moveToBottom = doF $ \windowSet@W.StackSet {W.current = screen@W.Screen {W.workspace = ws@W.Workspace {W.stack = windowStack}}} -> + let windowStack' = fmap (\(W.Stack f u d) -> W.Stack f (reverse d ++ u) []) windowStack + in windowSet { W.current = screen {W.workspace = ws {W.stack = windowStack'}} } + + + myManageHook :: ManageHook myManageHook = composeAll - [ isDialog --> doFloat + [ moveToBottom + , isDialog --> doFloat , composeOne [ className =? "Guake.py" -?> doFloatMaybeFullscreen -- <+> doConfigBorderOff) --, className =? "Do" -?> (doFloat <+> doConfigBorderOff) , className =? "MPlayer" -?> doCenterFloat , className =? "Gnome-session" -?> doIgnoreProcessWorkspace , className =? "Gimp" -?> doFloat + , className =? "jrummikub-JRummikub" -?> doFloat + , className =? "Stjerm" -?> doFloatMaybeFullscreen , className =? "Display" -?> doFloat , className =? "Wine" -?> doFloat , className =? "Pcsx2" -?> doFloat @@ -105,7 +134,7 @@ myManageHook = composeAll , isFullscreen -?> doFullscreen ] , isUtility =? False --> doAutoShift - , manageHook gnomeConfig + , manageHook desktopConfig ] @@ -127,4 +156,4 @@ myEventHook :: Event -> X All myEventHook ev = do handleForgetEmptyWindowGroups ev handleFullscreen ev - (handleEventHook gnomeConfig) ev + handleEventHook defaultConfig ev -- cgit v1.2.3