<font place="ActiveWindow">
<name>sans</name>
<size>7</size>
+ <!-- font size in points -->
<weight>bold</weight>
+ <!-- 'bold' or 'normal' -->
<slant>normal</slant>
+ <!-- 'italic' or 'normal' -->
</font>
<font place="InactiveWindow">
<name>sans</name>
<size>7</size>
+ <!-- font size in points -->
<weight>bold</weight>
+ <!-- 'bold' or 'normal' -->
<slant>normal</slant>
+ <!-- 'italic' or 'normal' -->
</font>
<font place="MenuHeader">
<name>sans</name>
<size>8</size>
+ <!-- font size in points -->
<weight>bold</weight>
+ <!-- 'bold' or 'normal' -->
<slant>normal</slant>
+ <!-- 'italic' or 'normal' -->
</font>
<font place="MenuItem">
<name>sans</name>
<size>9</size>
+ <!-- font size in points -->
<weight>bold</weight>
+ <!-- 'bold' or 'normal' -->
<slant>normal</slant>
+ <!-- 'italic' or 'normal' -->
</font>
<font place="OnScreenDisplay">
<name>sans</name>
<size>9</size>
+ <!-- font size in points -->
<weight>bold</weight>
+ <!-- 'bold' or 'normal' -->
<slant>normal</slant>
+ <!-- 'italic' or 'normal' -->
</font>
</theme>
<!-- default menu file (or custom one in $HOME/.config/openbox/) -->
<file>menu.xml</file>
- <warpPointer>yes</warpPointer>
- <xorStyle>yes</xorStyle>
<hideDelay>250</hideDelay>
<middle>no</middle>
<submenuShowDelay>0</submenuShowDelay>
- <desktopMenuIcons>yes</desktopMenuIcons>
- <!-- -->
+ <applicationIcons>yes</applicationIcons>
</menu>
+<!-- this section is commented out.. remove this and the ending comment if you
+ want to use it -->
<applications>
-<!--
- <application name="this application does not exist">
+ <!-- the name or the class can be set, or both. this is used to match
+ windows when they appear
+
+ role can optionally be set, and only as much as you provide will be
+ checked to see if it matches, eg. if you set role="abc" and the window's
+ role is actually "abcde" it would match.
+ -->
+ <application name="first element of window's WM_CLASS property (see xprop)"
+ class="second element of window's WM_CLASS property (see xprop)"
+ role="the window's WM_WINDOW_ROLE property (see xprop)">
+
+ <!-- each element can be left out or set to 'default' to specify to not
+ change that attribute of the window -->
+
<decor>yes</decor>
+
<shade>no</shade>
+
<position>
+ <!-- the position is only used if both an x and y coordinate are provided
+ (and not set to 'default') -->
<x>center</x>
+ <!-- a number or 'center' to center on screen -->
<y>200</y>
+ <!-- a number or 'center' to center on screen -->
+ <head>0</head>
+ <!-- specifies the xinerama head, 'mouse' for wherever the mouse is -->
</position>
+
<focus>yes</focus>
+ <!-- if the window should try be given focus when it appears -->
+
<desktop>1</desktop>
- <head>0</head>
- # specifies xinerama head
+ <!-- 0 is the first desktop, 'all' for all desktops -->
+
<layer>normal</layer>
- # 'above', 'normal', or 'below'
+ <!-- 'above', 'normal', or 'below' -->
+
<iconic>no</iconic>
+
<skip_pager>no</skip_pager>
+ <!-- asks to not be shown in pagers -->
+
<skip_taskbar>no</skip_taskbar>
+ <!-- asks to not be shown in taskbars. window cycling actions will also
+ skip past such windows -->
+
<fullscreen>yes</fullscreen>
+
<maximized>true</maximized>
- # 'Horizontal', 'Vertical' or boolean (yes/no/on/off/true/false)
+ <!-- 'Horizontal', 'Vertical' or boolean (yes/no/on/off/true/false) -->
</application>
- -->
</applications>
+ -->
</openbox_config>
</xsd:complexType>
<xsd:complexType name="menu">
<xsd:element maxOccurs="unbounded" name="file" type="xsd:string"/>
- <xsd:element minOccurs="0" name="warpPointer" type="ob:bool"/>
- <xsd:element minOccurs="0" name="xorStyle" type="ob:bool"/>
<xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/>
<xsd:element minOccurs="0" name="middle" type="ob:bool"/>
<xsd:element minOccurs="0" name="submenuShowDelay" type="xsd:integer"/>
- <xsd:element minOccurs="0" name="desktopMenuIcons" type="ob:bool"/>
+ <xsd:element minOccurs="0" name="applicationIcons" type="ob:bool"/>
</xsd:complexType>
<xsd:complexType name="window_position">
<xsd:element name="x" type="ob:center_or_int"/>
<xsd:element name="y" type="ob:center_or_int"/>
+ <xsd:element minOccurs="0" name="head" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="application">
- <xsd:element minOccurs="0" name="decor" type="xsd:string"/>
+ <xsd:element minOccurs="0" name="decor" type="xsd:bool"/>
<xsd:element minOccurs="0" name="shade" type="ob:bool"/>
<xsd:element minOccurs="0" name="position" type="ob:window_position"/>
<xsd:element minOccurs="0" name="focus" type="xsd:string"/>
<xsd:element minOccurs="0" name="desktop" type="xsd:integer"/>
- <xsd:element minOccurs="0" name="head" type="xsd:string"/>
<xsd:element minOccurs="0" name="layer" type="ob:layer"/>
<xsd:element minOccurs="0" name="iconic" type="ob:bool"/>
<xsd:element minOccurs="0" name="skip_pager" type="ob:bool"/>
</xsd:simpleType>
<xsd:simpleType name="layer">
<xsd:restriction base="xsd:string">
- <xsd:enumeration value="above"/>
- <xsd:enumeration value="normal"/>
- <xsd:enumeration value="below"/>
+ <xsd:enumeration value="Above"/>
+ <xsd:enumeration value="Normal"/>
+ <xsd:enumeration value="Below"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="maximization">
|| (app->class && app->name && !strcmp(app->class, self->class)
&& !strcmp(app->name, self->name)))
{
- ob_debug("Window matching: %s\n", app->name);
/* Match if no role was specified in the per app setting, or if the
* string matches the beginning of the role, since apps like to set
* the role to things like browser-window-23c4b2f */
if (!app->role
|| !strncmp(app->role, self->role, strlen(app->role)))
{
+ ob_debug("Window matching: %s\n", app->name);
/* use this one */
settings = app;
break;
<position>
<x>700</x>
<y>0</y>
+ <head>1</head>
</position>
- <head>1</head>
</application>
</applications>
*/
settings->decor = -1;
if ((n = parse_find_node("decor", app->children)))
- settings->decor = parse_bool(doc, n);
+ if (!parse_contains("default", doc, n))
+ settings->decor = parse_bool(doc, n);
settings->shade = -1;
if ((n = parse_find_node("shade", app->children)))
- settings->shade = parse_bool(doc, n);
+ if (!parse_contains("default", doc, n))
+ settings->shade = parse_bool(doc, n);
settings->position.x = settings->position.y = 0;
settings->pos_given = FALSE;
if ((n = parse_find_node("position", app->children))) {
- if ((c = parse_find_node("x", n->children))) {
- gchar *s = parse_string(doc, c);
- if (!strcmp(s, "center")) {
- settings->center_x = TRUE;
- x_pos_given = TRUE;
- } else {
- settings->position.x = parse_int(doc, c);
- x_pos_given = TRUE;
+ if ((c = parse_find_node("x", n->children)))
+ if (!parse_contains("default", doc, c)) {
+ gchar *s = parse_string(doc, c);
+ if (!strcmp(s, "center")) {
+ settings->center_x = TRUE;
+ x_pos_given = TRUE;
+ } else {
+ settings->position.x = parse_int(doc, c);
+ x_pos_given = TRUE;
+ }
+ g_free(s);
}
- g_free(s);
- }
-
- if (x_pos_given && (c = parse_find_node("y", n->children))) {
- gchar *s = parse_string(doc, c);
- if (!strcmp(s, "center")) {
- settings->center_y = TRUE;
- settings->pos_given = TRUE;
- } else {
- settings->position.y = parse_int(doc, c);
- settings->pos_given = TRUE;
+
+ if (x_pos_given && (c = parse_find_node("y", n->children)))
+ if (!parse_contains("default", doc, )) {
+ gchar *s = parse_string(doc, c);
+ if (!strcmp(s, "center")) {
+ settings->center_y = TRUE;
+ settings->pos_given = TRUE;
+ } else {
+ settings->position.y = parse_int(doc, c);
+ settings->pos_given = TRUE;
+ }
+ g_free(s);
+ }
+
+ if (settings->pos_given &&
+ (c = parse_find_node("head", n->children)))
+ if (!parse_contains("default", doc, n)) {
+ gchar *s = parse_string(doc, n);
+ if (!strcmp(s, "mouse"))
+ settings->head = -1;
+ else
+ settings->head = parse_int(doc, n);
+ g_free(s);
}
- g_free(s);
- }
}
settings->focus = -1;
if ((n = parse_find_node("focus", app->children)))
- settings->focus = parse_bool(doc, n);
-
- if ((n = parse_find_node("desktop", app->children))) {
- gchar *s = parse_string(doc, n);
- if (!strcmp(s, "all"))
- settings->desktop = DESKTOP_ALL;
- else
- settings->desktop = parse_int(doc, n);
- g_free(s);
- } else
- settings->desktop = DESKTOP_ALL - 1; /* lets hope the user
- * doesn't have 2^32
- * desktops */
-
- if ((n = parse_find_node("head", app->children))) {
- gchar *s = parse_string(doc, n);
- if (!strcmp(s, "mouse"))
- settings->head = -1;
- else
- settings->head = parse_int(doc, n);
- g_free(s);
- }
+ if (!parse_contains("default", doc, n))
+ settings->focus = parse_bool(doc, n);
+
+ if ((n = parse_find_node("desktop", app->children)))
+ if (!parse_contains("default", doc, n)) {
+ gchar *s = parse_string(doc, n);
+ if (!strcmp(s, "all"))
+ settings->desktop = DESKTOP_ALL;
+ else
+ settings->desktop = parse_int(doc, n);
+ g_free(s);
+ } else
+ /* lets hope the user doesn't have 2^32 desktops */
+ settings->desktop = DESKTOP_ALL - 1;
settings->layer = -2;
if ((n = parse_find_node("layer", app->children))) {
parse_expand_tilde(c));
g_free(c);
}
- if ((n = parse_find_node("warpPointer", node)))
- config_menu_warppointer = parse_bool(doc, n);
if ((n = parse_find_node("hideDelay", node)))
config_menu_hide_delay = parse_int(doc, n);
if ((n = parse_find_node("middle", node)))
config_menu_middle = parse_bool(doc, n);
if ((n = parse_find_node("submenuShowDelay", node)))
config_submenu_show_delay = parse_int(doc, n);
- if ((n = parse_find_node("desktopMenuIcons", node)))
+ if ((n = parse_find_node("applicationIcons", node)))
config_menu_client_list_icons = parse_bool(doc, n);
}
}