Tagging » History » Version 52
« Previous -
Version 52/66
(diff) -
Next » -
Current version
Anonymous, 06/24/2011 02:09 PM
Tagging\015\012\015\012{{>toc}}\015\012\015\012\015\012Tags are generally used in subtle for placement of clients. This placement is mandatory, that means that - aside from other tiling window managers - clients must have a matching tag to be on a certain view. This also includes that clients, that are started on a certain view, aren't automatically 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\012tag "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 to define and control some aspects of a client like the gravity or modes.\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 client has no tags it gets the default tag and is placed on the default view.\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\012Following properties exist:\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 a matcher to a tag, that is either a simple regular expression (see regex) or a selector based on different values/properties of a client. \015\012\015\012h4. Regular expression\015\012\015\012When a regular expression is used, subtle uses both parts WM_CLASS property for matching.\015\012\015\012h4. Selector\015\012\015\012A selector is a more complicated but finer grained way to match clients and it even allows to combine multiple matcher with simple boolean logic.\015\012\015\012Every selector consists of a type and a value:\015\012\015\012{{hide}}\015\012tag "example" do\015\012 match type: value\015\012end\015\012
\015\012\015\012Following types exist:\015\012\015\012| :name | Match the window name |\015\012| :instance | Match the window instance name |\015\012| :class | Match the window class name |\015\012| :role | Match the window role |\015\012| :type | Match the window type |\015\012\015\012h4. Boolean logic\015\012\015\012A tag can have more than one matcher and it is possible to add simple boolean logic to it based on the definition of the matcher.\015\012\015\012h5. AND\015\012\015\012{{hide}}\015\012tag "AND" do\015\012 match instance: "xterm", instance: "urxvt"\015\012end\015\012
\015\012\015\012h5. OR\015\012\015\012{{hide}}\015\012tag "AND" do\015\012 match "xterm"\015\012 match "urxvt"\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
¶
tag "tag", "xterm"
\015\012tag "tag" do\015\012 match "xterm|[u]?rxvt"\015\012 gravity :center\015\012end\015\012
\015\012view "terms", "terms",\015\012view "www", "default|browser",\015\012view "dev", "editor"\015\012
\015\012tag "borderless" do\015\012 match "xterm"\015\012 borderless true\015\012end
\015\012tag "fixed" do\015\012 match "xterm"\015\012 fixed true\015\012end
\015\012tag "float" do\015\012 match"xterm"\015\012 float true\015\012end\015\012
\015\012tag "full" do\015\012 match "xterm"\015\012 full true\015\012end\015\012
\015\012tag "geometry" do\015\012 match "xterm"\015\012 geometry [ 10, 10, 100, 100 ]\015\012end\015\012
\015\012tag "gravity" do\015\012 match "xterm"\015\012 gravity :center\015\012end\015\012
\015\012tag "example" do\015\012 match type: value\015\012end\015\012
\015\012tag "AND" do\015\012 match instance: "xterm", instance: "urxvt"\015\012end\015\012
\015\012tag "AND" do\015\012 match "xterm"\015\012 match "urxvt"\015\012end\015\012
\015\012tag "position" do\015\012 match "xterm"\015\012 position [ 10, 10 ]\015\012end\015\012
\015\012tag "resize" do\015\012 match "xterm"\015\012 resize true\015\012end\015\012
\015\012tag "stick" do\015\012 match "xterm"\015\012 stick true\015\012end\015\012
\015\012tag "desktop" do\015\012 match "xterm"\015\012 type :desktop\015\012end\015\012
\015\012tag "urgent" do\015\012 match "xterm"\015\012 urgent true\015\012end\015\012
\015\012tag "zaphod" do\015\012 match "xterm"\015\012 zaphod true\015\012end
\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