style "default" { xthickness = 1 ythickness = 1 # Style Properties GtkWidget::focus-line-width = 1 GtkMenuBar::window-dragging = 1 GtkToolbar::window-dragging = 1 GtkToolbar::internal-padding = 4 GtkToolButton::icon-spacing = 4 GtkWidget::tooltip-radius = 2 GtkWidget::tooltip-alpha = 235 GtkWidget::new-tooltip-style = 1 #for compatibility GtkSeparatorMenuItem::horizontal-padding = 3 GtkSeparatorMenuItem::wide-separators = 1 GtkSeparatorMenuItem::separator-height = 1 GtkButton::child-displacement-y = 0 GtkButton::default-border = { 0, 0, 0, 0 } GtkButton::default-outside_border = { 0, 0, 0, 0 } GtkEntry::state-hint = 1 GtkScrollbar::trough-border = 0 GtkRange::trough-border = 0 GtkRange::slider-width = 13 GtkRange::stepper-size = 0 GtkScrollbar::activate-slider = 1 GtkScrollbar::has-backward-stepper = 0 GtkScrollbar::has-forward-stepper = 0 GtkScrollbar::min-slider-length = 32 GtkScrolledWindow::scrollbar-spacing = 0 GtkScrolledWindow::scrollbars-within-bevel = 1 GtkScale::slider_length = 15 GtkScale::slider_width = 15 GtkScale::trough-side-details = 1 GtkProgressBar::min-horizontal-bar-height = 8 GtkProgressBar::min-vertical-bar-width = 8 GtkStatusbar::shadow_type = GTK_SHADOW_NONE GtkSpinButton::shadow_type = GTK_SHADOW_NONE GtkMenuBar::shadow-type = GTK_SHADOW_NONE GtkToolbar::shadow-type = GTK_SHADOW_NONE GtkMenuBar::internal-padding = 0 #( every window is misaligned for the sake of menus ): GtkMenu::horizontal-padding = 0 GtkMenu::vertical-padding = 0 GtkCheckButton::indicator_spacing = 3 GtkOptionMenu::indicator_spacing = { 8, 2, 0, 0 } GtkTreeView::row_ending_details = 0 GtkTreeView::expander-size = 11 GtkTreeView::vertical-separator = 4 GtkTreeView::horizontal-separator = 4 GtkTreeView::allow-rules = 1 GtkTreeView::odd_row_color = shade(0.98, @base_color) GtkExpander::expander-size = 11 GnomeHRef::link_color = @link_color GtkHTML::link-color = @link_color GtkIMHtmlr::hyperlink-color = @link_color GtkIMHtml::hyperlink-color = @link_color GtkWidget::link-color = @link_color GtkWidget::visited-link-color = @visited_link_color # Colors bg[NORMAL] = @bg_color bg[PRELIGHT] = mix(0.25, @selected_bg_color, @bg_color) bg[SELECTED] = @selected_bg_color bg[INSENSITIVE] = @insensitive_bg_color bg[ACTIVE] = @selected_bg_color fg[NORMAL] = @fg_color fg[PRELIGHT] = @fg_color fg[SELECTED] = @selected_fg_color fg[INSENSITIVE] = @insensitive_fg_color fg[ACTIVE] = @selected_fg_color text[NORMAL] = @text_color text[PRELIGHT] = @text_color text[SELECTED] = @selected_fg_color text[INSENSITIVE] = @insensitive_fg_color text[ACTIVE] = @selected_fg_color base[NORMAL] = @base_color base[PRELIGHT] = mix(0.25, @selected_bg_color, @base_color) base[SELECTED] = @selected_bg_color base[INSENSITIVE] = @bg_color base[ACTIVE] = @selected_bg_color # For succinctness, all reasonable pixmap options remain here engine "pixmap" { # Check Buttons image { function = CHECK recolorable = TRUE state = NORMAL shadow = OUT overlay_file = "assets/checkbox-unchecked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = PRELIGHT shadow = OUT overlay_file = "assets/checkbox-unchecked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = ACTIVE shadow = OUT overlay_file = "assets/checkbox-unchecked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = SELECTED shadow = OUT overlay_file = "assets/checkbox-unchecked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = INSENSITIVE shadow = OUT overlay_file = "assets/checkbox-unchecked-insensitive.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = NORMAL shadow = IN overlay_file = "assets/checkbox-checked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = PRELIGHT shadow = IN overlay_file = "assets/checkbox-checked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = ACTIVE shadow = IN overlay_file = "assets/checkbox-checked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = SELECTED shadow = IN overlay_file = "assets/checkbox-checked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = INSENSITIVE shadow = IN overlay_file = "assets/checkbox-checked-insensitive.png" overlay_stretch = FALSE } # Radio Buttons image { function = OPTION state = NORMAL shadow = OUT overlay_file = "assets/radio-unchecked.png" overlay_stretch = FALSE } image { function = OPTION state = PRELIGHT shadow = OUT overlay_file = "assets/radio-unchecked.png" overlay_stretch = FALSE } image { function = OPTION state = ACTIVE shadow = OUT overlay_file = "assets/radio-unchecked.png" overlay_stretch = FALSE } image { function = OPTION state = SELECTED shadow = OUT overlay_file = "assets/radio-unchecked.png" overlay_stretch = FALSE } image { function = OPTION state = INSENSITIVE shadow = OUT overlay_file = "assets/radio-unchecked-insensitive.png" overlay_stretch = FALSE } image { function = OPTION state = NORMAL shadow = IN overlay_file = "assets/radio-checked.png" overlay_stretch = FALSE } image { function = OPTION state = PRELIGHT shadow = IN overlay_file = "assets/radio-checked.png" overlay_stretch = FALSE } image { function = OPTION state = ACTIVE shadow = IN overlay_file = "assets/radio-checked.png" overlay_stretch = FALSE } image { function = OPTION state = SELECTED shadow = IN overlay_file = "assets/radio-checked.png" overlay_stretch = FALSE } image { function = OPTION state = INSENSITIVE shadow = IN overlay_file = "assets/radio-checked-insensitive.png" overlay_stretch = FALSE } # Arrows image { function = ARROW overlay_file = "assets/arrow-up.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = UP } image { function = ARROW state = PRELIGHT overlay_file = "assets/arrow-up-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = UP } image { function = ARROW state = ACTIVE overlay_file = "assets/arrow-up-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = UP } image { function = ARROW state = INSENSITIVE overlay_file = "assets/arrow-up-insens.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = UP } image { function = ARROW state = NORMAL overlay_file = "assets/arrow-down.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = DOWN } image { function = ARROW state = PRELIGHT overlay_file = "assets/arrow-down-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = DOWN } image { function = ARROW state = ACTIVE overlay_file = "assets/arrow-down-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = DOWN } image { function = ARROW state = INSENSITIVE overlay_file = "assets/arrow-down-insens.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = DOWN } image { function = ARROW overlay_file = "assets/arrow-left.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = LEFT } image { function = ARROW state= PRELIGHT overlay_file = "assets/arrow-left-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = LEFT } image { function = ARROW state = ACTIVE overlay_file = "assets/arrow-left-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = LEFT } image { function = ARROW state = INSENSITIVE overlay_file = "assets/arrow-left-insens.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = LEFT } image { function = ARROW overlay_file = "assets/arrow-right.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = RIGHT } image { function = ARROW state = PRELIGHT overlay_file = "assets/arrow-right-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = RIGHT } image { function = ARROW state = ACTIVE overlay_file = "assets/arrow-right-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = RIGHT } image { function = ARROW state = INSENSITIVE overlay_file = "assets/arrow-right-insens.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = RIGHT } # Option Menu Arrows image { function = TAB state = INSENSITIVE overlay_file = "assets/arrow-down-insens.png" overlay_stretch = FALSE } image { function = TAB state = NORMAL overlay_file = "assets/arrow-down.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE } image { function = TAB state = PRELIGHT overlay_file = "assets/arrow-down-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE } # Lines image { function = VLINE file = "assets/line-v.png" border = { 0, 0, 0, 0 } stretch = TRUE } image { function = HLINE file = "assets/line-h.png" border = { 0, 0, 0, 0 } stretch = TRUE } # Focuslines image { function = FOCUS file = "assets/focus-line.png" border = { 1, 1, 1, 1 } stretch = TRUE } # Handles image { function = HANDLE overlay_file = "assets/handle-h.png" overlay_stretch = FALSE orientation = HORIZONTAL } image { function = HANDLE overlay_file = "assets/handle-v.png" overlay_stretch = FALSE orientation = VERTICAL } # Expanders image { function = EXPANDER expander_style = COLLAPSED file = "assets/plus.png" } image { function = EXPANDER expander_style = EXPANDED file = "assets/minus.png" } image { function = EXPANDER expander_style = SEMI_EXPANDED file = "assets/minus.png" } image { function = EXPANDER expander_style = SEMI_COLLAPSED file = "assets/plus.png" } image { function = RESIZE_GRIP state = NORMAL detail = "statusbar" overlay_file = "assets/null.png" overlay_border = { 0,0,0,0 } overlay_stretch = FALSE } # Shadows ( this area needs help :P ) image { function = SHADOW_GAP file = "assets/null.png" border = { 4, 4, 4, 4 } stretch = TRUE } } } style "toplevel_hack" { engine "adwaita" { } } style "ooo_stepper_hack" { GtkScrollbar::stepper-size = 0 GtkScrollbar::has-backward-stepper = 0 GtkScrollbar::has-forward-stepper = 0 } style "scrollbar" { engine "pixmap" { image { function = BOX detail = "trough" file = "assets/trough-scrollbar-horiz.png" border = { 2, 2, 3, 3 } stretch = TRUE orientation = HORIZONTAL } image { function = BOX detail = "trough" file = "assets/trough-scrollbar-vert.png" border = { 3, 3, 2, 2 } stretch = TRUE orientation = VERTICAL } image { function = ARROW overlay_file = "assets/null.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = UP } image { function = ARROW overlay_file = "assets/null.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = DOWN } image { function = ARROW overlay_file = "assets/null.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = LEFT } image { function = ARROW overlay_file = "assets/null.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = RIGHT } # Sliders image { function = SLIDER state = NORMAL file = "assets/slider-horiz.png" border = { 5, 5, 3, 3 } stretch = TRUE orientation = HORIZONTAL } image { function = SLIDER state = ACTIVE file = "assets/slider-horiz-active.png" border = { 5, 5, 3, 3 } stretch = TRUE orientation = HORIZONTAL } image { function = SLIDER state = PRELIGHT file = "assets/slider-horiz-prelight.png" border = { 5, 5, 3, 3 } stretch = TRUE orientation = HORIZONTAL } image { function = SLIDER state = INSENSITIVE file = "assets/slider-horiz-insens.png" border = { 5, 5, 3, 3 } stretch = TRUE orientation = HORIZONTAL } # X Verticals image { function = SLIDER state = NORMAL file = "assets/slider-vert.png" border = { 3, 3, 5, 5 } stretch = TRUE orientation = VERTICAL } image { function = SLIDER state = ACTIVE file = "assets/slider-vert-active.png" border = { 3, 3, 5, 5 } stretch = TRUE orientation = VERTICAL } image { function = SLIDER state = PRELIGHT file = "assets/slider-vert-prelight.png" border = { 3, 3, 5, 5 } stretch = TRUE orientation = VERTICAL } image { function = SLIDER state = INSENSITIVE file = "assets/slider-vert-insens.png" border = { 3, 3, 5, 5 } stretch = TRUE orientation = VERTICAL } } } style "menu" { xthickness = 0 ythickness = 0 GtkMenuItem::arrow-scaling = 0.4 bg[NORMAL] = @menu_bg bg[INSENSITIVE] = @menu_bg bg[PRELIGHT] = @menu_bg engine "pixmap" { # For menus that use horizontal lines rather than gtkseparator image { function = HLINE file = "assets/null.png" border = { 0, 0, 0, 0 } stretch = TRUE } } } style "menu_framed_box" { engine "adwaita" { } } style "menu_item" { xthickness = 2 ythickness = 5 # HACK: Gtk doesn't actually read this value # while rendering the menu items, but Libreoffice # does; setting this value equal to the one in # fg[PRELIGHT] ensures a code path in the LO theming code # that falls back to a dark text color for menu item text # highlight. The price to pay is black text on menus as well, # but at least it's readable. # See https://bugs.freedesktop.org/show_bug.cgi?id=38038 bg[SELECTED] = @selected_fg_color fg[NORMAL] = @fg_color fg[SELECTED] = @selected_fg_color fg[PRELIGHT] = @selected_fg_color text[PRELIGHT] = @selected_fg_color engine "pixmap" { image { function = BOX state = PRELIGHT file = "assets/menuitem.png" border = { 1, 0, 1, 0 } stretch = TRUE } # Fix invisible scale trough on selected menuitems image { function = BOX detail = "trough-lower" file = "assets/trough-horizontal.png" border = { 8, 8, 0, 0 } stretch = TRUE orientation = HORIZONTAL } image { function = SLIDER state = PRELIGHT file = "assets/null.png" border = { 0, 0, 0, 0 } stretch = TRUE overlay_file = "assets/slider.png" overlay_stretch = FALSE orientation = HORIZONTAL } # Check Buttons image { function = CHECK recolorable = TRUE state = NORMAL shadow = OUT overlay_file = "assets/menu-checkbox-unchecked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = PRELIGHT shadow = OUT overlay_file = "assets/menu-checkbox-unchecked-selected.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = ACTIVE shadow = OUT overlay_file = "assets/menu-checkbox-unchecked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = INSENSITIVE shadow = OUT overlay_file = "assets/menu-checkbox-unchecked-insensitive.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = NORMAL shadow = IN overlay_file = "assets/menu-checkbox-checked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = PRELIGHT shadow = IN overlay_file = "assets/menu-checkbox-checked-selected.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = ACTIVE shadow = IN overlay_file = "assets/menu-checkbox-checked.png" overlay_stretch = FALSE } image { function = CHECK recolorable = TRUE state = INSENSITIVE shadow = IN overlay_file = "assets/menu-checkbox-checked-insensitive.png" overlay_stretch = FALSE } # Radio Buttons image { function = OPTION state = NORMAL shadow = OUT overlay_file = "assets/menu-radio-unchecked.png" overlay_stretch = FALSE } image { function = OPTION state = PRELIGHT shadow = OUT overlay_file = "assets/menu-radio-unchecked-selected.png" overlay_stretch = FALSE } image { function = OPTION state = ACTIVE shadow = OUT overlay_file = "assets/menu-radio-unchecked.png" overlay_stretch = FALSE } image { function = OPTION state = INSENSITIVE shadow = OUT overlay_file = "assets/menu-radio-unchecked-insensitive.png" overlay_stretch = FALSE } image { function = OPTION state = NORMAL shadow = IN overlay_file = "assets/menu-radio-checked.png" overlay_stretch = FALSE } image { function = OPTION state = PRELIGHT shadow = IN overlay_file = "assets/menu-radio-checked-selected.png" overlay_stretch = FALSE } image { function = OPTION state = ACTIVE shadow = IN overlay_file = "assets/menu-radio-checked.png" overlay_stretch = FALSE } image { function = OPTION state = INSENSITIVE shadow = IN overlay_file = "assets/menu-radio-checked-insensitive.png" overlay_stretch = FALSE } image { function = SHADOW # This fixes boxy Qt menu items file = "assets/null.png" border = { 4, 4, 4, 4 } stretch = TRUE } # Arrow Buttons image { function = ARROW state = NORMAL overlay_file = "assets/menu-arrow.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = RIGHT } image { function = ARROW state = PRELIGHT overlay_file = "assets/menu-arrow-prelight.png" overlay_border = { 0, 0, 0, 0 } overlay_stretch = FALSE arrow_direction = RIGHT } } } style "button" { xthickness = 4 ythickness = 4 engine "pixmap" { image { function = BOX state = NORMAL file = "assets/button.png" border = { 4, 4, 4, 4 } stretch = TRUE } image { function = BOX state = PRELIGHT file = "assets/button-hover.png" border = { 4, 4, 4, 4 } stretch = TRUE } image { function = BOX state = ACTIVE file = "assets/button-active.png" border = { 4, 4, 4, 4 } stretch = TRUE } image { function = BOX state = INSENSITIVE file = "assets/button-insensitive.png" border = { 4, 4, 4, 4 } stretch = TRUE } } } style "checkbutton" { fg[PRELIGHT] = @fg_color fg[ACTIVE] = @fg_color } style "entry" { xthickness = 6 ythickness = 4 engine "pixmap" { image { function = SHADOW state = NORMAL detail = "entry" file = "assets/entry-bg.png" border = {6, 6, 6, 6} stretch = TRUE } image { function = SHADOW state = ACTIVE detail = "entry" file = "assets/entry-active-bg.png" border = {6, 6, 6, 6} stretch = TRUE } image { function = SHADOW state = INSENSITIVE detail = "entry" file = "assets/entry-disabled-bg.png" border = {6, 6, 6, 6} stretch = TRUE } image { function = FLAT_BOX state = ACTIVE detail = "entry_bg" file = "assets/entry-background.png" } image { function = FLAT_BOX state = INSENSITIVE detail = "entry_bg" file = "assets/entry-background-disabled.png" } image { function = FLAT_BOX detail = "entry_bg" file = "assets/entry-background.png" } } } style "notebook_entry" { engine "pixmap" { image { function = SHADOW state = NORMAL detail = "entry" file = "assets/entry-notebook.png" border = {6, 6, 6, 6} stretch = TRUE } image { function = SHADOW state = ACTIVE detail = "entry" file = "assets/entry-active-notebook.png" border = {6, 6, 6, 6} stretch = TRUE } image { function = SHADOW state = INSENSITIVE detail = "entry" file = "assets/entry-disabled-notebook.png" border = {6, 6, 6, 6} stretch = TRUE } } } style "notebook_tab_label" = "text" { fg[ACTIVE] = @fg_color # We also need to avoid changing fg color for the inactive notebook tab labels } style "combobox_entry" { xthickness = 3 ythickness = 4 engine "pixmap" { # LTR version image { function = SHADOW detail = "entry" state = NORMAL shadow = IN file = "assets/combo-entry.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } image { function = SHADOW detail = "entry" state = INSENSITIVE shadow = IN file = "assets/combo-entry-insensitive.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } image { function = SHADOW detail = "entry" state = ACTIVE file = "assets/combo-entry-focus.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } # RTL version image { function = SHADOW detail = "entry" state = NORMAL shadow = IN file = "assets/combo-entry-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } image { function = SHADOW detail = "entry" state = INSENSITIVE shadow = IN file = "assets/combo-entry-insensitive-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } image { function = SHADOW detail = "entry" state = ACTIVE file = "assets/combo-entry-focus-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } } } style "notebook_combobox_entry" { engine "pixmap" { # LTR version image { function = SHADOW detail = "entry" state = NORMAL shadow = IN file = "assets/combo-entry-notebook.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } image { function = SHADOW detail = "entry" state = INSENSITIVE shadow = IN file = "assets/combo-entry-insensitive-notebook.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } image { function = SHADOW detail = "entry" state = ACTIVE file = "assets/combo-entry-focus-notebook.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } # RTL version image { function = SHADOW detail = "entry" state = NORMAL shadow = IN file = "assets/combo-entry-notebook-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } image { function = SHADOW detail = "entry" state = INSENSITIVE shadow = IN file = "assets/combo-entry-insensitive-notebook-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } image { function = SHADOW detail = "entry" state = ACTIVE file = "assets/combo-entry-focus-notebook-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } } } style "combobox_entry_button" { xthickness = 6 engine "pixmap" { # LTR version image { function = BOX state = NORMAL file = "assets/combo-entry-button.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } image { function = BOX state = PRELIGHT file = "assets/combo-entry-button.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } image { function = BOX state = INSENSITIVE file = "assets/combo-entry-button-insensitive.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } image { function = BOX state = ACTIVE file = "assets/combo-entry-button-active.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = LTR } # RTL version image { function = BOX state = NORMAL file = "assets/combo-entry-button-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } image { function = BOX state = PRELIGHT file = "assets/combo-entry-button-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } image { function = BOX state = INSENSITIVE file = "assets/combo-entry-button-insensitive-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } image { function = BOX state = ACTIVE file = "assets/combo-entry-button-active-rtl.png" border = { 4, 4, 5, 4 } stretch = TRUE direction = RTL } } } style "spinbutton" { bg[NORMAL] = @bg_color xthickness = 6 ythickness = 4 engine "pixmap" { image { function = ARROW } # Spin-Up LTR image { function = BOX state = NORMAL detail = "spinbutton_up" file = "assets/up-background.png" border = { 1, 4, 5, 0 } stretch = TRUE overlay_file = "assets/arrow-up-small.png" overlay_stretch = FALSE direction = LTR } image { function = BOX state = PRELIGHT detail = "spinbutton_up" file = "assets/up-background.png" border = { 1, 4, 5, 0 } stretch = TRUE overlay_file = "assets/arrow-up-small-prelight.png" overlay_stretch = FALSE direction = LTR } image { function = BOX state = INSENSITIVE detail = "spinbutton_up" file = "assets/up-background-disable.png" border = { 1, 4, 5, 0 } stretch = TRUE overlay_file = "assets/arrow-up-small-insens.png" overlay_stretch = FALSE direction = LTR } image { function = BOX state = ACTIVE detail = "spinbutton_up" file = "assets/up-background.png" border = { 1, 4, 5, 0 } stretch = TRUE overlay_file = "assets/arrow-up-small-prelight.png" overlay_stretch = FALSE direction = LTR } # Spin-Up RTL image { function = BOX state = NORMAL detail = "spinbutton_up" file = "assets/up-background-rtl.png" border = { 4, 1, 5, 0 } stretch = TRUE overlay_file = "assets/arrow-up-small.png" overlay_stretch = FALSE direction = RTL } image { function = BOX state = PRELIGHT detail = "spinbutton_up" file = "assets/up-background-rtl.png" border = { 4, 1, 5, 0 } stretch = TRUE overlay_file = "assets/arrow-up-small-prelight.png" overlay_stretch = FALSE direction = RTL } image { function = BOX state = INSENSITIVE detail = "spinbutton_up" file = "assets/up-background-disable-rtl.png" border = { 4, 1, 5, 0 } stretch = TRUE overlay_file = "assets/arrow-up-small-insens.png" overlay_stretch = FALSE direction = RTL } image { function = BOX state = ACTIVE detail = "spinbutton_up" file = "assets/up-background-rtl.png" border = { 4, 1, 5, 0 } stretch = TRUE overlay_file = "assets/arrow-up-small-prelight.png" overlay_stretch = FALSE direction = RTL } # Spin-Down LTR image { function = BOX state = NORMAL detail = "spinbutton_down" file = "assets/down-background.png" border = { 1, 4, 1, 4 } stretch = TRUE overlay_file = "assets/arrow-down-small.png" overlay_stretch = FALSE direction = LTR } image { function = BOX state = PRELIGHT detail = "spinbutton_down" file = "assets/down-background.png" border = { 1, 4, 1, 4 } stretch = TRUE overlay_file = "assets/arrow-down-small-prelight.png" overlay_stretch = FALSE direction = LTR } image { function = BOX state = INSENSITIVE detail = "spinbutton_down" file = "assets/down-background-disable.png" border = { 1, 4, 1, 4 } stretch = TRUE overlay_file = "assets/arrow-down-small-insens.png" overlay_stretch = FALSE direction = LTR } image { function = BOX state = ACTIVE detail = "spinbutton_down" file = "assets/down-background.png" border = { 1, 4, 1, 4 } stretch = TRUE overlay_file = "assets/arrow-down-small-prelight.png" overlay_stretch = FALSE direction = LTR } # Spin-Down RTL image { function = BOX state = NORMAL detail = "spinbutton_down" file = "assets/down-background-rtl.png" border = { 4, 1, 1, 4 } stretch = TRUE overlay_file = "assets/arrow-down-small.png" overlay_stretch = FALSE direction = RTL } image { function = BOX state = PRELIGHT detail = "spinbutton_down" file = "assets/down-background-rtl.png" border = { 4, 1, 1, 4 } stretch = TRUE overlay_file = "assets/arrow-down-small-prelight.png" overlay_stretch = FALSE direction = RTL } image { function = BOX state = INSENSITIVE detail = "spinbutton_down" file = "assets/down-background-disable-rtl.png" border = { 4, 1, 1, 4 } stretch = TRUE overlay_file = "assets/arrow-down-small-insens.png" overlay_stretch = FALSE direction = RTL } image { function = BOX state = ACTIVE detail = "spinbutton_down" file = "assets/down-background-rtl.png" border = { 4, 1, 1, 4 } stretch = TRUE overlay_file = "assets/arrow-down-small-prelight.png" overlay_stretch = FALSE direction = RTL } } } style "gimp_spin_scale" { bg[NORMAL] = @base_color engine "pixmap" { image { function = FLAT_BOX detail = "entry_bg" state = NORMAL } image { function = FLAT_BOX detail = "entry_bg" state = ACTIVE } image { function = BOX state = NORMAL detail = "spinbutton_up" overlay_file = "assets/arrow-up-small.png" overlay_stretch = FALSE } image { function = BOX state = PRELIGHT detail = "spinbutton_up" overlay_file = "assets/arrow-up-small-prelight.png" overlay_stretch = FALSE } image { function = BOX state = ACTIVE detail = "spinbutton_up" overlay_file = "assets/arrow-up-small-prelight.png" overlay_stretch = FALSE } image { function = BOX state = INSENSITIVE detail = "spinbutton_up" overlay_file = "assets/arrow-up-small-insens.png" overlay_stretch = FALSE } image { function = BOX state = NORMAL detail = "spinbutton_down" overlay_file = "assets/arrow-down-small.png" overlay_stretch = FALSE } image { function = BOX state = PRELIGHT detail = "spinbutton_down" overlay_file = "assets/arrow-down-small-prelight.png" overlay_stretch = FALSE } image { function = BOX state = ACTIVE detail = "spinbutton_down" overlay_file = "assets/arrow-down-small-prelight.png" overlay_stretch = FALSE } image { function = BOX state = INSENSITIVE detail = "spinbutton_down" overlay_file = "assets/arrow-down-small-insens.png" overlay_stretch = FALSE } } } style "notebook" { xthickness = 5 ythickness = 2 engine "pixmap" { image { function = EXTENSION state = ACTIVE file = "assets/null.png" border = { 0,0,0,0 } stretch = TRUE gap_side = TOP } image { function = EXTENSION state = ACTIVE file = "assets/null.png" border = { 0,0,0,0 } stretch = TRUE gap_side = BOTTOM } image { function = EXTENSION state = ACTIVE file = "assets/null.png" border = { 0,0,0,0 } stretch = TRUE gap_side = RIGHT } image { function = EXTENSION state = ACTIVE file = "assets/null.png" border = { 0,0,0,0 } stretch = TRUE gap_side = LEFT } image { function = EXTENSION file = "assets/tab-top-active.png" border = { 3,3,3,3 } stretch = TRUE gap_side = BOTTOM } image { function = EXTENSION file = "assets/tab-bottom-active.png" border = { 3,3,3,3 } stretch = TRUE gap_side = TOP } image { function = EXTENSION file = "assets/tab-left-active.png" border = { 3,3,3,3 } stretch = TRUE gap_side = RIGHT } image { function = EXTENSION file = "assets/tab-right-active.png" border = { 3,3,3,3 } stretch = TRUE gap_side = LEFT } # How to draw boxes with a gap on one side (ie the page of a notebook) image { function = BOX_GAP file = "assets/notebook.png" border = { 4, 4, 4, 4 } stretch = TRUE gap_file = "assets/notebook-gap-horiz.png" gap_border = { 1, 1, 0, 0 } gap_side = TOP } image { function = BOX_GAP file = "assets/notebook.png" border = { 4, 4, 4, 4 } stretch = TRUE gap_file = "assets/notebook-gap-horiz.png" gap_border = { 1, 1, 0, 0 } gap_side = BOTTOM } image { function = BOX_GAP file = "assets/notebook.png" border = { 4, 4, 4, 4 } stretch = TRUE gap_file = "assets/notebook-gap-vert.png" gap_border = { 0, 0, 1, 1 } gap_side = LEFT } image { function = BOX_GAP file = "assets/notebook.png" border = { 4, 4, 4, 4 } stretch = TRUE gap_file = "assets/notebook-gap-vert.png" gap_border = { 0, 0, 1, 1 } gap_side = RIGHT } # How to draw the box of a notebook when it isnt attached to a tab image { function = BOX file = "assets/notebook.png" border = { 4, 4, 4, 4 } stretch = TRUE } } } style "handlebox" { engine "pixmap" { image { function = BOX file = "assets/null.png" border = { 4, 4, 4, 4 } stretch = TRUE detail = "handlebox_bin" shadow = IN } image { function = BOX file = "assets/null.png" border = { 4, 4, 4, 4 } stretch = TRUE detail = "handlebox_bin" shadow = OUT } } } style "combobox_separator" { xthickness = 0 ythickness = 0 GtkWidget::wide-separators = 1 } style "combobox" { xthickness = 0 ythickness = 0 } style "combobox_button" { xthickness = 3 ythickness = 3 } style "range" { engine "pixmap" { image { function = BOX detail = "trough-upper" file = "assets/trough-horizontal.png" border = { 8, 8, 0, 0 } stretch = TRUE orientation = HORIZONTAL } image { function = BOX detail = "trough-lower" file = "assets/trough-horizontal-active.png" border = { 8, 8, 0, 0 } stretch = TRUE orientation = HORIZONTAL } image { function = BOX detail = "trough-upper" file = "assets/trough-vertical.png" border = { 0, 0, 8, 8 } stretch = TRUE orientation = VERTICAL } image { function = BOX detail = "trough-lower" file = "assets/trough-vertical-active.png" border = { 0, 0, 8, 8 } stretch = TRUE orientation = VERTICAL } # Horizontal image { function = SLIDER state = NORMAL file = "assets/null.png" border = { 0, 0, 0, 0 } stretch = TRUE overlay_file = "assets/slider.png" overlay_stretch = FALSE orientation = HORIZONTAL } image { function = SLIDER state = PRELIGHT file = "assets/null.png" border = { 0, 0, 0, 0 } stretch = TRUE overlay_file = "assets/slider-prelight.png" overlay_stretch = FALSE orientation = HORIZONTAL } image { function = SLIDER state = INSENSITIVE file = "assets/null.png" border = { 0, 0, 0, 0 } stretch = TRUE overlay_file = "assets/slider-insensitive.png" overlay_stretch = FALSE orientation = HORIZONTAL } # Vertical image { function = SLIDER state = NORMAL file = "assets/null.png" border = { 0, 0, 0, 0 } stretch = TRUE overlay_file = "assets/slider.png" overlay_stretch = FALSE orientation = VERTICAL } image { function = SLIDER state = PRELIGHT file = "assets/null.png" border = { 0, 0, 0, 0 } stretch = TRUE overlay_file = "assets/slider-prelight.png" overlay_stretch = FALSE orientation = VERTICAL } image { function = SLIDER state = INSENSITIVE file = "assets/null.png" border = { 0, 0, 0, 0 } stretch = TRUE overlay_file = "assets/slider-insensitive.png" overlay_stretch = FALSE orientation = VERTICAL } # Function below removes ugly boxes image { function = BOX file = "assets/null.png" border = { 3, 3, 3, 3 } stretch = TRUE } } } style "progressbar" { xthickness = 1 ythickness = 1 fg[NORMAL] = @fg_color fg[PRELIGHT] = @selected_fg_color engine "pixmap" { image { function = BOX detail = "trough" file = "assets/trough-progressbar.png" border = { 4, 4, 4, 4 } stretch = TRUE orientation = HORIZONTAL } image { function = BOX detail = "bar" file = "assets/progressbar.png" stretch = TRUE border = { 3, 3, 3, 3 } orientation = HORIZONTAL } image { function = BOX detail = "trough" file = "assets/trough-progressbar_v.png" border = { 4, 4, 4, 4 } stretch = TRUE orientation = VERTICAL } image { function = BOX detail = "bar" file = "assets/progressbar_v.png" stretch = TRUE border = { 3, 3, 3, 3 } orientation = VERTICAL } } } style "separator_menu_item" { engine "pixmap" { image { function = BOX file = "assets/null.png" border = { 0, 0, 1, 0 } stretch = TRUE } } } style "treeview_header" { ythickness = 1 fg[PRELIGHT] = mix(0.70, @text_color, @base_color) font_name = "Bold" engine "pixmap" { image { function = BOX file = "assets/tree_header.png" border = { 1, 1, 1, 1 } stretch = TRUE } } } # Treeview Rows style "treeview" { xthickness = 2 ythickness = 0 } style "scrolled_window" { xthickness = 1 ythickness = 1 engine "pixmap" { image { function = SHADOW file = "assets/frame.png" border = { 5, 5, 5, 5 } stretch = TRUE } } } style "frame" { xthickness = 1 ythickness = 1 engine "pixmap" { image { function = SHADOW file = "assets/frame.png" border = { 1, 1, 1, 1 } stretch = TRUE shadow = IN } image { function = SHADOW_GAP file = "assets/frame.png" border = { 1, 1, 1, 1 } stretch = TRUE gap_start_file = "assets/frame-gap-start.png" gap_start_border = { 1, 0, 0, 0 } gap_end_file = "assets/frame-gap-end.png" gap_end_border = { 0, 1, 0, 0 } shadow = IN } image { function = SHADOW file = "assets/frame.png" border = { 1, 1, 1, 1 } stretch = TRUE shadow = OUT } image { function = SHADOW_GAP file = "assets/frame.png" border = { 1, 1, 1, 1 } stretch = TRUE gap_start_file = "assets/frame-gap-start.png" gap_start_border = { 1, 0, 0, 0 } gap_end_file = "assets/frame-gap-end.png" gap_end_border = { 0, 1, 0, 0 } shadow = OUT } image { function = SHADOW file = "assets/frame.png" border = { 1, 1, 1, 1 } stretch = TRUE shadow = ETCHED_IN } image { function = SHADOW_GAP file = "assets/frame.png" border = { 1, 1, 1, 1 } stretch = TRUE gap_start_file = "assets/frame-gap-start.png" gap_start_border = { 1, 0, 0, 0 } gap_end_file = "assets/frame-gap-end.png" gap_end_border = { 0, 1, 0, 0 } shadow = ETCHED_IN } image { function = SHADOW file = "assets/frame.png" border = { 1, 1, 1, 1 } stretch = TRUE shadow = ETCHED_OUT } image { function = SHADOW_GAP file = "assets/frame.png" border = { 1, 1, 1, 1 } stretch = TRUE gap_start_file = "assets/frame-gap-start.png" gap_start_border = { 1, 0, 0, 0 } gap_end_file = "assets/frame-gap-end.png" gap_end_border = { 0, 1, 0, 0 } shadow = ETCHED_OUT } } } style "gimp_toolbox_frame" { engine "pixmap" { image { function = SHADOW } } } style "toolbar" { engine "pixmap" { image { function = BOX file = "assets/toolbar.png" stretch = TRUE border = { 1, 1, 1, 1 } } image { function = HANDLE overlay_file = "assets/handle-h.png" overlay_stretch = FALSE orientation = HORIZONTAL } image { function = HANDLE overlay_file = "assets/handle-v.png" overlay_stretch = FALSE orientation = VERTICAL } image { function = VLINE recolorable = TRUE file = "assets/null.png" } image { function = HLINE recolorable = TRUE file = "assets/null.png" } } } style "inline_toolbar" { GtkToolbar::button-relief = GTK_RELIEF_NORMAL engine "pixmap" { image { function = BOX file = "assets/inline-toolbar.png" stretch = TRUE border = { 1, 1, 1, 1 } } } } style "notebook_viewport" { bg[NORMAL] = @notebook_bg } style "notebook_eventbox" { bg[NORMAL] = @notebook_bg bg[ACTIVE] = @bg_color } style "tooltips" { xthickness = 8 ythickness = 4 bg[NORMAL] = @tooltip_bg_color fg[NORMAL] = @tooltip_fg_color bg[SELECTED] = @tooltip_bg_color } style "eclipse-tooltips" { xthickness = 8 ythickness = 4 bg[NORMAL] = shade(1.05, @bg_color) fg[NORMAL] = @text_color bg[SELECTED] = shade(1.05, @bg_color) } style "xfdesktop-icon-view" { XfdesktopIconView::label-alpha = 0 XfdesktopIconView::selected-label-alpha = 100 XfdesktopIconView::shadow-x-offset = 0 XfdesktopIconView::shadow-y-offset = 1 XfdesktopIconView::selected-shadow-x-offset = 0 XfdesktopIconView::selected-shadow-y-offset = 1 XfdesktopIconView::shadow-color = "#000000" XfdesktopIconView::selected-shadow-color = "#000000" XfdesktopIconView::shadow-blur-radius = 2 XfdesktopIconView::cell-spacing = 2 XfdesktopIconView::cell-padding = 6 XfdesktopIconView::cell-text-width-proportion = 1.9 fg[NORMAL] = @selected_fg_color fg[ACTIVE] = @selected_fg_color } style "xfwm-tabwin" { Xfwm4TabwinWidget::border-width = 1 Xfwm4TabwinWidget::border-alpha = 1.0 Xfwm4TabwinWidget::icon-size = 64 Xfwm4TabwinWidget::alpha = 1.0 Xfwm4TabwinWidget::border-radius = 2 bg[NORMAL] = @bg_color bg[SELECTED] = @bg_color fg[NORMAL] = @fg_color engine "murrine" { contrast = 0.7 glazestyle = 0 glowstyle = 0 highlight_shade = 1.0 gradient_shades = {1.0,1.0,1.0,1.0} border_shades = { 0.8, 0.8 } } } style "xfwm-tabwin-button" { font_name = "bold" bg[SELECTED] = @selected_bg_color } # Chromium style "chrome_menu_item" { bg[SELECTED] = @selected_bg_color } # Text Style style "text" = "default" { engine "murrine" { textstyle = 0 } } style "menu_text" = "menu_item" { engine "murrine" { textstyle = 0 } } style "checkbutton_text" = "checkbutton" { engine "murrine" { textstyle = 0 } } style "null" { engine "pixmap" { image { function = BOX file = "assets/null.png" stretch = TRUE } } } class "GtkWidget" style "default" class "GtkScrollbar" style "scrollbar" class "GtkButton" style "button" class "GtkEntry" style "entry" class "GtkOldEditable" style "entry" class "GtkSpinButton" style "spinbutton" class "GtkNotebook" style "notebook" class "GtkRange" style "range" class "GtkProgressBar" style "progressbar" class "GtkSeparatorMenuItem" style "separator_menu_item" class "GtkScrolledWindow" style "scrolled_window" class "GtkFrame" style "frame" class "GtkTreeView" style "treeview" class "GtkToolbar" style "toolbar" class "*HandleBox" style "toolbar" widget_class "**" style "menu" widget_class "**" style "menu_framed_box" widget_class "**" style "menu_item" widget_class "**" style "checkbutton" widget_class "*" style "combobox" widget_class "**" style "combobox_button" widget_class "**" style "combobox_separator" widget_class "***" style "treeview_header" widget_class "**" style "inline_toolbar" widget_class "**" style "combobox_entry" widget_class "**" style "combobox_entry_button" widget_class "***" style "notebook_viewport" widget_class "*HandleBox" style "toolbar" # Entries in notebooks draw with notebook's base color, but not if there's # something else in the middle that draws gray again widget_class "**" style "notebook_entry" widget_class "***" style "entry" widget_class "***" style "notebook_combobox_entry" widget_class "****" style "combobox_entry" # GTK tooltips widget "gtk-tooltip*" style "tooltips" #Fix GVim tabs widget_class "**" style "notebook_eventbox" # Xchat special cases widget "*xchat-inputbox" style "entry" # GIMP # Disable gradients completely for GimpSpinScale #class "GimpSpinScale" style "gimp_spin_scale" # Remove borders from "Wilbert frame" in Gimp widget_class "**" style "gimp_toolbox_frame" # Chrome/Chromium widget_class "*Chrom*Button*" style "button" widget_class "***" style "chrome_menu_item" # Eclipse/SWT widget "gtk-tooltips*" style "eclipse-tooltips" widget "*swt-toolbar-flat" style "null" # Openoffice, Libreoffice class "GtkWindow" style "toplevel_hack" widget "*openoffice-toplevel*" style "ooo_stepper_hack" # Xfce widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view" widget "xfwm4-tabwin*" style "xfwm-tabwin" widget "xfwm4-tabwin*GtkButton*" style "xfwm-tabwin-button" # Fixes ugly text shadows for insensitive text widget_class "*" style "text" widget_class "**" style "menu_text" widget_class "**" style "text" widget_class "*." style "notebook_tab_label" # NOTE: Styles aren't additive, so the last one for a given class match overrides all the others. Care must be taken to properly order these matches, and inherit or redefine the properties of the overriden styles to get the correct visuals. A couple wrong things with this: firstly, GTK is using fg[ACTIVE] for *inactive* tabs, so naturally it looks wrong (thanks, geniuses). Secondly, you can't match ".