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've started to use cwm without "sticky" tags. Enabling the sticky mode
32 makes cwm behave like other windows managers with "tags" (or
33 "workspaces".) Without sticky tags, you can decide with more granularly
34 which window to show and which not.
36 # sticky yes
38 I also prefer to "snap" windows close to the edges
40 snapdist 5
42 I don't want to give focus to some applications via alt-tab
44 ignore sshmenu
45 ignore stalonetray
46 ignore stats
47 ignore termbar
48 ignore xclock
49 ignore xconsole
50 ignore Catclock
51 ignore "Speedbar 1.0"
53 autogroup does what it seems: it automatically moves some windows in a
54 specific group (aka workspace.) The group 0 is sticky across all groups
56 autogroup 0 XClock
57 autogroup 0 Catclock
58 autogroup 0 XConsole
59 autogroup 0 sshmenu,Xmessage
60 autogroup 0 stalonetray
61 autogroup 0 stats
62 autogroup 0 termbar
63 autogroup 2 Firefox
64 autogroup 3 Gajim
65 autogroup 3 TelegramDesktop
67 Most cwm keybindings use `alt' which conflicts with emacs. So I unbind
68 everything and re-bind most of the keys on the mod4 (super) key
70 unbind-key all
72 bind-key 4-Tab group-last
73 bind-mouse C-3 menu-exec-wm
74 bind-key C4-slash menu-window
76 eat up multimedia keys so they don't get seen by some programs (like
77 emacs or sam)
79 bind-key XF86AudioLowerVolume true
80 bind-key XF86AudioRaiseVolume true
82 control the playback
84 bind-key XF86AudioPrev "amused prev"
85 bind-key XF86AudioNext "amused next"
86 bind-key XF86AudioPlay "amused toggle"
87 bind-key XF86AudioStop "amused stop"
89 "gamemode" swiches the keyboard from my custom dvp-eu to an us querty
90 and vice-versa, and the mouse buttons too. it's useful when playing
91 some games, hence the name, or when in need to share the keyboard with
92 someone else.
94 bind-key 4-F5 "gamemode"
96 I don't have a dedicated key for screenshot on this machine, but
97 Scroll_Lock is not too awkward to press
99 bind-key 4-Scroll_Lock "sshot -c"
100 bind-key 4S-Scroll_Lock "sshot -cs"
102 manage the notifications
104 bind-key 4-space "dunstctl close"
105 bind-key 4S-space "dunstctl history-pop"
106 bind-key 4-n "dunstctl context"
108 basics window movements
110 bind-key 4-h window-move-left
111 bind-key 4-j window-move-down
112 bind-key 4-k window-move-up
113 bind-key 4-l window-move-right
115 bind-key S4-h window-move-left-big
116 bind-key S4-j window-move-down-big
117 bind-key S4-k window-move-up-big
118 bind-key S4-l window-move-right-big
120 bind-key C4-h window-resize-left
121 bind-key C4-j window-resize-down
122 bind-key C4-k window-resize-up
123 bind-key C4-l window-resize-right
125 bind-key CS4-h window-resize-left-big
126 bind-key CS4-j window-resize-down-big
127 bind-key CS4-k window-resize-up-big
128 bind-key CS4-l window-resize-right-big
130 bind-key 4-greater window-raise
131 bind-key 4-less window-lower
133 bind-key 4-Return window-hide
134 bind-key C4-x window-close
135 bind-key C4-c window-close
137 bind-key 4-slash menu
139 bind-key CM-Return xterm # kitty
140 bind-key C4-Return "emacsclient -c"
141 bind-key CS4-Return "env SHELL=rc 9term"
143 bind-key M-Tab window-cycle
144 bind-key MS-Tab window-rcycle
146 bind-key 4-f window-maximize
147 bind-key C4S-v window-vmaximize
148 bind-key C4S-w window-hmaximize
150 htile 0
151 vtile 0
152 bind-key 4-w window-htile
153 bind-key 4-v window-vtile
155 bind-key C4S-q quit
157 I'm using a custom keyboard layout based on the dvorak-programmer.
158 Thus, the upper row is not numbers, but symbols!
160 # & { [ ( = + ) ] }
161 bind-key 4-ampersand group-toggle-1
162 bind-key 4-braceleft group-toggle-2
163 bind-key 4-bracketleft group-toggle-3
164 bind-key 4-parenleft group-toggle-4
165 bind-key 4-equal group-toggle-5
166 bind-key 4-plus group-toggle-6
167 bind-key 4-parenright group-toggle-7
168 bind-key 4-bracketright group-toggle-8
169 bind-key 4-braceright group-toggle-9
171 move with shift
173 bind-key S4-ampersand window-movetogroup-1
174 bind-key S4-braceleft window-movetogroup-2
175 bind-key S4-bracketleft window-movetogroup-3
176 bind-key S4-parenleft window-movetogroup-4
177 bind-key S4-equal window-movetogroup-5
178 bind-key S4-plus window-movetogroup-6
179 bind-key S4-parenright window-movetogroup-7
180 bind-key S4-bracketright window-movetogroup-8
181 bind-key S4-braceright window-movetogroup-9
182 bind-key S4-exclam window-movetogroup-0
184 mouse bindings
186 bind-mouse 4-1 window-move
187 bind-mouse 4-3 window-resize