all repos — openbox @ 6cd5f7ea380e155dbd7b29f01dd3fcfb5858ad61

openbox fork - make it a bit more like ryudo

document the per app settings in rc.xml.in. some xsd fixes. add the "default" option to all the per-app settings which is the same as not putting it in there at all.
Dana Jansens danakj@orodu.net
commit

6cd5f7ea380e155dbd7b29f01dd3fcfb5858ad61

parent

c51373c20148422f1fd35a748c3cf18826496034

4 files changed, 115 insertions(+), 67 deletions(-)

jump to
M data/rc.xml.indata/rc.xml.in

@@ -47,32 +47,47 @@ <animateIconify>yes</animateIconify>

<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>

@@ -408,38 +423,68 @@ just don't make menu ids clash or, well, it'll be kind of pointless -->

<!-- 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> --> -</applications> </openbox_config>
M data/rc.xsddata/rc.xsd

@@ -199,24 +199,22 @@ <xsd:element maxOccurs="unbounded" name="context" type="ob:context"/>

</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"/>

@@ -434,9 +432,9 @@ </xsd:restriction>

</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">
M openbox/client.copenbox/client.c

@@ -639,13 +639,13 @@ || (app->class && !app->name && !strcmp(app->class, self->class))

|| (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;
M openbox/config.copenbox/config.c

@@ -102,8 +102,8 @@ <layer>above</layer>

<position> <x>700</x> <y>0</y> + <head>1</head> </position> - <head>1</head> </application> </applications> */

@@ -151,64 +151,71 @@ settings->role = NULL;

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))) + 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 (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 (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 (!parse_contains("default", doc, n)) + 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 ((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))) {

@@ -663,15 +670,13 @@ config_menu_files = g_slist_append(config_menu_files,

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); } }