xmonad
This commit is contained in:
parent
06196384f8
commit
08c670ef30
2 changed files with 208 additions and 4 deletions
|
|
@ -1,4 +1,208 @@
|
|||
import XMonad
|
||||
import XMonad.Config.Gnome
|
||||
import XMonad.Operations
|
||||
|
||||
import XMonad.Actions.Commands
|
||||
import XMonad.Actions.CycleWS
|
||||
import XMonad.Actions.DeManage
|
||||
import qualified XMonad.Actions.DynamicWorkspaces as DW
|
||||
|
||||
import XMonad.Hooks.DynamicLog as DL
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
import XMonad.Hooks.ManageDocks
|
||||
import XMonad.Hooks.ManageHelpers
|
||||
|
||||
main = xmonad gnomeConfig
|
||||
import qualified XMonad.StackSet as W
|
||||
|
||||
import XMonad.Util.Loggers as LS
|
||||
import XMonad.Util.Run
|
||||
import XMonad.Util.WindowProperties
|
||||
import XMonad.Util.XSelection
|
||||
|
||||
import qualified XMonad.Util.EZConfig as EZ
|
||||
import qualified Data.Map as M
|
||||
|
||||
main = xmonad gnomeConfig {
|
||||
borderWidth = 4,
|
||||
focusedBorderColor = "#00BFFF"
|
||||
}
|
||||
|
||||
{-
|
||||
-- delKeys x = foldr M.delete (keys defaultConfig x) (keysToRemove x)
|
||||
delKeys = keys defaultConfig
|
||||
newKeys x = M.union (delKeys x) (myKeys x)
|
||||
|
||||
myKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
|
||||
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
|
||||
[ ((modMask .|. shiftMask, xK_r ), spawn "if type xmonad; then xmonad --recompile && xmonad --restart; else xmessage xmonad not in \\$PATH: \"$PATH\"; fi") -- %! Restart xmonad
|
||||
]
|
||||
++
|
||||
-- mod-{w,e,r} %! Switch to physical/Xinerama screens 1, 2, or 3
|
||||
-- mod-shift-{w,e,r} %! Move client to screen 1, 2, or 3
|
||||
[((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
|
||||
| (key, sc) <- zip [xK_q, xK_w, xK_e] [0..]
|
||||
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
|
||||
-}
|
||||
{- Reference -- the originals
|
||||
-- launching and killing programs
|
||||
[ ((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf) -- %! Launch terminal
|
||||
, ((modMask, xK_p ), spawn "dmenu_run") -- %! Launch dmenu
|
||||
, ((modMask .|. shiftMask, xK_p ), spawn "gmrun") -- %! Launch gmrun
|
||||
, ((modMask .|. shiftMask, xK_c ), kill) -- %! Close the focused window
|
||||
|
||||
, ((modMask, xK_space ), sendMessage NextLayout) -- %! Rotate through the available layout algorithms
|
||||
, ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) -- %! Reset the layouts on the current workspace to default
|
||||
|
||||
, ((modMask, xK_n ), refresh) -- %! Resize viewed windows to the correct size
|
||||
|
||||
-- move focus up or down the window stack
|
||||
, ((modMask, xK_Tab ), windows W.focusDown) -- %! Move focus to the next window
|
||||
, ((modMask .|. shiftMask, xK_Tab ), windows W.focusUp ) -- %! Move focus to the previous window
|
||||
, ((modMask, xK_j ), windows W.focusDown) -- %! Move focus to the next window
|
||||
, ((modMask, xK_k ), windows W.focusUp ) -- %! Move focus to the previous window
|
||||
, ((modMask, xK_m ), windows W.focusMaster ) -- %! Move focus to the master window
|
||||
|
||||
-- modifying the window order
|
||||
, ((modMask, xK_Return), windows W.swapMaster) -- %! Swap the focused window and the master window
|
||||
, ((modMask .|. shiftMask, xK_j ), windows W.swapDown ) -- %! Swap the focused window with the next window
|
||||
, ((modMask .|. shiftMask, xK_k ), windows W.swapUp ) -- %! Swap the focused window with the previous window
|
||||
|
||||
-- resizing the master/slave ratio
|
||||
, ((modMask, xK_h ), sendMessage Shrink) -- %! Shrink the master area
|
||||
, ((modMask, xK_l ), sendMessage Expand) -- %! Expand the master area
|
||||
|
||||
-- floating layer support
|
||||
, ((modMask, xK_t ), withFocused $ windows . W.sink) -- %! Push window back into tiling
|
||||
|
||||
-- increase or decrease number of windows in the master area
|
||||
, ((modMask , xK_comma ), sendMessage (IncMasterN 1)) -- %! Increment the number of windows in the master area
|
||||
, ((modMask , xK_period), sendMessage (IncMasterN (-1))) -- %! Deincrement the number of windows in the master area
|
||||
|
||||
-- toggle the status bar gap
|
||||
--, ((modMask , xK_b ), modifyGap (\i n -> let x = (XMonad.defaultGaps conf ++ repeat (0,0,0,0)) !! i in if n == x then (0,0,0,0) else x)) -- %! Toggle the status bar gap
|
||||
|
||||
-- quit, or restart
|
||||
, ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess)) -- %! Quit xmonad
|
||||
, ((modMask , xK_q ), spawn "if type xmonad; then xmonad --recompile && xmonad --restart; else xmessage xmonad not in \\$PATH: \"$PATH\"; fi") -- %! Restart xmonad
|
||||
]
|
||||
++
|
||||
-- mod-[1..9] %! Switch to workspace N
|
||||
-- mod-shift-[1..9] %! Move client to workspace N
|
||||
[((m .|. modMask, k), windows $ f i)
|
||||
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
|
||||
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
|
||||
++
|
||||
-- mod-{w,e,r} %! Switch to physical/Xinerama screens 1, 2, or 3
|
||||
-- mod-shift-{w,e,r} %! Move client to screen 1, 2, or 3
|
||||
[((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
|
||||
| (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
|
||||
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
|
||||
-}
|
||||
|
||||
keysToRemove :: XConfig Layout -> [(KeyMask, KeySym)]
|
||||
keysToRemove XConfig{modMask = modm} =
|
||||
[ (modm, xK_p )
|
||||
, (modm .|. shiftMask, xK_p )
|
||||
]
|
||||
|
||||
{-
|
||||
myKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X())
|
||||
myKeys conf = EZ.mkKeymap conf $(_emacsKeys conf)
|
||||
|
||||
|
||||
_emacsKeys :: [(String, X())]
|
||||
_emacsKeys = [
|
||||
("M-q"
|
||||
_emacsKeys :: XConfig Layout -> [(String, X())]
|
||||
_emacsKeys conf =
|
||||
[ -- Applications
|
||||
{-("M-t", goto "terminals")-}
|
||||
{-, ("M-S-t", runColourTerminal)-}
|
||||
{-, ("M-v M-t", pasteTerminal)-}
|
||||
{-, ("M-v M-d", manTerminal)-}
|
||||
{-, ("M-i", goto "browsen")-}
|
||||
{-, ("M-S-i", runBrowser)-}
|
||||
{-, ("M-v M-i", pasteBrowser)-}
|
||||
{-, ("M-p", runCmdLine)-}
|
||||
{-, ("M-x", WD.changeDir P.defaultXPConfig)-}
|
||||
{-, ("M-e", goto "muziek")-}
|
||||
{--- , ("M-o", runMixer)-}
|
||||
{-, ("M-h", runFileManager)-}
|
||||
{-, ("M-s", goto "praten")-}
|
||||
{-, ("M-m", goto "berichten")-}
|
||||
{-, ("M-S-m", runMail)-}
|
||||
{-, ("M-u", goto "agenda")-}
|
||||
{-, ("M-0", goto "schutbord")-}
|
||||
{-, ("M-w", goto "flim")-}
|
||||
|
||||
-- mpd
|
||||
{-, ("<XF86AudioPlay>", io $ return . fromRight =<< MPD.withMPD MPD.toggle)-}
|
||||
{-, ("<XF86AudioStop>", io $ return . fromRight =<< MPD.withMPD MPD.stop)-}
|
||||
{-, ("<XF86AudioNext>", io $ return . fromRight =<< MPD.withMPD MPD.next)-}
|
||||
{-, ("<XF86AudioPrev>", io $ return . fromRight =<< MPD.withMPD MPD.previous)-}
|
||||
{-, ("<XF86AudioLowerVolume>", spawn "amixer set Master 2-")-}
|
||||
{-, ("<XF86AudioRaiseVolume>", spawn "amixer set Master 2+")-}
|
||||
{-, ("<XF86AudioMute>", spawn "amixer set Master toggle")-}
|
||||
|
||||
-- couple of scripts to change brightness, very hardware specific to my laptop
|
||||
-- brightness
|
||||
{-, ("<XF86MonBrightnessUp>", spawn "lcd-brightness-inc")-}
|
||||
{-, ("<XF86MonBrightnessDown>", spawn "lcd-brightness-dec")-}
|
||||
|
||||
-- Layouts
|
||||
, ("M-n", refresh)
|
||||
, ("M-S-<Space>", setLayout $ XMonad.layoutHook conf)
|
||||
, ("M-<Space>", sendMessage NextLayout)
|
||||
, ("M-<Tab>", windows W.focusDown)
|
||||
, ("M-j", windows W.focusDown)
|
||||
, ("M-k", windows W.focusUp)
|
||||
, ("M-<Return>", windows W.focusMaster)
|
||||
, ("M-S-<Return>", DwmP.dwmpromote)
|
||||
, ("M-S-j", windows W.swapDown)
|
||||
, ("M-S-k", windows W.swapUp)
|
||||
, ("M-g", sendMessage Shrink)
|
||||
, ("M-l", sendMessage Expand)
|
||||
, ("M-r", withFocused $ windows . W.sink)
|
||||
, ("M-,", sendMessage (IncMasterN 1))
|
||||
, ("M-.", sendMessage (IncMasterN (-1)))
|
||||
|
||||
-- Toggle full screen
|
||||
, ("M-<F12>", sendMessage ToggleStruts >> refresh)
|
||||
|
||||
-- Windows
|
||||
, ("M-[", PWork.workspacePrompt P.defaultXPConfig goto)
|
||||
, ("M-]", PWin.windowPromptGoto P.defaultXPConfig)
|
||||
,("M-S-[", PWork.workspacePrompt P.defaultXPConfig shift)
|
||||
|
||||
, ("M-c", kill) -- window
|
||||
, ("M-S-c", WithAll.killAll) ] -- window
|
||||
-- ++
|
||||
-- [ ("M-" ++ [num], goto name)
|
||||
-- | (name, num) <-
|
||||
-- zip _workspaces (['1' .. '9'] ++ ['0'])]
|
||||
|
||||
-- -- Workspaces
|
||||
-- ++
|
||||
-- [ ("M-S-" ++ [num], shift name)
|
||||
-- | (name, num) <-
|
||||
-- zip _workspaces (['1' .. '9'] ++ ['0'])]
|
||||
++
|
||||
[ ("M-<Right>", moveTo Next NonEmptyWS)
|
||||
, ("M-<Left>", moveTo Prev NonEmptyWS)
|
||||
, ("M-S-<Right>", moveTo Next EmptyWS)
|
||||
, ("M-S-<Left>", moveTo Prev EmptyWS)
|
||||
-- Toggle between current and previous
|
||||
, ("M-`", toggleWS)
|
||||
|
||||
, ("M-S-n", PI.inputPrompt P.defaultXPConfig "New Workspace:" PI.?+ newWorkspaceDir)
|
||||
, ("M-S-<Backspace>", WithAll.killAll >> DW.removeWorkspace) --buggy, messes with focus and creates flicker, needs to be fixed
|
||||
, ("M-S-r", DW.renameWorkspace P.defaultXPConfig)
|
||||
|
||||
-- -- Commands
|
||||
-- , ("M-y", runCommand _commands)
|
||||
|
||||
-- -- Remember
|
||||
, ("M1-C-r", runRemember)
|
||||
-- xmonad
|
||||
, ("M1-q", restartXMonad)]
|
||||
-}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue