shod

mouse-based window manager that can tile windows inside floating containers
Log | Files | Refs | README | LICENSE

shod.1 (27434B)


      1 .Dd September 10, 2022
      2 .Dt SHOD 1
      3 .Os
      4 .Sh NAME
      5 .Nm shod ,
      6 .Nm shodc
      7 .Nd mouse-focused window manager
      8 .Sh SYNOPSIS
      9 .Nm shod
     10 .Op Fl AcdhSstW
     11 .Op Ar file
     12 .Pp
     13 .Nm shodmenu
     14 .Pp
     15 .Nm shodc
     16 .Cm close
     17 .Op Ar win_id
     18 .Nm shodc
     19 .Cm cycle
     20 .Op Fl s
     21 .Nm shodc
     22 .Cm desk
     23 .Nm shodc
     24 .Cm exit
     25 .Nm shodc
     26 .Cm focus
     27 .Op Fl clrtbpnLRTBPN
     28 .Op Ar win_id
     29 .Nm shodc
     30 .Cm geom
     31 .Op Fl r
     32 .Op Fl x Ar N
     33 .Op Fl y Ar N
     34 .Op Fl w Ar N
     35 .Op Fl h Ar N
     36 .Op Ar win_id
     37 .Nm shodc
     38 .Cm goto
     39 .Op Fl m Ar mon_id
     40 .Ar desk_id
     41 .Nm shodc
     42 .Cm list
     43 .Op Fl ls
     44 .Op Ar win_id
     45 .Nm shodc
     46 .Cm sendto
     47 .Op Fl m Ar mon_id
     48 .Ar desk_id
     49 .Op Ar win_id
     50 .Nm shodc
     51 .Cm state
     52 .Op Fl ATR
     53 .Op Fl abfMmsy
     54 .Op Ar win_id
     55 .Sh DESCRIPTION
     56 .Nm shod
     57 is a multi\-monitor floating reparenting X11 window manager which supports tiled and tabbed containers.
     58 .Nm
     59 works only via mouse with a given key modifier (Alt by default)
     60 and by responding to client messages
     61 (it is needed a controller called
     62 .Nm shodc
     63 to control
     64 .Nm shod Ns ).
     65 .Pp
     66 If a file is given as argument,
     67 .Nm
     68 passes this file to
     69 .Xr sh 1
     70 to run the commands in that file after
     71 .Nm
     72 has initialized itself.
     73 However, if the argument is an hyphen
     74 .Pq "\-" ,
     75 .Nm
     76 calls
     77 .Xr sh 1
     78 to run commands read from the standard input instead.
     79 .Pp
     80 The options are as follows:
     81 .Bl -tag -width Ds
     82 .It Fl A
     83 Use
     84 .Qq "Alt"
     85 as modifier key.
     86 More technically, use
     87 .Qq "Alt_L"
     88 as the key to perform container cycling (alt-tab); and use
     89 .Qq "Mod1Mask"
     90 as the modifier for mouse operations.
     91 This option is incompatible with
     92 .Fl W .
     93 .It Fl c
     94 Honor configure requests.
     95 By default,
     96 .Nm
     97 ignore requests to configure a window size or position after the window is mapped.
     98 A client may request the window mager to configure (ie', resize or reposition) its own window.
     99 For example,
    100 .Xr xterm 1
    101 sends a configure request for the window manager to resize its window
    102 when the user changes its font size.
    103 Clients requesting to change its own size may be annoying,
    104 so configure requests are ignored by default;
    105 but they can be honored by invoking
    106 .Nm
    107 with the
    108 .Fl c
    109 command-line option.
    110 .It Fl d
    111 Make dialogs float.
    112 By default, dialog windows are mapped inside the client window.
    113 With this option, dialogs are floating windows instead.
    114 (Technically, this option makes dialog windows behave the same as menu windows).
    115 .It Fl h
    116 Disable setting obscured windows as hidden.
    117 By default, windows whose containers are obscured by other containers are set as
    118 hidden (aka minimized).
    119 This default behavior emulates the way Plan9's rio lists obscured windows as hidden.
    120 With this option set, only manually minimized containers are set as hidden.
    121 .It Fl S
    122 Use sloppy focus rather than click-to-focus between windows in the same container.
    123 .It Fl s
    124 Use sloppy focus rather than click-to-focus between containers.
    125 .It Fl t
    126 Disable container cycling (aka
    127 .Dq "alt-tab" ) .
    128 .It Fl W
    129 Use
    130 .Qq "Super"
    131 (also known as
    132 .Qq "Window Key" ) .
    133 as modifier key.
    134 More technically, use
    135 .Qq "Super_L"
    136 as the key to perform container cycling (alt-tab); and use
    137 .Qq "Mod4Mask"
    138 as the modifier for mouse operations.
    139 This option is incompatible with
    140 .Fl A .
    141 .El
    142 .Pp
    143 .Nm shodmenu
    144 is the command called by
    145 .Nm shod
    146 when the user interacts with the menu button (the button at the top far left of a title bar).
    147 This command should be a script written by the user;
    148 and usually invokes a menu program like
    149 .Xr xmenu 1 .
    150 Before calling
    151 .Nm shodmenu ,
    152 the environment variables
    153 .Ev WINDOWID
    154 and
    155 .Ev WINDOWPOS
    156 (containing the id and position of the window whose menu button was activated, respectively)
    157 are set.
    158 An example
    159 .Nm shodmenu
    160 script is distributed with
    161 .Nm shod .
    162 .Pp
    163 .Nm shodc
    164 is the remote controller for
    165 .Nm shod .
    166 Its first argument must be an operation to be performed.
    167 The following arguments are the options for the operation
    168 (each operation accepts a different set of options).
    169 The last arguments are the operation's arguments, such as a window ID or a desktop ID.
    170 .Pp
    171 Known operations for
    172 .Nm shodc
    173 are listed below.
    174 .Ss Close window
    175 The
    176 .Cm close
    177 operation closes a window whose ID is provided as argument.
    178 If no argument is provided, close the active window.
    179 .Ss Cycle containers
    180 The
    181 .Cm cycle
    182 operation initiates the cycling through the open containers on the current desktop.
    183 This cycling is generally called
    184 .Qq "alt-tab" .
    185 Cycling is performed as
    186 .Qq "Tab"
    187 is pressed, and terminates when the modifier key is released.
    188 .Ss List desktops
    189 The
    190 .Cm desks
    191 operation lists the desktops, one per line.
    192 .Pp
    193 If the line begins with an asterisk, the desktop is the focused one;
    194 If the line begins with an hyphen, the desktop has an urgent window in it.
    195 The number is the number of windows in the desktop.
    196 .Ss Exit shod
    197 The
    198 .Cm exit
    199 operation exits the
    200 .Nm shod
    201 window manager.
    202 .Ss Focus window
    203 The
    204 .Cm focus
    205 operation focus a window whose ID is provided as argument.
    206 If an option is provided, focus a window relative to the window provided as argument.
    207 .Pp
    208 The options are as follows:
    209 .Bl -tag -width Ds
    210 .It Fl c
    211 Cycle focus.
    212 This option only makes sense when using
    213 .Fl n ,
    214 .Fl p ,
    215 .Fl N ,
    216 or
    217 .Fl P .
    218 .It Fl l
    219 Focus window in the closest container to the left of the container of the window provided as argument
    220 (or the active window, if no argument is provided).
    221 .It Fl r
    222 Focus window in the closest container to the right of the container of the window provided as argument
    223 (or the active window, if no argument is provided).
    224 .It Fl t
    225 Focus window in the closest container on the top of the container of the window provided as argument
    226 (or the active window, if no argument is provided).
    227 .It Fl b
    228 Focus window in the closest container on the bottom of the container of the window provided as argument
    229 (or the active window, if no argument is provided).
    230 .It Fl p
    231 Focus window in the previous container in the focus list
    232 in relation to the container of the window provided as argument
    233 (or the active window, if no argument is provided).
    234 .It Fl n
    235 Focus window in the next container in the focus list
    236 in relation to the container of the window provided as argument
    237 (or the active window, if no argument is provided).
    238 .It Fl L
    239 Focus window in the column to the left of the window provided as argument
    240 (or the active window, if no argument is provided).
    241 .It Fl R
    242 Focus window in the column to the right of the window provided as argument
    243 (or the active window, if no argument is provided).
    244 .It Fl T
    245 Focus window in the row above (on the top of) the window provided as argument
    246 (or the active window, if no argument is provided).
    247 .It Fl B
    248 Focus window in the row below (on the bottom of) the window provided as argument
    249 (or the active window, if no argument is provided).
    250 .It Fl P
    251 Focus window in the tab previous to the window provided as argument
    252 (or the active window, if no argument is provided).
    253 .It Fl N
    254 Focus window in the tab next to the window provided as argument
    255 (or the active window, if no argument is provided).
    256 .El
    257 .Ss Set geometry
    258 The
    259 .Cm geom
    260 operation sets the geometry (position and size) of the container of the window whose ID is provided as argument.
    261 If no argument is provided, sets the geometry of the container of the active window.
    262 If no position (set by the options
    263 .Fl x
    264 and
    265 .Fl y )
    266 is provided, move window to position 0,0 (top left corner).
    267 .Pp
    268 The options are as follows:
    269 .Bl -tag -width Ds
    270 .It Fl r
    271 Relative.
    272 All position and size values are relative to the container's current position and size.
    273 .It Fl x Ar N
    274 Set the position on the X axis to N.
    275 .It Fl y Ar N
    276 Set the position on the Y axis to N.
    277 .It Fl w Ar N
    278 Set the width of the container to N.
    279 .It Fl h Ar N
    280 Set the height of the container to N.
    281 .El
    282 .Ss Go to desktop
    283 The
    284 .Cm goto
    285 operation goes to the desktop ID provided as argument.
    286 Different of other window managers, shod counts desktop from 1;
    287 So the first desktop is the desktop 1, not the desktop 0.
    288 .Pp
    289 The options are as follows:
    290 .Bl -tag -width Ds
    291 .It Fl M Ar monitor
    292 Goes to a desktop on the provided monitor rather than on the currently focused monitor.
    293 Monitors are counted from 1, not from 0.
    294 .El
    295 .Ss List windows
    296 The
    297 .Cm list
    298 operation lists windows, one entry per line.
    299 If a window ID is provided as argument, list only this window.
    300 .Pp
    301 The options are as follows:
    302 .Bl -tag -width Ds
    303 .It Fl l
    304 Long list format.
    305 More information on this format below.
    306 .It Fl s
    307 Sort by stacking order.
    308 .El
    309 .Pp
    310 If the
    311 .Fl l
    312 option is given, the following information (delimited by tabs)
    313 is displayed for each window, in the following order:
    314 .Bl -enum -compact
    315 .It
    316 Window state.
    317 .It
    318 Window desktop.
    319 .It
    320 Window geometry (size and position).
    321 .It
    322 ID of the container the window is on.
    323 .It
    324 ID of the row the window is on.
    325 .It
    326 ID of the window.
    327 .It
    328 Name of the window.
    329 .El
    330 .Pp
    331 The window state consists of a sequence of eight characters,
    332 each one meaning a state for the container.
    333 If a character is an hyphen
    334 .Pq \-
    335 the state is not set or does not apply to the window.
    336 The state characters, in the order they appear, are the following:
    337 .Bl -enum -compact
    338 .It
    339 An
    340 .Dq Sy y
    341 indicates that the window's container is sticky.
    342 .It
    343 An
    344 .Dq Sy M
    345 indicates that the window's container is maximized.
    346 .It
    347 An
    348 .Dq Sy m
    349 indicates that the window's container is minimized.
    350 .It
    351 An
    352 .Dq Sy f
    353 indicates that the window's container is fullscreen.
    354 .It
    355 An
    356 .Dq Sy s
    357 indicates that the window's container is shaded.
    358 .It
    359 An
    360 .Dq Sy a
    361 indicates that the window's container is above others.
    362 An
    363 .Dq Sy b
    364 indicates that the window's container is below others.
    365 .It
    366 An
    367 .Dq Sy u
    368 indicates that the window has the urgency hint set.
    369 An
    370 .Dq Sy a
    371 indicates that the window demands attention.
    372 An
    373 .Dq Sy U
    374 indicates that the window is both urgent and demands attention.
    375 .It
    376 An
    377 .Dq Sy a
    378 indicates that the window is active.
    379 An
    380 .Dq Sy f
    381 indicates that the window is focused.
    382 An
    383 .Dq Sy F
    384 indicates that the window is both active and focused.
    385 .El
    386 .Ss Send to desktop
    387 The
    388 .Cm sendto
    389 operation sends to the desktop ID provided as first argument
    390 the container of the window whose ID is provided as second argument.
    391 If no window ID is provided, sends the container of the active window to that desktop.
    392 Different of other window managers, shod counts desktop from 1;
    393 so the first desktop is the desktop 1, not the desktop 0.
    394 .Pp
    395 The options are as follows:
    396 .Bl -tag -width Ds
    397 .It Fl M Ar monitor
    398 Sends to a desktop on the provided monitor rather than on the currently focused monitor.
    399 Monitors are counted from 1, not from 0.
    400 .El
    401 .Ss Set container state
    402 The
    403 .Cm state
    404 operation sets the state of the container of the window whose ID is provided as argument.
    405 If no argument is provided, sets the state of the container of the active window.
    406 .Pp
    407 The options are as follows:
    408 .Bl -tag -width Ds
    409 .It Fl a
    410 Above.
    411 Raise container above others.
    412 .It Fl b
    413 Below.
    414 Lower container below others.
    415 .It Fl f
    416 Fullscreen.
    417 Make container fullscreen.
    418 .It Fl M
    419 Maximized.
    420 Maximize container.
    421 .It Fl m
    422 Minimized.
    423 Minimize container.
    424 .It Fl s
    425 Shaded.
    426 The container is resized to fit its titlebars.
    427 .It Fl y
    428 Sticky.
    429 Stick container to the monitor.
    430 .It Fl A
    431 Add state.
    432 Force state to be set.
    433 .It Fl T
    434 Toggle state.
    435 Set state if it is unset, or unset it if it is set.
    436 This is the default.
    437 .It Fl R
    438 Remove state.
    439 Force state to be unset.
    440 .El
    441 .Sh USAGE
    442 .Nm shod
    443 maintains one virtual monitor for each physical monitor found by
    444 .Xr Xinerama 3 .
    445 One of the monitors is the focused one, where new windows go to when they are created.
    446 Each monitor contains a different set of virtual desktops (or "desktop" for short).
    447 One of the desktops of a monitor is the focused desktop for that monitor.
    448 .Pp
    449 Each monitor has an area called
    450 .Dq "container area" ,
    451 within containers are spawned and can be maximized.
    452 The size and position of a monitor's container area can be changed by bars and the dock.
    453 .Pp
    454 Most client windows are displayed in containers;
    455 but some windows are special and are displayed in different ways.
    456 .Ss Containers
    457 Containers are floating windows.
    458 A container contains sub-windows (called tiles) organized in columns, rows, and tabs;
    459 each tile represents a client and can have dialog windows and menu windows associated with it.
    460 A new container is created in the focused desktop of the focused monitor;
    461 this new container is placed in an empty area of the screen.
    462 .Pp
    463 A container has borders
    464 (four edge handles and four corner handles) around it;
    465 borders are always visible, except when the container is fullscreen.
    466 Borders are used to move and resize containers (more information on that below).
    467 A container has divisors between its columns, and between the rows within each column.
    468 Divisos are used to resize the tiles by dragging them with the first mouse button.
    469 A container has title bars above each row.
    470 Title bars contains tabs, the left (stack) button, and the right (close) button.
    471 More information on those below.
    472 .Pp
    473 Keyboard input goes to the focused client of the focused container.
    474 A container can be focused by clicking on it with the 1st mouse button;
    475 the click is passed to the application, which can process it in a particular way.
    476 The focused container is decorated with a visually distinct decoration
    477 (blue in the default theme);
    478 while other containers have either the common decoration
    479 (gray in the default theme),
    480 or have the urgent decoration
    481 (red in the default theme).
    482 .Pp
    483 Containers are stacked one above the other in the virtual Z axis.
    484 The position of the container in this Z axis can be changed by an operation called
    485 .Dq raising .
    486 A container can be raised by clicking on it with the 1st mouse button.
    487 The list of containers in this Z axis, from the one in the bottom to the topmost, is called the
    488 .Dq "stacking order" .
    489 The stacking order is organized in four layers.
    490 When a container is raised, it move to the top of its layers.
    491 The layers are the following (from bottomost to topmost):
    492 .Bl -enum -compact
    493 .It
    494 The bottom layer (for containers below others).
    495 .It
    496 The middle layer (for normal containers).
    497 .It
    498 The upper layer (for containers above others).
    499 .It
    500 The fullscreen layer (for fullscreen containers).
    501 .El
    502 .Pp
    503 Each container can have one or more of the following states:
    504 .Bl -tag -width Ds
    505 .It Maximized
    506 The container occupies the entire container area.
    507 .It Fullscreen
    508 The container occupies the entire monitor and its borders are hidden.
    509 .It Minimized
    510 The container is not shown on the monitor.
    511 .It Shaded
    512 The container is resized to show only the title bars.
    513 .It Sticky
    514 The container is stickied to the monitor,
    515 and appears on the screen no matter which desktop is selected.
    516 .It Above/Below
    517 Those two states are mutually exclusive.
    518 The container is raised above or lowered below other containers.
    519 .El
    520 .Pp
    521 A non-fullscreen, non-maximized container can be moved by the following methods:
    522 .Bl -bullet -compact
    523 .It
    524 By dragging the container border with the third mouse button.
    525 .It
    526 By dragging a title bar with the first mouse button.
    527 Or
    528 .It
    529 By pressing the modifier key and dragging any part of the container with the first mouse button.
    530 .El
    531 .Pp
    532 Each title-bar has tabs, which displayes the title of its client.
    533 Dragging a tab with the first mouse button moves the entire container.
    534 Dragging a tab with the third mouse button detaches the tab from the container.
    535 A detached tab, while being dragged, can be reattached into another container
    536 (or the same container) by dropping it on the title bar, border or divisor;
    537 or can be made into a new container by dropping it elsewhere.
    538 Double-clicking a tab (un)stretches its row.
    539 Scrolling a tab up shades its container.
    540 Scrolling a down up unshades its container.
    541 .Pp
    542 Moving a container to the top of the screen maximizes it.
    543 .Pp
    544 Each title bar has a left button.
    545 Clicking on the left title-bar button with the first mouse button stretches the column
    546 by maximizing its rows (and minimizing the other rows in the same column),
    547 or undoes this state.
    548 .Pp
    549 Each title bar has a right button.
    550 Clicking on the right title-bar button with the first mouse button
    551 closes the focused client or its top dialog.
    552 .Pp
    553 Containers can be cycled using the modifier key set with either the
    554 .Fl A
    555 or
    556 .Fl W
    557 command-line option
    558 .Po
    559 .Cm Alt_L
    560 by default
    561 .Pc
    562 followed by the
    563 .Cm Tab
    564 key.
    565 The
    566 .Cm Tab
    567 key can be further modified by
    568 .Cm Shift
    569 to cycle in the oposite direction.
    570 This mechanism is usually called
    571 .Dq "alt-tab"
    572 because of the key combination that usually triggers it.
    573 This mechanism can be turned off by invoking
    574 .Nm shod
    575 with the
    576 .Fl t
    577 command-line option.
    578 .Ss Dialog
    579 Windows that are transient for another managed windows (called its leader)
    580 are mapped in the center of the leader.
    581 .Pp
    582 Dialogs are small windows that communicates information to the user
    583 or prompts for a response.
    584 .Pp
    585 .Nm shod
    586 only changes the position and size of a dialog window when the size of its leader changes.
    587 .Ss Splash screens
    588 Windows of type
    589 .Ic _NET_WM_WINDOW_TYPE_SPLASH
    590 (called splash screens)
    591 are mapped above all other windows and are stacked on the order they are spawned.
    592 Splash screens cannot be manipulated.
    593 Splash screens have no decoration around them.
    594 .Pp
    595 Splash screens are transient windows that appear temporarily while an application is loading.
    596 .Pp
    597 .Nm shod
    598 centers the splash screen on the monitor.
    599 .Ss Menus
    600 windows of type
    601 .Ic _NET_WM_WINDOW_TYPE_MENU ,
    602 .Ic _NET_WM_WINDOW_TYPE_UTILITY ,
    603 .Ic _NET_WM_WINDOW_TYPE_TOOLBAR ,
    604 or
    605 .Ic MWM_TEAROFF_WINDOW
    606 (called menu windows)
    607 are windows that cannot be tiled or tabbed into a container
    608 and are optionally tied to a leader window.
    609 They are floating windows that always apear on top of their leader
    610 and are not listed on the list of clients.
    611 If a menu has no leader window, they apear on top of all windows.
    612 .Pp
    613 Menu windows, often called
    614 .Dq "torn off windows" ,
    615 are pinnable menus, utility windows, and toolbar windows
    616 (ie', toolbar and menus "torn off" from the main application).
    617 .Pp
    618 The user can change the position of a menu window in the same way of
    619 changing the position of a container.
    620 .Ss Prompt
    621 A window of type
    622 .Ic _NET_WM_WINDOW_TYPE_PROMPT
    623 (called prompt window)
    624 is mapped on the top of the focused monitor.
    625 This window will stay focused and mapped until be closed,
    626 or a mouse button is pressed outside that window.
    627 This is an EWMH extention, only used by
    628 .Xr xprompt 1 .
    629 .Pp
    630 .Nm shod
    631 does not change the size of the prompt window.
    632 However, shod changes its position.
    633 .Ss Desktop windows
    634 Windows of type
    635 .Ic _NET_WM_WINDOW_TYPE_DESKTOP
    636 (called desktop windows)
    637 are mapped below all other windows and are stacked on the order they are spawned.
    638 Desktop windows cannot be manipulated.
    639 Desktop windows have no decoration around them.
    640 .Pp
    641 Desktop windows indicates a desktop feature.
    642 That includes windows such as
    643 .Xr conky 1
    644 and windows that manage desktop icons.
    645 .Pp
    646 .Nm shod
    647 does not change the size nor the position of desktop windows.
    648 .Ss Notifications
    649 Windows of type
    650 .Ic _NET_WM_WINDOW_TYPE_NOTIFICATION
    651 (called notifications)
    652 are popped up on the top right corner, one above another.
    653 Notification windows cannot be manipulated.
    654 Notification windows have a decoration around them;
    655 this decoration is the same as the borders of the active container
    656 (or, for urgent notifications, the same as the borders of an urgent container).
    657 .Pp
    658 An example of a notification window would be a bubble appearing with
    659 informative text such as
    660 .Dq "Your laptop is running out of power"
    661 etc.
    662 .Pp
    663 .Nm shod
    664 can change the size and the position of notification windows.
    665 .Ss Bars
    666 Windows of type
    667 .Ic _NET_WM_WINDOW_TYPE_DOCK
    668 (called panels, bars, or external docks (to distinguish them from
    669 .Nm shod .Ns "'s"
    670 internal dock))
    671 are mapped on a side of a monitor.
    672 Dock windows cannot be manipulated,
    673 have no decoration and do not receive input focus.
    674 .Pp
    675 A bar window can change the size of a region of the monitor called
    676 .Dq "container area" .
    677 The container area is the region of the monitor that a maximized container occupies.
    678 The container area is also the region of the monitor inside which containers are spawned.
    679 .Pp
    680 Examples of bar are a taskbar that shows which programs are currently running,
    681 or a status bar that shows information about the system.
    682 .Pp
    683 .Nm shod
    684 does not change the size nor the position of bar windows.
    685 .Ss Dockapps
    686 Windows that initiate in the
    687 .Ic WithdrawnState
    688 (called dockapps)
    689 are mapped inside the dock.
    690 The dock is a panel or bar that appears on the edge of the first monitor.
    691 Inside the dock, dockapps are organized by order of map request.
    692 .Pp
    693 Dockapps, or docked applications are windows which appear to reside
    694 inside an icon or a dock rather than a container.
    695 .Pp
    696 Dockapps can have one of three possible states: spaced, shrunk, or extended.
    697 The state of a dockapp can be set with the
    698 .Ic "CLASS.NAME.ROLE.state"
    699 X resource.
    700 .Pp
    701 A
    702 .Dq Em "spaced"
    703 dockapp is centered on a slot whose size is multiple of, by default, 64 pixels
    704 (this value can be changed with the
    705 .Ic "dockSpace"
    706 X resource).
    707 So for example, by default, if a dockapp has 58 pixels, it is centered on a slot of 64 pixels (64 * 1);
    708 but if a dockapp has 100 pixels, it is centered on a slot of 128 pixels (64 * 2).
    709 This is the default state for a dockapp.
    710 .Pp
    711 A
    712 .Dq Em "shrunk"
    713 dockapp
    714 has its slot resized to the size of the dockapp itself.
    715 .Pp
    716 An
    717 .Dq Em "extended"
    718 dockapp is resized to fit all the remaining unused space of the dock.
    719 For example, if the only content of the dock is an extended taskbar dockapp,
    720 this dockapp is resized to fit all the dock.
    721 .Pp
    722 an
    723 .Dq Em "resized"
    724 dockapp is resized to fit the width of the dock
    725 (that is, the width of a vertical dock or the height of an horizontal dock).
    726 .Sh RESOURCES
    727 .Nm shod
    728 understands the following X resources.
    729 They must be prefixed with either the
    730 .Qq Ic Shod
    731 class, or the
    732 .Qq Ic shod
    733 instance.
    734 .Bl -tag -width Ds
    735 .It Ic "borderWidth"
    736 The width of the borders and divisions.
    737 .It Ic "activeBackground" , "activeTopShadowColor" , Ic "activeBottomShadowColor"
    738 The body color, light shadow color, and dark shadow color for the 3D effect
    739 of the borders and title bars of active windows.
    740 .It Ic "dockBackground" , Ic "dockBorder"
    741 The background color and border color for the dock.
    742 .It Ic "dockGravity"
    743 The placement of the dock described with up to two uppercase letters.
    744 The first letter
    745 .Pq Cm E , N , W , S
    746 defines in which edge of the monitor (East, North, West or South) to allign the dock.
    747 The optional second letter
    748 .Pq Cm E , N , W , S , C , F
    749 defines in which corner of that edge of the monitor to allign the dock; an
    750 .Cm "C"
    751 means that the dock should centered on that edge; an
    752 .Cm "F"
    753 means that the dock should stretched to fill that edge.
    754 If no second letter is supplied, the dock is centered on that edge.
    755 For example, for a value of
    756 .Cm NE ,
    757 a horizontal dock will be placed in the north edge of the monitor, alligned to the northeast corner.
    758 And for a value of
    759 .Cm EF ,
    760 a vertical dock will be placed in the east edge of the monitor, stretched to the full hight of the monitor.
    761 .It Ic "dockSpace"
    762 The multiplier for the height (for vertical docks) or width (for horizontal docks)
    763 in pixels of the slot dockapps are placed in.
    764 See the section
    765 .Sx "Dockapps"
    766 above for more information.
    767 .It Ic "dockWidth"
    768 The width (for vertical docks) or height (for horizontal docks)
    769 of the dock in pixels.
    770 Defaults to 64 (the size of most dockapps).
    771 .It Ic "inactiveBackground" , "inactiveTopShadowColor" , "inactiveBottomShadowColor"
    772 The body color, light shadow color, and dark shadow color for the 3D effect
    773 of the borders and title bars of inactive windows.
    774 .It Ic "numOfDesktops"
    775 The number of desktops for each monitor.
    776 The default is 10 desktops for each monitor.
    777 .It Ic "notifGap"
    778 The gap in pixels between notifications.
    779 .It Ic "notifGravity"
    780 The placement of the dock in uppercase abbreviated points of the compass.
    781 For example, a value of
    782 .Cm NE
    783 will place notifications on the northeast edge of the screen.
    784 .It Ic "shadowThickness"
    785 Thickness of the 3D shadow effect.
    786 Must be less than the border width.
    787 .It Ic "snapProximity"
    788 The proximity of edges of a container in pixels
    789 for the snap attraction to occur when moving the container.
    790 If set to zero, no snap attraction occurs.
    791 The default is 8 pixels.
    792 .It Ic "faceName"
    793 The font of the text in the title bar.
    794 .It Ic "foreground"
    795 The color of the text in the title bar.
    796 .It Ic "titleWidth"
    797 The width of the title bar.
    798 .It Ic "urgentBackground" , "urgentTopShadowColor" , "urgentBottomShadowColor"
    799 The body color, light shadow color, and dark shadow color for the 3D effect
    800 of the borders and title bars of urgent windows.
    801 .It Ic "moveTime" , "resizeTime"
    802 The time in miliseconds to redraw containers during moving and resizing
    803 .El
    804 .Ss Window-dependent resources
    805 The resources below are named based on the class, name instance, and role of a window.
    806 Therefore, those resources are client-specific.
    807 Replace
    808 .Ar CLASS
    809 with the class of the window,
    810 .Ar NAME
    811 with the name of the instance of the window, and 
    812 .Ar ROLE
    813 with the role of the window.
    814 .Bl -tag -width Ds
    815 .It Ic CLASS.NAME.ROLE.type
    816 Define the type of a window matching the given class, name and role.
    817 Possible values are
    818 .Cm NORMAL
    819 (for normal windows),
    820 .Cm DESKTOP
    821 (for desktop windows),
    822 .Cm DOCKAPP
    823 (for docked applications), or
    824 .Cm PROMPT
    825 (for prompt windows).
    826 .It Ic CLASS.NAME.ROLE.state
    827 Define the initial state of a window matching the given class, name and role.
    828 Its value should be a comma-separated list of states.
    829 Possible states for normal windows are
    830 .Cm above ,
    831 .Cm below ,
    832 .Cm fullscreen ,
    833 .Cm maximized ,
    834 .Cm minimized ,
    835 .Cm shaded ,
    836 and
    837 .Cm sticky .
    838 Possible states for dockapp windows are
    839 .Cm extend ,
    840 and
    841 .Cm resized ,
    842 and
    843 .Cm shrunk .
    844 .It Ic CLASS.NAME.ROLE.dockpos
    845 Define the position in the dock of a docked application matching the given class, name and role.
    846 Its value should be a number, starting from position 1.
    847 .It Ic CLASS.NAME.ROLE.desktop
    848 Define the number of the desktop to send the matching application to.
    849 Different of other window managers, shod counts desktop from 1;
    850 so the first desktop is desktop 1, not the desktop 0.
    851 .El
    852 .Sh ENVIRONMENT
    853 The following environment variables affect the execution of
    854 .Nm shod .
    855 .Bl -tag -width Ds
    856 .It Ev DISPLAY
    857 The display to start
    858 .Nm shod
    859 on.
    860 .It Ev SHELL
    861 The shell to run with
    862 .Xr exec 3 .
    863 .El
    864 .Pp
    865 The following environment variables are set by
    866 .Nm shod
    867 and can affect the execution of the
    868 .Nm shodmenu
    869 script.
    870 .Bl -tag -width Ds
    871 .It Ev WINDOWID
    872 A string containing the id number, in decimal ASCII characters,
    873 of the client window on the tab where the menu button (the left title bar button) is pressed.
    874 .It Ev WINDOWPOS
    875 The position, in
    876 .Qq Ic "+X+Y"
    877 format (parseable by
    878 .Xr XParseGeometry 3 )
    879 of the client window on the tab where the menu button is pressed.
    880 .El
    881 .Sh SEE ALSO
    882 .Xr xmenu 1 ,
    883 .Xr X 7
    884 .Sh BUGS
    885 .Xr XSizeHints 3
    886 are ignored.
    887 Size hints make no sense in a tiled and tabbed window manager.
    888 They only make sense when the size of a single container depends only on a single window,
    889 and a single window dictates the size of a single container.
    890 When the size of a container depends on the size of other windows (as in the tiled situation),
    891 or when a set of windows must have the same size (as in a tabbed situation),
    892 it makes no sense to constrain the size of a container based on the size hints of a single window,
    893 because the relation from windows to containers is no more one-to-one.
    894 .Pp
    895 Shaped client\-windows do not have shaped containers.
    896 They are mapped inside a rectangular container.
    897 .Pp
    898 The focus buttons and raise buttons settings, that were presented in earlier versions of shod, are removed in recent versions.
    899 It is also not possible anymore to have a focus-follow-pointer focus behavior.