##DO NOT DELETE THIS ||<>|| <> <> ##DO NOT DELETE THIS ##THIS IS YOUR CONCEPT NAME ||{{attachment:../ImpressionLogo.png}}|| ||[[../|Jaunty Incoming Page]]|| === Overview === The look of GTK+, as with all modern graphic tool kits, is defined by themes. Theming in GTK+ consist of three parts: Engines, Styles and Configuration. All in all it can be summarised as: “Themes provide styles, which can be configured and assigned to widgets”. GTK+ provides a set of drawing primitives: lines, boxes, arrows, and so on. Whenever a widget is drawn, these drawing primitives are used. The implementation provided by GTK+ is very basic and not very sophisticated, but it can be overridden. That is where the theming engines come into the picture. The theming engines provide their own implementation of those primitives. You can even add additional configuration parameters. These are called ‘Styles’. Say, you don’t just want a foreground and background colour for your widget. Say you want a gradient? Easy, just add a configuration parameter for that style and tell the engine where to use gradients. This happens in the ‘.gtkrc’ file where every widget is provided with a set of configuration parameters. But that only allows you to style the individual primitives. It is not possible to change the geometry of a widget. Say, for example, you want round edges for your buttons? Well, the only way to do that is to hardcode this into the theming engine; whenever a button is drawn, just handle this in a special case. Query the widget ancestry and draw your round-edged button whenever needed. Your theme will rest upon the building blocks of the theme engine and the Murrine theme engine offers a robust set of options (e.g. roundness = x). The "gtkrc" file provides instructions to the theme engine on how to render GTK widgets. ~-Source: [[http://federkiel.wordpress.com/2009/02/19/the-tanners-ugly-daughter-or-musings-about-a-modern-gtk-theming/|federkiel blog]] -~ === Hierarchy === Every widget is derived from `GtkWidget`. This means, changes applied to the properties of `GtkWidget` will affect all other widgets. In addition, some widgets have "parent widgets". As an example, the properties of the `GtkButton` widget will be applied to the `GtkCheckButton` widget unless explicitly stated otherwise. The following the the hierarchy of the Impression theme. <
> '''[[http://library.gnome.org/devel/gtk/unstable/GtkWidget.html|GtkWidget]]''' <
>  ''~-styled by `murrine-GtkWidget`-~'' * `GtkContainer` * `GtkBin` * `GtkWindow` * [[http://library.gnome.org/devel/gtk/stable/GtkFrame.html|GtkFrame]]<
>  ''~-styled by `murrine-GtkFrame`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkButton.html|GtkButton]]<
>  ''~-styled by `murrine-GtkButton`-~'' * `GtkToggleButton` * [[http://library.gnome.org/devel/gtk/unstable/GtkCheckButton.html|GtkCheckButton]]<
>  ''~-styled by `murrine-GtkCheckButton`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkRadioButton.html|GtkRadioButton]]<
>  ''~-styled by `murrine-GtkCheckButton`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkHandleBox.html|GtkHandleBox]]<
>  ''~-styled by `murrine-GtkHandleBox`-~'' * `GtkItem` * [[http://library.gnome.org/devel/gtk/unstable/GtkMenuItem.html|GtkMenuItem]]<
>  ''~-styled by `murrine-GtkMenuItem`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkSeparatorMenuItem.html|GtkSeparatorMenuItem]]<
>  ''~-styled by `murrine-GtkSeparatorMenuItem`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkComboBox.html|GtkComboBox]]<
>  ''~-styled by `murrine-GtkComboBoxEntry`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkComboBoxEntry.html|GtkComboBoxEntry]]<
>  ''~-styled by `murrine-GtkComboBoxEntry`-~'' * `GtkEventBox` * `GtkBox` * `GtkHBox` * [[http://library.gnome.org/devel/gtk/unstable/GtkCombo.html|GtkCombo]]<
>  ''~-styled by `murrine-GtkComboBoxEntry`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkStatusbar.html|GtkStatusbar]]<
>  ''~-styled by `murrine-GtkStatusbar`-~'' * `GtkVBox` * `GtkCList` * `GtkCTree` * `GtkList` * [[http://library.gnome.org/devel/gtk/unstable/GtkLayout.html|GtkLayout]]<
>  ''~-styled by `murrine-GtkNotebook`-~'' * [[http://library.gnome.org/devel/gtk/stable/GtkDrawingArea.html|GtkDrawingArea]]<
>  ''~-styled by `murrine-GtkNotebook`-~'' * `GtkMenuShell` * [[http://library.gnome.org/devel/gtk/unstable/GtkMenuBar.html|GtkMenuBar]]<
>  ''~-styled by `murrine-GtkMenubar`-~'' * [[http://library.gnome.org/devel/gtk/stable/GtkMenu.html|GtkMenu]]<
>  ''~-styled by `murrine-GtkMenu`-~'' * [[http://library.gnome.org/devel/gtk/stable/GtkNotebook.html|GtkNotebook]]<
>  ''~-styled by `murrine-GtkNotebook`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkToolbar.html|GtkToolbar]]<
>  ''~-styled by `murrine-GtkToolbar`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkTreeView.html|GtkTreeView]]<
>  ''~-styled by `murrine-GtkTreeView`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkEntry.html|GtkEntry]]<
>  ''~-styled by `murrine-wider`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkSpinButton.html|GtkSpinButton]]<
>  ''~-styled by `murrine-GtkSpinButton`-~'' * `GtkMisc` * `GtkLabel` * `GtkRange` * [[http://library.gnome.org/devel/gtk/unstable/GtkScale.html|GtkScale]]<
>  ''~-styled by `murrine-GtkScale`-~'' * `GtkHScale` * `GtkVScale` * [[http://library.gnome.org/devel/gtk/unstable/GtkScrollbar.html|GtkScrollbar]]<
>  ''~-styled by `murrine-GtkScrollbar`-~'' * `GtkHScrollbar` * `GtkVScrollbar` * `GtkProgress` * [[http://library.gnome.org/devel/gtk/unstable/GtkProgressBar.html|GtkProgressBar]]<
>  ''~-styled by `murrine-GtkProgressBar`-~'' * `GtkSeparator` * [[http://library.gnome.org/devel/gtk/unstable/GtkHSeparator.html|GtkHSeparator]]<
>  ''~-styled by `murrine-GtkHSeparator`-~'' * [[http://library.gnome.org/devel/gtk/unstable/GtkVSeparator.html|GtkVSeparator]]<
>  ''~-styled by `murrine-GtkVSeparator`-~'' === Source === {{{ #!python # Human Impression # # Author: John Baer # version: 9.04 # # Feel free to modify and share! # Licensed under Creative Commons 3.0 # # T H E M E N O T E S ############################################## # ###################################################################### # # Theme Engines # # - murrine svn090 # # http://live.gnome.org/GnomeArt/Tutorials/GtkThemes/SymbolicColors # # Color Properties -------------------------------------------------- # # fg Foreground color. Used for text on buttons. Also used for the # button borders in some engines. # # bg Background color. This is the background color of windows and # buttons. # # text Text color for text input widgets and lists (/GtkTreeView). # # base Background color of text widgets and lists. # # Color States -------------------------------------------------- # # NORMAL - Color for widget @ default # # ACTIVE - Color for active widget # # PRELIGHT - Color for button/menu item when mouse hovers above # # INSENSITIVE - Color for disabled widget # # G N O M E T H E M E ############################################## # ###################################################################### # Attribute HEX COMMENT # ----------------- ------- -------------------------------------- # bg_color #cdc7be Theme base color # fg_color #1f1816 Theme black # base_color #ffffff White # text_color #1f1816 Theme black # selected_bg_color #e38544 Orange # selected_fg_color #ffffff White # tooltip_bg_color #fffea7 Light yellow # tooltip_fg_color #1f1816 Theme black # # G N O M E T H E M E ############################################## # ###################################################################### gtk_color_scheme = "fg_color:#1f1816\nbg_color:#cdc7be\nbase_color:#ffffff\ntext_color:#1f1816\nselected_bg_color:#e38544\nselected_fg_color:#ffffff\ntooltip_bg_color:#fffea7\ntooltip_fg_color:#1f1816\nerror:#00ffff\ndebug:#ff00ff" # menu delay gtk-menu-popup-delay = 1 # supporting rc's ############################################## # ###################################################################### include "scrollbars/scrollbar.rc" include "scale/scale.rc" style "murrine-GtkWidget" { # WIDGET DEFAULTS ############################################ # #################################################################### GtkScrolledWindow ::scrollbar-spacing = 3 GtkScrolledWindow ::scrollbar-within-bevel = 1 GtkButton ::child-displacement-x = 1 GtkButton ::child-displacement-y = 1 GtkButton ::default-border = { 0, 0, 0, 0 } GtkButton ::focus-padding = 0 GtkCheckButton ::indicator-size = 14 GtkPaned ::handle-size = 6 GtkRange ::trough-border = 2 GtkRange ::slider-width = 13 GtkRange ::stepper-size = 13 GtkRange ::trough-under-steppers= 1 GtkScale ::slider-length = 20 GtkScale ::trough-side-details = 0 # 0 = thin slider, >0 = thick slider GtkMenuBar ::internal-padding = 0 GtkMenuBar ::shadow-type = GTK_SHADOW_NONE GtkStatusbar ::shadow-type = GTK_SHADOW_NONE # the resize-grip is not consistantly displayed, disable GtkStatusbar ::has-resize-grip = FALSE GtkExpander ::expander-size = 16 GtkToolbar ::internal-padding = 1 GtkTreeView ::expander-size = 14 GtkTreeView ::vertical-separator = 0 GtkMenu ::horizontal-padding = 0 # extra space left & right GtkMenu ::vertical-padding = 0 # extra space @ top & bottom of menu GtkMenu ::horizontal-offset = 0 # offset of submenu WnckTasklist ::fade-overlay-rect = 0 xthickness = 1 # left & right ythickness = 1 # top & bottom # GTKWIDGET COLOR PALLET ############################################ # #################################################################### fg[NORMAL] = @fg_color fg[PRELIGHT] = @fg_color fg[SELECTED] = @selected_fg_color fg[ACTIVE] = mix(1.29, @selected_bg_color, @selected_fg_color) fg[INSENSITIVE] = mix(0.70, @fg_color, @selected_fg_color) bg[NORMAL] = @bg_color bg[PRELIGHT] = shade(1.10, @bg_color) bg[SELECTED] = @selected_bg_color bg[INSENSITIVE] = shade(0.80, @bg_color) bg[ACTIVE] = shade (0.9, @bg_color) base[NORMAL] = @base_color base[PRELIGHT] = shade(1.30, @base_color) base[ACTIVE] = @selected_bg_color base[SELECTED] = @selected_bg_color base[INSENSITIVE] = shade(1.20, @base_color) text[NORMAL] = @text_color text[PRELIGHT] = @text_color text[ACTIVE] = @text_color #@selected_fg_color text[SELECTED] = @selected_fg_color text[INSENSITIVE] = mix(0.70, @fg_color, @selected_fg_color) # M U R R I N E O P T I O N S #################################### # #################################################################### engine "murrine" { animation = TRUE # Enable animations on progressbars, radio and checkbuttons # Data type: Boolean; default = TRUE (enabled) colorize_scrollbar = TRUE # Use colorized scrollbars with scrolls and lists # Data type: Boolean; default = TRUE (enabled) contrast = 1.0 # Use carefully # Data type: Real; default = 1.0, Range 0-2, precision 0.1 glazestyle = 0 # Data type: Enumeration; default = 0, Range 0-4 # 0 = flat highlight, 1 = curved highlight, 2 = concave style, 3 = top curved highlight, 4 = beryl highlight glow_shade = 1.2 # Enable and set the Glow Shade # Data type: Real; default = 1.0, Range 0-2, precision 0.1 glowstyle = 4 # How to apply glow shade # Data type: Enumeration; default = 0, Range 0-4 # 0 = Top glow, 1 = Bottom glow, 2 = Top and Bottom glow, 3 = Horizontal glow, 4 = Centered glow gradients = TRUE # Enable/Disable gradients # Data type: Boolean; default = TRUE (enabled) gradient_shades = {1.1,1.0,1.0,0.87} # Gradient stops # (4 stops) Data type: Real; Range 0-2, precision 0.2, default 1.0 # Uses the current bg[COLOR] highlight_shade = 1.0 # Prelight ratio (includes panels) # Data type: Real; default = 1.1, Range 0-2, precision 0.01 lightborder_shade = 1.0 # Prelight border ratio # Data type: Real; default = 1.1, Range 0-2, precision 0.01 lightborderstyle = 1 # Prelight border style # Data type: Enumeration; default = 0, Range 0-1 # 0 = lightborder on top side, 1 = lightborder on all sides listviewheaderstyle = 1 # Listview header style # Data type: Enumeration; default = 0, Range 0-2 # 0 = flat, 1 = glassy, 2 = raised listviewstyle = 0 # Listview separator style # Data type: Enumeration; default = 0, Range 0-1 # 0 = nothing, 1 = dotted menubarstyle = 2 # Menubar style # Data type: Enumeration; default = 0, Range 0-3 # 0 = flat, 1 = glassy, 2 = gradient, 3 = striped menubaritemstyle = 0 # Menubar item style # Data type: Enumeration; default = 0, Range 0-1 # 0 = menuitem look, 1 = button look menustyle = 0 # Vertical bars in menus # Data type: Enumeration; default = 1, Range 0-1 # 0 = no vertical menu stripe, 1 = display vertical menu stripe menuitemstyle = 1 # Menu item style # Data type: Enumeration; default = 0, Range 0-2 # 0 = flat, 1 = glass, 2 = striped profile = MURRINE # Data type: Enumeration; default = MURRINE # engine style options: CANDIDO, CLEARLOOKS, MIST, MURRINE, NODOKA progressbarstyle = 1 # Progressbar style # Data type: Enumeration; default = 0, Range 0-2 # 0 = Don't draw any special effect, 1 = Draw stripes, 2 = Draw cells reliefstyle = 2 # Relief style of widget # Data type: Enumeration; default = 1, Range 0-2 # 0 = flat, 1 = inset, 2 = shadow rgba = TRUE # Enable/Disable RGBA support # Data type: Boolean; default = FALSE (disabled) roundness = 2 # Roundness of widget (typically button) # Data type: Real; default = 1, Range 0-8 # 0 = square, > 0 = round # scrollbar_color = "#a8a197" # Override the color of scrollbars # Data type: Gtk Color; default = "#999999" scrollbarstyle = 3 # Additional scrollbar features # Data type: Enumeration; default = 0, Range 0-6 # 0 = nothing, 1 = circles, 2 = handles, 3 = diagonal stripes, 4 = diagonal stripes and handles, 5 = horizontal stripes, 6 = horizontal stripes and handles sliderstyle = 0 # Slider style # Data type: Enumeration; default = 0, Range 0-1 # 0 = nothing added, 1 = handles stepperstyle = 0 # Stepper style # Data type: Enumeration; default = 0, Range 0-1 # 0 = standard, 1 = integrated stepper handles toolbarstyle = 1 # Toolbar Style # Data type: Enumeration; default = 0, Range 0-1 # 0 = flat, 1 = glassy, 2 = gradient } } # G T K T E S T ############################################## # ###################################################################### # Style used during development & testing # # @error displays bright blue and indicates an attribute which should # be fixed. # # @debug displays bright magenta and is used in the debugging process. # style "murrine-GtkTest" { bg[NORMAL] = @error bg[PRELIGHT] = @error bg[ACTIVE] = @error bg[SELECTED] = @error bg[INSENSITIVE] = @error # -------------------------------------------------------------------- fg[NORMAL] = @error fg[PRELIGHT] = @error fg[ACTIVE] = @error fg[SELECTED] = @error fg[INSENSITIVE] = @error # -------------------------------------------------------------------- base[NORMAL] = @error base[PRELIGHT] = @error base[ACTIVE] = @error base[SELECTED] = @error base[INSENSITIVE] = @error # -------------------------------------------------------------------- text[NORMAL] = @error text[PRELIGHT] = @error text[ACTIVE] = @error text[SELECTED] = @error text[INSENSITIVE] = @error } # # G T K T E S T ############################################## # ###################################################################### # Size Styles ############################################## # ###################################################################### # style "murrine-wide" { xthickness = 2 ythickness = 2 } style "murrine-wider" { xthickness = 3 ythickness = 3 } # # Size Styles ############################################## # ###################################################################### # Button Styles ############################################## # ###################################################################### # style "murrine-GtkButton" { bg[NORMAL] = shade (1.2, @bg_color) # Default bg[PRELIGHT] = shade (1.1, @bg_color) # Prelight bg[ACTIVE] = shade (1.0, @bg_color) # Active bg[INSENSITIVE] = shade (1.1, @bg_color) # Dimmed xthickness = 3 ythickness = 3 engine "murrine"{ roundness = 2 gradient_shades = {1.1, 1.0, 1.0, 0.88} profile = MURRINE } } style "mozilla-GtkButton" = "murrine-GtkButton" { fg[NORMAL] = @fg_color # Combobox [v] } # # Button Styles ############################################## # ###################################################################### # Toolbar Styles ############################################## # ###################################################################### # style "murrine-GtkToolbar" = "murrine-GtkWidget" { bg[NORMAL] = @bg_color # xthickness = 5 # ythickness = 3 engine "murrine"{ glow_shade = 1.0 glazestyle = 3 # gradient_shades = {1.15,1.07,1.0605,0.91} gradient_shades = {1.12,1.07,1.0605,0.93} contrast = 1.0 profile = MURRINE } } style "murrine-GtkToolbarButton" = "murrine-GtkButton" { bg[PRELIGHT] = shade(0.9, @bg_color) # Prelight bg[ACTIVE] = shade(1.0, @bg_color) # xthickness = 6 ythickness = 6 engine "murrine"{ roundness = 3 gradient_shades = {0.96, 0.99, 0.99, 1.2} contrast = 1.5 profile = MURRINE } } style "murrine-GtkToolbar-sep" = "murrine-GtkToolbar" { xthickness = 2 } style "murrine-GtkHandleBox" = "murrine-GtkToolbar" { bg[NORMAL] = shade (1.12, @bg_color) engine "murrine"{ glow_shade = 1.0 glazestyle = 3 contrast = 1.25 profile = MURRINE } } # # Toolbar Styles ############################################## # ###################################################################### # Notebook Styles ############################################## # ###################################################################### # style "murrine-GtkNotebook" { bg[NORMAL] = shade(1.09, @bg_color) # Selected tab body bg[PRELIGHT] = @text_color # <> CList bg[ACTIVE] = shade(0.88, @bg_color) # Active / unselected tabs fg[NORMAL] = shade(.45, @selected_bg_color) # <> CList {blue} text[NORMAL] = @fg_color # Nautilus folders xthickness = 4 engine "murrine"{ roundness = 2 gradient_shades = {1.8, 1.7, 1.6, 0.8} contrast = 1.0 profile = MURRINE } } # # Notebook Styles ############################################## # ###################################################################### # Dialog Style ############################################## # ###################################################################### # style "murrine-GtkDialog" = "murrine-GtkWidget" { bg[PRELIGHT] = shade (1.15, @bg_color) # Prelight bg[ACTIVE] = shade (1.05, @bg_color) # Active bg[INSENSITIVE] = shade (1.00, @bg_color) # Dimmed fg[PRELIGHT] = shade(.45, @selected_bg_color) # text prelight } # # Dialog Style ############################################## # ###################################################################### # PanelWidget (desktop) ############################################## # ###################################################################### # style "murrine-PanelWidget" { bg[NORMAL] = shade(0.80, @bg_color) # Default panel background (Matches metacity) bg[PRELIGHT] = shade(0.70, @bg_color) # panel prelight bg[ACTIVE] = shade(1.10, @bg_color) # bottom panel active background bg[SELECTED] = shade(0.70, @selected_bg_color) # Active window desktop lower panel background [ ] [ ] fg[NORMAL] = @fg_color # Default text fg[PRELIGHT] = @selected_fg_color # Prelight fg[ACTIVE] = mix(1.29, @selected_bg_color, @selected_fg_color) # Bottom panel active text fg[SELECTED] = @fg_color # Bottom panel selected window } # # PanelWidget (desktop) ############################################## # ###################################################################### # Menu Styles ############################################## # ###################################################################### # style "murrine-GtkMenu" = "murrine-GtkWidget" { bg[NORMAL] = shade(1.05, @bg_color) # drop down menu backbround xthickness = 0 # pads left/right menu drop down ythickness = 0 # pads top/bottom menu drop down engine "murrine" { contrast = 1.0 style = MURRINE } } style "murrine-GtkMenuItem" = "murrine-GtkWidget" { bg[NORMAL] = shade(0.8, @bg_color) # menu separators in gFTP/Bluefish bg[SELECTED] = shade(0.5, @bg_color) # selected item background fg[NORMAL] = @fg_color # menu text! fg[PRELIGHT] = @selected_fg_color # menu text prelight! GtkMenuItem::toggle-spacing=10 # space between icon & text GtkMenuItem::horizontal-padding=6 # space between left border & icon GtkMenuItem::arrow-scaling=.5 # size of submenu arrow xthickness = 0 ythickness = 5 engine "murrine"{ roundness = 0 gradient_shades = {1.2,1.0,1.0,0.95} style = MURRINE } } style "murrine-GtkMenubar" { bg[NORMAL] = @bg_color # panel background fg[NORMAL] = @text_color # default panel text ! fg[PRELIGHT] = @selected_fg_color # text after dropdown menu engine "murrine"{ gradient_shades = {2.0,1.0,1.0,0.97} contrast = 2.0 } } style "murrine-GtkSeparatorMenuItem" { bg[NORMAL] = shade(1.1, @bg_color) # line color GtkSeparatorMenuItem::horizontal-padding = 3 GtkWidget::wide-separators = 1 GtkWidget::separator-width = 1 GtkWidget::separator-height = 1 xthickness = 1 ythickness = 0 } style "murrine-PanelGtkMenubar" { bg[NORMAL] = shade(0.80, @bg_color) # panel background color (matches metacity) bg[SELECTED] = shade(0.90, @bg_color) # selected panel menu item background color fg[NORMAL] = @text_color # default panel text ! fg[PRELIGHT] = shade(0.55, mix(0.70, @fg_color, @selected_fg_color)) # text after dropdown menu engine "murrine"{ gradient_shades = {1.0,1.0,1.0,0.97} roundness = 0 contrast = 0.0 } } # # Menu Styles ############################################## # ###################################################################### # TreeView Styles ############################################## # ###################################################################### # style "murrine-GtkTreeView" { GtkTreeView ::odd_row_color = shade(1.2,@bg_color) GtkTreeView ::even_row_color = @selected_fg_color } style "murrine-GtkTreeView-header" = "murrine-GtkWidget" { bg[NORMAL] = shade(0.9, @bg_color) bg[PRELIGHT] = shade(1.0, @bg_color) bg[ACTIVE] = shade(0.8, @bg_color) GtkWidget::focus-line-width = 0 xthickness = 2 ythickness = 1 engine "murrine" { gradient_shades = {1.25,1.1,1.1,1.2} style = MURRINE contrast = 0.5 glazestyle = 1 listviewheaderstyle = 1 } } # # TreeView Styles ############################################## # ###################################################################### # Check/Radio Styles ############################################## # ###################################################################### # style "murrine-GtkCheckButton" = "murrine-GtkWidget" { bg[PRELIGHT] = shade (1.1, @bg_color) # prelight background bg[ACTIVE] = shade (1.2, @bg_color) # used by inkscape bg[SELECTED] = @selected_fg_color # [ ] selected background bg[INSENSITIVE] = shade (1.4, @bg_color) # used by inkscape fg[NORMAL] = mix(0.70, @fg_color, @selected_fg_color) # dotted outline fg[PRELIGHT] = mix(0.70, @fg_color, @selected_fg_color) # dotted outline fg[ACTIVE] = mix(0.70, @fg_color, @selected_fg_color) # dotted outline base[NORMAL] = @selected_fg_color # [ ] of unselected widget text[NORMAL] = @fg_color # Default check/radio symbol text[PRELIGHT] = shade (0.9, @selected_bg_color) # Prelight check/radio symbol text[ACTIVE] = @selected_bg_color # Active check/radio symbol } style "murrine-GtkRadioButtonLabel" { fg[NORMAL] = shade(3.0, @text_color) # unchecked fg[ACTIVE] = @text_color # checked fg[PRELIGHT] = @text_color # text } style "murrine-GtkCheckMenuItem" = "murrine-GtkWidget" { bg[NORMAL] = @selected_fg_color # default [ ] bg[SELECTED] = shade(0.4, @bg_color) # selected [ ] fg[NORMAL] = @text_color # Default text fg[PRELIGHT] = @selected_fg_color # Prelight text base[NORMAL] = @base_color # symbol text[NORMAL] = @base_color # Default check/radio symbol text[PRELIGHT] = @base_color # Prelight check/radio symbol ythickness = 6 engine "murrine"{ gradient_shades = {1.3,1.0,1.0,1.1} contrast = 1.5 style = MURRINE } } # # Check/Radio Styles ############################################## # ###################################################################### style "murrine-GtkTooltips" { bg[NORMAL] = @tooltip_bg_color fg[NORMAL] = @tooltip_fg_color xthickness = 4 ythickness = 4 engine "murrine" { contrast = .8 profile = MURRINE } } # GtkProgressBar ############################################## # ###################################################################### # The svn132 version of murrine does not theme progressbar trough. # style "murrine-GtkProgressBar" { bg[SELECTED] = @selected_bg_color # Bar fg[NORMAL] = @fg_color # Text on trough fg[PRELIGHT] = @selected_fg_color # Text on bar xthickness = 0 ythickness = 0 engine "murrine" { # contrast determines how much of the candy bar is visible contrast = 1.0 profile = MURRINE } } # rhythmbox-GtkProgressBar style # ###################################################################### style "rhythmbox-GtkProgressBar" { bg[SELECTED] = @selected_bg_color # Bar fg[NORMAL] = @fg_color # Text on trough fg[PRELIGHT] = @selected_fg_color # Text on bar xthickness = 0 ythickness = 6 engine "murrine" { animation = FALSE progressbarstyle = 0 } } # mozilla-GtkProgressBar style # ###################################################################### style "mozilla-GtkProgressBar" { bg[SELECTED] = @selected_bg_color # Bar fg[NORMAL] = @fg_color # Text on trough fg[PRELIGHT] = @selected_fg_color # Text on bar xthickness = 0 ythickness = 0 engine "murrine" { animation = FALSE progressbarstyle = 0 } } # # GtkProgressBar ############################################## # ###################################################################### # GtkStatusbar ############################################## # ###################################################################### # style "murrine-GtkStatusbar" { bg[NORMAL] = @bg_color # background fg[NORMAL] = @text_color # text ythickness = 6 xthickness = 4 engine "murrine"{ #glow_shade = 1.0 #glazestyle = 3 #gradient_shades = {1.15,1.07,1.0605,0.91} contrast = 0.80 profile = MURRINE } } # # GtkStatusbar (desktop) ############################################## # ###################################################################### style "murrine-GtkComboBoxEntry" { } style "murrine-GtkSpinButton" { bg[NORMAL] = shade (1.1, @bg_color) bg[INSENSITIVE] = shade (1.0, @bg_color) fg[NORMAL] = @fg_color # [^/v] controls fg[PRELIGHT] = @selected_bg_color # [^/v] controls fg[ACTIVE] = @selected_bg_color # [^/v] controls fg[INSENSITIVE] = mix(0.70, @fg_color, @selected_fg_color) # [^/v] controls base[NORMAL] = @selected_fg_color # default combobox input base[ACTIVE] = @selected_bg_color # active input base[SELECTED] = @selected_bg_color # background selected text[NORMAL] = @text_color # default input text text[ACTIVE] = @selected_fg_color # active text text[SELECTED] = @text_color # selected input text text[INSENSITIVE] = mix(0.70, @fg_color, @selected_fg_color) # dimmed input text } # GtkScale ############################################## # ###################################################################### # style "murrine-GtkScale" { bg[NORMAL] = shade (1.00, @bg_color) bg[PRELIGHT] = shade (1.20, @bg_color) fg[NORMAL] = shade (0.80, @bg_color) GtkScale::slider-length = 9 GtkScale::slider-width = 15 # required for svn136 GtkScale::trough-side-details = 1 engine "murrine"{ roundness = 2 contrast = 1.0 gradient_shades = {0.90, 1.06, 1.01, 0.88} profile = MURRINE } } style "murrine-GtkHScale" = "murrine-GtkScale" { } style "murrine-GtkVScale" = "murrine-GtkScale" { } # # GtkScale ############################################## # ###################################################################### # GtkScrollbar ############################################## # ###################################################################### # style "murrine-GtkScrollbar" { bg[NORMAL] = shade (1.15, @bg_color) # normal stepper bg[PRELIGHT] = shade (1.35, @bg_color) # prelight stepper bg[ACTIVE] = shade (1.20, @bg_color) # active stepper bg[SELECTED] = shade (0.75, @bg_color) # selected stepper bg[INSENSITIVE] = shade (0.98, @bg_color) # dimmed stepper #GtkScrollbar::fixed-slider-length = 1 GtkScrollbar::has-backward-stepper = 0 #GtkScrollbar::has-forward-stepper = 1 GtkScrollbar::has-secondary-backward-stepper = 1 #GtkScrollbar::has-secondary-forward-stepper = 1 GtkScrollbar::min-slider-length = 30 GtkScrollbar::trough-under-steppers = 1 engine "murrine"{ roundness = 2 contrast = 1.20 gradient_shades = {1.0, 1.05, 1.0, 0.88} profile = MURRINE } } style "murrine-GtkHScrollbar" = "murrine-GtkScrollbar" { } style "murrine-GtkVScrollbar" = "murrine-GtkScrollbar" { } # # GtkScrollbar ############################################## # ###################################################################### style "murrine-GtkFrame" { } style "murrine-GtkFrameTitle" = "murrine-GtkFrame" { fg[NORMAL] = @text_color # Frame text } style "murrine-nautilus-location" { bg[NORMAL] = mix(0.60, shade (1.05, @bg_color), @selected_bg_color) } style "murrine-GtkHSeparator" { bg[NORMAL] = shade(1.1, @bg_color) # line color xthickness = 1 ythickness = 0 } style "murrine-GtkVSeparator" { bg[NORMAL] = shade(1.1, @bg_color) # line color xthickness = 0 ythickness = 1 } # nautilus-GtkWidget # ###################################################################### style "nautilus-GtkWidget" { fg[NORMAL] = @text_color # Default } # GtkEvolution style # ###################################################################### style "evolution-GtkETree" { bg[ACTIVE] = mix(0.40, @selected_bg_color, @bg_color) # active list item bg[SELECTED] = @selected_bg_color # selected list item fg[NORMAL] = @selected_fg_color # Default text fg[ACTIVE] = @text_color # Active text fg[SELECTED] = @selected_fg_color fg[INSENSITIVE] = mix(0.70, @fg_color, @selected_fg_color) # Insensitive text } style "evolution-GtkECalendar" { bg[NORMAL] = mix(0.25, @selected_bg_color, @bg_color) # calendar title & frame bg[SELECTED] = shade(1.14, @bg_color) # border of today fg[NORMAL] = @text_color # days of week & month base[NORMAL] = @selected_fg_color # background base[ACTIVE] = shade(1.18, @bg_color) # background of today base[SELECTED] = @base_color # days of week title text[ACTIVE] = shade(0.50, @selected_bg_color) # days of week title } # Widget Hierarchy ############################################## # ###################################################################### # # Some knowledge of GTK hierarchy is helpful ;) # # http://library.gnome.org/devel/gtk/unstable/ch01.html # # Widget Style # ----------------------------------- ------------------------------ # GtkWidget murrine-GtkWidget # +--GtkContainer # +--GtkBin # +--GtkWindow # +--GtkFrame murrine-GtkFrame # +--GtkButton murrine-GtkButton # +--GtkToggleButton # +--GtkCheckButton murrine-GtkCheckButton # +--GtkRadioButton murrine-GtkCheckButton # +--GtkHandleBox murrine-GtkHandleBox # +--GtkItem # +--GtkMenuItem murrine-GtkMenuItem # +--GtkSeparatorMenuItem murrine-GtkSeparatorMenuItem # +--GtkComboBox murrine-GtkComboBoxEntry # +--GtkComboBoxEntry murrine-GtkComboBoxEntry # +--GtkEventBox # # +--GtkBox # +--GtkHBox # +--GtkCombo murrine-GtkComboBoxEntry # +--GtkStatusbar murrine-GtkStatusbar # +--GtkVBox # # +--GtkCList # +--GtkCTree # # +--GtkList # # +--GtkLayout murrine-GtkNotebook # # +--GtkDrawingArea murrine-GtkNotebook # # +--GtkMenuShell # +--GtkMenuBar murrine-GtkMenubar # +--GtkMenu murrine-GtkMenu # # +--GtkNotebook murrine-GtkNotebook # # +--GtkToolbar murrine-GtkToolbar # # +--GtkTreeView murrine-GtkTreeView # # +--GtkEntry murrine-wider # +--GtkSpinButton murrine-GtkSpinButton # # +--GtkMisc # +--GtkLabel # # +--GtkRange # +--GtkScale murrine-GtkScale # +--GtkHScale # +--GtkVScale # +--GtkScrollbar murrine-GtkScrollbar # +--GtkHScrollbar # +--GtkVScrollbar # # +--GtkProgress # +--GtkProgressBar murrine-GtkProgressBar # # +--GtkSeparator # +--GtkHSeparator murrine-GtkHSeparator # +--GtkVSeparator murrine-GtkVSeparator # # Widget Hierarchy ############################################## # ###################################################################### # W A R N I N G ############################################## # # As illustrated by the above widget hierarchy, GTK objects inherit style # from their parent objects with the root being GTKWIDGET. Getting the theme # to work properly is dependent upon instantiating "class" and "widget_class" # objects in the correct order. # # ###################################################################### # GtkWidget # # http://library.gnome.org/devel/gtk/unstable/GtkWidget.html # class "GtkWidget" style "murrine-GtkWidget" # GtkDialog # # http://library.gnome.org/devel/gtk/unstable/GtkDialog.html # widget_class ".*" style "murrine-GtkDialog" widget_class ".**" style "murrine-GtkProgressBar" widget_class ".**" style "murrine-GtkScrollbar" # Increase the x/ythickness in some widgets class "GtkRange" style "murrine-GtkWidget" class "GtkFrame" style "murrine-GtkFrame" # GtkHSeparator/GtkVSeparator # # http://library.gnome.org/devel/gtk/stable/GtkHSeparator.html # http://library.gnome.org/devel/gtk/stable/GtkVSeparator.html # # class "GtkSeparator" style "murrine-wide" class "GtkHSeparator" style "murrine-GtkHSeparator" class "GtkVSeparator" style "murrine-GtkVSeparator" class "GtkEntry" style "murrine-wider" # GtkStatusbar # The text of the status bar is formated by GtkFrame # # http://library.gnome.org/devel/gtk/stable/GtkStatusbar.html # widget_class "**" style "murrine-GtkStatusbar" # GtkMenuBar # # http://library.gnome.org/devel/gtk/stable/GtkMenuBar.html # class "GtkMenuBar" style:highest "murrine-GtkMenubar" # GtkToolbar # # http://library.gnome.org/devel/gtk/stable/GtkToolbar.html # class "GtkToolbar" style "murrine-GtkToolbar" widget_class "*.*Button.*" style "murrine-GtkToolbarButton" # GtkHandleBox # # http://library.gnome.org/devel/gtk/stable/GtkHandleBox.html # class "GtkHandleBox" style "murrine-GtkHandleBox" # GtkSpinButton # # http://library.gnome.org/devel/gtk/unstable/GtkSpinButton.html # class "GtkSpinButton" style "murrine-GtkSpinButton" # GtkScale # # http://library.gnome.org/devel/gtk/stable/GtkScale.html # class "GtkScale" style "murrine-GtkScale" # GtkScrollbar # # http://library.gnome.org/devel/gtk/stable/GtkScrollbar.html # # murrine solution class "GtkScrollbar" style "murrine-GtkScrollbar" # GtkButton # # http://library.gnome.org/devel/gtk/unstable/GtkButton.html # class "GtkButton" style "murrine-GtkButton" # GtkCheckButton/GtkRadioButton # # http://library.gnome.org/devel/gtk/unstable/GtkRadioButton.html # http://library.gnome.org/devel/gtk/stable/GtkCheckButton.html # class "GtkCheckButton" style "murrine-GtkCheckButton" class "GtkRadioButton" style "murrine-GtkCheckButton" widget_class "*.**" style "murrine-GtkRadioButtonLabel" widget_class "*.**" style "murrine-GtkRadioButtonLabel" # apply theme elements to firefox widget "Mozilla*Button*" style "mozilla-GtkButton" # GtkNotebook # # http://library.gnome.org/devel/gtk/unstable/GtkNotebook.html # class "GtkNotebook" style "murrine-GtkNotebook" widget_class "*.*.GtkNotebook" style "murrine-GtkNotebook" widget_class "**" style "murrine-GtkNotebook" widget_class "**" style "murrine-GtkNotebook" widget_class "**" style "murrine-GtkNotebook" # GtkComboBoxEntry # # http://library.gnome.org/devel/gtk/stable/GtkComboBoxEntry.html # widget_class "**" style "murrine-GtkComboBoxEntry" # GtkCombo # # http://library.gnome.org/devel/gtk/unstable/GtkCombo.html # widget_class "**" style "murrine-GtkComboBoxEntry" # GtkMenu # # http://library.gnome.org/devel/gtk/stable/GtkMenu.html # widget_class "**" style "murrine-GtkMenu" # GtkMenuItem / GtkSeparatorMenuItem # # http://library.gnome.org/devel/gtk/stable/GtkMenuItem.html # http://library.gnome.org/devel/gtk/stable/GtkSeparatorMenuItem.html # widget_class "**" style "murrine-GtkMenuItem" widget_class "**" style "murrine-GtkSeparatorMenuItem" # GtkCheckMenuItem # # http://library.gnome.org/devel/gtk/unstable/GtkCheckMenuItem.html # widget_class "*" style "murrine-GtkCheckMenuItem" # GtkFrame # # http://library.gnome.org/devel/gtk/stable/GtkFrame.html # widget_class "*" style "murrine-GtkFrame" widget_class "*.." style "murrine-GtkFrameTitle" # GtkTreeView # # http://library.gnome.org/devel/gtk/unstable/GtkTreeView.html # widget_class "*.*" style "murrine-GtkTreeView" widget_class "*.." style "murrine-GtkTreeView-header" widget_class "*.." style "murrine-GtkTreeView-header" widget_class "*.." style "murrine-GtkTreeView-header" widget_class "*.." style "murrine-GtkTreeView-header" # GtkProgressBar # # http://library.gnome.org/devel/gtk/stable/GtkProgressBar.html # class "GtkProgressBar" style "murrine-GtkProgressBar" # This is a work around ;) By default the rhytmbox progress bar fills # the status area. IMO the bar displays better without a trough. widget_class "*." style:highest "rhythmbox-GtkProgressBar" widget "MozillaGtkWidget*GtkProgressBar*" style "mozilla-GtkProgressBar" #Panel widget "*PanelWidget*" style "murrine-PanelWidget" widget "*PanelApplet*" style "murrine-PanelWidget" widget "*fast-user-switch*" style "murrine-PanelWidget" # Workaround for Fast User Switch applet class "PanelApp*" style "murrine-PanelWidget" class "PanelToplevel*" style "murrine-PanelWidget" # The panel menubar widget_class "*Panel**" style:highest "murrine-PanelGtkMenubar" # The window of the tooltip is called "gtk-tooltip" widget "gtk-tooltip*" style "murrine-GtkTooltips" # ###################################################################### # Special cases and work arounds # ###################################################################### # Nautilus # Nautilus uses a white canvas to display folder & files. Make sure # the text is dark. widget_class "*.EelEditableLabel" style "nautilus-GtkWidget" # Special case the nautilus-extra-view-widget # ToDo: A more generic approach for all applications that have a widget like this. widget "*.nautilus-extra-view-widget" style : highest "murrine-nautilus-location" # Workarounds for Evolution widget_class "*.ETable.ECanvas" style "murrine-GtkTreeView-header" widget_class "*.ETree.ECanvas" style "murrine-GtkTreeView-header" widget_class "*.ETree.*" style "evolution-GtkETree" widget_class "*.ECalendar" style "evolution-GtkECalendar" # Work around for http://bugzilla.gnome.org/show_bug.cgi?id=382646 style "murrine-text-is-fg-color-workaround" { text[NORMAL] = @fg_color text[PRELIGHT] = @fg_color text[SELECTED] = @selected_fg_color text[ACTIVE] = @fg_color text[INSENSITIVE] = mix(0.70, @fg_color, @selected_fg_color) # darker (@bg_color) } widget_class "*.." style "murrine-text-is-fg-color-workaround" style "murrine-menuitem-text-is-fg-color-workaround" { text[NORMAL] = @fg_color text[PRELIGHT] = @selected_fg_color text[SELECTED] = @selected_fg_color text[ACTIVE] = @fg_color text[INSENSITIVE] = mix(0.70, @fg_color, @selected_fg_color) # darker (@bg_color) } widget "*.gtk-combobox-popup-menu.*" style "murrine-menuitem-text-is-fg-color-workaround" # Work around the usage of GtkLabel inside GtkListItems to display text. # This breaks because the label is shown on a background that is based on the # base color set. style "murrine-fg-is-text-color-workaround" { fg[NORMAL] = @text_color fg[PRELIGHT] = @text_color fg[ACTIVE] = @selected_fg_color fg[SELECTED] = @selected_fg_color fg[INSENSITIVE] = mix(0.70, @fg_color, @selected_fg_color) # darker (@bg_color) } widget_class "**" style "murrine-fg-is-text-color-workaround" # The same problem also exists for GtkCList and GtkCTree # Only match GtkCList and not the parent widgets, because that would also change the headers. widget_class "*" style "murrine-fg-is-text-color-workaround" style "murrine-evo-new-button-workaround" { engine "murrine" { toolbarstyle = 0 } } widget_class "EShellWindow.GtkVBox.BonoboDock.BonoboDockBand.BonoboDockItem*" style "murrine-evo-new-button-workaround" #Rhythmbox toolbar near the search entry. Use default + wide so that it doesn't turn dark. style "murrine-rhythmbox-header" = "murrine-GtkWidget" { xthickness = 3 ythickness = 3 engine "murrine" { } } widget "*RBSourceHeader*" style:highest "murrine-rhythmbox-header" widget "*swt*toolbar*" style "murrine-GtkWidget" # RSC: Fix for CPU frequency applet style "applet-text" = "murrine-panel" { fg[NORMAL] = @bg_color } widget_class "*CPUFreqApplet*" style:highest "applet-text" }}} === Attachments === <> ---- CategoryArtwork === Comments === ---- Your comments here.