Clients » History » Version 15
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 | 15 | 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 | 15 | 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 | 15 | 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 | 15 | 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 | 15 | 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 | 15 | 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 | }} |