-
Notifications
You must be signed in to change notification settings - Fork 0
/
sway.nix
119 lines (106 loc) · 3.88 KB
/
sway.nix
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
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.me.wm.sway;
mod = "Mod1";
in {
options.me.wm.sway = {
enable = mkEnableOption "Sway customisation";
};
config.wayland.windowManager.sway = mkIf cfg.enable {
enable = true;
config = rec {
modifier = mod;
terminal = "kitty";
gaps = {
inner = 8;
outer = 4;
};
bars = [
{
position = "top";
fonts = {
# TODO: set this in font.nix
names = [config.me.font-name];
};
}
];
keybindings = {
"${mod}+Shift+Q" = "kill";
# change focus
"${mod}+h" = "focus left";
"${mod}+j" = "focus down";
"${mod}+k" = "focus up";
"${mod}+l" = "focus right";
# alternatively, you can use the cursor keys:
"${mod}+Left" = "focus left";
"${mod}+Down" = "focus down";
"${mod}+Up" = "focus up";
"${mod}+Right" = "focus right";
# move focused window
"${mod}+Shift+H" = "move left";
"${mod}+Shift+J" = "move down";
"${mod}+Shift+K" = "move up";
"${mod}+Shift+L" = "move right";
# alternatively, you can use the cursor keys:
"${mod}+Shift+Left" = "move left";
"${mod}+Shift+Down" = "move down";
"${mod}+Shift+Up" = "move up";
"${mod}+Shift+Right" = "move right";
# split in horizontal orientation
"${mod}+Shift+backslash" = "split h";
# split in vertical orientation
"${mod}+underscore" = "split v";
# enter fullscreen mode for the focused container
"${mod}+Shift+f" = "fullscreen";
# change container layout (stacked, tabbed, default)
"${mod}+s" = "layout stacking";
"${mod}+w" = "layout tabbed";
"${mod}+e" = "layout default";
# toggle tiling / floating
"${mod}+Shift+space" = "floating toggle";
# change focus between tiling / floating windows
"${mod}+space" = "focus mode_toggle";
# focus the parent container
"${mod}+a" = "focus parent";
# switch to workspace
"${mod}+1" = "workspace number 1";
"${mod}+2" = "workspace number 2";
"${mod}+3" = "workspace number 3";
"${mod}+4" = "workspace number 4";
"${mod}+5" = "workspace number 5";
"${mod}+6" = "workspace number 6";
"${mod}+7" = "workspace number 7";
"${mod}+8" = "workspace number 8";
"${mod}+9" = "workspace number 9";
"${mod}+0" = "workspace number 10";
"${mod}+n" = "workspace next";
"${mod}+p" = "workspace prev";
# move focused container to workspace
"${mod}+Shift+exclam" = "move container to workspace 1";
"${mod}+Shift+quotedbl" = "move container to workspace 2";
"${mod}+Shift+sterling" = "move container to workspace 3";
"${mod}+Shift+dollar" = "move container to workspace 4";
"${mod}+Shift+percent" = "move container to workspace 5";
"${mod}+Shift+asciicircum" = "move container to workspace 6";
"${mod}+Shift+ampersand" = "move container to workspace 7";
"${mod}+Shift+asterisk" = "move container to workspace 8";
"${mod}+Shift+parenleft" = "move container to workspace 9";
"${mod}+Shift+parenright" = "move container to workspace 10";
# reload the configuration file
"${mod}+Shift+C" = "reload";
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
"${mod}+Shift+R" = "restart";
# exit i3 (logs you out of your X session)
"${mod}+Ctrl+Shift+E" = "exit";
"${mod}+c" = "exec ${config.me.defaults.browser.command or config.me.defaults.browser}";
"${mod}+Return" = "exec ${pkgs.${config.me.defaults.terminal}}/bin/${config.me.defaults.terminal}";
"${mod}+d" = "exec ${pkgs.wofi}/bin/wofi -show drun";
};
};
};
}