From 4ca5331ace5cd78844079f4163fec0024671f0bd Mon Sep 17 00:00:00 2001 From: vin Date: Sun, 11 Aug 2024 22:53:00 -0400 Subject: add my i3 config --- home.nix | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 155 insertions(+), 2 deletions(-) (limited to 'home.nix') diff --git a/home.nix b/home.nix index ebec425..5848c17 100644 --- a/home.nix +++ b/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: { home = { @@ -10,19 +10,22 @@ aerc age alacritty # doing st/suckless declaratively seems like it'll suck + dmenu doas + hsetroot kicad librewolf - loksh mpv mupdf neofetch profanity rclone redshift + st tmux transmission_4 tree + xdotool ]; preferXdgDirectories = true; @@ -366,4 +369,154 @@ videos = "$HOME/"; }; }; + + xsession = { + enable = true; + windowManager.i3 = { + enable = true; + config = { + # TODO import nix file that defines colorscheme + bars = [ { + colors = { + background = "#0e0c06"; + statusline = "#d4b782"; + focusedWorkspace = { + background = "#1b1918"; + border = "#1b1918"; + text = "#d4b782"; + }; + activeWorkspace = { + background = "#0e0c06"; + border = "#1b1918"; + text = "#d4b782"; + }; + inactiveWorkspace = { + background = "#0e0c06"; + border = "#0e0c06"; + text = "#cfb688"; + }; + }; + command = "${pkgs.i3}/bin/i3bar"; + position = "top"; + statusCommand = "while date +'%Y-%m-%d %X'; do sleep 1; done"; + } ]; + colors = { + focused = { + background = "#0e0c06"; + border = "#0e0c06"; + childBorder = "#0e0c06"; + indicator = "#1b1918"; + text = "#d4b782"; + }; + focusedInactive = { + background = "#0e0c06"; + border = "#0e0c06"; + childBorder = "#0e0c06"; + indicator = "#1b1918"; + text = "#cfb688"; + }; + unfocused = { + background = "#1b1918"; + border = "#1b1918"; + childBorder = "#1b1918"; + indicator = "#0e0c06"; + text = "#cfb688"; + }; + }; + focus.mouseWarping = true; + fonts = { + names = [ "monospace" ]; + size = 11.0; + }; + keybindings = + let + left = "n"; + down = "e"; + up = "o"; + right = "i"; + modifier = config.xsession.windowManager.i3.config.modifier; + menu = config.xsession.windowManager.i3.config.menu; + terminal = config.xsession.windowManager.i3.config.terminal; + warpmouse = "exec eval $(xdotool getwindowfocus getwindowgeometry --shell) && xdotool mousemove --window $(xdotool getwindowfocus) $((WIDTH/2)) $((HEIGHT/2))"; + in lib.mkOptionDefault { + "${modifier}+Return" = "exec ${terminal}"; + "${modifier}+p" = "exec ${menu}"; + "${modifier}+b" = "exec bm t"; + "${modifier}+Shift+b" = "exec angoumenu"; + + "${modifier}+Shift+q" = "kill"; + "${modifier}+Shift+c" = "reload"; + "Mod1+Mod4+Ctrl+Shift+e" = "exit"; + + "${modifier}+${left}" = "focus left; ${warpmouse}"; + "${modifier}+${down}" = "focus down; ${warpmouse}"; + "${modifier}+${up}" = "focus up; ${warpmouse}"; + "${modifier}+${right}" = "focus right; ${warpmouse}"; + "${modifier}+Shift+${left}" = "move left"; + "${modifier}+Shift+${down}" = "move down"; + "${modifier}+Shift+${up}" = "move up"; + "${modifier}+Shift+${right}" = "move right"; + + # TODO do this programatically + "${modifier}+1" = "workspace number 1"; + "${modifier}+2" = "workspace number 2"; + "${modifier}+3" = "workspace number 3"; + "${modifier}+4" = "workspace number 4"; + "${modifier}+5" = "workspace number 5"; + "${modifier}+6" = "workspace number 6"; + "${modifier}+7" = "workspace number 7"; + "${modifier}+8" = "workspace number 8"; + "${modifier}+9" = "workspace number 9"; + "${modifier}+0" = "workspace number 0"; + "${modifier}+Shift+1" = "move container to workspace number 1"; + "${modifier}+Shift+2" = "move container to workspace number 2"; + "${modifier}+Shift+3" = "move container to workspace number 3"; + "${modifier}+Shift+4" = "move container to workspace number 4"; + "${modifier}+Shift+5" = "move container to workspace number 5"; + "${modifier}+Shift+6" = "move container to workspace number 6"; + "${modifier}+Shift+7" = "move container to workspace number 7"; + "${modifier}+Shift+8" = "move container to workspace number 8"; + "${modifier}+Shift+9" = "move container to workspace number 9"; + "${modifier}+Shift+0" = "move container to workspace number 0"; + + "${modifier}+Ctrl+Shift+b" = "splith"; + "${modifier}+Ctrl+Shift+v" = "splitv"; + "${modifier}+s" = "layout stacking"; + "${modifier}+t" = "layout tabbed"; + "${modifier}+Shift+t" = "layout toggle split"; + "${modifier}+Shift+f" = "fullscreen"; + "${modifier}+Shift+space" = "floating toggle"; + "${modifier}+space" = "focus mode_toggle"; + "${modifier}+a" = "focus parent"; + + "${modifier}+r" = "mode resize"; + }; + menu = "dmenu_run"; + modes.resize = + let + left = "n"; + down = "e"; + up = "o"; + right = "i"; + in lib.mkOptionDefault { + ${left} = "resize shrink width 10px"; + ${down} = "resize grow height 10px"; + ${up} = "resize shrink width 10px"; + ${right} = "resize grow width 10px"; + Escape = "mode default"; + }; + modifier = "Mod4"; + startup = [ + { command = "picom"; always = true; notification = false; } + { command = "hsetroot -cover pics/wp/zvezdy-kosmos-korabl-art-fantastika-battleship-dmitrii-ustin_ultrawide.jpg >/dev/null"; notification = false; } + ]; + terminal = "alacritty"; + window = { + border = 0; + titlebar = false; + }; + workspaceAutoBackAndForth = true; + }; + }; + }; } -- cgit v1.2.3