{ pkgs, config, lib, ... }: let vars = import ./variables.nix; scripts = import ./scripts.nix {inherit pkgs; }; mod = "Mod4"; in { xsession.windowManager = { i3 = { enable = true; config = { modifier = mod; bars = [ ]; smartBorders = "on"; window = { titlebar = false; border = 3; }; colors = { focused = { border = vars.colors.middle; childBorder = vars.colors.middle; background = vars.colors.background; text = vars.colors.foreground; indicator = vars.colors.foreground; }; focusedInactive = { border = vars.colors.background; childBorder = vars.colors.background; background = vars.colors.background; text = vars.colors.foreground; indicator = vars.colors.foreground; }; unfocused = { border = vars.colors.background; childBorder = vars.colors.background; background = vars.colors.background; text = vars.colors.foreground; indicator = vars.colors.foreground; }; }; startup = [ { command = "sh -c 'feh --bg-scale ~/Pictures/wallpaper.png'"; } ]; keybindings = lib.mkOptionDefault { "${mod}+Return" = "exec ${pkgs.alacritty}/bin/alacritty"; # Lanuch alacritty as a terminal "${mod}+m" = "exec ${pkgs.dmenu}/bin/dmenu"; # Launch dmenu (app launcher) "${mod}+q" = "kill"; # Close an app (kill the process) "${mod}+Ctrl+l" = "exec lock-screen"; # Lock screen "${mod}+Shift+r" = "restart"; # Reload i3 "${mod}+Ctrl+Shift+e" = "exec sh -c 'i3-msg exit'"; # Exit i3 (CAREFUL NO CONFIRM) "${mod}+Shift+s" = "exec flameshot gui" # === FOCUS === # # Vim bindings "${mod}+h" = "focus left"; "${mod}+j" = "focus down"; "${mod}+k" = "focus up"; "${mod}+l" = "focus right"; # Arrow keys "${mod}+Left" = "focus left"; "${mod}+Down" = "focus down"; "${mod}+Up" = "focus up"; "${mod}+Right" = "focus right"; # === MOVE === # # Vim bindings "${mod}+Shift+h" = "move left"; "${mod}+Shift+j" = "move down"; "${mod}+Shift+k" = "move up"; "${mod}+Shift+l" = "move right"; # Arrow keys "${mod}+Shift+Left" = "focus left"; "${mod}+Shift+Down" = "focus down"; "${mod}+Shift+Up" = "focus up"; "${mod}+Shift+Right" = "focus right"; # === F-KEYS === # # Volume "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"; # Raise volume by 5% "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; # Lower volume by 5% "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; # Toggle volume (audio) on/off "XF86AudioMicMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; # Toggle mic on/off # Brigtness "XF86MonBrightnessUp" = "exec brightnessctl set 5%+"; # Raise brightness by 5% "XF86MonBrightnessDown" = "exec brightnessctl set 5%-"; # Lower brightness by 5% # NOTE: Yes, the brightness can go to 0%, thus turning the screen off. }; }; }; }; home.packages = with pkgs; [ dmenu # App launcher i3lock # Lock screen scripts.lock-screen # Actual lock screen functionality imagemagick # Handle wallpaper resizing for i3-lock polybar # Status bar alacritty # Terminal Emulator feh # Wallpaper utility ]; }