{ pkgs, config, lib, ... }: let vars = import ./variables.nix; scripts = import ./scrtips.nix; mod = "Mod4"; in { xsession.windowManager = { i3 = { enable = true; config = { modifier = mod; bars = [ ]; window = { titlebar = false; border = 10; }; startup = [ { command = "sh -c 'feh --bg-fill ${vars.wallpaper}'"; } ]; 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}+Alt+l" = "exec ''sh -c 'lock-screen'''"; # Lock screen "${mod}+Shift+r" = "restart"; "${mod}+Ctrl+Shift+e" = "exec sh -c 'i3-msg exit'"; # === 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"; }; }; }; }; 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 ]; }