mirror of
https://git.sr.ht/~magic_rb/dotfiles
synced 2024-11-29 03:26:13 +01:00
Reword XMonad config
Signed-off-by: MagicRB <richard@brezak.sk>
This commit is contained in:
parent
26d8b6dac3
commit
8cebc0b293
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
{-# LANGUAGE BlockArguments
|
{-# LANGUAGE BlockArguments
|
||||||
#-}
|
#-}
|
||||||
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
|
||||||
import XMonad
|
import XMonad
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
|
@ -44,6 +45,8 @@ import Control.Monad
|
||||||
|
|
||||||
import qualified XMonad.StackSet as W
|
import qualified XMonad.StackSet as W
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
|
import XMonad.Actions.Navigation2D
|
||||||
|
import XMonad.Layout.Cross (simpleCross)
|
||||||
|
|
||||||
|
|
||||||
myTerminal = "xterm"
|
myTerminal = "xterm"
|
||||||
|
@ -52,11 +55,37 @@ myClickJustFocuses = False
|
||||||
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
|
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
|
||||||
myWorkspaces = withScreens 2 $ map show ([1..9] ++ [0])
|
myWorkspaces = withScreens 2 $ map show ([1..9] ++ [0])
|
||||||
|
|
||||||
toggleFloat = withFocused (\windowId -> do
|
toggleFloat :: Window -> X ()
|
||||||
|
toggleFloat window = do
|
||||||
{ floats <- gets (W.floating . windowset);
|
{ floats <- gets (W.floating . windowset);
|
||||||
if windowId `M.member` floats
|
if window `M.member` floats
|
||||||
then withFocused $ windows . W.sink
|
then withFocused $ windows . W.sink
|
||||||
else float windowId })
|
else float window }
|
||||||
|
|
||||||
|
toggleFullscreen :: Display -> Window -> X ()
|
||||||
|
toggleFullscreen dpy window = do
|
||||||
|
wmstate <- getAtom "_NET_WM_STATE"
|
||||||
|
fullsc <- getAtom "_NET_WM_STATE_FULLSCREEN"
|
||||||
|
wstate <- fromMaybe [] `fmap` getProp32 wmstate window
|
||||||
|
|
||||||
|
let
|
||||||
|
ptype = 4
|
||||||
|
chWstate f = io $ changeProperty32 dpy window wmstate ptype propModeReplace (f wstate)
|
||||||
|
isFull = fromIntegral fullsc `elem` wstate
|
||||||
|
|
||||||
|
unless isFull $ do
|
||||||
|
chWstate (fromIntegral fullsc:)
|
||||||
|
windows $ W.float window $ W.RationalRect 0 0 1 1
|
||||||
|
when isFull $ do
|
||||||
|
chWstate $ delete (fromIntegral fullsc)
|
||||||
|
windows $ W.sink window
|
||||||
|
|
||||||
|
centerMouse :: X ()
|
||||||
|
centerMouse = warpToWindow 0.5 0.5
|
||||||
|
|
||||||
|
getCurrentLayout :: X String
|
||||||
|
getCurrentLayout =
|
||||||
|
gets windowset <&> description . W.layout . W.workspace . W.current
|
||||||
|
|
||||||
modm :: KeyMask
|
modm :: KeyMask
|
||||||
modm = mod4Mask
|
modm = mod4Mask
|
||||||
|
@ -72,7 +101,7 @@ myKeymap c =
|
||||||
, ("M-e", spawn "dmenu_run")
|
, ("M-e", spawn "dmenu_run")
|
||||||
|
|
||||||
-- close focused window
|
-- close focused window
|
||||||
, ("M-S-q", io (exitWith ExitSuccess))
|
, ("M-S-q", io exitSuccess)
|
||||||
|
|
||||||
-- Rotate through the available layout algorithms
|
-- Rotate through the available layout algorithms
|
||||||
, ("M-<Space>", sendMessage NextLayout)
|
, ("M-<Space>", sendMessage NextLayout)
|
||||||
|
@ -83,55 +112,17 @@ myKeymap c =
|
||||||
-- Resize viewed windows to the correct size
|
-- Resize viewed windows to the correct size
|
||||||
, ("M-b", refresh)
|
, ("M-b", refresh)
|
||||||
|
|
||||||
-- Move focus to the next window
|
|
||||||
, ("M-<Tab>", windows W.focusDown)
|
|
||||||
|
|
||||||
-- Move focus to the next window
|
|
||||||
, ("M-n", windows W.focusDown)
|
|
||||||
|
|
||||||
-- Move focus to the previous window
|
|
||||||
, ("M-r", windows W.focusUp)
|
|
||||||
|
|
||||||
-- Move focus to the master window
|
|
||||||
, ("M-p", windows W.focusMaster)
|
|
||||||
|
|
||||||
-- Swap the focused window and the master window
|
|
||||||
, ("M-<RET>", windows W.swapMaster)
|
|
||||||
|
|
||||||
-- Swap the focused window with the next window
|
|
||||||
, ("M-S-n", windows W.swapDown)
|
|
||||||
|
|
||||||
-- Swap the focused window with the previous window
|
|
||||||
, ("M-S-r", windows W.swapUp)
|
|
||||||
|
|
||||||
-- Shrink the master area
|
|
||||||
, ("M-t", sendMessage Shrink)
|
|
||||||
|
|
||||||
-- Expand the master area
|
|
||||||
, ("M-s", sendMessage Expand)
|
|
||||||
|
|
||||||
-- Push window back into tiling
|
-- Push window back into tiling
|
||||||
, ("M-y", toggleFloat)
|
, ("M-y", withFocused toggleFloat)
|
||||||
|
|
||||||
-- Increment the number of windows in the master area
|
-- warp to middle of window
|
||||||
, ("M-w", sendMessage (IncMasterN 1))
|
, ("M-d", centerMouse)
|
||||||
|
|
||||||
-- Deincrement the number of windows in the master area
|
|
||||||
, ("M-m", sendMessage (IncMasterN (-1)))
|
|
||||||
|
|
||||||
, ("M-d", warpToWindow 0.5 0.5)
|
|
||||||
|
|
||||||
-- , ("M-b", spawn ("pkill xmobar && " ++ xmobarCmd))
|
-- , ("M-b", spawn ("pkill xmobar && " ++ xmobarCmd))
|
||||||
, ("<Print>", spawn "sleep 0.1 ; screenshot select")
|
, ("<Print>", spawn "sleep 0.1 ; screenshot select")
|
||||||
, ("S-<Print>", spawn "screenshot screen && sleep 0.1 && notify -t 5000 \"snap\"")
|
, ("S-<Print>", spawn "screenshot screen && sleep 0.1 && notify -t 5000 \"snap\"")
|
||||||
, ("C-S-<Print>", spawn "screenshot focused && sleep 0.1 && notify -t 5000 \"snap\"")
|
, ("C-S-<Print>", spawn "screenshot focused && sleep 0.1 && notify -t 5000 \"snap\"")
|
||||||
|
|
||||||
-- Toggle the status bar gap
|
|
||||||
-- Use this binding with avoidStruts from Hooks.ManageDocks.
|
|
||||||
-- See also the statusBar function from Hooks.DynamicLog.
|
|
||||||
--
|
|
||||||
, ("M-b", sendMessage ToggleStruts)
|
|
||||||
|
|
||||||
-- Quit xmonad
|
-- Quit xmonad
|
||||||
, ("M-S-k", kill)
|
, ("M-S-k", kill)
|
||||||
|
|
||||||
|
@ -139,14 +130,38 @@ myKeymap c =
|
||||||
, ("M-k", spawn "reload")
|
, ("M-k", spawn "reload")
|
||||||
|
|
||||||
-- float keys
|
-- float keys
|
||||||
, ("M-g", withFocused (keysResizeWindow (-10, 0) (0, 0)))
|
, ("M-g", sendMessage $ ExpandTowards L)
|
||||||
, ("M-c", withFocused (keysResizeWindow ( 0, 10) (0, 0)))
|
, ("M-c", sendMessage $ ExpandTowards U)
|
||||||
, ("M-l", withFocused (keysResizeWindow ( 0,-10) (0, 0)))
|
, ("M-l", sendMessage $ ExpandTowards D)
|
||||||
, ("M-ß", withFocused (keysResizeWindow ( 10, 0) (0, 0)))
|
, ("M-ß", sendMessage $ ExpandTowards R)
|
||||||
, ("M-S-g", withFocused (xMoveWindow (-10, 0)))
|
, ("M-S-g", sendMessage $ ShrinkFrom L)
|
||||||
, ("M-S-c", withFocused (xMoveWindow ( 0, 10)))
|
, ("M-S-c", sendMessage $ ShrinkFrom U)
|
||||||
, ("M-S-l", withFocused (xMoveWindow ( 0,-10)))
|
, ("M-S-l", sendMessage $ ShrinkFrom D)
|
||||||
, ("M-S-ß", withFocused (xMoveWindow ( 10, 0)))
|
, ("M-S-ẞ", sendMessage $ ShrinkFrom R)
|
||||||
|
|
||||||
|
, ("M-t", windowGo L False >> centerMouse)
|
||||||
|
, ("M-r", getCurrentLayout >>= \case
|
||||||
|
"Tabbed Simplest" -> windows W.focusUp
|
||||||
|
_ -> windowGo U False >> centerMouse)
|
||||||
|
, ("M-n", getCurrentLayout >>= \case
|
||||||
|
"Tabbed Simplest" -> windows W.focusDown
|
||||||
|
_ -> windowGo D False >> centerMouse)
|
||||||
|
, ("M-s", windowGo R False >> centerMouse)
|
||||||
|
|
||||||
|
, ("M-S-t", windowSwap L False >> centerMouse)
|
||||||
|
, ("M-S-r", windowSwap U False >> centerMouse)
|
||||||
|
, ("M-S-n", windowSwap D False >> centerMouse)
|
||||||
|
, ("M-S-s", windowSwap R False >> centerMouse)
|
||||||
|
|
||||||
|
, ("M-C-g", sendMessage Rotate)
|
||||||
|
, ("M-C-c", sendMessage Swap)
|
||||||
|
, ("M-C-l", sendMessage FocusParent)
|
||||||
|
, ("M-C-ß", sendMessage SelectNode)
|
||||||
|
|
||||||
|
, ("M-C-t", sendMessage Balance >> centerMouse >> (liftIO . print . description $ smartBorders simpleTabbed))
|
||||||
|
, ("M-C-r", sendMessage Equalize >> centerMouse >> (liftIO . print . description $ smartBorders simpleTabbed))
|
||||||
|
, ("M-C-n", sendMessage $ SplitShift Prev)
|
||||||
|
, ("M-C-s", sendMessage $ SplitShift Next)
|
||||||
|
|
||||||
, ("M-z", spawn "loginctl lock-session")
|
, ("M-z", spawn "loginctl lock-session")
|
||||||
|
|
||||||
|
@ -165,25 +180,153 @@ myKeymap c =
|
||||||
|
|
||||||
, ("M-<F1>", spawn "auxmenu")
|
, ("M-<F1>", spawn "auxmenu")
|
||||||
|
|
||||||
, ("M-<F11>", withDisplay $ \dpy -> withFocused $ \win -> do
|
, ("M-<F11>", withDisplay $ \dpy -> withFocused $ \window -> toggleFullscreen dpy window)
|
||||||
wmstate <- getAtom "_NET_WM_STATE"
|
|
||||||
fullsc <- getAtom "_NET_WM_STATE_FULLSCREEN"
|
|
||||||
wstate <- fromMaybe [] `fmap` getProp32 wmstate win
|
|
||||||
|
|
||||||
let
|
|
||||||
ptype = 4
|
|
||||||
chWstate f = io $ changeProperty32 dpy win wmstate ptype propModeReplace (f wstate)
|
|
||||||
isFull = fromIntegral fullsc `elem` wstate
|
|
||||||
|
|
||||||
when (not isFull) $ do
|
|
||||||
chWstate (fromIntegral fullsc:)
|
|
||||||
windows $ W.float win $ W.RationalRect 0 0 1 1
|
|
||||||
when isFull $ do
|
|
||||||
chWstate $ delete (fromIntegral fullsc)
|
|
||||||
windows $ W.sink win)
|
|
||||||
]
|
]
|
||||||
++
|
++
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-[1..9], Switch to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- mod-[1..9], Switch to workspace N
|
-- mod-[1..9], Switch to workspace N
|
||||||
-- mod-shift-[1..9], Move client to workspace N
|
-- mod-shift-[1..9], Move client to workspace N
|
||||||
|
@ -194,8 +337,43 @@ myKeymap c =
|
||||||
++
|
++
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
||||||
|
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
||||||
|
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
||||||
|
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
||||||
|
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
||||||
|
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
||||||
|
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
||||||
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
-- 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
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
--
|
--
|
||||||
[("M-"++m++[key], screenWorkspace sc >>= flip whenJust (windows . f))
|
[("M-"++m++[key], screenWorkspace sc >>= flip whenJust (windows . f))
|
||||||
| (key, sc) <- zip ".o," [0..]
|
| (key, sc) <- zip ".o," [0..]
|
||||||
|
@ -240,7 +418,7 @@ myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
|
||||||
-- The available layouts. Note that each layout is separated by |||,
|
-- The available layouts. Note that each layout is separated by |||,
|
||||||
-- which denotes layout choice.
|
-- which denotes layout choice.
|
||||||
--
|
--
|
||||||
myLayout = smartBorders tiled ||| smartBorders simpleTabbed ||| smartBorders emptyBSP ||| noBorders Full
|
myLayout = smartBorders simpleTabbed ||| smartBorders emptyBSP
|
||||||
where
|
where
|
||||||
-- default tiling algorithm partitions the screen into two panes
|
-- default tiling algorithm partitions the screen into two panes
|
||||||
tiled = Tall nmaster delta ratio
|
tiled = Tall nmaster delta ratio
|
||||||
|
@ -274,7 +452,15 @@ spawnBar screen = pure $ statusBarPropTo ("_XMONAD_LOG_" <> screenString ) ("pol
|
||||||
-- main = xmonad $ ewmh $ docks $ defaults
|
-- main = xmonad $ ewmh $ docks $ defaults
|
||||||
main = do
|
main = do
|
||||||
getEnv "PATH" >>= \path -> setEnv "PATH" (path <> ":/home/main/.xmonad/runenv/bin")
|
getEnv "PATH" >>= \path -> setEnv "PATH" (path <> ":/home/main/.xmonad/runenv/bin")
|
||||||
pure defaults <&> dynamicSBs spawnBar <&> docks >>= xmonad
|
print (description (smartBorders simpleTabbed))
|
||||||
|
|
||||||
|
let
|
||||||
|
nav2dConfig
|
||||||
|
= def
|
||||||
|
-- doesn't work with tabbed at all
|
||||||
|
-- { unmappedWindowRect = [("Tabbed Simplest", fullScreenRect)]}
|
||||||
|
|
||||||
|
defaults & xmonad . docks . dynamicSBs spawnBar . withNavigation2DConfig nav2dConfig
|
||||||
|
|
||||||
getNetWMState :: Window -> X [Atom]
|
getNetWMState :: Window -> X [Atom]
|
||||||
getNetWMState w = do
|
getNetWMState w = do
|
||||||
|
|
Loading…
Reference in a new issue