Project

General

Profile

unexist.dev

subtle

Assorted tidbits and projects

Clients » History » Version 12

« Previous - Version 12/16 (diff) - Next » - Current version
Anonymous, 12/22/2017 03:24 PM


Clients\015\012\015\012{{>toc}}\015\012\015\012Clients are the actual toplevel windows subtle manages.\015\012\015\012h2. Types\015\012\015\012There are several different window types that set some of the client modes automatically, this can be used in tagging to mimic this behavior.\015\012\015\012Following types exist:\015\012\015\012h3. Normal\015\012\015\012This is the default type of windows and no special modes are set for this.\015\012\015\012h3. Desktop\015\012\015\012Desktop type windows are usually file managers that display icons and stay at the bottom of the window stack. They have no window title, no border and can neither be resized nor moved.\015\012\015\012*Used modes*: Borderless, Fixed, Fullscreen\015\012\015\012h3. Dock\015\012\015\012Dock type windows are usually panels that provide different kind of information and accessibility.\015\012\015\012{{info(Currently there is no special handling of this window type.)}}\015\012\015\012h3. Toolbar\015\012\015\012Toolbar windows are usually windows with either text or icons menu entries.\015\012\015\012{{info(Currently there is no special handling of this window type.)}}\015\012\015\012h3. Splash\015\012\015\012Splash windows are usually silly progress windows that are a placeholder until an app is ready.\015\012\015\012*Used modes*: Center, Float\015\012\015\012h3. Dialog\015\012\015\012Dialog windows are usually any kind of setting or message windows\015\012\015\012*Used modes*: Center, Float\015\012\015\012h2. Properties\015\012\015\012Clients have different properties, called atoms in Xorg, to e.g. identify the window or to communicate with other programs and the window manager. The typical way to list them is to use the program xprop, which used to be part of the Xorg install, but might be broken into a separate package dependent on your distribution. Just start xprop and click on a window, but be aware that the output is quite messy.\015\012\015\012The instance and the class name are also included in the output of subtler -cl.\015\012\015\012h3. WM_NAME\015\012\015\012This property is used as the window title of the client.\015\012\015\012Example:\015\012\015\012
$ xprop | grep WM_NAME\015\012_NET_WM_NAME(UTF8_STRING) = "tmux:xprop3"\015\012WM_NAME(STRING) = "tmux:xprop3"
\015\012\015\012{{info(When there are multiple values like in the example, subtle prefers the UTF8_STRING.)}}\015\012\015\012h3. WM_CLASS\015\012\015\012This property consists of two strings: The instance name and the class name. They are mainly used to identify the window instance and to find resources in the resource files like .Xdefaults. The instance name can typically be customized by passing something like -name name to the app like for most of the terminals.\015\012\015\012Example:\015\012\015\012
$ xprop | grep WM_CLASS\015\012WM_CLASS(STRING) = "urxvt", "URxvt"
\015\012\015\012h3. WM_ROLE\015\012\015\012This property is sometimes used to identify the purpose of the window, like a browser or something else in the context of the program, but don't expect useful or consistent values.\015\012\015\012Example:\015\012\015\012
$ xprop | grep WM_ROLE\015\012WM_ROLE(STRING) = "browser"
\015\012\015\012h2. Modes\015\012\015\012A window can have different modes that influence the appearance and behavior of it either globally or just for tagged views. subtle and subtler indicate this mode with a special character.\015\012\015\012Following modes exist:\015\012\015\012h3. Global\015\012\015\012h4. Borderless\015\012\015\012This mode disables the window border of the window and uses the additional space for the window.\015\012\015\012h4. Fixed\015\012\015\012This mode prevents the window from being resized, that means that all actions (like fullscreen and gravity) that would change the size are ignored.\015\012\015\012{{info(This mode is indicated by a !.)}}\015\012\015\012h4. Resize\015\012\015\012This mode enables the honoring of size hints, that are hints for the window manager about special size preferences and constraints like an aspect ratio.\015\012\015\012{{info(This mode is indicated by a ~.)}}\015\012\015\012h4. Sticky\015\012\015\012This mode overrides the tagging and makes the window visible on all views on the same screen. When a window isn't normally visible on a certain view the current gravity instead of the default gravity will be used.\015\012\015\012{{info(This mode is indicated by a *.)}}\015\012\015\012h4. Zaphod\015\012\015\012This mode spans a window across all screens regardless if the window is normally visible there.\015\012\015\012{{info(This mode is indicated by a =.)}}\015\012\015\012h3. Per view\015\012\015\012h4. Floating\015\012\015\012This mode looses the window from the gravity grid and raises it above other windows. Size hints are automatically honored in floating mode and windows can be moved and resized. (Doing that with gravitated windows enables floating mode)\015\012\015\012{{info(This mode is indicated by a ^.)}}\015\012\015\012h4. Fullscreen\015\012\015\012This mode let's a window use the total space of screen, that includes all space that is normally used for panels and strut.\015\012\015\012{{info(This mode is indicated by a +.)}}\015\012\015\012h4. Urgent\015\012\015\012This mode automatically draws pointer and keyboard focus and highlights the panel title and any view. Once the window gets focus this mode is removed.\015\012\015\012h2. Stacking\015\012\015\012There are four stacking layers, ordered from top to bottom:\015\012\015\012# Fullscreen\015\012# Floating\015\012# Gravity\015\012# Desktop type\015\012\015\012{{info(Lower/raise just move the windows on their layer, for example floating windows cannot be below a gravity window.)}}