commit 4ca5331ace5cd78844079f4163fec0024671f0bd
parent 4f94a3d13ff3c8aa56b3143048a37790fd971ba6
Author: vin <git@vineetk.net>
Date: Sun, 11 Aug 2024 22:53:00 -0400
add my i3 config
Diffstat:
| M | home.nix | | | 157 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- |
1 file changed, 155 insertions(+), 2 deletions(-)
diff --git 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;
+ };
+ };
+ };
}