From 8368bccf8bb7f67683f43243270364abe091b57b Mon Sep 17 00:00:00 2001 From: fredrikr79 Date: Sat, 12 Oct 2024 18:52:54 +0200 Subject: [PATCH] added xmonad, xmobar and alacritty to home manager --- flake.nix | 3 +- home.nix | 14 ++- home/.xmobarrc | 66 +++++++++++++ home/config/alacritty/alacritty.toml | 14 +++ home/config/xmonad/xmonad.hs | 139 +++++++++++++++++++++++++++ 5 files changed, 231 insertions(+), 5 deletions(-) create mode 100644 home/.xmobarrc create mode 100644 home/config/alacritty/alacritty.toml create mode 100644 home/config/xmonad/xmonad.hs diff --git a/flake.nix b/flake.nix index 204c4e3..5058c92 100644 --- a/flake.nix +++ b/flake.nix @@ -5,7 +5,7 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; home-manager = { - url = github:nix-community/home-manager/release-24.05; + url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -49,6 +49,7 @@ home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; + home-manager.backupFileExtension = "backup"; home-manager.users.fredrikr = { imports = [ ./home.nix nixvim.homeManagerModules.nixvim diff --git a/home.nix b/home.nix index c9f215b..7aed420 100644 --- a/home.nix +++ b/home.nix @@ -38,6 +38,9 @@ # org.gradle.console=verbose # org.gradle.daemon.idletimeout=3600000 # ''; + ".config/alacritty".source = home/config/alacritty; + ".config/xmonad".source = home/config/xmonad; + ".xmobarrc".source = home/.xmobarrc; }; home.sessionVariables = { @@ -85,11 +88,12 @@ } ]; - colorschemes.nord = { + colorschemes.dracula = { enable = true; - settings = { - disable_background = true; - }; + # settings = { + # disable_background = true; + # }; + colorterm = false; }; viAlias = true; @@ -130,6 +134,8 @@ }; plugins = { + lualine.enable = true; + coq-nvim.enable = true; cmp = { diff --git a/home/.xmobarrc b/home/.xmobarrc new file mode 100644 index 0000000..42e0946 --- /dev/null +++ b/home/.xmobarrc @@ -0,0 +1,66 @@ +Config { overrideRedirect = False + , font = "xft:iosevka-9" + , bgColor = "#000000" + , lowerOnStart = True + , fgColor = "#f8f8f2" + , position = TopW L 100 + , commands = [ Run Weather "ENVA" + [ "--template", " °C " + , "-L", "0" + , "-H", "25" + , "--low" , "lightblue" + , "--normal", "#f8f8f2" + , "--high" , "red" + ] 36000 + , Run Cpu + [ "-L", "3" + , "-H", "50" + , "--high" , "red" + , "--normal", "green" + , "--template", " %" + ] 10 + , Run Alsa "default" "Master" + [ "--template", " " + , "--suffix" , "True" + , "--" + , "--on", "" + ] + , Run Memory ["--template", " %"] 10 + , Run Swap [] 10 + , Run Date "%a %Y-%m-%d %H:%M:%S" "date" 10 + , Run XMonadLog + + -- Battery information. This is likely to require some customization + -- based upon your specific hardware. Or, for a desktop you may want + -- to just remove this section entirely. + , Run Battery [ + "-t", " %", + "--", + --"-c", "charge_full", + "-O", "󰢟 ", + "-i", "󱟩 ", + "-o", "󰂎 ", + "-h", "green", + "-l", "red" + ] 10 + -- , Run Network "wlp0s20f3" ["-L","0","-H","32","--normal","green","--high","red"] 10 + , Run CoreTemp [ "--template" , " °C" + , "--Low" , "70" -- units: °C + , "--High" , "80" -- units: °C + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 50 + , Run DynNetwork [ "--template" , " kB/s" + , "--Low" , "1000" -- units: kB/s + , "--High" , "5000" -- units: kB/s + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 10 + , Run Brightness [ "-t", "󰃠 %", "--", "-D", "intel_backlight" ] 60 + ] + , sepChar = "%" + , alignSep = "}{" + , template = " %XMonadLog% } %date% { %alsa:default:Master% | %bright% | %cpu% - %coretemp% | %memory% | %ENVA% | %dynnetwork% | %battery% " + } diff --git a/home/config/alacritty/alacritty.toml b/home/config/alacritty/alacritty.toml new file mode 100644 index 0000000..cc19ced --- /dev/null +++ b/home/config/alacritty/alacritty.toml @@ -0,0 +1,14 @@ +[window] +opacity = 0.7 + +[window.class] +general = "Alacritty" +instance = "Alacritty" + +[window.dimensions] +columns = 69 +lines = 20 + +[window.padding] +x = 2 +y = 2 diff --git a/home/config/xmonad/xmonad.hs b/home/config/xmonad/xmonad.hs new file mode 100644 index 0000000..604e248 --- /dev/null +++ b/home/config/xmonad/xmonad.hs @@ -0,0 +1,139 @@ +import XMonad + +import XMonad.Util.EZConfig + +-- import XMonad.Util.Ungrab +-- import XMonad.Operations (unGrab) + +import XMonad.Hooks.EwmhDesktops + +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.StatusBar +import XMonad.Hooks.StatusBar.PP +import XMonad.Hooks.ManageDocks + +import XMonad.Util.Loggers + +import XMonad.Util.SpawnOnce ( spawnOnce ) + +import XMonad.Layout.NoBorders + +import XMonad.Actions.GroupNavigation + +import XMonad.Actions.CycleWS + +import XMonad.StackSet + +import Graphics.X11.ExtraTypes.XF86 + + +main :: IO () +main = xmonad + . ewmhFullscreen + . ewmh + . withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) toggleStrutsKey + $ myConfig + where + toggleStrutsKey :: XConfig Layout -> (KeyMask, KeySym) + toggleStrutsKey XConfig{ modMask = m } = (m, xK_End) + +myConfig = let + terminal = "alacritty" + browser = "firefox" + modm = mod4Mask -- super/meta + in def + { modMask = modm + , terminal = terminal + , startupHook = myStartupHook + , layoutHook = myLayout + , logHook = historyHook + } + `additionalKeysP` + [ ("M-b", spawn browser) + -- , ("M-t", spawn terminal) + -- , ("", spawn "scrot ~/Pictures/Screenshots/%b-%d::%H-%M-%S.png") + , ("", spawn "/home/fredrikr/.scrot.sh") + -- , ("", unGrab *> spawn "scrot -s ~/Pictures/Screenshots/%b-%d::%H-%M-%S.png") + ] + `additionalKeys` + [ ((mod1Mask, xK_Tab), nextMatch History (return True)) + , ((modm, xK_Escape), spawn "dm-tool lock") + , ((modm, xK_Down), nextWS) + , ((modm, xK_Up), prevWS) + , ((modm .|. shiftMask, xK_Down), shiftToNext) + , ((modm .|. shiftMask, xK_Up), shiftToPrev) + , ((modm, xK_z), toggleWS) + , ((modm, xK_y), withFocused $ windows . sink) -- %! Push window back into tiling + , ((modm, xK_i), sendMessage Shrink) -- %! Shrink the master area + , ((modm, xK_o), sendMessage Expand) -- %! Expand the master area + , ((modm, xK_r), withFocused $ windows . sink) -- %! Resize viewed windows to the correct size + , ((modm, xK_a), sendMessage ToggleStruts) + , ((0, xF86XK_AudioLowerVolume ), spawn "amixer set Master 1%-") + , ((0, xF86XK_AudioRaiseVolume ), spawn "amixer set Master 1%+") + , ((0, xF86XK_AudioMute ), spawn "amixer set Master toggle") + , ((0, xF86XK_MonBrightnessUp ), spawn "brightnessctl set 10%+") + , ((0, xF86XK_MonBrightnessDown ), spawn "brightnessctl set 10%-") + ] + ++ + [((m .|. modm, k), windows $ f i) + | (i, k) <- zip myWorkspaces numPadKeys + , (f, m) <- [(greedyView, 0), (shift, shiftMask)]] + ++ + [((m .|. modm, k), windows $ f i) + | (i, k) <- zip myWorkspaces myWSKeys + , (f, m) <- [(greedyView, 0), (shift, shiftMask)]] + where + myWorkspaces = ["1","2","3","4","5","6","7","8","9","0"] + -- Non-numeric num pad keys, sorted by number + numPadKeys = [ xK_KP_End, xK_KP_Down, xK_KP_Page_Down -- 1, 2, 3 + , xK_KP_Left, xK_KP_Begin, xK_KP_Right -- 4, 5, 6 + , xK_KP_Home, xK_KP_Up, xK_KP_Page_Up -- 7, 8, 9 + , xK_KP_Insert] -- 0 + myWSKeys = [xK_h, xK_t, xK_n, xK_s] ++ [xK_5..xK_9] + + +myXmobarPP :: PP +myXmobarPP = def + { ppSep = magenta " • " + , ppTitleSanitize = xmobarStrip + , ppCurrent = wrap " " "" . xmobarBorder "Top" "#8be9fd" 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 "#ff79c6" "" + blue = xmobarColor "#bd93f9" "" + white = xmobarColor "#f8f8f2" "" + yellow = xmobarColor "#f1fa8c" "" + red = xmobarColor "#ff5555" "" + lowWhite = xmobarColor "#bbbbbb" "" + + +myStartupHook :: X () +myStartupHook = do + spawnOnce "trayer --edge top --align right --SetDockType true \ + \--SetPartialStrut true --expand true --width 5 --transparent true \ + \--alpha 0 --tint 0x000000 --height 18 --distance 17" + spawnOnce "feh --bg-fill --no-fehbg /usr/share/nix.png" + + +myLayout = avoidStruts $ smartBorders tiled ||| smartBorders (Mirror tiled) ||| smartBorders Full + where + tiled = Tall nmaster delta ratio + nmaster = 1 -- Default number of windows in the master pane + ratio = 1/2 -- Default proportion of screen occupied by master pane + delta = 3/100 -- Percent of screen to increment by when resizing panes + +-- toggleStrutsKey XConfig {XMonad.modMask = modMask} = (modMask, xK_a)