</xs:all>
</xs:complexType>
- <xs:complexType name="border">
- <xs:all>
- <xs:element name="primary" type="obt:color" minOccurs="0"/>
- <xs:element name="width" type="xs:integer" minOccurs="0"/>
- </xs:all>
- </xs:complexType>
-
<xs:complexType name="allmenus">
<xs:all>
- <xs:element name="border" type="obt:border" minOccurs="0"/>
+ <xs:element name="border" type="obt:color" minOccurs="0"/>
<xs:element name="overlap" type="xs:integer" minOccurs="0"/>
<xs:element name="justify" type="obt:justify" minOccurs="0"/>
<xs:element name="title" type="obt:textarea" minOccurs="0"/>
<xs:complexType name="window">
<xs:all>
+ <xs:element name="border" type="obt:border" minOccurs="0"/>
<xs:element name="clientpadding" type="obt:color" minOccurs="0"/>
<xs:element name="titlebar" type="obt:area" minOccurs="0"/>
<xs:element name="label" type="obt:textarea" minOccurs="0"/>
<xs:complexType name="allwindows">
<xs:all>
- <xs:element name="clientpadding" type="obt:point" minOccurs="0"/>
<xs:element name="justify" type="obt:justify" minOccurs="0"/>
- <xs:element name="border" type="obt:border" minOccurs="0"/>
<xs:element name="inactive" type="obt:window" minOccurs="0"/>
<xs:element name="active" type="obt:window" minOccurs="0"/>
</xs:all>
</xs:all>
</xs:complexType>
+ <xs:complexType name="windowDimensions">
+ <xs:all>
+ <xs:element name="borderwidth" type="xs:integer" minOccurs="0"/>
+ <xs:element name="clientpadding" type="obt:point" minOccurs="0"/>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="menuDimensions">
+ <xs:all>
+ <xs:element name="borderwidth" type="xs:integer" minOccurs="0"/>
+ </xs:all>
+ </xs:complexType>
+
<xs:complexType name="themeDimensions">
<xs:all>
<xs:element name="padding" type="obt:point" minOccurs="0"/>
<xs:element name="handle" type="xs:integer" minOccurs="0"/>
+ <xs:element name="window" type="obt:windowDimensions" minOccurs="0"/>
+ <xs:element name="menu" type="obt:menuDimensions" minOccurs="0"/>
</xs:all>
</xs:complexType>
GList *it;
XSetWindowBorder(ob_display, dock->frame,
- RrColorPixel(ob_rr_theme->frame_b_color));
+ RrColorPixel(ob_rr_theme->
+ frame_focused_border_color));
XSetWindowBorderWidth(ob_display, dock->frame, ob_rr_theme->fbwidth);
RrAppearanceFree(dock->a_frame);
&attrib);
dock->a_frame = RrAppearanceCopy(ob_rr_theme->a_focused_title);
XSetWindowBorder(ob_display, dock->frame,
- RrColorPixel(ob_rr_theme->frame_b_color));
+ RrColorPixel(ob_rr_theme->frame_focused_border_color));
XSetWindowBorderWidth(ob_display, dock->frame, ob_rr_theme->fbwidth);
g_hash_table_insert(window_map, &dock->frame, dock);
static void set_theme_statics(ObFrame *self)
{
/* set colors/appearance/sizes for stuff that doesn't change */
- XSetWindowBorder(ob_display, self->window,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->inner,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->title,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->handle,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->rgrip,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->lgrip,
- RrColorPixel(ob_rr_theme->frame_b_color));
-
XResizeWindow(ob_display, self->max,
ob_rr_theme->button_size, ob_rr_theme->button_size);
XResizeWindow(ob_display, self->iconify,
RrColorPixel(ob_rr_theme->cb_unfocused_color));
XSetWindowBackground(ob_display, self->inner, px);
XClearWindow(ob_display, self->inner);
+
+ px = (self->focused ?
+ RrColorPixel(ob_rr_theme->frame_focused_border_color) :
+ RrColorPixel(ob_rr_theme->frame_unfocused_border_color));
+ XSetWindowBorder(ob_display, self->window, px);
+ XSetWindowBorder(ob_display, self->inner, px);
+ XSetWindowBorder(ob_display, self->title, px);
+ XSetWindowBorder(ob_display, self->handle, px);
+ XSetWindowBorder(ob_display, self->rgrip, px);
+ XSetWindowBorder(ob_display, self->lgrip, px);
}
if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
XSetWindowBorderWidth(ob_display, self->window, ob_rr_theme->mbwidth);
XSetWindowBorder(ob_display, self->window,
- RrColorPixel(ob_rr_theme->menu_b_color));
+ RrColorPixel(ob_rr_theme->menu_border_color));
self->a_title = RrAppearanceCopy(ob_rr_theme->a_menu_title);
self->a_items = RrAppearanceCopy(ob_rr_theme->a_menu);
XMoveWindow(ob_display, e->window, e->area.x-e->border, e->area.y-e->border);
XSetWindowBorderWidth(ob_display, e->window, e->border);
XSetWindowBorder(ob_display, e->window,
- RrColorPixel(ob_rr_theme->menu_b_color));
+ RrColorPixel(ob_rr_theme->menu_border_color));
text_a = (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
InputOutput, RrVisual(ob_rr_inst), 0, NULL);
XSetWindowBorderWidth(ob_display, self->bg, ob_rr_theme->fbwidth);
- XSetWindowBorder(ob_display, self->bg, ob_rr_theme->frame_b_color->pixel);
+ XSetWindowBorder(ob_display, self->bg,
+ RrColorPixel(ob_rr_theme->frame_focused_border_color));
XMapWindow(ob_display, self->text);
for (i = self->desks; i < screen_num_desktops; ++i) {
XSetWindowAttributes attr;
- attr.border_pixel = RrColorPixel(ob_rr_theme->frame_b_color);
+ attr.border_pixel =
+ RrColorPixel(ob_rr_theme->frame_focused_border_color);
self->wins[i] = XCreateWindow(ob_display, self->popup->bg,
0, 0, 1, 1, ob_rr_theme->fbwidth,
RrDepth(ob_rr_inst), InputOutput,
&theme->paddingx, &theme->paddingy, 0, 100, 0, 100))
theme->paddingx = theme->paddingy = 3;
- if (!FIND(int, L("window","border","width"),
+ if (!FIND(int, L("dimensions","window","border"),
&theme->fbwidth, 0, 100))
theme->fbwidth = 1;
/* menu border width inherits from frame border width */
- if (!FIND(int, L("menu","border","width"),
+ if (!FIND(int, L("dimensions","menu","border"),
&theme->mbwidth, 0, 100))
theme->mbwidth = theme->fbwidth;
- if (!FIND(point, L("window","clientpadding"), &theme->cbwidthx,
- &theme->cbwidthy, 0, 100, 0, 100))
+ if (!FIND(point, L("dimensions","window","clientpadding"),
+ &theme->cbwidthx, &theme->cbwidthy, 0, 100, 0, 100))
theme->cbwidthx = theme->cbwidthy = 1;
/* load colors */
- if (!FIND(color, L("window","border","primary"),
- &theme->frame_b_color, NULL))
- theme->frame_b_color = RrColorNew(inst, 0, 0, 0);
-
- /* menu border color inherits from frame border color */
- if (!FIND(color, L("menu","border","primary"),
- &theme->menu_b_color, NULL))
- theme->menu_b_color = RrColorNew(inst,
- theme->frame_b_color->r,
- theme->frame_b_color->g,
- theme->frame_b_color->b);
+ if (!FIND(color, L("window","active","border"),
+ &theme->frame_focused_border_color, NULL))
+ theme->frame_focused_border_color = RrColorNew(inst, 0, 0, 0);
+ /* frame unfocused border color inherits from frame focused border color */
+ if (!FIND(color, L("window","inactive","border"),
+ &theme->frame_unfocused_border_color, NULL))
+ theme->frame_unfocused_border_color =
+ RrColorNew(inst,
+ theme->frame_focused_border_color->r,
+ theme->frame_focused_border_color->g,
+ theme->frame_focused_border_color->b);
+
+ /* menu border color inherits from frame focused border color */
+ if (!FIND(color, L("menu","border"),
+ &theme->menu_border_color, NULL))
+ theme->menu_border_color =
+ RrColorNew(inst,
+ theme->frame_focused_border_color->r,
+ theme->frame_focused_border_color->g,
+ theme->frame_focused_border_color->b);
if (!FIND(color, L("window","active","clientpadding"),
&theme->cb_focused_color, NULL))
theme->cb_focused_color = RrColorNew(inst, 255, 255, 255);
void RrThemeFree(RrTheme *theme)
{
if (theme) {
- RrColorFree(theme->menu_b_color);
- RrColorFree(theme->frame_b_color);
+ RrColorFree(theme->menu_border_color);
+ RrColorFree(theme->frame_focused_border_color);
+ RrColorFree(theme->frame_unfocused_border_color);
RrColorFree(theme->cb_unfocused_color);
RrColorFree(theme->cb_focused_color);
RrColorFree(theme->title_focused_color);
gint menu_title_height;
/* style settings - colors */
- RrColor *menu_b_color;
- RrColor *frame_b_color;
+ RrColor *menu_border_color;
+ RrColor *frame_focused_border_color;
+ RrColor *frame_unfocused_border_color;
RrColor *cb_focused_color;
RrColor *cb_unfocused_color;
RrColor *title_focused_color;
<?xml version="1.0"?>
-<openbox_theme version="1" engine="box" xmlns="http://openbox.org/themerc">
+<openbox_theme engine="box" version="1" xmlns="http://openbox.org/themerc">
+ <about>
+ <author></author>
+ <email></email>
+ <webpage></webpage>
+ <comment></comment>
+ </about>
<dimensions>
<handle>4</handle>
<padding x="1" y="1"/>
+ <window>
+ <border>1</border>
+ </window>
+ <menu>
+ <border>1</border>
+ </menu>
</dimensions>
<window>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
- <justify>center</justify>
<active>
+ <border r="0" g="0" b="0" a="255"/>
<clientpadding r="64" g="68" b="72" a="255"/>
<label>
<text>
</grip>
</active>
<inactive>
+ <border r="0" g="0" b="0" a="255"/>
<clientpadding r="32" g="36" b="40" a="255"/>
<label>
<text>
<secondary r="48" g="64" b="80" a="255"/>
</grip>
</inactive>
+ <justify>center</justify>
</window>
<menu>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
+ <border r="0" g="0" b="0" a="255"/>
<justify>center</justify>
<title>
<text>
<?xml version="1.0"?>
-<openbox_theme version="1" engine="box" xmlns="http://openbox.org/themerc">
+<openbox_theme engine="box" version="1" xmlns="http://openbox.org/themerc">
+ <about>
+ <author></author>
+ <email></email>
+ <webpage></webpage>
+ <comment></comment>
+ </about>
<dimensions>
<handle>4</handle>
<padding x="3" y="3"/>
+ <window>
+ <border>1</border>
+ <clientpadding x="0" y="0"/>
+ </window>
+ <menu>
+ <border>1</border>
+ </menu>
</dimensions>
<window>
- <border>
- <width>1</width>
- <primary r="78" g="78" b="78" a="255"/>
- </border>
- <clientpadding x="0" y="0"/>
- <justify>center</justify>
<active>
+ <border r="78" g="78" b="78" a="255"/>
<clientpadding r="238" g="238" b="236" a="255"/>
<label>
<text>
</grip>
</active>
<inactive>
+ <border r="78" g="78" b="78" a="255"/>
<clientpadding r="238" g="238" b="236" a="255"/>
<label>
<text>
<style>parentrelative</style>
</grip>
</inactive>
+ <justify>center</justify>
</window>
<menu>
- <border>
- <width>1</width>
- <primary r="78" g="78" b="78" a="255"/>
- </border>
+ <border r="78" g="78" b="78" a="255"/>
<justify>center</justify>
<overlap>2</overlap>
<title>
<?xml version="1.0"?>
-<openbox_theme version="1" engine="box" xmlns="http://openbox.org/themerc">
+<openbox_theme engine="box" version="1" xmlns="http://openbox.org/themerc">
+ <about>
+ <author></author>
+ <email></email>
+ <webpage></webpage>
+ <comment></comment>
+ </about>
<dimensions>
<handle>3</handle>
<padding x="2" y="2"/>
+ <window>
+ <border>1</border>
+ <clientpadding x="0" y="0"/>
+ </window>
+ <menu>
+ <border>1</border>
+ </menu>
</dimensions>
<window>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
- <clientpadding x="0" y="0"/>
<active>
+ <border r="0" g="0" b="0" a="255"/>
<label>
<text>
<primary r="255" g="255" b="255" a="255"/>
</grip>
</active>
<inactive>
+ <border r="0" g="0" b="0" a="255"/>
<label>
<text>
<primary r="0" g="0" b="0" a="255"/>
</inactive>
</window>
<menu>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
+ <border r="0" g="0" b="0" a="255"/>
<justify>left</justify>
<overlap>0</overlap>
<title>
<?xml version="1.0"?>
-<openbox_theme version="1" engine="box" xmlns="http://openbox.org/themerc">
+<openbox_theme engine="box" version="1" xmlns="http://openbox.org/themerc">
+ <about>
+ <author></author>
+ <email></email>
+ <webpage></webpage>
+ <comment></comment>
+ </about>
<dimensions>
<handle>3</handle>
<padding x="2" y="2"/>
+ <window>
+ <border>1</border>
+ <clientpadding x="0" y="0"/>
+ </window>
+ <menu>
+ <border>1</border>
+ </menu>
</dimensions>
<window>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
- <clientpadding x="0" y="0"/>
<active>
+ <border r="0" g="0" b="0" a="255"/>
<label>
<text>
<primary r="255" g="255" b="255" a="255"/>
</grip>
</active>
<inactive>
+ <border r="0" g="0" b="0" a="255"/>
<label>
<text>
<primary r="0" g="0" b="0" a="255"/>
</inactive>
</window>
<menu>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
+ <border r="0" g="0" b="0" a="255"/>
<justify>left</justify>
<overlap>0</overlap>
<title>
<?xml version="1.0"?>
-<openbox_theme version="1" engine="box" xmlns="http://openbox.org/themerc">
+<openbox_theme engine="box" version="1" xmlns="http://openbox.org/themerc">
+ <about>
+ <author></author>
+ <email></email>
+ <webpage></webpage>
+ <comment></comment>
+ </about>
<dimensions>
<handle>0</handle>
<padding x="1" y="1"/>
+ <window>
+ <border>1</border>
+ <clientpadding x="0" y="0"/>
+ </window>
+ <menu>
+ <border>1</border>
+ </menu>
</dimensions>
<window>
- <border>
- <width>1</width>
- <primary r="34" g="51" b="68" a="255"/>
- </border>
- <clientpadding x="0" y="0"/>
- <justify>left</justify>
<active>
+ <border r="34" g="51" b="68" a="255"/>
<clientpadding r="0" g="255" b="0" a="255"/>
<label>
<text>
</grip>
</active>
<inactive>
+ <border r="34" g="51" b="68" a="255"/>
<clientpadding r="127" g="127" b="127" a="255"/>
<label>
<text>
<border r="0" g="0" b="0" a="255"/>
</grip>
</inactive>
+ <justify>left</justify>
</window>
<menu>
- <border>
- <width>1</width>
- <primary r="34" g="51" b="68" a="255"/>
- </border>
+ <border r="34" g="51" b="68" a="255"/>
<justify>center</justify>
<title>
<text>
<?xml version="1.0"?>
-<openbox_theme version="1" engine="box" xmlns="http://openbox.org/themerc">
+<openbox_theme engine="box" version="1" xmlns="http://openbox.org/themerc">
+ <about>
+ <author></author>
+ <email></email>
+ <webpage></webpage>
+ <comment></comment>
+ </about>
<dimensions>
<handle>2</handle>
<padding x="2" y="2"/>
+ <window>
+ <border>1</border>
+ <clientpadding x="0" y="0"/>
+ </window>
+ <menu>
+ <border>1</border>
+ </menu>
</dimensions>
<window>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
- <clientpadding x="0" y="0"/>
- <justify>left</justify>
<active>
+ <border r="0" g="0" b="0" a="255"/>
<clientpadding r="238" g="238" b="238" a="255"/>
<label>
<text>
</grip>
</active>
<inactive>
+ <border r="0" g="0" b="0" a="255"/>
<clientpadding r="238" g="238" b="238" a="255"/>
<label>
<text>
<border r="191" g="191" b="191" a="255"/>
</grip>
</inactive>
+ <justify>left</justify>
</window>
<menu>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
+ <border r="0" g="0" b="0" a="255"/>
<justify>left</justify>
<overlap>0</overlap>
<title>
<?xml version="1.0"?>
-<openbox_theme version="1" engine="box" xmlns="http://openbox.org/themerc">
+<openbox_theme engine="box" version="1" xmlns="http://openbox.org/themerc">
+ <about>
+ <author></author>
+ <email></email>
+ <webpage></webpage>
+ <comment></comment>
+ </about>
<dimensions>
<handle>3</handle>
<padding x="1" y="1"/>
+ <window>
+ <border>1</border>
+ <clientpadding x="0" y="0"/>
+ </window>
+ <menu>
+ <border>1</border>
+ </menu>
</dimensions>
<window>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
- <clientpadding x="0" y="0"/>
- <justify>left</justify>
<active>
+ <border r="0" g="0" b="0" a="255"/>
<clientpadding r="247" g="247" b="247" a="255"/>
<label>
<text>
</grip>
</active>
<inactive>
+ <border r="0" g="0" b="0" a="255"/>
<clientpadding r="247" g="247" b="247" a="255"/>
<label>
<text>
<style>parentrelative</style>
</grip>
</inactive>
+ <justify>left</justify>
</window>
<menu>
- <border>
- <width>1</width>
- <primary r="0" g="0" b="0" a="255"/>
- </border>
+ <border r="0" g="0" b="0" a="255"/>
<justify>left</justify>
<overlap>2</overlap>
<title>
<?xml version="1.0"?>
-<openbox_theme version="1" engine="box" xmlns="http://openbox.org/themerc">
+<openbox_theme engine="box" version="1" xmlns="http://openbox.org/themerc">
+ <about>
+ <author></author>
+ <email></email>
+ <webpage></webpage>
+ <comment></comment>
+ </about>
<dimensions>
<handle>0</handle>
<padding x="1" y="1"/>
+ <window>
+ <border>1</border>
+ <clientpadding x="0" y="0"/>
+ </window>
+ <menu>
+ <border>1</border>
+ </menu>
</dimensions>
<window>
- <border>
- <width>1</width>
- <primary r="109" g="109" b="109" a="255"/>
- </border>
- <clientpadding x="0" y="0"/>
- <justify>left</justify>
<active>
+ <border r="109" g="109" b="109" a="255"/>
<clientpadding r="76" g="76" b="76" a="255"/>
<label>
<text>
</grip>
</active>
<inactive>
+ <border r="109" g="109" b="109" a="255"/>
<clientpadding r="112" g="112" b="112" a="255"/>
<label>
<text>
<primary r="230" g="230" b="224" a="255"/>
</grip>
</inactive>
+ <justify>left</justify>
</window>
<menu>
- <border>
- <width>1</width>
- <primary r="109" g="109" b="109" a="255"/>
- </border>
+ <border r="109" g="109" b="109" a="255"/>
<justify>left</justify>
<overlap>0</overlap>
<title>
xmlSetProp(root, (const xmlChar*)"version", (const xmlChar*)"1");
xmlSetProp(root, (const xmlChar*)"xmlns",
(const xmlChar*)"http://openbox.org/themerc");
+ CONT2("about", "author", "");
+ CONT2("about", "email", "");
+ CONT2("about", "webpage", "");
+ CONT2("about", "comment", "");
if (read_int(db, "window.handle.width", &i))
CONT2("dimensions", "handle", NUM(i));
}
if (read_int(db, "borderWidth", &i)) {
- CONT3("window", "border", "width", NUM(i));
- CONT3("menu", "border", "width", NUM(i));
+ CONT3("dimensions", "window", "border", NUM(i));
+ CONT3("dimensions", "menu", "border", NUM(i));
} else if (read_int(db, "border.width", &i)) {
- CONT3("window", "border", "width", NUM(i));
- CONT3("menu", "border", "width", NUM(i));
+ CONT3("dimensions", "window", "border", NUM(i));
+ CONT3("dimensions", "menu", "border", NUM(i));
}
if (read_color(db, "border.color", &i, &j, &k)) {
- COLOR3("window", "border", "primary", i, j, k, 255);
- COLOR3("menu", "border", "primary", i, j, k, 255);
+ COLOR3("window", "active", "border", i, j, k, 255);
+ COLOR3("window", "inactive", "border", i, j, k, 255);
+ COLOR2("menu", "border", i, j, k, 255);
}
if (read_int(db, "window.client.padding.width", &i)) {
- ATTR2("window", "clientpadding", "x", NUM(i));
- ATTR2("window", "clientpadding", "y", NUM(i));
+ ATTR3("dimensions", "window", "clientpadding", "x", NUM(i));
+ ATTR3("dimensions", "window", "clientpadding", "y", NUM(i));
}
if (read_string(db, "window.label.text.justify", &s)) {