mirror of
https://codeberg.org/frosty/dotfiles.git
synced 2024-09-19 03:37:10 -04:00
(xmonad): remove
This commit is contained in:
parent
5d427a30b4
commit
2cd5004720
1
.config/xmonad/.gitignore
vendored
1
.config/xmonad/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
/dist-*
|
|
@ -1,10 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
link_binary() {
|
||||
ln -sfT "$(cabal list-bin $1)" "$HOME/.cabal/bin/$1"
|
||||
}
|
||||
|
||||
cd "$XDG_CONFIG_HOME/xmonad" && cabal build || exit
|
||||
link_binary xmonad
|
||||
link_binary xmobar-top
|
||||
link_binary xmobar-bottom
|
|
@ -1,24 +0,0 @@
|
|||
import Xmobar
|
||||
|
||||
config :: Config
|
||||
config =
|
||||
defaultConfig
|
||||
{ font = "Terminus 8",
|
||||
textOffset = 0,
|
||||
bgColor = "#121212",
|
||||
fgColor = "#cccccc",
|
||||
position = Bottom,
|
||||
template = " %disk-root% %disk-home% <fc=#777777>|</fc> %local-ip% <fc=#777777>|</fc> %ssid% }{ %now-playing% <fc=#777777>|</fc> %volume% ",
|
||||
commands =
|
||||
[ Run XMonadLog,
|
||||
Run $ Com "monitors" ["local_ip"] "local-ip" 6000,
|
||||
Run $ Com "monitors" ["ssid"] "ssid" 6000,
|
||||
Run $ Com "monitors" ["disk", "/"] "disk-root" 6000,
|
||||
Run $ Com "monitors" ["disk", "/home"] "disk-home" 6000,
|
||||
Run $ PipeReader "/tmp/pipe-volume" "volume",
|
||||
Run $ PipeReader "/tmp/pipe-now-playing" "now-playing"
|
||||
]
|
||||
}
|
||||
|
||||
main :: IO ()
|
||||
main = xmobar config
|
|
@ -1,24 +0,0 @@
|
|||
import Xmobar
|
||||
|
||||
config :: Config
|
||||
config =
|
||||
defaultConfig
|
||||
{ font = "Terminus 8",
|
||||
textOffset = 0,
|
||||
bgColor = "#121212",
|
||||
fgColor = "#cccccc",
|
||||
position = Top,
|
||||
template = " %XMonadLog% }{ \57958 %cpu% <fc=#777777>|</fc> \61381 %memory% <fc=#777777>|</fc> %load% <fc=#777777>|</fc> %battery% <fc=#777777>|</fc> <fc=#f7e83b>%date%</fc> ",
|
||||
commands =
|
||||
[ Run XMonadLog,
|
||||
Run $ PipeReader "/tmp/pipe-volume" "volume",
|
||||
Run $ Com "monitors" ["battery"] "battery" 600,
|
||||
Run $ Com "monitors" ["cpu"] "cpu" 50,
|
||||
Run $ Com "monitors" ["memory"] "memory" 50,
|
||||
Run $ Com "monitors" ["load"] "load" 100,
|
||||
Run $ Date "%m/%d/%Y %H:%M:%S" "date" 10
|
||||
]
|
||||
}
|
||||
|
||||
main :: IO ()
|
||||
main = xmobar config
|
|
@ -1,43 +0,0 @@
|
|||
cabal-version: 3.0
|
||||
name: xmonad-frosty
|
||||
version: 0.1.0.0
|
||||
build-type: Simple
|
||||
|
||||
executable xmonad
|
||||
main-is: xmonad.hs
|
||||
ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
|
||||
build-depends:
|
||||
, base
|
||||
, containers
|
||||
, X11
|
||||
, xmonad >=0.18
|
||||
, xmonad-contrib >=0.18
|
||||
|
||||
default-language: GHC2021
|
||||
default-extensions: ImportQualifiedPost
|
||||
|
||||
executable xmobar-top
|
||||
main-is: xmobar-top.hs
|
||||
ghc-options:
|
||||
-O2 -Wall -Wcompat -Wincomplete-record-updates
|
||||
-Wredundant-constraints -rtsopts -threaded -with-rtsopts=-N
|
||||
|
||||
build-depends:
|
||||
, base
|
||||
, xmobar >=0.48
|
||||
|
||||
default-language: GHC2021
|
||||
default-extensions: ImportQualifiedPost
|
||||
|
||||
executable xmobar-bottom
|
||||
main-is: xmobar-bottom.hs
|
||||
ghc-options:
|
||||
-O2 -Wall -Wcompat -Wincomplete-record-updates
|
||||
-Wredundant-constraints -rtsopts -threaded -with-rtsopts=-N
|
||||
|
||||
build-depends:
|
||||
, base
|
||||
, xmobar >=0.48
|
||||
|
||||
default-language: GHC2021
|
||||
default-extensions: ImportQualifiedPost
|
|
@ -1,271 +0,0 @@
|
|||
{-# OPTIONS_GHC -Wno-missing-signatures #-}
|
||||
|
||||
import Data.Map qualified as M
|
||||
import Data.Monoid
|
||||
import Graphics.X11.ExtraTypes.XF86
|
||||
import System.Exit
|
||||
import Text.Printf
|
||||
import XMonad
|
||||
import XMonad.Actions.CycleWS
|
||||
import XMonad.Actions.Submap
|
||||
import XMonad.Actions.ToggleFullFloat
|
||||
import XMonad.Hooks.DynamicLog
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
import XMonad.Hooks.InsertPosition
|
||||
import XMonad.Hooks.ManageDocks (ToggleStruts (..), avoidStruts, manageDocks)
|
||||
import XMonad.Hooks.Place
|
||||
import XMonad.Hooks.StatusBar
|
||||
import XMonad.Hooks.WindowSwallowing
|
||||
import XMonad.Layout.Grid
|
||||
import XMonad.Layout.NoBorders
|
||||
import XMonad.Layout.Renamed (named)
|
||||
import XMonad.Layout.Spacing
|
||||
import XMonad.StackSet qualified as W
|
||||
import XMonad.Util.NamedScratchpad
|
||||
|
||||
myTerminal, myEditor :: String
|
||||
myTerminal = "st"
|
||||
myEditor = "nvim"
|
||||
|
||||
myWorkspaces :: [String]
|
||||
myWorkspaces = ["1:term", "2:www", "3:mus", "4:chat", "5:file", "6:dev", "7:vol", "8:sys", "9"]
|
||||
|
||||
myBorderWidth :: Dimension
|
||||
myBorderWidth = 1
|
||||
|
||||
myNormalBorderColor, myFocusedBorderColor :: String
|
||||
myNormalBorderColor = "#222222"
|
||||
myFocusedBorderColor = "#80b7ff"
|
||||
|
||||
floatClasses, swallowClasses :: [String]
|
||||
floatClasses = ["Arandr", "Nsxiv"]
|
||||
swallowClasses = ["St", "XTerm"]
|
||||
|
||||
myKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
|
||||
myKeys (XConfig {XMonad.modMask = modMask, XMonad.workspaces = workspaces}) =
|
||||
M.fromList $
|
||||
[ -- Common programs
|
||||
((modMask, xK_Return), spawn myTerminal),
|
||||
((modMask, xK_p), spawnDmenu "dmenu_run"),
|
||||
((modMask, xK_w), spawn "firefox"),
|
||||
((modMask .|. controlMask, xK_q), spawn "qutebrowser"),
|
||||
((modMask, xK_e), spawnTerminal myEditor),
|
||||
((modMask, xK_f), spawnTerminal "lf"),
|
||||
((modMask, xK_t), spawnTerminal "ncmpcpp"),
|
||||
((modMask .|. controlMask, xK_e), spawnTerminal "ncspot"),
|
||||
((modMask, xK_v), spawnTerminal "pulsemixer"),
|
||||
((modMask .|. controlMask, xK_y), spawn "pavucontrol"),
|
||||
((modMask .|. controlMask, xK_semicolon), spawn "simplescreenrecorder"),
|
||||
((modMask .|. controlMask, xK_apostrophe), spawn "obs"),
|
||||
((modMask .|. controlMask, xK_o), spawnTerminal "cava"),
|
||||
((modMask .|. controlMask, xK_d), spawn "arandr"),
|
||||
((modMask .|. controlMask, xK_v), spawn "screenlayouts-open"),
|
||||
((modMask .|. controlMask, xK_w), spawn "wallpapers-open"),
|
||||
((modMask .|. controlMask, xK_bracketright), spawn "find ~/pictures/screenshots -type f | sort -r | nsxiv -ti"),
|
||||
-- Screenshotting
|
||||
((0, xK_Print), spawn "epicshot -cs select"),
|
||||
((controlMask, xK_Print), spawn "epicshot -cs full"),
|
||||
((modMask, xK_Print), spawn "epicshot -so select"),
|
||||
((modMask .|. controlMask, xK_r), spawn "epicshot -cs select"),
|
||||
((modMask .|. controlMask, xK_t), spawn "epicshot -cs full"),
|
||||
((modMask .|. controlMask, xK_g), spawn "epicshot -so select"),
|
||||
-- Faux function row
|
||||
((modMask .|. controlMask, xK_F5), spawn "mpc prev"),
|
||||
((modMask .|. controlMask, xK_F6), spawn "mpc next"),
|
||||
((modMask .|. controlMask, xK_F7), spawn "mpc toggle"),
|
||||
((modMask .|. controlMask, xK_F8), spawn "mpc stop"),
|
||||
((modMask .|. controlMask, xK_F9), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && 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_F12), spawn "run-i3lock"),
|
||||
-- Special keys
|
||||
((0, xF86XK_Explorer), spawnTerminal "nnn"),
|
||||
((0, xF86XK_Search), spawnDmenu "dmenu_run"),
|
||||
((0, xF86XK_Calculator), spawnTerminal "bc -i"),
|
||||
((0, xF86XK_Tools), spawnTerminal "ncmpcpp"),
|
||||
((0, xF86XK_AudioPrev), spawn "mpc prev"),
|
||||
((0, xF86XK_AudioNext), spawn "mpc next"),
|
||||
((0, xF86XK_AudioPlay), spawn "mpc toggle"),
|
||||
((0, xF86XK_AudioStop), spawn "mpc stop"),
|
||||
((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_AudioRaiseVolume), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ 5%+ && pipe_volume"),
|
||||
-- Layout switching
|
||||
( (modMask, xK_a),
|
||||
submap . M.fromList $
|
||||
[ ((modMask, xK_t), sendMessage $ JumpToLayout "Tall"),
|
||||
((modMask, xK_y), sendMessage $ JumpToLayout "Wide"),
|
||||
((modMask, xK_g), sendMessage $ JumpToLayout "Grid"),
|
||||
((modMask, xK_f), sendMessage $ JumpToLayout "Full"),
|
||||
((modMask, xK_s), sendMessage $ JumpToLayout "Spiral"),
|
||||
((modMask, xK_a), sendMessage NextLayout)
|
||||
]
|
||||
),
|
||||
((modMask, xK_b), sendMessage ToggleStruts),
|
||||
-- Basic window management
|
||||
((modMask, xK_j), windows W.focusDown),
|
||||
((modMask, xK_k), windows W.focusUp),
|
||||
((modMask .|. shiftMask, xK_j), windows W.swapDown),
|
||||
((modMask .|. shiftMask, xK_k), windows W.swapUp),
|
||||
-- Master control
|
||||
((modMask, xK_h), sendMessage Shrink),
|
||||
((modMask, xK_l), sendMessage Expand),
|
||||
((modMask, xK_i), sendMessage $ IncMasterN 1),
|
||||
((modMask, xK_d), sendMessage $ IncMasterN $ -1),
|
||||
((modMask, xK_s), windows W.focusMaster),
|
||||
((modMask .|. shiftMask, xK_s), windows W.swapMaster),
|
||||
-- Window actions
|
||||
((modMask .|. shiftMask, xK_c), kill),
|
||||
((modMask .|. shiftMask, xK_f), withFocused toggleFullFloat),
|
||||
((modMask .|. shiftMask, xK_space), withFocused toggleFloat),
|
||||
-- Scratchpads
|
||||
((modMask .|. controlMask, xK_Return), namedScratchpadAction myScratchPads "terminal"),
|
||||
((modMask .|. controlMask, xK_c), namedScratchpadAction myScratchPads "ncmpcpp"),
|
||||
-- Session
|
||||
((modMask .|. controlMask, xK_l), spawn "xscreensaver-command -lock"),
|
||||
((modMask .|. controlMask, xK_s), spawn "xmonad --restart && notify-send 'xmonad' 'Successfully recompiled and restarted.'"),
|
||||
((modMask .|. controlMask, xK_Delete), io exitSuccess)
|
||||
]
|
||||
-- Workspace viewing and shifting
|
||||
++ [ ((modMask .|. m, k), windows $ f i)
|
||||
| (k, i) <- zip [xK_1 .. xK_9] workspaces,
|
||||
(m, f) <- [(0, W.view), (shiftMask, W.shift)]
|
||||
]
|
||||
where
|
||||
toggleFloat :: Window -> X ()
|
||||
toggleFloat w = do
|
||||
isFloating <- gets (M.member w . W.floating . windowset)
|
||||
if isFloating
|
||||
then windows $ W.sink w
|
||||
else withFocused float
|
||||
|
||||
spawnTerminal :: String -> X ()
|
||||
spawnTerminal x = do
|
||||
spawn $ printf "%s -e %s" myTerminal x
|
||||
|
||||
spawnDmenu :: String -> X ()
|
||||
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"
|
||||
|
||||
myMouseBindings :: XConfig Layout -> M.Map (KeyMask, Button) (Window -> X ())
|
||||
myMouseBindings (XConfig {XMonad.modMask = modMask}) =
|
||||
M.fromList
|
||||
[ -- Float and move window
|
||||
((modMask, button1), \w -> focus w >> mouseMoveWindow w >> windows W.shiftMaster),
|
||||
-- Shift window to master
|
||||
((modMask, button2), \w -> focus w >> windows W.shiftMaster),
|
||||
-- Float and resize window
|
||||
((modMask, button3), \w -> focus w >> mouseResizeWindow w >> windows W.shiftMaster),
|
||||
-- Go to previous workspace
|
||||
((modMask, button4), const prevWS),
|
||||
-- Go to next workspace
|
||||
((modMask, button5), const nextWS),
|
||||
-- Shift window to previous workspace
|
||||
((modMask .|. shiftMask, button4), \_ -> shiftToPrev >> prevWS),
|
||||
-- Shift window to next workspace
|
||||
((modMask .|. shiftMask, button5), \_ -> shiftToNext >> nextWS)
|
||||
]
|
||||
|
||||
myLayoutHook =
|
||||
lessBorders OnlyScreenFloat $
|
||||
spacing 8 $
|
||||
avoidStruts $
|
||||
tall ||| wide ||| grid ||| full
|
||||
where
|
||||
tall =
|
||||
named "Tall" $
|
||||
Tall 1 (3 / 100) (1 / 2)
|
||||
wide =
|
||||
named "Wide" $
|
||||
Mirror tall
|
||||
grid =
|
||||
named
|
||||
"Grid"
|
||||
Grid
|
||||
full =
|
||||
named
|
||||
"Full"
|
||||
Full
|
||||
|
||||
-- SCRATCHPADS ---------------------------------------------------------
|
||||
|
||||
myScratchPads :: [NamedScratchpad]
|
||||
myScratchPads =
|
||||
[ constructScratchpad "terminal" "scTerminal" Nothing,
|
||||
constructScratchpad "ncmpcpp" "scNcmpcpp" (Just "ncmpcpp")
|
||||
]
|
||||
where
|
||||
constructScratchpad :: String -> String -> Maybe String -> NamedScratchpad
|
||||
constructScratchpad name cls maybeExec =
|
||||
NS
|
||||
name
|
||||
( case maybeExec of
|
||||
Just exec -> printf "%s -c %s -e %s" myTerminal cls exec
|
||||
Nothing -> printf "%s -c %s" myTerminal cls
|
||||
)
|
||||
(className =? cls)
|
||||
(customFloating $ W.RationalRect (3 / 5) (4 / 6) (1 / 5) (1 / 6))
|
||||
|
||||
-- HOOKS ---------------------------------------------------------------
|
||||
|
||||
myManageHook :: ManageHook
|
||||
myManageHook =
|
||||
composeAll
|
||||
[ placeHook simpleSmart,
|
||||
manageDocks,
|
||||
namedScratchpadManageHook myScratchPads,
|
||||
insertPosition End Newer,
|
||||
composeAll [className =? c --> doFloat | c <- floatClasses]
|
||||
]
|
||||
|
||||
myEventHook :: Event -> X All
|
||||
myEventHook =
|
||||
swallowEventHook (foldr1 (<||>) $ map (className =?) swallowClasses) (return True)
|
||||
|
||||
myStartupHook :: X ()
|
||||
myStartupHook = do
|
||||
spawn "initialize_pipes"
|
||||
|
||||
-- XMOBAR --------------------------------------------------------------
|
||||
|
||||
myPP :: PP
|
||||
myPP =
|
||||
def
|
||||
{ ppSep = sep " | ",
|
||||
ppCurrent = current . wrap "" "*",
|
||||
ppHidden = noScratchPad,
|
||||
ppHiddenNoWindows = const ""
|
||||
}
|
||||
where
|
||||
noScratchPad :: String -> String
|
||||
noScratchPad ws = if ws == "NSP" then "" else ws
|
||||
|
||||
sep, current :: String -> String
|
||||
sep = xmobarColor "#777777" ""
|
||||
current = xmobarColor "#6eadff" ""
|
||||
|
||||
-- MAIN ----------------------------------------------------------------
|
||||
|
||||
main :: IO ()
|
||||
main =
|
||||
xmonad
|
||||
. withSB (statusBarProp "xmobar-top" $ pure myPP)
|
||||
. withSB (statusBarProp "xmobar-bottom" $ pure myPP)
|
||||
. toggleFullFloatEwmhFullscreen
|
||||
. ewmhFullscreen
|
||||
. ewmh
|
||||
$ def
|
||||
{ borderWidth = myBorderWidth,
|
||||
normalBorderColor = myNormalBorderColor,
|
||||
focusedBorderColor = myFocusedBorderColor,
|
||||
layoutHook = myLayoutHook,
|
||||
workspaces = myWorkspaces,
|
||||
manageHook = myManageHook,
|
||||
handleEventHook = myEventHook,
|
||||
startupHook = myStartupHook,
|
||||
mouseBindings = myMouseBindings,
|
||||
keys = myKeys,
|
||||
focusFollowsMouse = True,
|
||||
clickJustFocuses = False,
|
||||
modMask = mod4Mask
|
||||
}
|
Loading…
Reference in a new issue