Blob


1 # calm window manager
3 The calm window manager, cwm for short, is my favourite window manager.
4 It's *the* window manager that convinced me that using a floating window
5 manager was actually worth it.
7 My configuration is unusually long.
9 First I have a list of applications for the built-in menu:
11 command emacsclient "emacsclient -c"
12 command firefox firefox
13 command gimp gimp
14 command godot godot
15 command inkscape inkscape
16 command iridium iridium
17 command keepassxc keepassxc
18 command lock xlock
19 command term xterm
20 command xterm.jp xterm.jp
22 I found these color by random I guess, but they're fine
24 color activeborder "#0abeff"
25 color inactiveborder "#777"
27 set a decently-sized border around every window
29 borderwidth 2
31 I don't understand how cwm is meant to be used by deafult since I'm used
32 to window managers with "tags" (or "workspaces"). Fortunately I can
33 enable "sticky" mode on cwm to simulate workspaces
35 sticky yes
37 I also prefer to "snap" windows close to the edges
39 snapdist 5
41 with cwm I usually use tint2 as bar, either at the top or at the bottom.
42 cwm doesn't account the space for it automatically like other window
43 manager, we have to do that manually
45 gap 0 30 0 0
47 I don't want to give focus to some applications via alt-tab
49 ignore sshmenu
50 ignore stalonetray
51 ignore stats
52 ignore termbar
53 ignore xclock
54 ignore xconsole
55 ignore Catclock
56 ignore "Speedbar 1.0"
58 autogroup does what it seems: it automatically moves some windows in a
59 specific group (aka workspace.) The group 0 is sticky across all groups
61 autogroup 0 XClock
62 autogroup 0 Catclock
63 autogroup 0 XConsole
64 autogroup 0 sshmenu,Xmessage
65 autogroup 0 stalonetray
66 autogroup 0 stats
67 autogroup 0 termbar
68 autogroup 2 Firefox
69 autogroup 3 Gajim
70 autogroup 3 TelegramDesktop
72 Most cwm keybindings use `alt' which conflicts with emacs. So I unbind
73 everything and re-bind most of the keys on the mod4 (super) key
75 unbind-key all
77 bind-key 4-Tab group-last
78 bind-mouse C-3 menu-exec-wm
79 bind-key C4-slash menu-window
81 eat up multimedia keys so they don't get seen by some programs (like
82 emacs or sam)
84 bind-key XF86AudioLowerVolume true
85 bind-key XF86AudioRaiseVolume true
87 control the playback
89 bind-key XF86AudioPrev "amused prev"
90 bind-key XF86AudioNext "amused next"
91 bind-key XF86AudioPlay "amused toggle"
92 bind-key XF86AudioStop "amused stop"
94 I don't have a dedicated key for screenshot on this machine, but
95 Scroll_Lock is not too awkward to press
97 bind-key 4-Scroll_Lock "sshot -c"
98 bind-key 4S-Scroll_Lock "sshot -cs"
100 manage the notifications
102 bind-key 4-space "dunstctl close"
103 bind-key 4S-space "dunstctl history-pop"
104 bind-key 4-n "dunstctl context"
106 basics window movements
108 bind-key 4-h window-move-left
109 bind-key 4-j window-move-down
110 bind-key 4-k window-move-up
111 bind-key 4-l window-move-right
113 bind-key S4-h window-move-left-big
114 bind-key S4-j window-move-down-big
115 bind-key S4-k window-move-up-big
116 bind-key S4-l window-move-right-big
118 bind-key C4-h window-resize-left
119 bind-key C4-j window-resize-down
120 bind-key C4-k window-resize-up
121 bind-key C4-l window-resize-right
123 bind-key CS4-h window-resize-left-big
124 bind-key CS4-j window-resize-down-big
125 bind-key CS4-k window-resize-up-big
126 bind-key CS4-l window-resize-right-big
128 bind-key 4-greater window-raise
129 bind-key 4-less window-lower
131 bind-key 4-Return window-hide
132 bind-key C4-x window-close
133 bind-key C4-c window-close
135 bind-key 4-slash menu
136 bind-key 4-at jgmenu_run
138 bind-key CM-Return xterm # kitty
139 bind-key C4-Return "emacsclient -c"
140 bind-key CS4-Return "env SHELL=rc 9term"
142 bind-key M-Tab window-cycle
143 bind-key MS-Tab window-rcycle
145 bind-key 4-f window-maximize
146 bind-key C4S-v window-vmaximize
147 bind-key C4S-w window-hmaximize
149 htile 0
150 vtile 0
151 bind-key 4-w window-htile
152 bind-key 4-v window-vtile
154 bind-key C4S-q quit
156 I'm using a custom keyboard layout based on the dvorak-programmer.
157 Thus, the upper row is not numbers, but symbols!
159 # & { [ ( = + ) ] }
160 bind-key 4-ampersand group-only-1
161 bind-key 4-braceleft group-only-2
162 bind-key 4-bracketleft group-only-3
163 bind-key 4-parenleft group-only-4
164 bind-key 4-equal group-only-5
165 bind-key 4-plus group-only-6
166 bind-key 4-parenright group-only-7
167 bind-key 4-bracketright group-only-8
168 bind-key 4-braceright group-only-9
170 move with shift
172 bind-key S4-ampersand window-movetogroup-1
173 bind-key S4-braceleft window-movetogroup-2
174 bind-key S4-bracketleft window-movetogroup-3
175 bind-key S4-parenleft window-movetogroup-4
176 bind-key S4-equal window-movetogroup-5
177 bind-key S4-plus window-movetogroup-6
178 bind-key S4-parenright window-movetogroup-7
179 bind-key S4-bracketright window-movetogroup-8
180 bind-key S4-braceright window-movetogroup-9
181 bind-key S4-exclam window-movetogroup-0
183 use ctrl to toggle visibility
185 bind-key C4-ampersand group-toggle-1
186 bind-key C4-braceleft group-toggle-2
187 bind-key C4-bracketleft group-toggle-3
188 bind-key C4-parenleft group-toggle-4
189 bind-key C4-equal group-toggle-5
190 bind-key C4-plus group-toggle-6
191 bind-key C4-parenright group-toggle-7
192 bind-key C4-bracketright group-toggle-8
193 bind-key C4-braceright group-toggle-9
195 mouse bindings
197 bind-mouse 4-1 window-move
198 bind-mouse 4-3 window-resize