forked from seanpringle/goomwwm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgoomwwm.1
543 lines (542 loc) · 12.8 KB
/
goomwwm.1
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
.TH GOOMWWM 1 goomwwm
.SH NAME
goomwwm \- Get out of my way, Window Manager!
.SH SYNOPSIS
.B goomwwm
.RB [ \-blur
.IR color ]
.RB [ \-border
.IR pixels ]
.RB [ \-focus
.IR color ]
.RB [ \-attention
.IR color ]
.RB [ \-flashon
.IR color ]
.RB [ \-flashoff
.IR color ]
.RB [ \-flashpx
.IR pixels ]
.RB [ \-flashms
.IR msec ]
.RB [ \-launcher
.IR command ]
.RB [ \-menuwidth
.IR pct_scr ]
.RB [ \-menulines
.IR lines ]
.RB [ \-menufont
.IR xftfont ]
.RB [ \-menufg
.IR color ]
.RB [ \-menubg
.IR color ]
.RB [ \-menuhlfg
.IR color ]
.RB [ \-menuhlbg
.IR color ]
.RB [ \-modkey
.IR mask ]
.RB [ \-switcher
.IR command ]
.RB [ \-1
.IR app ]
.RB [ \-2
.IR app ]
.RB [ \-3
.IR app ]
.RB [ \-4
.IR app ]
.RB [ \-5
.IR app ]
.RB [ \-6
.IR app ]
.RB [ \-7
.IR app ]
.RB [ \-8
.IR app ]
.RB [ \-9
.IR app ]
.RB [ \-0
.IR app ]
.RB [ \-right
.IR key ]
.RB [ \-left
.IR key ]
.RB [ \-up
.IR key ]
.RB [ \-down
.IR key ]
.RB [ \-focusright
.IR key ]
.RB [ \-focusleft
.IR key ]
.RB [ \-focusup
.IR key ]
.RB [ \-focusdown
.IR key ]
.RB [ \-grow
.IR key ]
.RB [ \-shrink
.IR key ]
.RB [ \-fullscreen
.IR key ]
.RB [ \-above
.IR key ]
.RB [ \-vmax
.IR key ]
.RB [ \-hmax
.IR key ]
.RB [ \-expand
.IR key ]
.RB [ \-evmax
.IR key ]
.RB [ \-ehmax
.IR key ]
.RB [ \-tag
.IR key ]
.RB [ \-switch
.IR key ]
.RB [ \-tswitch
.IR key ]
.RB [ \-cycle
.IR key ]
.RB [ \-close
.IR key ]
.RB [ \-htile
.IR key ]
.RB [ \-vtile
.IR key ]
.RB [ \-launch
.IR key ]
.SH DESCRIPTION
.I goomwwm
is an X11 window manager implemented in C as a cleanroom software project. It manages windows in a minimal floating layout with normal mouse controls, while also providing flexible keyboard-driven controls for window switching, sizing, moving, tagging, and tiling. It is fast, lightweight, modeless, Xinerama-aware, and EWMH compatible wherever possible.
.P
Keyboard window movement occurs on a 3x3 fullscreen grid. For example, a top-left aligned window moved to the right would reappear top-center, and if moved again, top-right.
.P
Keyboard window sizing moves windows through four basic sizes that tile well: 1/9th of screen (1/3 width, 1/3 height), 1/4th, 4/9th, and fullscreen. Combined with EWMH horizontal and vertical maxmimization, plus some snap-to-edge and expand-to-fill-space controls, manual tiling is easy.
.P
Windows are grouped by tags. Activating a tag raises all windows in the tag. A window may have multiple tags. EWMH panels, pagers, and taskbars see tags as desktops.
.P
License: MIT/X11
.SH USAGE
See options below for custom key combinations. These are the defaults.
.TP
.B Mod4-Button1
(Mouse!) Move a window.
.TP
.B Mod4-Button3
(Mouse!) Resize a window.
.TP
.B Mod4-[F1-F9]
Set the current tag and raise all its windows. A window may be in multiple tags. For EWMH panel and pager integration tags roughly simulate desktops (always 9), but there will be differences in behavior.
.TP
.B Mod4-[1-9]
Do a case-insensitive keyword search for window by WM_CLASS and title. If found, raise and focus. If not found, try to execute the keyword and start the app. See
.B -1
through
.B -9
args.
.TP
.B Mod4-Tab
Switch between all windows by popup menu. This is partly based on
.B dmenu
but more tightly integrated with the window manager, and centered on screen. Type text to filter the menu entries. Navigate with the arrow keys. Return to select.
.TP
.B Mod4-`
(Grave/Backtick) Switch between all windows in current tag by popup menu.
.TP
.B Mod4-c
Cycle through windows in the same tag, position, and size as the active window.
.TP
.B Mod4-Escape
Close the active window.
.TP
.B Mod4-Page_Up
Grow the active window through four basic sizes that tile well together: 1/9th, 1/4th, 4/9th, or fullscreen.
.TP
.B Mod4-Page_Down
Shrink the active window through the same four sizes.
.TP
.B Mod4-h
Horizontally tile the active window and the highest window with the same tag, position, and size.
.TP
.B Mod4-v
Vertically tile the active window and the highest window with the same tag, position, and size.
.TP
.B Mod4-x
Run the launcher (by default: dmenu_run).
.TP
.B Mod4-a
Toggle _NET_WM_STATE_ABOVE for the active window. Corners will flash to acknowledge.
.TP
.B Mod4-f
Toggle _NET_WM_STATE_FULLSCREEN for the active window. Corners will flash to acknowledge.
.TP
.B Mod4-Home
Toggle _NET_WM_STATE_MAXIMIXED_HORZ for the active window. Corners will flash to acknowledge.
.TP
.B Mod4-End
Toggle _NET_WM_STATE_MAXIMIXED_VERT for the active window. Corners will flash to acknowledge.
.TP
.B Mod4-Return
Expand active window to fill surrounding space without obscuring any fully visible window.
.TP
.B Mod4-Insert
Expand active window vertically to fill adjacent space without obscuring any fully visible window.
.TP
.B Mod4-Delete
Expand active window horizontally to fill adjacent space without obscuring any fully visible window.
.TP
.B Mod4-Left
Move the active window left within a 3x3 grid.
.TP
.B Mod4-Right
Move the active window right within a 3x3 grid.
.TP
.B Mod4-Up
Move the active window up within a 3x3 grid.
.TP
.B Mod4-Down
Move the active window down within a 3x3 grid.
.TP
.B Mod4-j
Switch focus to the left of the active window.
.TP
.B Mod4-l
Switch focus to the right of the active window.
.TP
.B Mod4-i
Switch focus upward from the active window.
.TP
.B Mod4-k
Switch focus downward from the active window.
.TP
.B Mod4-t
Toggle the active window's membership of the current tag.
.SH OPTIONS
.P
All key combinations use the same global modifier key (default: Mod4). If the modkey is changed with
.B -modkey
then all key combinations change to use it. All options below that set a custom key implicitly combine it with the modifier key.
.TP
.B -1 -2 -3 -4 -5 -6 -7 -8 -9
Set a number key to a keyword to search for a window by WM_CLASS or title, and then raise and focus it. If a window is not found, the string supplied will be executed as a shell command to start the application.
.RS
.P
goomwwm -1 chromium -2 firefox -3 xterm
.P
Above, Mod4-1 would match the top-most Chromium window.
.P
Many applications politely set their WM_CLASS to a sane value (eg, Chromium uses Chromium, xterm uses XTerm) or append their name to their window titles, which nicely matches their binary names if we use case-insensitive string comparison. This allows us to use the one string to both search and start.
.P
Applications that are not so friendly can sometimes be wrapped in a shell script of the appropriate name in your $PATH somewhere.
.RE
.TP
.B -above
Set an X11 key name to toggle _NET_WM_STATE_ABOVE for the active window (default: XK_a).
.P
.RS
goomwwm -above a
.RE
.TP
.B -attention
Set the border color (X11 named color or hex #rrggbb) for an inactive window with _NET_WM_STATE_DEMANDS_ATTENTION (default: Red).
.P
.RS
goomwwm -attention Red
.RE
.TP
.B -blur
Set the border color (X11 named color or hex #rrggbb) for unfocused windows (default: Dark Gray).
.P
.RS
goomwwm -blur "Dark Gray"
.RE
.TP
.B -border
Set the border width in pixels for all managed windows (default: 2).
.P
.RS
goomwwm -border 2
.RE
.TP
.B -close
Set an X11 key name to gracefully close the active window (default: XK_Escape).
.P
.RS
goomwwm -close Escape
.RE
.TP
.B -cycle
Set an X11 key name to cycle windows in the same tag, position, and size as the active window (default: XK_c).
.P
.RS
goomwwm -close Escape
.RE
.TP
.B -down
Set an X11 key name to move the active window downward in a 3x3 grid (default: XK_Down).
.P
.RS
goomwwm -down Down
.RE
.TP
.B -expand
Set an X11 key name to expand the active window to fill adjacent space without obscuring any other fully visible window (default: XK_Return).
.P
.RS
goomwwm -expand Return
.RE
.TP
.B -ehmax
Set an X11 key name to expand the active window horizontally to fill adjacent space without obscuring any other fully visible window (default: XK_Delete).
.P
.RS
goomwwm -ehmax Delete
.RE
.TP
.B -evmax
Set an X11 key name to expand the active window vertically to fill adjacent space without obscuring any other fully visible window (default: XK_Insert).
.P
.RS
goomwwm -evmax Insert
.RE
.TP
.B -launch
Set an X11 key to run the application launcher (default: XK_x).
.P
.RS
goomwwm -launch x
.RE
.TP
.B -launcher
Set a custom application launcher to execute on
.B Mod4-x
(default: dmenu_run).
.P
.RS
goomwwm -launcher dmenu_run
.RE
.TP
.B -flashms
Set the duration in milliseconds of the window flash indicators (default: 300).
.P
.RS
goomwwm -flashms 300
.RE
.TP
.B -flashon
Set the color (X11 named color or hex #rrggbb) of the flash indicator when toggling _NET_WM_STATE_* on (default: Dark Green).
.P
.RS
goomwwm -flashon "Dark Green"
.RE
.TP
.B -flashoff
Set the color (X11 named color or hex #rrggbb) of the flash indicator when toggling _NET_WM_STATE_* off (default: Dark Red).
.P
.RS
goomwwm -flashon "Dark Red"
.RE
.TP
.B -flashpx
Set the size in pixels of window flash indicators (currently a colored square in each window corner) (default: 20).
.P
.RS
goomwwm -flashpx 20
.RE
.TP
.B -focus
Set the border color (X11 named color or hex #rrggbb) for the focused window (default: Royal Blue).
.P
.RS
goomwwm -focus "Royal Blue"
.RE
.TP
.B -focusleft
Set an X11 key name to switch focus to left of the active window (default: XK_j).
.P
.RS
goomwwm -focusleft j
.RE
.TP
.B -focusright
Set an X11 key name to switch focus to right of the active window (default: XK_l).
.P
.RS
goomwwm -focusright l
.RE
.TP
.B -focusup
Set an X11 key name to switch focus upward form the active window (default: XK_i).
.P
.RS
goomwwm -focusup i
.RE
.TP
.B -focusdown
Set an X11 key name to switch focus downward form the active window (default: XK_k).
.P
.RS
goomwwm -focusdown k
.RE
.TP
.B -fullscreen
Set an X11 key name to toggle _NET_WM_STATE_FULLSCREEN for the active window (default: XK_f).
.P
.RS
goomwwm -fullscreen f
.RE
.TP
.B -grow
Set an X11 key name to increase the active window size (default: XK_Page_Up) through four basic sizes that tile well together: 1/9th, 1/4th, 4/9th, or fullscreen.
.P
.RS
goomwwm -grow Page_Up
.RE
.TP
.B -hmax
Set an X11 key name to toggle _NET_WM_STATE_MAXIMIXED_HORZ for the active window (default: XK_End).
.P
.RS
goomwwm -hmax End
.RE
.TP
.B -htile
Set an X11 key to horizontally tile the active window and the highest window with the same tag, position, and size (default: XK_h).
.P
.RS
goomwwm -htile h
.RE
.TP
.B -left
Set an X11 key name to move the active window to the left in a 3x3 grid (default: XK_Left).
.P
.RS
goomwwm -left Left
.RE
.TP
.B -menubg
Set the background text color (X11 named color or hex #rrggbb) for the window-switcher menu (default: #222222).
.P
.RS
goomwwm -menufg "#222222"
.RE
.TP
.B -menufg
Set the foreground text color (X11 named color or hex #rrggbb) for the window-switcher menu (default: #cccccc).
.P
.RS
goomwwm -menufg "#cccccc"
.RE
.TP
.B -menufont
Xft font name for use by the window-switcher menu (default: mono-14).
.P
.RS
goomwwm -menufont monospace-14:medium
.RE
.TP
.B -menuhlbg
Set the background text color (X11 named color or hex #rrggbb) for the highlighted item in the window-switcher menu (default: #005577).
.P
.RS
goomwwm -menufg "#005577"
.RE
.TP
.B -menuhlfg
Set the foreground text color (X11 named color or hex #rrggbb) for the highlighted item in the window-switcher menu (default: #ffffff).
.P
.RS
goomwwm -menufg "#ffffff"
.RE
.TP
.B -menulines
Maximum number of entries the window-switcher menu may show before scrolling (default: 25).
.P
.RS
goomwwm -menulines 25
.RE
.TP
.B -menuwidth
Set the width of the window-switcher menu as a percentage of the screen width (default: 60).
.P
.RS
goomwwm -menuwidth 60
.RE
.TP
.B -modkey
Change the modifier key mask to any combination of: shift,control,mod1,mod2,mod3,mod4,mod5 (default: mod4).
.P
.RS
goomwwm -modkey control,shift
.RE
.TP
.B -right
Set an X11 key name to move the active window to the right in a 3x3 grid (default: XK_Right).
.P
.RS
goomwwm -right Right
.RE
.TP
.B -shrink
Set an X11 key name to decrease the active window size (default: XK_Page_Down) through four basic sizes that tile well together: 1/9th, 1/4th, 4/9th, or fullscreen.
.P
.RS
goomwwm -shrink Page_Down
.RE
.TP
.B -switch
Set an X11 key to start display window-switcher showing all open windows (default: XK_Tab).
.P
.RS
goomwwm -switch Tab
.RE
.TP
.B -switcher
Command to run an alternate window-switcher (default: built-in menu).
.P
.RS
goomwwm -switcher dswitch
.RE
.TP
.B -tag
Set an X11 key to toggle the active window's membership of the current tag (default: XK_t).
.P
.RS
goomwwm -tag t
.RE
.TP
.B -tswitch
Set an X11 key to start display window-switcher showing only windows in the current tag (default: XK_grave).
.P
.RS
goomwwm -tswitch grave
.RE
.TP
.B -up
Set an X11 key name to move the active window upward in a 3x3 grid (default: XK_Up).
.P
.RS
goomwwm -up Up
.RE
.TP
.B -vmax
Set an X11 key name to toggle _NET_WM_STATE_MAXIMIXED_VERT for the active window (default: XK_Home).
.P
.RS
goomwwm -vmax Home
.RE
.TP
.B -vtile
Set an X11 key to vertically tile the active window and the highest window with the same tag, position, and size (default: XK_v).
.P
.RS
goomwwm -vtile h
.RE
.SH SEE ALSO
.BR dmenu (1)
.SH AUTHOR
Sean Pringle <[email protected]>