aboutsummaryrefslogtreecommitdiff
path: root/modules/home/i3wm/nord-blue/i3.nix
blob: 57e8300a7f2479af326d58aeb2adcd696f33b45d (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{ pkgs, config, lib, ... }:

let 
  vars = import ./variables.nix; 
  lock-screen = import ./i3lock.nix {inherit pkgs; };
  app-launcher = import ./dmenu.nix {inherit pkgs vars; };
  mod = "Mod4";
in 
{
 xsession.windowManager = {
    i3 = {
      enable = true;
      config = {
        modifier = mod;

        bars = [ ];

        window = {
          titlebar = false;
          border = 3;
        };

        colors = {
          focused = {
            border = vars.colors.accent;
            childBorder = vars.colors.accent;
            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}+d" = "exec app-launcher"; # Launch dmenu (app launcher)
          "${mod}+m" = "exec app-launcher"; # Alternative keybind to launch the app launcher
          "${mod}+Shift+m" = "exec alacritty -e nnn"; # Launch nnn
          "${mod}+n" = "exec firefox"; # Launch firefox
          "${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.

        };
      };
      # I'm trying to avoid using this option as much as I can but sometimes I can't figure out how to do stuff via HM
      # TODO: Find a way to declare smart borders in proper nixos home-manager
      extraConfig = ''
        smart_borders on
      '';
    };
  };
  home.packages = with pkgs; [
    dmenu # App launcher
    app-launcher
    i3lock # Lock screen
    lock-screen
    imagemagick # Handle wallpaper resizing for i3-lock
    polybar # Status bar
    alacritty # Terminal Emulator
    feh # Wallpaper utility
    nnn # File browser
  ];
}