Project

General

Profile

unexist.dev

Assorted tidbits and projects

Clients » History » Version 16

Christoph Kappel, 02/09/2018 11:40 AM

1 13 Christoph Kappel
h1. Clients
2 13 Christoph Kappel
3 13 Christoph Kappel
{{>toc}}
4 13 Christoph Kappel
5 13 Christoph Kappel
[[Clients]] are the actual toplevel windows [[subtle]] manages.
6 13 Christoph Kappel
7 13 Christoph Kappel
h2. Types
8 13 Christoph Kappel
9 13 Christoph Kappel
There are several different window types that set some of the [[Clients#Modes|client modes]] automatically, this can be used in [[tagging]] to mimic this behavior.
10 13 Christoph Kappel
11 13 Christoph Kappel
Following types exist:
12 13 Christoph Kappel
13 13 Christoph Kappel
h3. Normal
14 13 Christoph Kappel
15 13 Christoph Kappel
This is the default type of windows and no special modes are set for this.
16 13 Christoph Kappel
17 13 Christoph Kappel
h3. Desktop
18 13 Christoph Kappel
19 13 Christoph Kappel
Desktop 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.
20 13 Christoph Kappel
21 13 Christoph Kappel
*Used modes*: [[Clients#Borderless|Borderless]], [[Clients#Fixed|Fixed]], [[Clients#Fullscreen|Fullscreen]]
22 13 Christoph Kappel
23 13 Christoph Kappel
h3. Dock
24 13 Christoph Kappel
25 13 Christoph Kappel
Dock type windows are usually panels that provide different kind of information and accessibility.
26 13 Christoph Kappel
27 14 Christoph Kappel
{{subforge_info
28 14 Christoph Kappel
Currently there is no special handling of this window type.
29 14 Christoph Kappel
}}
30 13 Christoph Kappel
31 13 Christoph Kappel
h3. Toolbar
32 13 Christoph Kappel
33 1
Toolbar windows are usually windows with either text or icons menu entries.
34 1
35 14 Christoph Kappel
{{subforge_info
36 14 Christoph Kappel
Currently there is no special handling of this window type.
37 14 Christoph Kappel
}}
38 13 Christoph Kappel
39 13 Christoph Kappel
h3. Splash
40 13 Christoph Kappel
41 13 Christoph Kappel
Splash windows are usually silly progress windows that are a placeholder until an app is ready.
42 13 Christoph Kappel
43 13 Christoph Kappel
*Used modes*: [[Clients#Center|Center]], [[Clients#Float|Float]]
44 13 Christoph Kappel
45 13 Christoph Kappel
h3. Dialog
46 13 Christoph Kappel
47 13 Christoph Kappel
Dialog windows are usually any kind of setting or message windows
48 13 Christoph Kappel
49 13 Christoph Kappel
*Used modes*: [[Clients#Center|Center]], [[Clients#Float|Float]]
50 13 Christoph Kappel
51 13 Christoph Kappel
h2. Properties
52 13 Christoph Kappel
53 13 Christoph Kappel
[[Clients]] have different properties, called atoms in "Xorg":http://www.x.org/wiki/-speak, 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":http://www.google.de/search?sourceid=chrome&ie=UTF-8&q=xprop, which used to be part of the "Xorg":http://www.x.org/wiki/ install, but might be broken into a separate package dependent on your distribution. Just start "xprop":http://www.google.de/search?sourceid=chrome&ie=UTF-8&q=xprop and click on a window, but be aware that the output is quite messy.
54 13 Christoph Kappel
55 13 Christoph Kappel
The instance and the class name are also included in the output of @subtler -cl@.
56 13 Christoph Kappel
57 13 Christoph Kappel
h3. WM_NAME
58 13 Christoph Kappel
59 13 Christoph Kappel
This property is used as the window title of the [[Clients|client]].
60 13 Christoph Kappel
61 13 Christoph Kappel
Example:
62 13 Christoph Kappel
63 13 Christoph Kappel
<pre><code>$ xprop | grep WM_NAME
64 1
_NET_WM_NAME(UTF8_STRING) = "tmux:xprop3"
65 1
WM_NAME(STRING) = "tmux:xprop3"</code></pre>
66 1
67 14 Christoph Kappel
{{subforge_info
68 14 Christoph Kappel
When there are multiple values like in the example, [[subtle]] prefers the UTF8_STRING.
69 14 Christoph Kappel
}}
70 13 Christoph Kappel
71 13 Christoph Kappel
h3. WM_CLASS
72 13 Christoph Kappel
73 13 Christoph Kappel
This 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.
74 13 Christoph Kappel
75 13 Christoph Kappel
Example:
76 13 Christoph Kappel
77 13 Christoph Kappel
<pre><code>$ xprop | grep WM_CLASS
78 13 Christoph Kappel
WM_CLASS(STRING) = "urxvt", "URxvt"</code></pre>
79 13 Christoph Kappel
80 13 Christoph Kappel
h3. WM_ROLE
81 13 Christoph Kappel
82 13 Christoph Kappel
This 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.
83 13 Christoph Kappel
84 13 Christoph Kappel
Example:
85 13 Christoph Kappel
86 13 Christoph Kappel
<pre><code>$ xprop | grep WM_ROLE
87 13 Christoph Kappel
WM_ROLE(STRING) = "browser"</code></pre>
88 13 Christoph Kappel
89 13 Christoph Kappel
h2. Modes
90 13 Christoph Kappel
91 13 Christoph Kappel
A [[Clients|window]] can have different modes that influence the appearance and behavior of it either globally or just for [[Tagging|tagged]] [[views]]. [[subtle]] and [[subtler]] indicate this mode with a special character.
92 13 Christoph Kappel
93 13 Christoph Kappel
Following modes exist:
94 13 Christoph Kappel
95 13 Christoph Kappel
h3. Global
96 13 Christoph Kappel
97 13 Christoph Kappel
h4. Borderless
98 13 Christoph Kappel
99 13 Christoph Kappel
This mode disables the [[Clients|window]] border of the [[Clients|window]] and uses the additional space for the [[Clients|window]].
100 13 Christoph Kappel
101 1
h4. Fixed
102 1
103 1
This mode prevents the window from being resized, that means that all actions (like [[Clients#Fullscreen|fullscreen]] and [[gravity]]) that would change the size are ignored.
104 13 Christoph Kappel
105 14 Christoph Kappel
{{subforge_info
106 16 Christoph Kappel
This mode is indicated by a !.
107 14 Christoph Kappel
}}
108 1
109 1
h4. Resize
110 1
111 13 Christoph Kappel
This mode enables the honoring of size hints, that are hints for the window manager about special size preferences and constraints like an aspect ratio.
112 13 Christoph Kappel
113 14 Christoph Kappel
{{subforge_info
114 16 Christoph Kappel
This mode is indicated by a ~.
115 14 Christoph Kappel
}}
116 1
117 1
h4. Sticky
118 13 Christoph Kappel
119 13 Christoph Kappel
This mode overrides the [[Tagging|tagging]] and makes the [[Clients|window]] visible on all [[views]] on the same [[Multihead|screen]]. When a window isn't normally visible on a certain [[Views|view]] the current [[gravity]] instead of the default [[gravity]] will be used.
120 13 Christoph Kappel
121 14 Christoph Kappel
{{subforge_info
122 16 Christoph Kappel
This mode is indicated by a *.
123 14 Christoph Kappel
}}
124 1
125 13 Christoph Kappel
h4. Zaphod
126 13 Christoph Kappel
127 13 Christoph Kappel
This mode spans a window across all [[Multihead|screens]] regardless if the [[Clients|window]] is normally visible there.
128 13 Christoph Kappel
129 14 Christoph Kappel
{{subforge_info
130 16 Christoph Kappel
This mode is indicated by a =.
131 14 Christoph Kappel
}}
132 1
133 1
h3. Per view
134 13 Christoph Kappel
135 13 Christoph Kappel
h4. Floating
136 13 Christoph Kappel
137 13 Christoph Kappel
This mode looses the window from the [[gravity]] grid and raises it above other windows. Size hints are automatically honored in floating mode and [[Clients|windows]] can be moved and resized. (Doing that with [[Gravity|gravitated]] windows enables floating mode)
138 1
139 14 Christoph Kappel
{{subforge_info
140 16 Christoph Kappel
This mode is indicated by a ^.
141 14 Christoph Kappel
}}
142 13 Christoph Kappel
143 13 Christoph Kappel
h4. Fullscreen
144 13 Christoph Kappel
145 13 Christoph Kappel
This mode let's a [[Clients|window]] use the total space of [[Multihead|screen]], that includes all space that is normally used for [[Panel|panels]] and strut.
146 13 Christoph Kappel
147 14 Christoph Kappel
{{subforge_info
148 16 Christoph Kappel
This mode is indicated by a +.
149 14 Christoph Kappel
}}
150 13 Christoph Kappel
151 13 Christoph Kappel
h4. Urgent
152 13 Christoph Kappel
153 13 Christoph Kappel
This mode automatically draws pointer and keyboard focus and highlights the [[Panel#Title|panel title]] and any [[view]]. Once the [[Clients|window]] gets focus this mode is removed.
154 13 Christoph Kappel
155 13 Christoph Kappel
h2. Stacking
156 13 Christoph Kappel
157 13 Christoph Kappel
There are four stacking layers, ordered from top to bottom:
158 1
159 1
# [[Clients#Fullscreen|Fullscreen]]
160 13 Christoph Kappel
# [[Clients#Floating|Floating]]
161 13 Christoph Kappel
# [[Gravity]]
162 13 Christoph Kappel
# [[Clients#Desktop|Desktop type]]
163 13 Christoph Kappel
164 15 Christoph Kappel
{{subforge_info
165 15 Christoph Kappel
Lower/raise just move the windows on their layer, for example [[Clients#Floating|floating]] [[Clients|windows]] cannot be below a [[gravity]] [[Clients|window]].
166 15 Christoph Kappel
}}