aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/modules/workstation/ui/i3/keys.nix
blob: 05497926cc5c351d49dcdcf8f000c272067bcd0f (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
{ pkgs, modifier }:

{
  # Start a terminal
  "${modifier}+Return" = "exec ${pkgs.kitty}/bin/kitty";
  
  # Area screenshot support
  "${modifier}+9" = "exec ${pkgs.libkookie-i3-scrcap}";
  
  # Close individual windows
  "${modifier}+Shift+q" = "kill";

  # Full-screen window
  "${modifier}+f" = "fullscreen";

  # Start software on <this> or <other> workspace
  "${modifier}+e" = "exec ${pkgs.dmenu}/bin/dmenu_run";

  # Switch to workspace (optionally take current window)
  "${modifier}+o" = "exec ${pkgs.libkookie-i3-switch}";
  "${modifier}+Shift+o" = "exec ${pkgs.libkookie-i3-move}";

  # Rename workspaces
  "${modifier}+Ctrl+r" = "exec ${pkgs.libkookie-i3-rename}";
  # Move focus around - vim style
  "${modifier}+h" = "focus left";
  "${modifier}+t" = "focus up";
  "${modifier}+n" = "focus down";
  "${modifier}+s" = "focus right";

  # Move focus around - boring style
  "${modifier}+Up" = "focus up";
  "${modifier}+Down" = "focus down";
  "${modifier}+Left" = "focus left";
  "${modifier}+Right" = "focus right";

  # Move windows - vim style
  "${modifier}+Shift+h" = "move left";
  "${modifier}+Shift+t" = "move up";
  "${modifier}+Shift+n" = "move down";
  "${modifier}+Shift+s" = "move right";

  # Move windows - boring style
  "${modifier}+Shift+Up" = "move up";
  "${modifier}+Shift+Down" = "move down";
  "${modifier}+Shift+Left" = "move left";
  "${modifier}+Shift+Right" = "move right";

  # Move workspaces between multi-monitor setups
  "${modifier}+Ctrl+Shift+Up" = "move workspace to output up";
  "${modifier}+Ctrl+Shift+Down" = "move workspace to output down";
  "${modifier}+Ctrl+Shift+Left" = " move workspace to output left";
  "${modifier}+Ctrl+Shift+Right" = "move workspace to output right";

  # Define split behaviours
  "${modifier}+2" = "split h";
  "${modifier}+1" = "split v";

  # Some layout modifiers
  "${modifier}+3" = "layout default";
  "${modifier}+4" = "layout tabbed";
  "${modifier}+5" = "layout stacked";  
}