</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>
+
+ <xs:complexType name="about">
+ <xs:all>
+ <xs:element name="author" type="xs:string" minOccurs="0"/>
+ <xs:element name="email" type="xs:string" minOccurs="0"/>
+ <xs:element name="webpage" type="xs:string" minOccurs="0"/>
+ <xs:element name="comment" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:complexType>
<xs:complexType name="theme">
<xs:all>
+ <xs:element name="about" type="obt:about" minOccurs="0"/>
<xs:element name="dimensions" type="obt:themeDimensions" minOccurs="0"/>
<xs:element name="osd" type="obt:allosd" minOccurs="0"/>
<xs:element name="menu" type="obt:allmenus" minOccurs="0"/>
if (!(self->functions & OB_CLIENT_FUNC_ICONIFY))
self->decorations &= ~OB_FRAME_DECOR_ICONIFY;
if (!(self->functions & OB_CLIENT_FUNC_RESIZE))
- self->decorations &= ~OB_FRAME_DECOR_GRIPS;
+ self->decorations &= ~(OB_FRAME_DECOR_GRIPS | OB_FRAME_DECOR_HANDLE);
/* can't maximize without moving/resizing */
if (!((self->functions & OB_CLIENT_FUNC_MAXIMIZE) &&
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,
if (!read_int(db, "border.width", &theme->fbwidth) ||
theme->fbwidth < 0 || theme->fbwidth > 100)
theme->fbwidth = 1;
+ /* menu border width inherits from the frame border width */
+ if (!read_int(db, "menu.border.width", &theme->mbwidth) ||
+ theme->mbwidth < 0 || theme->mbwidth > 100)
+ theme->mbwidth = theme->fbwidth;
theme->mbwidth = theme->fbwidth;
if (!read_int(db, "window.client.padding.width", &theme->cbwidthx) ||
theme->cbwidthx < 0 || theme->cbwidthx > 100)
/* load colors */
if (!read_color(db, inst,
- "border.color", &theme->frame_b_color))
- theme->frame_b_color = RrColorNew(inst, 0, 0, 0);
- theme->menu_b_color = RrColorNew(inst,
- theme->frame_b_color->r,
- theme->frame_b_color->g,
- theme->frame_b_color->b);
+ "window.active.border.color",
+ &theme->frame_focused_border_color) &&
+ !read_color(db, inst,
+ "border.color",
+ &theme->frame_focused_border_color))
+ theme->frame_focused_border_color = RrColorNew(inst, 0, 0, 0);
+ /* unfocused border color inherits from frame focused border color */
+ if (!read_color(db, inst,
+ "window.inactive.border.color",
+ &theme->frame_unfocused_border_color))
+ theme->frame_unfocused_border_color = RrColorNew(inst, 0, 0, 0);
+ /* menu border color inherits from frame focused border color */
+ if (!read_color(db, inst,
+ "menu.border.color",
+ &theme->menu_border_color))
+ 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 (!read_color(db, inst,
"window.active.client.color",
&theme->cb_focused_color))
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;
border.Width: 1
padding.width: 2
-border.color: #000000
+window.active.border.color: #000000
+window.inactive.border.color: #000000
+menu.border.color: #000000
menu.overlap: 0
window.frameColor: #eeeeee
window.*.client.color: #eeeeee