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"
93 I don't have a dedicated key for screenshot on this machine, but
94 Scroll_Lock is not too awkward to press
96 bind-key 4-Scroll_Lock "sshot -c"
97 bind-key 4S-Scroll_Lock "sshot -cs"
99 manage the notifications
101 bind-key 4-space "dunstctl close"
102 bind-key 4S-space "dunstctl history-pop"
103 bind-key 4-n "dunstctl context"
105 basics window movements
107 bind-key 4-h window-move-left
108 bind-key 4-j window-move-down
109 bind-key 4-k window-move-up
110 bind-key 4-l window-move-right
112 bind-key S4-h window-move-left-big
113 bind-key S4-j window-move-down-big
114 bind-key S4-k window-move-up-big
115 bind-key S4-l window-move-right-big
117 bind-key C4-h window-resize-left
118 bind-key C4-j window-resize-down
119 bind-key C4-k window-resize-up
120 bind-key C4-l window-resize-right
122 bind-key CS4-h window-resize-left-big
123 bind-key CS4-j window-resize-down-big
124 bind-key CS4-k window-resize-up-big
125 bind-key CS4-l window-resize-right-big
127 bind-key 4-greater window-raise
128 bind-key 4-less window-lower
130 bind-key 4-Return window-hide
131 bind-key C4-x window-close
132 bind-key C4-c window-close
134 bind-key 4-slash menu
135 bind-key 4-at jgmenu_run
137 bind-key CM-Return xterm # kitty
138 bind-key C4-Return "emacsclient -c"
139 bind-key CS4-Return "env SHELL=rc 9term"
141 bind-key M-Tab window-cycle
142 bind-key MS-Tab window-rcycle
144 bind-key 4-f window-maximize
145 bind-key C4S-v window-vmaximize
146 bind-key C4S-w window-hmaximize
148 htile 0
149 vtile 0
150 bind-key 4-w window-htile
151 bind-key 4-v window-vtile
153 bind-key C4S-q quit
155 I'm using a custom keyboard layout based on the dvorak-programmer.
156 Thus, the upper row is not numbers, but symbols!
158 # & { [ ( = + ) ] }
159 bind-key 4-ampersand group-only-1
160 bind-key 4-braceleft group-only-2
161 bind-key 4-bracketleft group-only-3
162 bind-key 4-parenleft group-only-4
163 bind-key 4-equal group-only-5
164 bind-key 4-plus group-only-6
165 bind-key 4-parenright group-only-7
166 bind-key 4-bracketright group-only-8
167 bind-key 4-braceright group-only-9
169 move with shift
171 bind-key S4-ampersand window-movetogroup-1
172 bind-key S4-braceleft window-movetogroup-2
173 bind-key S4-bracketleft window-movetogroup-3
174 bind-key S4-parenleft window-movetogroup-4
175 bind-key S4-equal window-movetogroup-5
176 bind-key S4-plus window-movetogroup-6
177 bind-key S4-parenright window-movetogroup-7
178 bind-key S4-bracketright window-movetogroup-8
179 bind-key S4-braceright window-movetogroup-9
180 bind-key S4-exclam window-movetogroup-0
182 use ctrl to toggle visibility
184 bind-key C4-ampersand group-toggle-1
185 bind-key C4-braceleft group-toggle-2
186 bind-key C4-bracketleft group-toggle-3
187 bind-key C4-parenleft group-toggle-4
188 bind-key C4-equal group-toggle-5
189 bind-key C4-plus group-toggle-6
190 bind-key C4-parenright group-toggle-7
191 bind-key C4-bracketright group-toggle-8
192 bind-key C4-braceright group-toggle-9
194 mouse bindings
196 bind-mouse 4-1 window-move
197 bind-mouse 4-3 window-resize