add xmonad with xmobar

add scratchpads
This commit is contained in:
Łukasz Pankowski 2022-10-26 22:39:43 +02:00
parent 7b95888dfa
commit 0f7a325f0b
3 changed files with 144 additions and 2 deletions

View File

@ -0,0 +1,19 @@
-- -*- mode: haskell -*-
Config { font = "xft:Iosevka ss01-12"
, position = Top
, commands = [ Run Cpu
[ "-L", "3"
, "-H", "50"
, "--high" , "#ff5555"
, "--normal", "#bae6fd"
] 10
, Run Memory ["--template", "Mem: <usedratio>%"] 10
, Run Swap [] 10
, Run Date "%H:%M " "date" 10
, Run XMonadLog
]
, sepChar = "%"
, alignSep = "}{"
, template = "%XMonadLog% }{ %cpu% │ %memory% | %swap% │ %date% "
}

View File

@ -0,0 +1,119 @@
import XMonad
import XMonad.Actions.CycleWS
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP
import XMonad.Layout.Grid
import XMonad.Layout.Renamed
import XMonad.Layout.Spacing
import XMonad.Layout.ThreeColumns
import XMonad.Layout.ToggleLayouts
import XMonad.StackSet (RationalRect (RationalRect))
import XMonad.Util.EZConfig (additionalKeysP)
import XMonad.Util.NamedScratchpad
main :: IO ()
main =
xmonad
. docks
. ewmh
. ewmhFullscreen
$ dynamicSBs barSpawner $
myConfig
isDark = True
ifDark dark light = if isDark then dark else light
myConfig =
def
{ modMask = mod4Mask,
terminal = "alacritty",
borderWidth = 3,
focusedBorderColor = ifDark "#a0522d" "#ff7f50",
normalBorderColor = ifDark "#708090" "#bebebe",
layoutHook = avoidStruts $ renamed [CutWordsLeft 1] $ spacingWithEdge 3 $ myLayout,
manageHook = namedScratchpadManageHook scratchpads
}
`additionalKeysP` [ ("M-p", spawn "dmenu_run -fn 'Iosevka ss01-12'"),
("M-S-p", spawn "rofi -theme Arc-Dark -show combi"),
("M-a", toggleWS),
("M-b", sendMessage ToggleStruts),
("M-f", sendMessage ToggleLayout),
("M-i", prevWS),
("M-o", nextWS),
("M-S-i", shiftToPrev),
("M-S-o", shiftToNext),
("C-M-i", prevScreen),
("C-M-o", nextScreen),
("C-M-l", spawn "slock"),
("C-M-n", spawn "emacsclient -n -c"),
("C-M-s", spawn "systemctl suspend"),
("M-S-<F6>", spawn switchThemeCmd *> restart "xmonad" True),
("M-<F1>", namedScratchpadAction scratchpads "terminal"),
("M-<F2>", namedScratchpadAction scratchpads "thunar"),
("M-<F3>", namedScratchpadAction scratchpads "top")
]
scratchpads =
[ NS "terminal" "alacritty -t terminal" (title =? "terminal") floating,
NS "thunar" "thunar" (className =? "Thunar") floating,
NS "top" "alacritty -t top -e top" (title =? "top") floating
]
where
floating = customFloating $ RationalRect (1 / 6) (1 / 6) (2 / 3) (2 / 3)
myLayout = toggleLayouts Full $ tiled ||| Mirror tiled ||| Grid ||| ThreeCol 1 (3 / 100) (1 / 2) ||| Full
where
tiled = Tall nmaster delta ratio
nmaster = 1
ratio = 1 / 2
delta = 3 / 100
barSpawner :: ScreenId -> IO StatusBarConfig
barSpawner screenId = pure (statusBarProp ("xmobar -x " ++ id ++ " -B " ++ bg ++ " -F " ++ fg) (pure myXmobarPP))
where
id = show $ fromEnum screenId
bg = ifDark "'#1e293b'" "'#0c4a6e'"
fg = ifDark "'#64748B'" "'#cbd5e1'"
myXmobarPP :: PP
myXmobarPP =
def
{ ppSep = "",
ppWsSep = "",
ppTitleSanitize = xmobarStrip,
ppCurrent = highlight . wrap " " " ",
ppVisible = wrap " " " " . xmobarBorder "Bottom" (ifDark "#475569" "#0ea5e9") 4,
ppHidden = noNSP $ wrap " " " ",
ppHiddenNoWindows = noNSP $ hidden . wrap " " " ",
ppUrgent = red . wrap " " " "
}
where
highlight, hidden, red :: String -> String
highlight = ifDark (xmobarColor "#94A3B8" "#475569") (xmobarColor "#bae6fd" "#0284c7")
hidden = xmobarColor (ifDark "#334155" "#9ca3af") ""
red = xmobarColor "#111827" "#ff5555"
noNSP f name = if name /= "NSP" then f name else ""
switchThemeCmd =
let newIsDark = show $ not isDark
theme = ifDark "light" "dark"
gtkTheme = ifDark "Materia-light" "Materia-dark"
bgColor = ifDark "#dde1e3" "#4a4a4a"
in "sed -i 's/^isDark =.*/isDark = " ++ newIsDark ++ "/' ~/.config/xmonad/xmonad.hs; "
++ "xsetroot -solid '"
++ bgColor
++ "'; "
++ "sed -i -E 's#Net/ThemeName .*#Net/ThemeName \""
++ gtkTheme
++ "\"#' ~/.config/xsettingsd/xsettingsd.conf; "
++ "pkill -HUP -x xsettingsd; "
++ "sed -i 's/^colors: [*].*/colors: *"
++ theme
++ "/' ~/.config/alacritty/alacritty.yml; "
++ "emacsclient --eval \"(my-select-theme '"
++ theme
++ ")\""

View File

@ -29,6 +29,12 @@ emacsclient --eval nil -a '' &
xsettingsd &
xsetroot -cursor_name left_ptr
if which xmonad > /dev/null && test -f ~/.config/xmonad/xmonad.hs; then
exec xmonad
fi
if which qtile > /dev/null && test -f ~/.config/qtile/config.py; then
exec qtile start
fi
@ -43,8 +49,6 @@ if which lupan-wm > /dev/null; then
exec lupan-wm -s 20
fi
xsetroot -solid '#94a3b8' -cursor_name left_ptr
if which bspwm > /dev/null; then
sxhkd &
exec bspwm