暫無描述

xmonad.hs 2.4KB

    import XMonad import XMonad.Actions.SpawnOn (manageSpawn, spawnHere) import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks (manageDocks, avoidStruts) import XMonad.Hooks.ManageHelpers import XMonad.Layout.NoBorders (smartBorders) import XMonad.Layout.Fullscreen (fullscreenEventHook, fullscreenManageHook) import XMonad.Util.Run (spawnPipe) import XMonad.Util.EZConfig (additionalKeys) import Graphics.X11.ExtraTypes.XF86 import qualified XMonad.StackSet as W import System.IO (hPutStrLn) import Data.IORef.MonadIO (newIORef, readIORef, modifyIORef) import Control.Monad (when) import Data.Monoid (All (All)) -- My XMonad config (right now it's mostly copied from elsewhere... -- -- Whishes: -- * Some kind of launcher -- * Logging framework (like reading urls from Firefox and the like) (??) :: Query a -> (a -> Bool) -> Query Bool (??) = flip fmap main = do kbMap <- newIORef "us" xmonad $ defaultConfig { modMask = mod4Mask, terminal = "sakura", -- Ignore docks (via some WM_* attribute?) manageHook = composeAll [ className ?? (\cn -> any (cn ==) ["Skype", "Pidgin", "Geary"]) --> doF (W.shift "3"), className =? "Exe" --> doFullFloat, manageSpawn, manageDocks, fullscreenManageHook ] <+> manageHook defaultConfig, -- Don't overwrite the section used by docks layoutHook = avoidStruts $ smartBorders $ layoutHook defaultConfig, handleEventHook = fullscreenEventHook } `additionalKeys` [ ((mod4Mask, xK_b), spawnHere "chromium --allow-file-access-from-files"), ((mod4Mask .|. shiftMask, xK_b), spawnHere "chromium --incognito --allow-file-access-from-files"), ((0, xF86XK_AudioMute), spawn "amixer set Master toggle"), ((0, xF86XK_AudioLowerVolume), spawn "amixer set Master 5%-"), ((0, xF86XK_AudioRaiseVolume), spawn "amixer set Master 5%+"), ((mod4Mask .|. shiftMask, xK_m), spawnHere "quodlibet"), ((mod4Mask .|. shiftMask, xK_Tab), changeKbMap kbMap), ((mod4Mask .|. shiftMask, xK_l), spawn "slock"), ((mod4Mask, xK_q), restart "xmonad" True) ] where changeKbMap kbMap = do kb <- readIORef kbMap let switchLang cur = if cur == "us" then "de" else "us" spawn $ "setxkbmap " ++ switchLang kb modifyIORef kbMap switchLang