-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathshod.1
941 lines (941 loc) · 27.7 KB
/
shod.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
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
.Dd September 10, 2022
.Dt SHOD 1
.Os
.Sh NAME
.Nm shod ,
.Nm shodc
.Nd mouse-focused window manager
.Sh SYNOPSIS
.Nm shod
.Op Fl AcdhSstW
.Op Ar file
.Pp
.Nm shodmenu
.Pp
.Nm shodc
.Cm close
.Op Ar win_id
.Nm shodc
.Cm cycle
.Op Fl s
.Nm shodc
.Cm desk
.Nm shodc
.Cm docks
.Op Fl l
.Op Ar win_id ...
.Nm shodc
.Cm exit
.Nm shodc
.Cm focus
.Op Fl clrtbpnLRTBPN
.Op Ar win_id
.Nm shodc
.Cm geom
.Op Fl r
.Op Fl x Ar N
.Op Fl y Ar N
.Op Fl w Ar N
.Op Fl h Ar N
.Op Ar win_id
.Nm shodc
.Cm goto
.Op Fl m Ar mon_id
.Ar desk_id
.Nm shodc
.Cm list
.Op Fl cl
.Op Ar win_id ...
.Nm shodc
.Cm sendto
.Op Fl m Ar mon_id
.Ar desk_id
.Op Ar win_id
.Nm shodc
.Cm state
.Op Fl ATR
.Op Fl abfMmsy
.Op Ar win_id
.Sh DESCRIPTION
.Nm shod
is a multi\-monitor floating reparenting X11 window manager which supports tiled and tabbed containers.
.Nm
works only via mouse with a given key modifier (Alt by default)
and by responding to client messages
(it is needed a controller called
.Nm shodc
to control
.Nm shod Ns ).
.Pp
If a file is given as argument,
.Nm
passes this file to
.Xr sh 1
to run the commands in that file after
.Nm
has initialized itself.
However, if the argument is an hyphen
.Pq "\-" ,
.Nm
calls
.Xr sh 1
to run commands read from the standard input instead.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl A
Use
.Qq "Alt"
as modifier key.
More technically, use
.Qq "Alt_L"
as the key to perform container cycling (alt-tab); and use
.Qq "Mod1Mask"
as the modifier for mouse operations.
This option is incompatible with
.Fl W .
.It Fl c
Honor configure requests.
By default,
.Nm
ignore requests to configure a window size or position after the window is mapped.
A client may request the window mager to configure (ie', resize or reposition) its own window.
For example,
.Xr xterm 1
sends a configure request for the window manager to resize its window
when the user changes its font size.
Clients requesting to change its own size may be annoying,
so configure requests are ignored by default;
but they can be honored by invoking
.Nm
with the
.Fl c
command-line option.
.It Fl d
Make dialogs float.
By default, dialog windows are mapped inside the client window.
With this option, dialogs are floating windows instead.
(Technically, this option makes dialog windows behave the same as menu windows).
.It Fl h
Disable setting obscured windows as hidden.
By default, windows whose containers are obscured by other containers are set as
hidden (aka minimized).
This default behavior emulates the way Plan9's rio lists obscured windows as hidden.
With this option set, only manually minimized containers are set as hidden.
.It Fl S
Use sloppy focus rather than click-to-focus between windows in the same container.
.It Fl s
Use sloppy focus rather than click-to-focus between containers.
.It Fl t
Disable container cycling (aka
.Dq "alt-tab" ) .
.It Fl W
Use
.Qq "Super"
(also known as
.Qq "Window Key" ) .
as modifier key.
More technically, use
.Qq "Super_L"
as the key to perform container cycling (alt-tab); and use
.Qq "Mod4Mask"
as the modifier for mouse operations.
This option is incompatible with
.Fl A .
.El
.Pp
.Nm shodmenu
is the command called by
.Nm shod
when the user interacts with the menu button (the button at the top far left of a title bar).
This command should be a script written by the user;
and usually invokes a menu program like
.Xr xmenu 1 .
Before calling
.Nm shodmenu ,
the environment variables
.Ev WINDOWID
and
.Ev WINDOWPOS
(containing the id and position of the window whose menu button was activated, respectively)
are set.
An example
.Nm shodmenu
script is distributed with
.Nm shod .
.Pp
.Nm shodc
is the remote controller for
.Nm shod .
Its first argument must be an operation to be performed.
The following arguments are the options for the operation
(each operation accepts a different set of options).
The last arguments are the operation's arguments, such as a window ID or a desktop ID.
.Pp
Known operations for
.Nm shodc
are listed below.
.Ss Close window
The
.Cm close
operation closes a window whose ID is provided as argument.
If no argument is provided, close the active window.
.Ss Cycle containers
The
.Cm cycle
operation initiates the cycling through the open containers on the current desktop.
This cycling is generally called
.Qq "alt-tab" .
Cycling is performed as
.Qq "Tab"
is pressed, and terminates when the modifier key is released.
.Ss List desktops
The
.Cm desks
operation lists the desktops, one per line.
.Pp
If the line begins with an asterisk, the desktop is the focused one;
If the line begins with an hyphen, the desktop has an urgent window in it.
The number is the number of windows in the desktop.
.Ss Exit shod
The
.Cm exit
operation exits the
.Nm shod
window manager.
.Ss Focus window
The
.Cm focus
operation focus a window whose ID is provided as argument.
If an option is provided, focus a window relative to the window provided as argument.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl c
Cycle focus.
This option only makes sense when using
.Fl n ,
.Fl p ,
.Fl N ,
or
.Fl P .
.It Fl l
Focus window in the closest container to the left of the container of the window provided as argument
(or the active window, if no argument is provided).
.It Fl r
Focus window in the closest container to the right of the container of the window provided as argument
(or the active window, if no argument is provided).
.It Fl t
Focus window in the closest container on the top of the container of the window provided as argument
(or the active window, if no argument is provided).
.It Fl b
Focus window in the closest container on the bottom of the container of the window provided as argument
(or the active window, if no argument is provided).
.It Fl p
Focus window in the previous container in the focus list
in relation to the container of the window provided as argument
(or the active window, if no argument is provided).
.It Fl n
Focus window in the next container in the focus list
in relation to the container of the window provided as argument
(or the active window, if no argument is provided).
.It Fl L
Focus window in the column to the left of the window provided as argument
(or the active window, if no argument is provided).
.It Fl R
Focus window in the column to the right of the window provided as argument
(or the active window, if no argument is provided).
.It Fl T
Focus window in the row above (on the top of) the window provided as argument
(or the active window, if no argument is provided).
.It Fl B
Focus window in the row below (on the bottom of) the window provided as argument
(or the active window, if no argument is provided).
.It Fl P
Focus window in the tab previous to the window provided as argument
(or the active window, if no argument is provided).
.It Fl N
Focus window in the tab next to the window provided as argument
(or the active window, if no argument is provided).
.El
.Ss Set geometry
The
.Cm geom
operation sets the geometry (position and size) of the container of the window whose ID is provided as argument.
If no argument is provided, sets the geometry of the container of the active window.
If no position (set by the options
.Fl x
and
.Fl y )
is provided, move window to position 0,0 (top left corner).
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl r
Relative.
All position and size values are relative to the container's current position and size.
.It Fl x Ar N
Set the position on the X axis to N.
.It Fl y Ar N
Set the position on the Y axis to N.
.It Fl w Ar N
Set the width of the container to N.
.It Fl h Ar N
Set the height of the container to N.
.El
.Ss Go to desktop
The
.Cm goto
operation goes to the desktop ID provided as argument.
Different of other window managers, shod counts desktop from 1;
So the first desktop is the desktop 1, not the desktop 0.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl M Ar monitor
Goes to a desktop on the provided monitor rather than on the currently focused monitor.
Monitors are counted from 1, not from 0.
.El
.Ss List windows
The
.Cm list
operation lists windows managed by
.Nm shod ,
one entry per line.
If one or more window ID are provided as arguments, list only those windows.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl c
List only the focused window of each container.
.It Fl l
Long list format.
More information on this format below.
.El
.Pp
If the
.Fl l
option is given, the following information (delimited by tabs)
is displayed for each window, in the following order:
.Bl -enum -compact
.It
Window state.
.It
Window desktop number.
.It
Window geometry (size and position).
.It
ID of the container the window is on.
.It
ID of the group the window is on.
.It
ID of the window.
.It
Name of the window.
.El
.Pp
The window state consists of a sequence of eight characters,
each one meaning a state for the container.
If a character is an hyphen
.Pq \-
the state is not set or does not apply to the window.
The state characters, in the order they appear, are the following:
.Bl -enum -compact
.It
An
.Dq Sy y
indicates that the window's container is sticky.
.It
An
.Dq Sy M
indicates that the window's container is maximized.
.It
An
.Dq Sy m
indicates that the window's container is minimized.
.It
An
.Dq Sy f
indicates that the window's container is fullscreen.
.It
An
.Dq Sy s
indicates that the window's container is shaded.
.It
An
.Dq Sy a
indicates that the window's container is above others.
An
.Dq Sy b
indicates that the window's container is below others.
.It
An
.Dq Sy u
indicates that the window has the urgency hint set.
An
.Dq Sy a
indicates that the window demands attention.
An
.Dq Sy U
indicates that the window is both urgent and demands attention.
.It
An
.Dq Sy a
indicates that the window is active.
An
.Dq Sy f
indicates that the window is focused.
An
.Dq Sy F
indicates that the window is both active and focused.
.El
.Ss List docks
The
.Cm docks
operation lists docks and bars managed by
.Nm shod ,
one entry per line.
If one or more window ID are provided as arguments, list only those windows.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl l
Long list format.
More information on this format below.
.El
.Pp
If the
.Fl l
option is given, the following information (delimited by tabs) is displayed for each window,
in the following order:
.Bl -enum -compact
.It
Window state.
.It
Window geometry.
.It
ID of the window.
.It
Name of the window.
.El
.Ss Send to desktop
The
.Cm sendto
operation sends to the desktop ID provided as first argument
the container of the window whose ID is provided as second argument.
If no window ID is provided, sends the container of the active window to that desktop.
Different of other window managers, shod counts desktop from 1;
so the first desktop is the desktop 1, not the desktop 0.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl M Ar monitor
Sends to a desktop on the provided monitor rather than on the currently focused monitor.
Monitors are counted from 1, not from 0.
.El
.Ss Set window state
The
.Cm state
operation sets the state of a window whose ID is provided as argument.
If no argument is provided, sets the state of the active window.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl a
Above state.
.It Fl b
Below state.
.It Fl f
Fullscreen state.
.It Fl M
Maximized state.
.It Fl m
Minimized state.
.It Fl s
Shaded state.
.It Fl y
Sticky state.
.It Fl A
Add state (force state to be set).
.It Fl T
Toggle state (set state if it is unset, or unset it if it is set).
This is the default.
.It Fl R
Remove state (force state to be unset).
.El
.Sh USAGE
.Nm shod
maintains one virtual monitor for each physical monitor found by
.Xr Xrandr 3 .
One of the monitors is the focused one, where new windows go to when they are created.
Each monitor contains a different set of virtual desktops (or "desktop" for short).
One of the desktops of a monitor is the focused desktop for that monitor.
.Pp
Each monitor has an area called
.Dq "container area" ,
within containers are spawned and can be maximized.
The size and position of a monitor's container area can be changed by bars and the dock.
.Pp
Most client windows are displayed in containers;
but some windows are special and are displayed in different ways.
.Ss Containers
Containers are floating windows.
A container contains sub-windows (called tiles) organized in columns, rows, and tabs;
each tile represents a client and can have dialog windows and menu windows associated with it.
A new container is created in the focused desktop of the focused monitor;
this new container is placed in an empty area of the screen.
.Pp
A container has borders
(four edge handles and four corner handles) around it;
borders are always visible, except when the container is fullscreen.
Borders are used to move and resize containers (more information on that below).
A container has divisors between its columns, and between the rows within each column.
Divisos are used to resize the tiles by dragging them with the first mouse button.
A container has title bars above each row.
Title bars contains tabs, the left (stack) button, and the right (close) button.
More information on those below.
.Pp
Keyboard input goes to the focused client of the focused container.
A container can be focused by clicking on it with the 1st mouse button;
the click is passed to the application, which can process it in a particular way.
The focused container is decorated with a visually distinct decoration
(blue in the default theme);
while other containers have either the common decoration
(gray in the default theme),
or have the urgent decoration
(red in the default theme).
.Pp
Containers are stacked one above the other in the virtual Z axis.
The position of the container in this Z axis can be changed by an operation called
.Dq raising .
A container can be raised by clicking on it with the 1st mouse button.
The list of containers in this Z axis, from the one in the bottom to the topmost, is called the
.Dq "stacking order" .
The stacking order is organized in four layers.
When a container is raised, it move to the top of its layers.
The layers are the following (from bottomost to topmost):
.Bl -enum -compact
.It
The bottom layer (for containers below others).
.It
The middle layer (for normal containers).
.It
The upper layer (for containers above others).
.It
The fullscreen layer (for fullscreen containers).
.El
.Pp
Each container can have one or more of the following states
(which can be set by
.Nm shodc
.Cm state ) .
.Bl -tag -width Ds
.It Maximized
The container occupies the entire container area.
.It Fullscreen
The container occupies the entire monitor and its borders are hidden.
.It Minimized
The container is not shown on the monitor.
.It Shaded
The container is resized to show only the title bars.
.It Sticky
The container is stickied to the monitor,
and appears on the screen no matter which desktop is selected.
.It Above/Below
Those two states are mutually exclusive.
The container is raised above or lowered below other containers.
.El
.Pp
A non-fullscreen, non-maximized container can be moved by the following methods:
.Bl -bullet -compact
.It
By dragging the container border with the third mouse button.
.It
By dragging a title bar with the first mouse button.
Or
.It
By pressing the modifier key and dragging any part of the container with the first mouse button.
.El
.Pp
Each title-bar has tabs, which displayes the title of its client.
Dragging a tab with the first mouse button moves the entire container.
Dragging a tab with the third mouse button detaches the tab from the container.
A detached tab, while being dragged, can be reattached into another container
(or the same container) by dropping it on the title bar, border or divisor;
or can be made into a new container by dropping it elsewhere.
Double-clicking a tab (un)stretches its row.
Scrolling a tab up shades its container.
Scrolling a down up unshades its container.
.Pp
Moving a container to the top of the screen maximizes it.
.Pp
Each title bar has a left button.
Clicking on the left title-bar button with the first mouse button stretches the column
by maximizing its rows (and minimizing the other rows in the same column),
or undoes this state.
.Pp
Each title bar has a right button.
Clicking on the right title-bar button with the first mouse button
closes the focused client or its top dialog.
.Pp
Containers can be cycled using the modifier key set with either the
.Fl A
or
.Fl W
command-line option
.Po
.Cm Alt_L
by default
.Pc
followed by the
.Cm Tab
key.
The
.Cm Tab
key can be further modified by
.Cm Shift
to cycle in the oposite direction.
This mechanism is usually called
.Dq "alt-tab"
because of the key combination that usually triggers it.
This mechanism can be turned off by invoking
.Nm shod
with the
.Fl t
command-line option.
.Ss Dialog
Windows that are transient for another managed windows (called its leader)
are mapped in the center of the leader.
.Pp
Dialogs are small windows that communicates information to the user
or prompts for a response.
.Pp
.Nm shod
only changes the position and size of a dialog window when the size of its leader changes.
.Ss Splash screens
Windows of type
.Ic _NET_WM_WINDOW_TYPE_SPLASH
(called splash screens)
are mapped above all other windows and are stacked on the order they are spawned.
Splash screens cannot be manipulated.
Splash screens have no decoration around them.
.Pp
Splash screens are transient windows that appear temporarily while an application is loading.
.Pp
.Nm shod
centers the splash screen on the monitor.
.Ss Menus
windows of type
.Ic _NET_WM_WINDOW_TYPE_MENU ,
.Ic _NET_WM_WINDOW_TYPE_UTILITY ,
.Ic _NET_WM_WINDOW_TYPE_TOOLBAR ,
or
.Ic MWM_TEAROFF_WINDOW
(called menu windows)
are windows that cannot be tiled or tabbed into a container
and are optionally tied to a leader window.
They are floating windows that always apear on top of their leader
and are not listed on the list of clients.
If a menu has no leader window, they apear on top of all windows.
.Pp
Menu windows, often called
.Dq "torn off windows" ,
are pinnable menus, utility windows, and toolbar windows
(ie', toolbar and menus "torn off" from the main application).
.Pp
The user can change the position of a menu window in the same way of
changing the position of a container.
.Ss Prompt
A window of type
.Ic _NET_WM_WINDOW_TYPE_PROMPT
(called prompt window)
is mapped on the top of the focused monitor.
This window will stay focused and mapped until be closed,
or a mouse button is pressed outside that window.
This is an EWMH extention, only used by
.Xr xprompt 1 .
.Pp
.Nm shod
does not change the size of the prompt window.
However, shod changes its position.
.Ss Desktop windows
Windows of type
.Ic _NET_WM_WINDOW_TYPE_DESKTOP
(called desktop windows)
are mapped below all other windows and are stacked on the order they are spawned.
Desktop windows cannot be manipulated.
Desktop windows have no decoration around them.
.Pp
Desktop windows indicates a desktop feature.
That includes windows such as
.Xr conky 1
and windows that manage desktop icons.
.Pp
.Nm shod
does not change the size nor the position of desktop windows.
.Ss Notifications
Windows of type
.Ic _NET_WM_WINDOW_TYPE_NOTIFICATION
(called notifications)
are popped up on the top right corner, one above another.
Notification windows cannot be manipulated.
Notification windows have a decoration around them;
this decoration is the same as the borders of the active container
(or, for urgent notifications, the same as the borders of an urgent container).
.Pp
An example of a notification window would be a bubble appearing with
informative text such as
.Dq "Your laptop is running out of power"
etc.
.Pp
.Nm shod
can change the size and the position of notification windows.
.Ss Docks
Shod's internal dock and windows of type
.Ic _NET_WM_WINDOW_TYPE_DOCK
(called panels, bars, or external docks)
are mapped on a side of a monitor and are called
.Em docks .
Dock windows cannot be manipulated,
have no decoration and do not receive input focus.
.Pp
Depending on ther maximized status,
docks can change the size of a region of the monitor called
.Dq "container area" .
The container area is the region of the monitor that a maximized container occupies.
The container area is also the region of the monitor inside which containers are spawned.
.Pp
Each dock can have one or more of the following states
(which can be set by
.Nm shodc
.Cm state ) .
.Bl -tag -width Ds
.It Maximized
The dock shrinks the container area.
.It Minimized
The dock is hidden.
.It Above/Below
Those two states are mutually exclusive.
The dock is placed above containers' upper layer, or below containers' bottom layer, respectively.
.El
.Pp
Examples of docks are a taskbar that shows which programs are currently running,
or a status bar that shows information about the system.
.Pp
.Nm shod
does not change the size nor the position of bar windows.
.Ss Dockapps
Windows that initiate in the
.Ic WithdrawnState
(called dockapps)
are mapped inside Shod's internal dock.
The dock is a panel or bar that appears on the edge of the first monitor.
Inside the dock, dockapps are organized by order of map request.
.Pp
Dockapps, or docked applications are windows which appear to reside
inside an icon or a dock rather than a container.
.Pp
Dockapps can have one of three possible states: spaced, shrunk, or extended.
The state of a dockapp can be set with the
.Ic "CLASS.NAME.ROLE.state"
X resource.
.Pp
A
.Dq Em "spaced"
dockapp is centered on a slot whose size is multiple of, by default, 64 pixels
(this value can be changed with the
.Ic "dockSpace"
X resource).
So for example, by default, if a dockapp has 58 pixels, it is centered on a slot of 64 pixels (64 * 1);
but if a dockapp has 100 pixels, it is centered on a slot of 128 pixels (64 * 2).
This is the default state for a dockapp.
.Pp
A
.Dq Em "shrunk"
dockapp
has its slot resized to the size of the dockapp itself.
.Pp
An
.Dq Em "extended"
dockapp is resized to fit all the remaining unused space of the dock.
For example, if the only content of the dock is an extended taskbar dockapp,
this dockapp is resized to fit all the dock.
.Pp
an
.Dq Em "resized"
dockapp is resized to fit the width of the dock
(that is, the width of a vertical dock or the height of an horizontal dock).
.Sh RESOURCES
.Nm shod
understands the following X resources.
They must be prefixed with either the
.Qq Ic Shod
class, or the
.Qq Ic shod
instance.
.Bl -tag -width Ds
.It Ic "borderWidth"
The width of the borders and divisions.
.It Ic "activeBackground" , "activeTopShadowColor" , Ic "activeBottomShadowColor"
The body color, light shadow color, and dark shadow color for the 3D effect
of the borders and title bars of active windows.
.It Ic "dockBackground" , Ic "dockBorder"
The background color and border color for the dock.
.It Ic "dockGravity"
The placement of the dock described with up to two uppercase letters.
The first letter
.Pq Cm E , N , W , S
defines in which edge of the monitor (East, North, West or South) to allign the dock.
The optional second letter
.Pq Cm E , N , W , S , C , F
defines in which corner of that edge of the monitor to allign the dock; an
.Cm "C"
means that the dock should centered on that edge; an
.Cm "F"
means that the dock should stretched to fill that edge.
If no second letter is supplied, the dock is centered on that edge.
For example, for a value of
.Cm NE ,
a horizontal dock will be placed in the north edge of the monitor, alligned to the northeast corner.
And for a value of
.Cm EF ,
a vertical dock will be placed in the east edge of the monitor, stretched to the full hight of the monitor.
.It Ic "dockSpace"
The multiplier for the height (for vertical docks) or width (for horizontal docks)
in pixels of the slot dockapps are placed in.
See the section
.Sx "Dockapps"
above for more information.
.It Ic "dockWidth"
The width (for vertical docks) or height (for horizontal docks)
of the dock in pixels.
Defaults to 64 (the size of most dockapps).
.It Ic "inactiveBackground" , "inactiveTopShadowColor" , "inactiveBottomShadowColor"
The body color, light shadow color, and dark shadow color for the 3D effect
of the borders and title bars of inactive windows.
.It Ic "numOfDesktops"
The number of desktops for each monitor.
The default is 10 desktops for each monitor.
.It Ic "notifGap"
The gap in pixels between notifications.
.It Ic "notifGravity"
The placement of the dock in uppercase abbreviated points of the compass.
For example, a value of
.Cm NE
will place notifications on the northeast edge of the screen.
.It Ic "shadowThickness"
Thickness of the 3D shadow effect.
Must be less than the border width.
.It Ic "snapProximity"
The proximity of edges of a container in pixels
for the snap attraction to occur when moving the container.
If set to zero, no snap attraction occurs.
The default is 8 pixels.
.It Ic "faceName"
The font of the text in the title bar.
.It Ic "foreground"
The color of the text in the title bar.
.It Ic "titleWidth"
The width of the title bar.
.It Ic "urgentBackground" , "urgentTopShadowColor" , "urgentBottomShadowColor"
The body color, light shadow color, and dark shadow color for the 3D effect
of the borders and title bars of urgent windows.
.It Ic "moveTime" , "resizeTime"
The time in miliseconds to redraw containers during moving and resizing
.El
.Ss Window-dependent resources
The resources below are named based on the class, name instance, and role of a window.
Therefore, those resources are client-specific.
Replace
.Ar CLASS
with the class of the window,
.Ar NAME
with the name of the instance of the window, and
.Ar ROLE
with the role of the window.
.Bl -tag -width Ds
.It Ic CLASS.NAME.ROLE.type
Define the type of a window matching the given class, name and role.
Possible values are
.Cm NORMAL
(for normal windows),
.Cm DESKTOP
(for desktop windows),
.Cm DOCKAPP
(for docked applications), or
.Cm PROMPT
(for prompt windows).
.It Ic CLASS.NAME.ROLE.state
Define the initial state of a window matching the given class, name and role.
Its value should be a comma-separated list of states.
Possible states for normal windows are
.Cm above ,
.Cm below ,
.Cm fullscreen ,
.Cm maximized ,
.Cm minimized ,
.Cm shaded ,
and
.Cm sticky .
Possible states for dockapp windows are
.Cm extend ,
and
.Cm resized ,
and
.Cm shrunk .
.It Ic CLASS.NAME.ROLE.dockpos
Define the position in the dock of a docked application matching the given class, name and role.
Its value should be a number, starting from position 1.
.It Ic CLASS.NAME.ROLE.desktop
Define the number of the desktop to send the matching application to.
Different of other window managers, shod counts desktop from 1;
so the first desktop is desktop 1, not the desktop 0.
.El
.Sh ENVIRONMENT
The following environment variables affect the execution of
.Nm shod .
.Bl -tag -width Ds
.It Ev DISPLAY
The display to start
.Nm shod
on.
.It Ev SHELL
The shell to run with
.Xr exec 3 .
.El
.Pp
The following environment variables are set by
.Nm shod
and can affect the execution of the
.Nm shodmenu
script.
.Bl -tag -width Ds
.It Ev WINDOWID
A string containing the id number, in decimal ASCII characters,
of the client window on the tab where the menu button (the left title bar button) is pressed.
.It Ev WINDOWPOS
The position, in
.Qq Ic "+X+Y"
format (parseable by
.Xr XParseGeometry 3 )
of the client window on the tab where the menu button is pressed.
.El
.Sh SEE ALSO
.Xr xmenu 1 ,
.Xr X 7
.Sh BUGS
.Xr XSizeHints 3
are ignored.
Size hints make no sense in a tiled and tabbed window manager.
They only make sense when the size of a single container depends only on a single window,
and a single window dictates the size of a single container.
When the size of a container depends on the size of other windows (as in the tiled situation),
or when a set of windows must have the same size (as in a tabbed situation),
it makes no sense to constrain the size of a container based on the size hints of a single window,
because the relation from windows to containers is no more one-to-one.
.Pp
Shaped client\-windows do not have shaped containers.
They are mapped inside a rectangular container.
.Pp
The focus buttons and raise buttons settings, that were presented in earlier versions of shod, are removed in recent versions.
It is also not possible anymore to have a focus-follow-pointer focus behavior.