mirror of
https://codeberg.org/frosty/dotfiles.git
synced 2024-09-19 11:47:09 -04:00
(xmonad): format file, fix some warnings, and add commands for top and bottom xmobars
This commit is contained in:
parent
0f33e15b99
commit
0e04a3e734
|
@ -1,3 +1,5 @@
|
||||||
|
{-# OPTIONS_GHC -Wno-missing-signatures #-}
|
||||||
|
|
||||||
import Data.Map qualified as M
|
import Data.Map qualified as M
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
import Graphics.X11.ExtraTypes.XF86
|
import Graphics.X11.ExtraTypes.XF86
|
||||||
|
@ -14,18 +16,11 @@ import XMonad.Hooks.ManageDocks (ToggleStruts (..), avoidStruts, manageDocks)
|
||||||
import XMonad.Hooks.Place
|
import XMonad.Hooks.Place
|
||||||
import XMonad.Hooks.StatusBar
|
import XMonad.Hooks.StatusBar
|
||||||
import XMonad.Hooks.WindowSwallowing
|
import XMonad.Hooks.WindowSwallowing
|
||||||
import XMonad.Layout.CircleEx
|
|
||||||
import XMonad.Layout.Grid
|
import XMonad.Layout.Grid
|
||||||
import XMonad.Layout.LayoutModifier
|
|
||||||
import XMonad.Layout.NoBorders (noBorders, smartBorders)
|
|
||||||
import XMonad.Layout.Renamed (named)
|
import XMonad.Layout.Renamed (named)
|
||||||
import XMonad.Layout.ShowWName
|
|
||||||
import XMonad.Layout.Spacing
|
|
||||||
import XMonad.StackSet qualified as W
|
import XMonad.StackSet qualified as W
|
||||||
import XMonad.Util.NamedScratchpad
|
import XMonad.Util.NamedScratchpad
|
||||||
|
|
||||||
-- MAIN OPTIONS --------------------------------------------------------
|
|
||||||
|
|
||||||
myTerminal, myEditor :: String
|
myTerminal, myEditor :: String
|
||||||
myTerminal = "st"
|
myTerminal = "st"
|
||||||
myEditor = "nvim"
|
myEditor = "nvim"
|
||||||
|
@ -44,13 +39,11 @@ floatClasses, swallowClasses :: [String]
|
||||||
floatClasses = ["Arandr", "Nsxiv"]
|
floatClasses = ["Arandr", "Nsxiv"]
|
||||||
swallowClasses = ["St", "XTerm"]
|
swallowClasses = ["St", "XTerm"]
|
||||||
|
|
||||||
-- KEY BINDS -----------------------------------------------------------
|
|
||||||
|
|
||||||
myKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
|
myKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
|
||||||
myKeys conf@(XConfig {XMonad.modMask = modMask}) =
|
myKeys (XConfig {XMonad.modMask = modMask, XMonad.workspaces = workspaces}) =
|
||||||
M.fromList $
|
M.fromList $
|
||||||
-- Spawning programs
|
[ -- Common programs
|
||||||
[ ((modMask, xK_Return), spawn myTerminal),
|
((modMask, xK_Return), spawn myTerminal),
|
||||||
((modMask, xK_p), spawnDmenu "dmenu_run"),
|
((modMask, xK_p), spawnDmenu "dmenu_run"),
|
||||||
((modMask, xK_w), spawn "firefox"),
|
((modMask, xK_w), spawn "firefox"),
|
||||||
((modMask .|. controlMask, xK_q), spawn "qutebrowser"),
|
((modMask .|. controlMask, xK_q), spawn "qutebrowser"),
|
||||||
|
@ -75,7 +68,7 @@ myKeys conf@(XConfig {XMonad.modMask = modMask}) =
|
||||||
((modMask .|. controlMask, xK_r), spawn "epicshot -cs select"),
|
((modMask .|. controlMask, xK_r), spawn "epicshot -cs select"),
|
||||||
((modMask .|. controlMask, xK_t), spawn "epicshot -cs full"),
|
((modMask .|. controlMask, xK_t), spawn "epicshot -cs full"),
|
||||||
((modMask .|. controlMask, xK_g), spawn "epicshot -so select"),
|
((modMask .|. controlMask, xK_g), spawn "epicshot -so select"),
|
||||||
-- Custom function row
|
-- Faux function row
|
||||||
((modMask .|. controlMask, xK_F5), spawn "mpc prev"),
|
((modMask .|. controlMask, xK_F5), spawn "mpc prev"),
|
||||||
((modMask .|. controlMask, xK_F6), spawn "mpc next"),
|
((modMask .|. controlMask, xK_F6), spawn "mpc next"),
|
||||||
((modMask .|. controlMask, xK_F7), spawn "mpc toggle"),
|
((modMask .|. controlMask, xK_F7), spawn "mpc toggle"),
|
||||||
|
@ -84,7 +77,7 @@ myKeys conf@(XConfig {XMonad.modMask = modMask}) =
|
||||||
((modMask .|. controlMask, xK_F10), spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && pipe_volume"),
|
((modMask .|. controlMask, xK_F10), spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && pipe_volume"),
|
||||||
((modMask .|. controlMask, xK_F11), spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ && pipe_volume"),
|
((modMask .|. controlMask, xK_F11), spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ && pipe_volume"),
|
||||||
((modMask .|. controlMask, xK_F12), spawn "run-i3lock"),
|
((modMask .|. controlMask, xK_F12), spawn "run-i3lock"),
|
||||||
-- XF86 keys
|
-- Special keys
|
||||||
((0, xF86XK_Explorer), spawnTerminal "nnn"),
|
((0, xF86XK_Explorer), spawnTerminal "nnn"),
|
||||||
((0, xF86XK_Search), spawnDmenu "dmenu_run"),
|
((0, xF86XK_Search), spawnDmenu "dmenu_run"),
|
||||||
((0, xF86XK_Calculator), spawnTerminal "bc -i"),
|
((0, xF86XK_Calculator), spawnTerminal "bc -i"),
|
||||||
|
@ -96,17 +89,18 @@ myKeys conf@(XConfig {XMonad.modMask = modMask}) =
|
||||||
((0, xF86XK_AudioMute), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && pipe_volume"),
|
((0, xF86XK_AudioMute), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && pipe_volume"),
|
||||||
((0, xF86XK_AudioLowerVolume), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ 5%- && pipe_volume"),
|
((0, xF86XK_AudioLowerVolume), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ 5%- && pipe_volume"),
|
||||||
((0, xF86XK_AudioRaiseVolume), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ 5%+ && pipe_volume"),
|
((0, xF86XK_AudioRaiseVolume), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ 5%+ && pipe_volume"),
|
||||||
-- Layouts
|
-- Layout switching
|
||||||
( (modMask, xK_a),
|
( (modMask, xK_a),
|
||||||
submap . M.fromList $
|
submap . M.fromList $
|
||||||
[ ((modMask, xK_t), sendMessage $ JumpToLayout "Tall"),
|
[ ((modMask, xK_t), sendMessage $ JumpToLayout "Tall"),
|
||||||
((modMask, xK_y), sendMessage $ JumpToLayout "Wide"),
|
((modMask, xK_y), sendMessage $ JumpToLayout "Wide"),
|
||||||
((modMask, xK_g), sendMessage $ JumpToLayout "Grid"),
|
((modMask, xK_g), sendMessage $ JumpToLayout "Grid"),
|
||||||
|
((modMask, xK_f), sendMessage $ JumpToLayout "Full"),
|
||||||
((modMask, xK_a), sendMessage NextLayout)
|
((modMask, xK_a), sendMessage NextLayout)
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
((modMask, xK_b), sendMessage ToggleStruts),
|
((modMask, xK_b), sendMessage ToggleStruts),
|
||||||
-- Window focus/swap
|
-- Basic window management
|
||||||
((modMask, xK_j), windows W.focusDown),
|
((modMask, xK_j), windows W.focusDown),
|
||||||
((modMask, xK_k), windows W.focusUp),
|
((modMask, xK_k), windows W.focusUp),
|
||||||
((modMask .|. shiftMask, xK_j), windows W.swapDown),
|
((modMask .|. shiftMask, xK_j), windows W.swapDown),
|
||||||
|
@ -126,13 +120,12 @@ myKeys conf@(XConfig {XMonad.modMask = modMask}) =
|
||||||
((modMask .|. controlMask, xK_Return), namedScratchpadAction myScratchPads "terminal"),
|
((modMask .|. controlMask, xK_Return), namedScratchpadAction myScratchPads "terminal"),
|
||||||
((modMask .|. controlMask, xK_c), namedScratchpadAction myScratchPads "ncmpcpp"),
|
((modMask .|. controlMask, xK_c), namedScratchpadAction myScratchPads "ncmpcpp"),
|
||||||
-- Session
|
-- Session
|
||||||
((modMask .|. controlMask, xK_Delete), io $ exitWith ExitSuccess),
|
((modMask .|. controlMask, xK_Delete), io exitSuccess),
|
||||||
((modMask .|. controlMask, xK_s), spawn "xmonad --recompile && xmonad --restart && notify-send 'xmonad' 'Successfully rebuilt and restarted.'")
|
((modMask .|. controlMask, xK_s), spawn "xmonad --restart && notify-send 'xmonad' 'Successfully recompiled and restarted.'")
|
||||||
]
|
]
|
||||||
++
|
-- Workspace viewing and shifting
|
||||||
-- View and send windows to workspaces 1-9
|
++ [ ((modMask .|. m, k), windows $ f i)
|
||||||
[ ((modMask .|. m, k), windows $ f i)
|
| (k, i) <- zip [xK_1 .. xK_9] workspaces,
|
||||||
| (k, i) <- zip [xK_1 .. xK_9] (XMonad.workspaces conf),
|
|
||||||
(m, f) <- [(0, W.view), (shiftMask, W.shift)]
|
(m, f) <- [(0, W.view), (shiftMask, W.shift)]
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
|
@ -147,40 +140,32 @@ myKeys conf@(XConfig {XMonad.modMask = modMask}) =
|
||||||
spawnTerminal x = do
|
spawnTerminal x = do
|
||||||
spawn $ printf "%s -e %s" myTerminal x
|
spawn $ printf "%s -e %s" myTerminal x
|
||||||
|
|
||||||
spawnEditor :: String -> X ()
|
|
||||||
spawnEditor x = do
|
|
||||||
spawnTerminal $ printf "%s %s" myEditor x
|
|
||||||
|
|
||||||
spawnDmenu :: String -> X ()
|
spawnDmenu :: String -> X ()
|
||||||
spawnDmenu x = do
|
spawnDmenu x = do
|
||||||
spawn $ printf "%s -h %s -fn %s -nb '%s' -nf '%s' -sb '%s' -sf '%s'" x "17" "Terminus-8" "#1d2021" "#ebdbb2" "#fabd2f" "#282828"
|
spawn $ printf "%s -h %s -fn %s -nb '%s' -nf '%s' -sb '%s' -sf '%s'" x "17" "Terminus-8" "#1d2021" "#ebdbb2" "#fabd2f" "#282828"
|
||||||
|
|
||||||
-- MOUSE BINDS ---------------------------------------------------------
|
|
||||||
|
|
||||||
myMouseBindings :: XConfig Layout -> M.Map (KeyMask, Button) (Window -> X ())
|
myMouseBindings :: XConfig Layout -> M.Map (KeyMask, Button) (Window -> X ())
|
||||||
myMouseBindings (XConfig {XMonad.modMask = modMask}) =
|
myMouseBindings (XConfig {XMonad.modMask = modMask}) =
|
||||||
M.fromList $
|
M.fromList
|
||||||
-- Set the window to floating mode and move by dragging
|
[ -- Float and move window
|
||||||
[ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w)),
|
((modMask, button1), \w -> focus w >> mouseMoveWindow w),
|
||||||
-- Raise the window to the top of the stack
|
-- Shift window to master
|
||||||
((modMask, button2), (\w -> focus w >> windows W.shiftMaster)),
|
((modMask, button2), \w -> focus w >> windows W.shiftMaster),
|
||||||
-- Set the window to floating mode and resize by dragging
|
-- Float and resize window
|
||||||
((modMask, button3), (\w -> focus w >> mouseResizeWindow w)),
|
((modMask, button3), \w -> focus w >> mouseResizeWindow w),
|
||||||
-- Switch to previous workspace
|
-- Go to previous workspace
|
||||||
((modMask, button4), (\_ -> prevWS)),
|
((modMask, button4), const prevWS),
|
||||||
-- Switch to next workspace
|
-- Go to next workspace
|
||||||
((modMask, button5), (\_ -> nextWS)),
|
((modMask, button5), const nextWS),
|
||||||
-- Send client to previous workspace
|
-- Shift window to previous workspace
|
||||||
((modMask .|. shiftMask, button4), (\_ -> shiftToPrev >> prevWS)),
|
((modMask .|. shiftMask, button4), \_ -> shiftToPrev >> prevWS),
|
||||||
-- Send client to next workspace
|
-- Shift window to next workspace
|
||||||
((modMask .|. shiftMask, button5), (\_ -> shiftToNext >> nextWS))
|
((modMask .|. shiftMask, button5), \_ -> shiftToNext >> nextWS)
|
||||||
]
|
]
|
||||||
|
|
||||||
-- LAYOUTS -------------------------------------------------------------
|
|
||||||
|
|
||||||
myLayoutHook =
|
myLayoutHook =
|
||||||
avoidStruts $
|
avoidStruts $
|
||||||
tall ||| wide ||| grid
|
tall ||| wide ||| grid ||| full
|
||||||
where
|
where
|
||||||
tall =
|
tall =
|
||||||
named "Tall" $
|
named "Tall" $
|
||||||
|
@ -189,17 +174,13 @@ myLayoutHook =
|
||||||
named "Wide" $
|
named "Wide" $
|
||||||
Mirror tall
|
Mirror tall
|
||||||
grid =
|
grid =
|
||||||
named "Grid" $
|
named
|
||||||
|
"Grid"
|
||||||
Grid
|
Grid
|
||||||
|
full =
|
||||||
mySWNConfig :: SWNConfig
|
named
|
||||||
mySWNConfig =
|
"Full"
|
||||||
def
|
Full
|
||||||
{ swn_font = "Fira Mono 24",
|
|
||||||
swn_fade = 1.0,
|
|
||||||
swn_bgcolor = "#121212",
|
|
||||||
swn_color = "#cccccc"
|
|
||||||
}
|
|
||||||
|
|
||||||
-- SCRATCHPADS ---------------------------------------------------------
|
-- SCRATCHPADS ---------------------------------------------------------
|
||||||
|
|
||||||
|
@ -225,20 +206,20 @@ myScratchPads =
|
||||||
myManageHook :: ManageHook
|
myManageHook :: ManageHook
|
||||||
myManageHook =
|
myManageHook =
|
||||||
composeAll
|
composeAll
|
||||||
[ placeHook $ smart (0.5, 0.5),
|
[ placeHook simpleSmart,
|
||||||
|
manageDocks,
|
||||||
namedScratchpadManageHook myScratchPads,
|
namedScratchpadManageHook myScratchPads,
|
||||||
insertPosition End Newer,
|
insertPosition End Newer,
|
||||||
manageDocks,
|
|
||||||
composeAll [className =? c --> doFloat | c <- floatClasses]
|
composeAll [className =? c --> doFloat | c <- floatClasses]
|
||||||
]
|
]
|
||||||
|
|
||||||
myEventHook :: Event -> X All
|
myEventHook :: Event -> X All
|
||||||
myEventHook =
|
myEventHook =
|
||||||
swallowEventHook (foldr1 (<||>) $ map (\c -> className =? c) swallowClasses) (return True)
|
swallowEventHook (foldr1 (<||>) $ map (className =?) swallowClasses) (return True)
|
||||||
|
|
||||||
myStartupHook :: X ()
|
myStartupHook :: X ()
|
||||||
myStartupHook = do
|
myStartupHook = do
|
||||||
spawn "sleep 0.5 && initialize_pipes"
|
spawn "initialize_pipes"
|
||||||
|
|
||||||
-- XMOBAR --------------------------------------------------------------
|
-- XMOBAR --------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -248,7 +229,7 @@ myPP =
|
||||||
{ ppSep = sep " | ",
|
{ ppSep = sep " | ",
|
||||||
ppCurrent = current . wrap "" "*",
|
ppCurrent = current . wrap "" "*",
|
||||||
ppHidden = noScratchPad,
|
ppHidden = noScratchPad,
|
||||||
ppHiddenNoWindows = \_ -> ""
|
ppHiddenNoWindows = const ""
|
||||||
}
|
}
|
||||||
where
|
where
|
||||||
noScratchPad :: String -> String
|
noScratchPad :: String -> String
|
||||||
|
@ -263,7 +244,8 @@ myPP =
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main =
|
main =
|
||||||
xmonad
|
xmonad
|
||||||
. withSB (statusBarProp "xmobar" $ pure myPP)
|
. withSB (statusBarProp "xmobar-top" $ pure myPP)
|
||||||
|
. withSB (statusBarProp "xmobar-bottom" $ pure myPP)
|
||||||
. toggleFullFloatEwmhFullscreen
|
. toggleFullFloatEwmhFullscreen
|
||||||
. ewmhFullscreen
|
. ewmhFullscreen
|
||||||
. ewmh
|
. ewmh
|
||||||
|
@ -276,9 +258,9 @@ main =
|
||||||
manageHook = myManageHook,
|
manageHook = myManageHook,
|
||||||
handleEventHook = myEventHook,
|
handleEventHook = myEventHook,
|
||||||
startupHook = myStartupHook,
|
startupHook = myStartupHook,
|
||||||
|
mouseBindings = myMouseBindings,
|
||||||
|
keys = myKeys,
|
||||||
focusFollowsMouse = True,
|
focusFollowsMouse = True,
|
||||||
clickJustFocuses = False,
|
clickJustFocuses = False,
|
||||||
modMask = mod4Mask,
|
modMask = mod4Mask
|
||||||
mouseBindings = myMouseBindings,
|
|
||||||
keys = myKeys
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue