summaryrefslogtreecommitdiff
path: root/modules/home/i3wm/nord-blue/i3.nix
blob: e3a3e17d7fed7070889016fe27534883bbe0fd25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
{ pkgs, config, lib, ... }:

let 
  vars = import ./variables.nix {inherit ...; }; 
in 
{
  packages = with pkgs; [
    feh # Wallpaper
  ];
  programs = {
    i3 = {
      enable = true;
      config = {
        modifier = "Mod4";
        
        keybindings = lib.mkOptionDefault {
          "${mod}+Enter" = "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 '${pkgs.lock-screen}/bin/lock-screen' ${wallpaper}";


          # === 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";
        };
      };

      extraPackages = with pkgs; [
        dmenu # App launcher
        i3-lock # Lock screen
        imagemagick # Handle wallpaper resizing for i3-lock
        polybar # Status bar
        alacritty # Terminal Emulator
      ];
    }
  }
}