blob: d28e9fb22534d021a167fa677c753f6ca3b650b4 (
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
|
{
config,
lib,
pkgs,
...
}:
let
# i3 pretty-printing
exec = script: ''exec "${script}";'';
execRofiShow = modi: exec "${rofiShow} ${modi}";
modifier = "Mod4";
mkTempMode = lib.mapAttrs (_: value: "mode default; ${value}");
# scripts
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
brightnessctlKbd = "${brightnessctl} --device dell:kbd_backlight";
volumectl = "${pkgs.pulseaudio}/bin/pactl";
screenshot = "${pkgs.shutter}/bin/shutter";
rofiShow = "rofi -show";
rofiPulseSelect = "${pkgs.rofi-pulse-select}/bin/rofi-pulse-select";
rofiBluetooth = "${pkgs.rofi-bluetooth}/bin/rofi-bluetooth";
rofiPowerMenu = "${pkgs.rofi-power-menu}/bin/rofi-power-menu";
in
{
xsession.windowManager.i3.config = {
inherit modifier;
modes = lib.mkOptionDefault {
# launching apps
launch = mkTempMode (
{
"e" = exec "emacsclient --create-frame";
"b" = exec "$BROWSER";
}
// lib.optionalAttrs config.programs.rofi.enable {
"c" = execRofiShow "calc";
"d" = execRofiShow "drun";
"f" = execRofiShow "filebrowser";
"m" = execRofiShow "emoji";
"r" = execRofiShow "run";
"t" = execRofiShow "top";
"w" = execRofiShow "window";
"Escape" = "";
}
);
};
keybindings = lib.mkOptionDefault (
{
"${modifier}+space" = "mode launch";
}
// lib.optionalAttrs config.programs.rofi.enable {
"${modifier}+F1" = exec "${rofiPulseSelect} sink";
"${modifier}+F4" = exec "${rofiPulseSelect} source";
"${modifier}+Print" = exec rofiBluetooth;
"${modifier}+Delete" = exec "${rofiShow} menu -modi menu:${rofiPowerMenu}";
"${modifier}+p" = "move workspace to output right";
}
// {
# exiting
"${modifier}+Shift+e" = exec "i3-msg exit";
"${modifier}+l" = exec config.personal.home.lockscreen;
# media keys
"XF86MonBrightnessUp" = exec "${brightnessctl} set 5%+";
"XF86MonBrightnessDown" = exec "${brightnessctl} set 5%-";
"XF86AudioRaiseVolume" = exec "${volumectl} set-sink-volume @DEFAULT_SINK@ +5%";
"XF86AudioLowerVolume" = exec "${volumectl} set-sink-volume @DEFAULT_SINK@ -5%";
"XF86AudioMute" = "exec ${volumectl} set-sink-mute @DEFAULT_SINK@ toggle";
"Shift+XF86AudioRaiseVolume" = exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ +5%";
"Shift+XF86AudioLowerVolume" = exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ -5%";
"XF86AudioMicMute" = exec "${volumectl} set-source-mute @DEFAULT_SOURCE@ toggle";
"XF86KbdBrightnessUp" = ''
exec {brightnessctlKbd} set \
$(( $(${brightnessctlKbd} max) - $(${brightnessctlKbd} get) ))
'';
"Print" = exec screenshot;
}
);
};
}
|