Project

General

Profile

unexist.dev

subtle

Assorted tidbits and projects

Tagging » History » Version 49

« Previous - Version 49/66 (diff) - Next » - Current version
Anonymous, 06/24/2011 01:13 PM


Tagging\015\012\015\012{{>toc}}\015\012\015\012\015\012Tags are generally used in subtle for placement of windows. This placement is mandatory, that means that - aside from other tiling window managers - windows must have a matching tag to be on a certain view. This also includes that clients that are started on a certain view will not automatically be placed there.\015\012\015\012There are two ways to define a tag in the config:\015\012\015\012h2. Simple\015\012\015\012The simple way just needs a name and a regular expression to just handle the placement:\015\012\015\012
tag "tag", "xterm"
\015\012\015\012h2. Extended\015\012\015\012Additionally tags can do a lot more then just control the placement - they also have properties than can define and control some aspects of a client like the default gravity or the default screen per view.\015\012\015\012
{{hide}}\015\012tag "tag" do\015\012  match   "xterm|[u]?rxvt"\015\012  gravity :center\015\012end\015\012
\015\012\015\012h2. Default\015\012\015\012Whenever a window has no tags it will get the default tag and be placed on the default view. The default view can either be set by the user with adding the default tag to a view by choice or otherwise the first defined view will be chosen automatically.\015\012\015\012Example:\015\012\015\012
{{hide}}\015\012view "terms", "terms",\015\012view  "www", "default|browser",\015\012view  "dev", "editor"\015\012
\015\012\015\012h2. Properties\015\012\015\012Additionally tags can do a lot more then just control the placement - they also have properties than can define and control some aspects of a [[Clients|client] like the gravity.\015\012\015\012{{needs(r2900)}}\015\012\015\012h3. Borderless \015\012\015\012This property enables the borderless mode for tagged clients.\015\012\015\012
{{hide}}\015\012tag "borderless" do\015\012  match       "xterm"\015\012  borderless  true\015\012end
\015\012\015\012{{needs(r2890)}}\015\012\015\012h3. Fixed\015\012\015\012This property enables the fixed mode for tagged clients.\015\012\015\012
{{hide}}\015\012tag "fixed" do\015\012  match "xterm"\015\012  fixed  true\015\012end
\015\012\015\012h3. Float\015\012\015\012This property enables the floating mode tagged clients.\015\012\015\012
{{hide}}\015\012tag "float" do\015\012  match"xterm"\015\012  float true\015\012end\015\012
\015\012\015\012h3. Full\015\012\015\012This property enables the fullscreen mode for tagged clients.\015\012\015\012
{{hide}}\015\012tag "full" do\015\012  match "xterm"\015\012  full  true\015\012end\015\012
\015\012\015\012h3. Geometry\015\012\015\012This property sets a certain geometry as well as floating to the tagged client, but only on views that have this tag too. It expects an array with x, y, width and height values whereas width and height must be >0.\015\012\015\012
{{hide}}\015\012tag "geometry" do\015\012  match    "xterm"\015\012  geometry [ 10, 10, 100, 100 ]\015\012end\015\012
\015\012\015\012h3. Gravity\015\012\015\012This property sets a certain to gravity to the tagged client, but only on matching views.\015\012
{{hide}}\015\012tag "gravity" do\015\012  match   "xterm"\015\012  gravity :center\015\012end\015\012
\015\012\015\012h3. Match\015\012\015\012This property adds matching patterns to a tag, a tag can have more than one. Matching works either via plaintext, regex (see regex) or window id. Per default tags will only match the WM_NAME and the WM_CLASS portion of a client.\015\012\015\012This can be changed by following possible values:\015\012\015\012| :name | Match the WM_NAME which is also visible in the panel |\015\012| :instance | Match the {{color(#ff0000, WM_CLASS)}} |\015\012| :class | Match the {{color(#0000ff, WM_CLASS)}} |\015\012| :role | Match the window role |\015\012| :type | Match the window type |\015\012\015\012\015\012There are several ways to get these values, here are the most common:\015\012\015\012* xprop: Just select the window and have a look for the WM_CLASS line which usually look like this:\015\012\015\012p{class:pre}. WM_CLASS(STRING) = "{{color(#ff0000, urxvt)}}", "{{color(#0000ff, URxvt)}}")\015\012\015\012* subtler: Run subtler cl and look for the matching line:\015\012\015\012p{class:pre}. 0x800007 * 1 100x100 5 0 -- {{color(#ff0000, xterm)}} ({{color(#0000ff,XTerm)}})\015\012\015\012
{{hide}}\015\012tag "match" do\015\012  match [ :title, :class ] => "xterm"\015\012end\015\012\015\012tag "match" do\015\012  match "xterm"\015\012end\015\012
\015\012\015\012{{info(When dealing with console-based apps please keep in mind, that tagging via WM_NAME won't work as expected. Tags are usually applied when the terminal starts and before the shell with the app is spawned.)}}\015\012\015\012Please also check the How do I tag console based programs? FAQ entry.\015\012\015\012h3. Position\015\012\015\012Similar to the geometry property, this property just sets the x/y coordinates of the tagged client, but only on views that have this tag, too. It expects an array with x and y values.\015\012\015\012
{{hide}}\015\012tag "position" do\015\012  match    "xterm"\015\012  position [ 10, 10 ]\015\012end\015\012
\015\012\015\012h3. Resize\015\012\015\012This property enables the resize mode for tagged clients.\015\012\015\012
{{hide}}\015\012tag "resize" do\015\012  match  "xterm"\015\012  resize true\015\012end\015\012
\015\012\015\012h3. Stick\015\012\015\012This property enables the sticky mode for tagged clients.\015\012\015\012
{{hide}}\015\012tag "stick" do\015\012  match "xterm"\015\012  stick true\015\012end\015\012
\015\012\015\012h3. Type\015\012\015\012This property sets the tagged client to be treated as a specific window type though as the window sets the type itself. \015\012\015\012Following types are possible:\015\012\015\012{{needs(r2905)}}\015\012\015\012| :normal | Treat as normal window |\015\012| :desktop | Treat as desktop window (_NET_WM_WINDOW_TYPE_DESKTOP) |\015\012| :dock | Treat as dock window (_NET_WM_WINDOW_TYPE_DOCK) |\015\012| :toolbar | Treat as toolbar windows (_NET_WM_WINDOW_TYPE_TOOLBAR) |\015\012| :splash | Treat as splash window (_NET_WM_WINDOW_TYPE_SPLASH) |\015\012| :dialog | Treat as dialog window (_NET_WM_WINDOW_TYPE_DIALOG) |\015\012\015\012
{{hide}}\015\012tag "desktop" do\015\012  match   "xterm"\015\012  type    :desktop\015\012end\015\012
\015\012\015\012h3. Urgent\015\012\015\012This property enables the urgent mode for tagged clients.\015\012\015\012
{{hide}}\015\012tag "urgent" do\015\012  match  "xterm"\015\012  urgent true\015\012end\015\012
\015\012\015\012{{needs(r2871)}}\015\012\015\012h3. Zaphod\015\012\015\012This property enables the zaphod mode for tagged clients.\015\012\015\012
{{hide}}\015\012tag "zaphod" do\015\012  match  "xterm"\015\012  zaphod true\015\012end
\015\012\015\012h2. Examples\015\012\015\012
{{hide}}\015\012tag "bashrun" do\015\012  match    "bashrun"\015\012  geometry [ 50, 1000, 200, 28 ]#\015\012  stick    true\015\012  urgent   true\015\012end\015\012\015\012tag "browser" do\015\012  match   "chrom[e|ium]"\015\012  gravity :center\015\012end\015\012