about summary refs log tree commit diff stats
path: root/modules/by-name/ri/river/keymap.nix
blob: 420db61a17e7aa0945ba63bb5436164ab1a4ec03 (plain) (blame)
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
{
  lib,
  pkgs,
  libraries,
  config,
  ...
}: let
  index2tag = input: builtins.toString (libraries.base.pow 2 (input - 1));

  mkCommand = name: index: [name (index2tag index)];

  cfg = config.soispha.programs.river;
in {
  soispha.programs.river.init.mappings.keymap = lib.mkIf cfg.enable {
    "<SUPER_LEFT>" = {
      # Change focus
      "f" = {
        "t" = ["focus-view" "next"];
        "n" = ["focus-view" "previous"];
        "<Ctrl-t>" = ["focus-output" "next"];
        "<Ctrl-n>" = ["focus-output" "previous"];
      };

      # Spawn standard programs
      "r" = {
        "a" = ["spawn" "${lib.getExe pkgs.alacritty}"];
        "b" = ["spawn" "${lib.getExe pkgs.tskm} open select"];
        "k" = ["spawn" "${lib.getExe pkgs.keepassxc}"];
        "s" = ["spawn" "${lib.getExe pkgs.signal-desktop}"];
        "p" = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"];
      };

      # Client changes
      "c" = {
        "f" = ["toggle-fullscreen"];
        "c" = ["close"];
        "<SPACE>" = ["toggle-float"];
        "<ENTER>" = ["zoom"];
        "o" = ["send-to-output" "next"];
        "t" = ["swap" "next"];
        "n" = ["swap" "previous"];
      };

      # River compositor control.
      "x" = {
        "q" = ["exit"];
        "l" = ["spawn" "${lib.getExe pkgs.lock}"];
      };

      # Media control
      "m" = {
        "r" = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%+"];
        "l" = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%-"];
        "m" = ["spawn" "${lib.getExe pkgs.mpp} toggle"];
      };

      # Select tags to view.
      "v" = {
        "0" = ["set-view-tags" (builtins.toString ((libraries.base.pow 2 32) - 1))];
        "p" = ["send-to-previous-tags"];

        "1" = mkCommand "set-view-tags" 1;
        "2" = mkCommand "set-view-tags" 2;
        "3" = mkCommand "set-view-tags" 3;
        "4" = mkCommand "set-view-tags" 4;
        "5" = mkCommand "set-view-tags" 5;
        "6" = mkCommand "set-view-tags" 6;
        "7" = mkCommand "set-view-tags" 7;
        "8" = mkCommand "set-view-tags" 8;
        "9" = mkCommand "set-view-tags" 9;

        # Add tags to view.
        "a" = {
          "1" = mkCommand "toggle-view-tags" 1;
          "2" = mkCommand "toggle-view-tags" 2;
          "3" = mkCommand "toggle-view-tags" 3;
          "4" = mkCommand "toggle-view-tags" 4;
          "5" = mkCommand "toggle-view-tags" 5;
          "6" = mkCommand "toggle-view-tags" 6;
          "7" = mkCommand "toggle-view-tags" 7;
          "8" = mkCommand "toggle-view-tags" 8;
          "9" = mkCommand "toggle-view-tags" 9;
        };
      };

      # Select tags to focus.
      "f" = {
        "0" = ["set-focused-tags" (builtins.toString ((libraries.base.pow 2 32) - 1))];
        "p" = ["focus-previous-tags"];

        "1" = mkCommand "set-focused-tags" 1;
        "2" = mkCommand "set-focused-tags" 2;
        "3" = mkCommand "set-focused-tags" 3;
        "4" = mkCommand "set-focused-tags" 4;
        "5" = mkCommand "set-focused-tags" 5;
        "6" = mkCommand "set-focused-tags" 6;
        "7" = mkCommand "set-focused-tags" 7;
        "8" = mkCommand "set-focused-tags" 8;
        "9" = mkCommand "set-focused-tags" 9;
      };
    };

    # Audio
    "<MEDIA_RAISEVOLUME>" = {
      command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%+"];
      allow_locked = true;
    };
    "<MEDIA_LOWERVOLUME>" = {
      command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%-"];
      allow_locked = true;
    };
    "<MEDIA_MUTEVOLUME>" = {
      command = ["spawn" "${lib.getExe pkgs.mpp} toggle"];
      allow_locked = true;
    };

    # Mouse
    "<Meta-<MOUSE_LEFT>>" = ["move-view"];
    "<Meta-<MOUSE_RIGHT>>" = ["resize-view"];

    # Lock screen.
    "<Meta-L>" = ["spawn" "${lib.getExe pkgs.lock}"];

    # Screenshot
    "<PRINTSCREEN>" = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"];
  };
}