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 I don't want to give focus to some applications via alt-tab
43 ignore sshmenu
44 ignore stalonetray
45 ignore stats
46 ignore termbar
47 ignore xclock
48 ignore xconsole
49 ignore Catclock
50 ignore "Speedbar 1.0"
52 autogroup does what it seems: it automatically moves some windows in a
53 specific group (aka workspace.) The group 0 is sticky across all groups
55 autogroup 0 XClock
56 autogroup 0 Catclock
57 autogroup 0 XConsole
58 autogroup 0 sshmenu,Xmessage
59 autogroup 0 stalonetray
60 autogroup 0 stats
61 autogroup 0 termbar
62 autogroup 2 Firefox
63 autogroup 3 Gajim
64 autogroup 3 TelegramDesktop
66 Most cwm keybindings use `alt' which conflicts with emacs. So I unbind
67 everything and re-bind most of the keys on the mod4 (super) key
69 unbind-key all
71 bind-key 4-Tab group-last
72 bind-mouse C-3 menu-exec-wm
73 bind-key C4-slash menu-window
75 eat up multimedia keys so they don't get seen by some programs (like
76 emacs or sam)
78 bind-key XF86AudioLowerVolume true
79 bind-key XF86AudioRaiseVolume true
81 control the playback
83 bind-key XF86AudioPrev "amused prev"
84 bind-key XF86AudioNext "amused next"
85 bind-key XF86AudioPlay "amused toggle"
86 bind-key XF86AudioStop "amused stop"
88 "gamemode" swiches the keyboard from my custom dvp-eu to an us querty
89 and vice-versa, and the mouse buttons too. it's useful when playing
90 some games, hence the name, or when in need to share the keyboard with
91 someone else.
93 bind-key 4-F5 "gamemode"
95 I don't have a dedicated key for screenshot on this machine, but
96 Scroll_Lock is not too awkward to press
98 bind-key 4-Scroll_Lock "sshot -c"
99 bind-key 4S-Scroll_Lock "sshot -cs"
101 manage the notifications
103 bind-key 4-space "dunstctl close"
104 bind-key 4S-space "dunstctl history-pop"
105 bind-key 4-n "dunstctl context"
107 basics window movements
109 bind-key 4-h window-move-left
110 bind-key 4-j window-move-down
111 bind-key 4-k window-move-up
112 bind-key 4-l window-move-right
114 bind-key S4-h window-move-left-big
115 bind-key S4-j window-move-down-big
116 bind-key S4-k window-move-up-big
117 bind-key S4-l window-move-right-big
119 bind-key C4-h window-resize-left
120 bind-key C4-j window-resize-down
121 bind-key C4-k window-resize-up
122 bind-key C4-l window-resize-right
124 bind-key CS4-h window-resize-left-big
125 bind-key CS4-j window-resize-down-big
126 bind-key CS4-k window-resize-up-big
127 bind-key CS4-l window-resize-right-big
129 bind-key 4-greater window-raise
130 bind-key 4-less window-lower
132 bind-key 4-Return window-hide
133 bind-key C4-x window-close
134 bind-key C4-c window-close
136 bind-key 4-slash menu
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