mirror of
https://codeberg.org/muon/home.git
synced 2025-12-06 08:07:45 +00:00
Add dotfiles
This commit is contained in:
commit
39fe550b3e
45 changed files with 4363 additions and 0 deletions
165
modules/home/xmonad/default.nix
Normal file
165
modules/home/xmonad/default.nix
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with config.lib.stylix.colors; {
|
||||
xsession.windowManager.xmonad = {
|
||||
enable = true;
|
||||
enableContribAndExtras = true;
|
||||
};
|
||||
|
||||
xsession.windowManager.xmonad.config =
|
||||
pkgs.writeText "xmonad.hs" ''
|
||||
import XMonad
|
||||
|
||||
import XMonad.Config.Desktop
|
||||
|
||||
import XMonad.Layout.ResizableTile
|
||||
import XMonad.Layout.NoBorders
|
||||
import XMonad.Layout.Gaps
|
||||
import XMonad.Layout.Spacing
|
||||
import XMonad.Layout.PerScreen
|
||||
|
||||
import XMonad.Util.EZConfig
|
||||
import XMonad.Util.Ungrab
|
||||
import XMonad.Util.Loggers
|
||||
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
import XMonad.Hooks.DynamicLog
|
||||
import XMonad.Hooks.ManageDocks
|
||||
import XMonad.Hooks.ManageHelpers
|
||||
import XMonad.Hooks.StatusBar
|
||||
import XMonad.Hooks.StatusBar.PP
|
||||
|
||||
import System.Exit
|
||||
|
||||
import qualified XMonad.StackSet as W
|
||||
|
||||
mobarStart = "xmobar ~/.config/xmobar/xmobarrc"
|
||||
|
||||
main :: IO()
|
||||
main = xmonad
|
||||
. ewmhFullscreen
|
||||
. ewmh
|
||||
. docks
|
||||
. withEasySB mySB defToggleStrutsKey
|
||||
$ myConfig
|
||||
where
|
||||
mySB = statusBarProp mobarStart (pure myXmobarPP)
|
||||
|
||||
myConfig = def
|
||||
{ modMask = mod4Mask
|
||||
, terminal = "alacritty"
|
||||
|
||||
-- Border
|
||||
, borderWidth = 1
|
||||
, normalBorderColor = "#${base03}"
|
||||
, focusedBorderColor = "#${base0B}"
|
||||
|
||||
-- Hooks
|
||||
, manageHook = myHook
|
||||
-- , layoutHook = desktopLayoutModifiers $ smartBorders myLayout
|
||||
, layoutHook = myLayout
|
||||
-- , startupHook = myStartup
|
||||
}
|
||||
`additionalKeysP`
|
||||
[ ("M-b", spawn "chromium")
|
||||
, ("M-<Return>", spawn "alacritty")
|
||||
, ("M-d", spawn "rofi -show drun")
|
||||
|
||||
-- Windows
|
||||
, ("M-S-<Return>", windows W.swapMaster)
|
||||
, ("M-S-q", kill)
|
||||
, ("M-S-x", io (exitWith ExitSuccess))
|
||||
|
||||
-- Media keys
|
||||
, ("<XF86AudioMute>", spawn "pamixer -t")
|
||||
, ("<XF86AudioLowerVolume>", spawn "pamixer -d2")
|
||||
, ("<XF86AudioRaiseVolume>", spawn "pamixer -i2")
|
||||
]
|
||||
|
||||
myLayout = avoidStruts $ lessBorders Screen $ smartBorders $ tall ||| Full
|
||||
where
|
||||
addSpaces = spacingRaw True (Border 2 2 2 2) True (Border 2 2 2 2) True
|
||||
-- addGaps = gaps [(U,10),(R,10),(L,10),(D,10)]
|
||||
-- tall = ResizableTall 2 (1/10) 1 []
|
||||
tall = ifWider 1280 (tiled) (Mirror tiled)
|
||||
tiled = Tall nmaster delta ratio
|
||||
nmaster = 1
|
||||
ratio = 1/2
|
||||
delta = 3/100
|
||||
|
||||
myHook :: ManageHook
|
||||
myHook = composeAll
|
||||
[ isDialog --> doFloat
|
||||
, isFullscreen --> (doF W.focusDown <+> doFullFloat)
|
||||
]
|
||||
|
||||
-- myStartup :: X ()
|
||||
-- myStartup = do
|
||||
-- spawn mobarStart
|
||||
|
||||
myXmobarPP :: PP
|
||||
myXmobarPP = def
|
||||
{ ppSep = magenta " • "
|
||||
, ppTitleSanitize = xmobarStrip
|
||||
, ppCurrent = wrap " " "" . xmobarBorder "Top" "#${base0C}" 2
|
||||
, ppHidden = white . wrap " " ""
|
||||
, ppHiddenNoWindows = lowWhite . wrap " " ""
|
||||
, ppUrgent = red . wrap (yellow "!") (yellow "!")
|
||||
, ppOrder = \[ws, l, _, wins] -> [ws, l, wins]
|
||||
, ppExtras = [logTitles formatFocused formatUnfocused]
|
||||
}
|
||||
where
|
||||
formatFocused = wrap (white "[") (white "]") . magenta . ppWindow
|
||||
formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow
|
||||
|
||||
-- | Windows should have *some* title, which should not not exceed a
|
||||
-- sane length.
|
||||
ppWindow :: String -> String
|
||||
ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30
|
||||
|
||||
blue, lowWhite, magenta, red, white, yellow :: String -> String
|
||||
magenta = xmobarColor "#${base0E}" ""
|
||||
blue = xmobarColor "#${base0D}" ""
|
||||
white = xmobarColor "#${base05}" ""
|
||||
yellow = xmobarColor "#${base0A}" ""
|
||||
red = xmobarColor "#${base08}" ""
|
||||
lowWhite = xmobarColor "#${base04}" ""
|
||||
'';
|
||||
|
||||
programs.xmobar.enable = true;
|
||||
programs.xmobar.extraConfig = ''
|
||||
Config
|
||||
{ overrideRedirect = False
|
||||
, font = "Mononoki"
|
||||
, bgColor = "#${base00}"
|
||||
, fgColor = "#${base05}"
|
||||
, position = BottomH 20
|
||||
, lowerOnStart = True
|
||||
, commands =
|
||||
[ Run Cpu
|
||||
[ "-L", "3"
|
||||
, "-H", "50"
|
||||
, "--high" , "red"
|
||||
, "--normal", "green"
|
||||
] 10
|
||||
, Run Alsa "default" "Master"
|
||||
[ "--template", "Vol: <volumestatus>"
|
||||
, "--suffix" , "True"
|
||||
, "--"
|
||||
, "--on", ""
|
||||
]
|
||||
, Run Memory ["--template", "Mem: <usedratio>%"] 10
|
||||
, Run Swap [] 10
|
||||
, Run Date "%Y-%m-%d %a <fc=#${base0C}>%H:%M:%S</fc>" "date" 1
|
||||
, Run XMonadLog
|
||||
]
|
||||
, sepChar = "%"
|
||||
, alignSep = "}{"
|
||||
, template = "%XMonadLog% }{ %cpu% | %memory% | %swap% | %date% "
|
||||
}
|
||||
'';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue