summaryrefslogtreecommitdiffstats
path: root/xmonad.hs
diff options
context:
space:
mode:
Diffstat (limited to 'xmonad.hs')
-rw-r--r--xmonad.hs47
1 files changed, 38 insertions, 9 deletions
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-<Left>", shiftToPrev)
, ("M-S-<Right>", shiftToNext)
, ("M-S-b", withFocused toggleBorder >> refresh)
- , ("M1-<F4>", kill)
, ("M-<F1>", viewOrWarp 0)
, ("M-<F2>", viewOrWarp 1)
, ("M-<F3>", 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-<F4>", 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