Time Lord technology: for_window config directive to run arbitrary cmds

An example to set all XTerms floating:
    for_window [class="XTerm"] mode floating

To make all urxvts use a 1-pixel border:
    for_window [class="urxvt"] border 1pixel

A less useful, but rather funny example:
    for_window [title="x200: ~/work"] mode floating

The commands are not completely arbitrary. The commands above were tested,
others may need some fixing. Internally, windows are compared against your
criteria (class, title, …) when they are initially managed and whenever one of
the relevant values change. Then, the specified command is run *once* (per
window). It gets prefixed with a criteria to make it match only the specific
window that triggered it. So, if you configure "mode floating", i3 runs
something like '[id="8393923"] mode floating'.
This commit is contained in:
Michael Stapelberg
2011-05-15 20:10:25 +02:00
parent ca2e4199b5
commit 5ae4620a24
15 changed files with 291 additions and 34 deletions

View File

@ -6,14 +6,14 @@
* given window.
*
*/
void window_update_class(i3Window *win, xcb_get_property_reply_t *prop);
void window_update_class(i3Window *win, xcb_get_property_reply_t *prop, bool before_mgmt);
/**
* Updates the name by using _NET_WM_NAME (encoded in UTF-8) for the given
* window. Further updates using window_update_name_legacy will be ignored.
*
*/
void window_update_name(i3Window *win, xcb_get_property_reply_t *prop);
void window_update_name(i3Window *win, xcb_get_property_reply_t *prop, bool before_mgmt);
/**
* Updates the name by using WM_NAME (encoded in COMPOUND_TEXT). We do not
@ -22,7 +22,7 @@ void window_update_name(i3Window *win, xcb_get_property_reply_t *prop);
* window_update_name()).
*
*/
void window_update_name_legacy(i3Window *win, xcb_get_property_reply_t *prop);
void window_update_name_legacy(i3Window *win, xcb_get_property_reply_t *prop, bool before_mgmt);
/**
* Updates the CLIENT_LEADER (logical parent window).