2014-03-29 02:02:09 -07:00

1647 lines
42 KiB
Plaintext
Executable File

###############################################
#evil_mac by p0rt
#----------
#
# A gtk theme for those who like the idea of a mac, but can't stand the
# light background.
#
# The graphics are completely unoriginal, stolen from m5brane. All I did
# was change some of the colors, lighten up the bright blues, and darken the
# backgrounds. Still, I like it, so I felt like sharing it was a good plan.
#
# This theme draws off years of using gtk and wanting something nice.
# Glossy P and ThinandMild are the main contributors.
#
# Glossy P was inspired by
# - roberTO
# - Grand Masta
#
# The Documentation for this theme is far from finished! Please feel free to
# modify this theme and release it into the wild, but make sure you leave a
# comment like this saying who else has worked on it and who (if anyone)
# inspired you.
#
# Cleaning up the documentation is encouraged!
#
# To Do
# -------
#
# :: Find and remove any graphics that aren't 100% original
#
# :: Make the theme more efficient; i.e. cut down the number of pixmaps.
#
# :: Figure out how to theme tabs in a few ornery apps, like The Gimp and
# Gnumeric. These special tabs have text entries (or some other widget)
# on top and I haven't figured out how to make them look "right". As far
# as I can tell, no other pixmap themes have, either.
#
# :: Finish side tabs.
#
# :: m5rane claims the icons need more work, but I think these are glorious.
#
# :: m5rane also wanted to finish icons for rhythmbox.
#
#
#
###############################################
# This sets the size of icons in toolbars and in the panel menus.
#gtk-icon-sizes = "gtk-large-toolbar=24,24:panel-menu=32,32"
gtk-icon-sizes = "gtk-large-toolbar=24,24:panel-menu=24,24"
# These are settings used by the gtk-menu-shadow hack. If your build of gtk2
# doesn't have this then comment out these lines.
gtk-menu-drop-shadow = 2
gtk-menu-shadow-delay = 20
include "iconrc"
#The following is the default style. It contains general settings for the theme that
#should apply to all widgets that aren't explicitly defined elsewhere. At the very end
#of the file we apply this style to the class GtkWidget. If the gtkrc file contains more
#than one rule for how to draw a widget the one that occurs first in the file is used. By
#applying this style to the GtkWidget class last we're telling gtk to use these settings
#for anything that hasn't been defined yet.
style "glossy-default"
{
#GtkWidget::interior_focus = 1
#GtkWidget::focus-line-width=0
#GtkButton::default_border = { 0, 0, 0, 0 }
#GtkButton::default_outside_border = { 0, 0, 0, 0 }
#GtkButton::default_border = { 3,3,3,3 }
#GtkButton::default_outside_border = { 3,3,3,3 }
#GtkDialog::action_area_border = {0,0,0,0}
#Yes or No?
GtkWidget::focus_padding = 0
#GtkEntry::padding = 6
#GtkPaned::handle_size = 7
#GtkFrame::shadow_type = GTK_SHADOW_NONE
GtkScrolledWindow::shadow_type = GTK_SHADOW_OUT
GtkMenuBar::shadow_type = GTK_SHADOW_ETCHED_IN
GtkToolbar::shadow_type = GTK_SHADOW_OUT
#GtkContainer::shadow_type = GTK_SHADOW_NONE
#GtkPaned::shadow_type = GTK_SHADOW_NONE
#GtkMenuBar::internal-padding = 0
#GtkContainer::border_width = 0
#These properties control how the image on a button is displaced when it is clicked.
#GtkButton::child_displacement_x = 0
#GtkButton::child_displacement_y = 1
#GtkButtonBox::child_min_width = 28
#GtkOptionMenu::indicator_size = { 20, 10 }
#GtkOptionMenu::indicator_spacing = { 6, 3, 1, 1 }
#xthickness = 1
#ythickness = 1
#This sets the color for odd rows in TreeViews to be light blue, instead of using
#the color set by gtk.
GtkTreeView::odd_row_color = "#7287ca"
fg[NORMAL] = "#000000"
fg[ACTIVE] = "#000000"
fg[PRELIGHT] = "#000000"
fg[SELECTED] = "#ffffff"
fg[INSENSITIVE] = "#747474"
bg[NORMAL] = "#F0F0F0"
bg[ACTIVE] = "#a3a3a3"
bg[PRELIGHT] = "#ffffff"
#bg[SELECTED] = "#4285c7"
bg[SELECTED] = "#8db0d4"
bg[INSENSITIVE] = "#f0f0f0"
base[NORMAL] = "#4c5159"
#base[ACTIVE] = "#a3a3a3"
base[ACTIVE] = "#d4d4d4"
base[PRELIGHT] = "#000000"
base[INSENSITIVE]= "#ffffff"
#base[SELECTED] = "#3669bd"
base[SELECTED] = "#6e8eb0"
text[INSENSITIVE]= "#747474"
text[SELECTED] = "#ffffff"
text[ACTIVE] = "#000000"
#A semi-transparent hi-light for files selected in Nautilus
NautilusIconContainer::highlight_alpha=160
#This sets the color used for the text under the icons in nautilus when they are not highlighted.
NautilusIconContainer::dark_info_color="#000000"
#This is the color of the text under an icon in Nautilus when it is highlighted.
NautilusIconContainer::light_info_color="#ffffff"
#When in doubt, use this pixmap to draw the background of a widget.
bg_pixmap[NORMAL] = "plain_background.png"
bg_pixmap[PRELIGHT] = "plain_background.png"
engine "pixmap"
{
#This defines how the focus is drawn. Using a transparent image means there is
#no line around a widget when it is in focus.
image
{
function = FOCUS
recolorable = TRUE
overlay_file = "transparent.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = TRUE
}
#The following four entries describe how the different types of shadows
#are drawn
image
{
function = SHADOW
recolorable = TRUE
shadow = OUT
file = "shadow_etched_out.png"
border = { 2, 2, 2, 2 }
stretch = TRUE
}
image
{
function = SHADOW
recolorable = TRUE
shadow = IN
file = "shadow_in.png"
border = { 2, 2, 2, 2 }
stretch = TRUE
}
image
{
function = SHADOW
recolorable = TRUE
shadow = ETCHED_IN
file = "shadow_etched_in.png"
border = { 2, 2, 2, 2 }
stretch = TRUE
}
image
{
function = SHADOW
recolorable = TRUE
shadow = ETCHED_OUT
file = "shadow_etched_out.png"
border = { 2, 2, 2, 2 }
stretch = TRUE
}
#How to draw horizontal lines
image
{
function = HLINE
recolorable = TRUE
file = "hline.png"
border = { 1, 1, 1, 0 }
stretch = TRUE
}
#How to draw vertical lines
image
{
function = VLINE
recolorable = TRUE
file = "vline.png"
border = { 1, 0, 1, 1 }
stretch = TRUE
}
#The following two entries describe how handles (grippers) are drawn.
image
{
function = HANDLE
orientation = HORIZONTAL
recolorable = TRUE
#The background image on boxes with horizontal handles.
file = "transparent.png"
border = { 1,1,1,1 }
stretch = TRUE
#The overlay on horizontal handles
overlay_file = "vertical_handle.png"
overlay_border = { 0,0,0,0 }
overlay_stretch = FALSE
}
image
{
function = HANDLE
recolorable = TRUE
#The background on vertical handles
file = "transparent.png"
border = { 1, 1, 1, 1 }
stretch = TRUE
#The overlay on vertical handles.
overlay_file = "horizontal_handle.png"
overlay_border = {0,0,0,0}
overlay_stretch = FALSE
orientation = VERTICAL
}
#This tells gtk how to draw the base of a handlebox; i.e. the bin that the
#buttons sit in.
image
{
function = BOX
recolorable = TRUE
detail = "handlebox_bin"
file = "plain_background.png"
border = { 1,1,1,1 }
stretch = TRUE
}
}
}
#####################################################
#Buttons
#####################################################
style "button"
{
GtkButton::default_border = { 0, 0, 0, 0 }
#GtkButton::default_outside_border = { 0, 0, 0, 0 }
#This adds a little extra horizontal thickness to the buttons. I've added this so
#the label on a button has a little room on either side.
xthickness=3
#ythickness=2
engine "pixmap"
{
image
{
function = BOX
recolorable = TRUE
state = NORMAL
detail = "buttondefault"
shadow = IN
file = "button_round.png"
#border = { 9,9,10,10 }
border = { 15,15,12,12 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = NORMAL
shadow = OUT
file = "button_round.png"
border = { 9,9,10,10 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = PRELIGHT
shadow = OUT
file = "button_round_blue.png"
border = { 9,9,10,10 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = PRELIGHT
shadow = IN
file = "button_round_blue.png"
border = { 9,9,10,10 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = NORMAL
shadow = IN
file = "button_round.png"
border = { 9,9,10,10 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = INSENSITIVE
shadow = IN
file = "button_round_insens.png"
border = { 9,9,10,10 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = INSENSITIVE
shadow = OUT
file = "button_round_insens.png"
border = { 9,9,10,10 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = SELECTED
shadow = IN
file = "button_round_blue_push.png"
border = {9,9,10,10 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = ACTIVE
shadow = IN
file = "button_round_blue_push.png"
border = { 9,9,10,10 }
stretch = TRUE
}
}
}
class "GtkButton" style "button"
################################################
# Paned Widgets: Windows divided into two or more sections, which can be
# resized by dragging handles.
################################################
style "glossy-paned" = "glossy-default"
{
#This section describes how panes are drawn. Panes are windows that are separated
#into two parts by a horizontal or vertical divider. The instructions set here over-ride
#the instructions set above for how to draw handles.
#xthickness = 5
#ythickness = 5
#This defines the thickness of the bar that divides the window.
GtkPaned::handle_size = 8
engine "pixmap"
{
# The handle on horizontal dividers
image
{
function = HANDLE
recolorable = TRUE
file = "plain_background.png"
border = { 1, 1, 1, 1 }
stretch = TRUE
overlay_file = "horizontal_paned_handle.png"
overlay_border = {0,0,0,0}
overlay_stretch = FALSE
orientation = HORIZONTAL
}
# The handle on vertical dividers
image
{
function = HANDLE
recolorable = TRUE
file = "plain_background.png"
border = { 1, 1, 1, 1 }
stretch = TRUE
overlay_file = "vertical_paned_handle.png"
overlay_border = {0,0,0,0}
overlay_stretch = FALSE
orientation = VERTICAL
}
}
}
class "Gtk*Paned" style "glossy-paned"
################################################
# Toolbars drawn by gtk
################################################
style "glossy-toolbar"="glossy-default"
{
engine "pixmap"
{
# This tells gtk how to draw the toolbar
image
{
function = BOX
recolorable = TRUE
shadow = OUT
#file = "plain_background.png"
file = "shadow_etched_out.png"
border = {1,1,1,2}
stretch = TRUE
}
}
}
widget_class "GtkToolBar" style "glossy-toolbar"
class "*Tool*" style "glossy-toolbar"
###############################################
# Menus
###############################################
style "glossy-menu"
{
#This is the image that is used to draw the background of drop-down menus. It is
#tiled, and set inside the box defined below.
#bg_pixmap[NORMAL] = "plain_background.png"
#The BOX set below is drawn as a 'frame' around the image above,
#whose x and y thicknesses are defined below.
#xthickness = 4
#ythickness = 4
engine "pixmap"
{
#This is the image that is used to draw Menus. The bg_pixmap image
#set above is drawn inside the border defined below, with a one-pixel
#buffer. Setting the x and y thicknesses above overrides the one-pixel
#border.
image
{
function = BOX
recolorable = TRUE
file = "menu_background.png"
border = {1,1,1,1}
stretch = TRUE
}
image
{
function = HLINE
recolorable = TRUE
file = "hline.png"
border = { 1, 1, 1, 0 }
stretch = TRUE
}
}
}
#widget_class "*Menu*" style "glossy-menu"
class "GtkMenu" style "glossy-menu"
###############################################
# Menu Items
###############################################
style "MenuItem"
{
#This sets the thickness of a buffer between the side of the menu
#and where the mouse-over image (set below) is drawn. The side of
#the menu is defined by the border set in the menu style above.
xthickness = 2
ythickness = 2
engine "pixmap"
{
#This image is used to draw the highlight on a menu entry when it is
#moused over.
image
{
function = BOX
recolorable = TRUE
file = "menu_hi-light_2.png"
border = { 1, 1, 1, 1 }
stretch = TRUE
}
image
{
function = HLINE
recolorable = TRUE
file = "hline.png"
border = { 1, 1, 1, 0 }
stretch = TRUE
}
}
}
widget_class "*.GtkMenuItem.*" style "MenuItem"
class "GtkMenuItem" style "MenuItem"
###############################################
# Styles and Controls for Option Menus
###############################################
style "OptionMenu"
{
engine "pixmap"
{
image
{
function = BOX
recolorable = TRUE
file = "OptionMenu.png"
border = { 12, 20, 10, 10 }
stretch = TRUE
}
image
{
function = TAB
recolorable = TRUE
overlay_file = "menubar_option_arrow.png"
overlay_stretch = FALSE
}
image
{
function = TAB
recolorable = TRUE
state = INSENSITIVE
overlay_file = "menubar_option_arrow_insensitive.png"
overlay_stretch = FALSE
}
}
}
class "GtkOptionMenu" style "OptionMenu"
#####################################################
#Notebook: How to draw the tabs, spacings, and backgrounds for notebooks.
#####################################################
style "notebook"
{
#These thickness settings make sure that we see the whole thin blue line at the top
#of the notebook page.
xthickness = 1
ythickness = 3
engine "pixmap"
{
# NOTEBOOK TABS
#####################
#Tabs at the top of the notebook.
#####################
#This is the image used for the selected tab.
image
{
function = EXTENSION
state = NORMAL
gap_side = BOTTOM
file = "SelectedTabTop.png"
border = {6,6,9,0}
stretch = TRUE
}
#This is the image used for tabs in the background.
image
{
function = EXTENSION
state = ACTIVE
gap_side = BOTTOM
file = "NormalTabTop.png"
border = {6,6,9,0}
stretch = TRUE
}
########################
# Tabs at the bottom of the notebook.
########################
# The image used for background tabs.
image
{
function = EXTENSION
state = ACTIVE
gap_side = TOP
file = "NormalTabBottom.png"
border = {6,6,0,9}
stretch = TRUE
}
# The image for selected tabs.
image
{
function = EXTENSION
state = NORMAL
gap_side = TOP
file = "SelectedTabBottom.png"
border = {6,6,0,9}
stretch = TRUE
}
#These are the images that are used for the base of the notebook: the area in the border
#forms the border of the notebook page and the stretched part sits inside. If I use an image
#with a transparent base then I get sequentially darker nested notebook pages, which is good,
#but it maked tab switching much, much slower (~1 sec to redraw when switching tabs).
#Use this image when the tabs are at the top of the notebook.
image
{
function = BOX_GAP
gap_side = TOP
file = "notebook_top_flat.png"
border = {1,1,4,1}
stretch = TRUE
}
# use this image when the tabs are on the bottom of the notebook.
image
{
function = BOX_GAP
gap_side = BOTTOM
file = "notebook_bottom_flat.png"
border = {1,1,1,4}
stretch = TRUE
}
# Use this when the tabs are on the left
image
{
function = BOX_GAP
gap_side = LEFT
file = "notebook_left_flat.png"
border = {4,1,1,1}
stretch = TRUE
}
# Use this when the tabs are on the right
image
{
function = BOX_GAP
gap_side = RIGHT
file = "notebook_right_flat.png"
border = {1,4,1,1}
stretch = TRUE
}
#For drawing notebook pages when they are not attached to a tab. When does
#this happen?
image
{
function = BOX
file = "notebook_top_flat.png"
border = {1,1,4,1}
stretch = TRUE
gap_side = TOP
}
}
}
class "GtkNotebook" style "notebook"
#####################################################
# Text Entries
#####################################################
style "entry"
{
#xthickness = 2
#ythickness = 2
#bg[SELECTED] = { 0.30,0.35,0.65 }
bg[NORMAL] = "#595959"
fg[PRELIGHT] = "#595959"
#GtkEntry::shadow_type = GTK_SHADOW_NONE
#In the default style we set this color to white because it sets the background color for
#things like GtkText and GtkList, etc, which we want white. But here we set the background
#color for GtkEntry to be light gray so that it blends in with things like toolbars.
base[NORMAL] = "#595959"
#bg_pixmap[NORMAL] = "menu_background.png"
engine "pixmap"
{
image
{
function = FLAT_BOX
recolorable = TRUE
state = INSENSITIVE
detail = "entry_bg"
file = "text_entry.png"
border = {6,6,6,6 }
stretch = TRUE
}
image
{
function = FLAT_BOX
recolorable = TRUE
state = NORMAL
detail = "entry_bg"
file = "text_entry.png"
border = {6,6,6,6 }
stretch = TRUE
}
image
{
function = FLAT_BOX
recolorable = TRUE
state = SELECTED
detail = "entry_bg"
file = "out_sel.png"
border = { 1,1,8,8 }
stretch = TRUE
}
#This is a transparent shadow.
image
{
function = SHADOW
recolorable = TRUE
shadow = IN
file = "transparent.png"
border = { 1,1,1,1 }
stretch = TRUE
}
}
}
class "GtkEntry" style "entry"
###############################################
# Gtk Lists, like the Rhythmbox playlist or Nautilus Listview
###############################################
style "list-header"
{
#Comment out the ythickness setting below for thicker column headers.
ythickness = 0
GtkTreeView::odd_row_color = "#5a6a78"
GtkTreeView::even_row_color = "#4c5159"
engine "pixmap"
{
#This image is used to draw the headers of columns in list views when they are
#not selected.
image
{
function = BOX
recolorable = TRUE
shadow = OUT
file = "list_header.png"
border = { 1,1,1,1 }
stretch = TRUE
}
#This image is used to draw the column headers in list views when they are
#clicked.
image
{
function = BOX
recolorable = TRUE
shadow = IN
file = "menu_hi-light_2.png"
border = { 1,1,1,1 }
stretch = TRUE
}
#Does this do anything?
image
{
function = BOX
recolorable = TRUE
shadow = OUT
state = PRELIGHT
file = "menu_hi-light_2.png"
border = { 1,1,1,1 }
stretch = TRUE
}
}
}
widget_class "*List" style "list-header"
widget_class "*Tree*" style "list-header"
widget_class "GtkCList" style "list-header"
###############################################
# GtkScrollbar: The scrollbars on windows
###############################################
style "Scrollbar" {
#The values I set here have to do with the relative size of three graphic elements
#I have used: the slider, the arrow box, and the trough. They all have the same width
#of 15 pixels, but gtk wants to put in some spacing between them. It seems like it
#places the sliders inside the trough with a default 1 pixel border on either side of the slider,
#so that the trough has its width stretched by an additional two pixels(?). Setting the
#trough border makes the arrow box sit on top of the trough squarely, by making sure that
#the trough stays the same width as the arrowbox(?). I could be totally wrong here.
GtkRange::trough_border = 0
GtkRange::slider_width = 15
#This sets the size of the steppers (arrow buttons on the end of the scrollbar). The image I
#am using is 15x15 pixels, and if I dont set this a one pixel line gets cut off of the top of the "up"
#stepper.
GtkRange::stepper_size = 15
#Set a minimum length for the slider. Since I set the border on the slider image to 15 pixels
#on either end of the slider I want the min length to be at least 30 pixels to avoid an ugly
#slider when gtk wants to make it smaller than 30 pixels.
GtkScrollbar::min_slider_length = 30
engine "pixmap"
{
#The trough for vertical scrollbars. This is the region in which the slider moves.
image
{
function = BOX
recolorable = TRUE
detail = "trough"
file = "vertical_trough.png"
border = { 0, 0, 30, 30 }
stretch = TRUE
orientation = VERTICAL
}
#The trough for horizontal scrollbars.
image
{
function = BOX
recolorable = TRUE
detail = "trough"
file = "horizontal_trough.png"
border = { 30, 30, 0, 0 }
stretch = TRUE
orientation = HORIZONTAL
}
#The image used to draw the slider for horizontal scrollbars
#in the NORMAL state.
image
{
function = SLIDER
recolorable = TRUE
state = NORMAL
file = "scrollbar_horizontal.png"
border = { 15, 15, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
#The image used to draw the slider for horizontal scrollbars
#in their prelight state.
image
{
function = SLIDER
recolorable = TRUE
state = PRELIGHT
file = "scrollbar_prelight_horizontal.png"
border = { 15, 15, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
#The image used to draw the slider for horizontal scrollbars
#in their ACTIVE (pressed?) state.
image
{
function = SLIDER
recolorable = TRUE
state = ACTIVE
file = "scrollbar_horizontal.png"
border = { 15, 15, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
#The image used to draw the slider for horizontal scrollbars
#in their INSENSITIVE state.
image
{
function = SLIDER
recolorable = TRUE
state = INSENSITIVE
file = "scrollbar_horizontal.png"
border = { 15, 15, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
#The image used to draw the slider for vertical scrollbars
#in their NORMAL state.
image
{
function = SLIDER
recolorable = TRUE
state = NORMAL
file = "scrollbar_vertical.png"
border = { 6, 6, 15, 15 }
stretch = TRUE
orientation = VERTICAL
}
#The image used to draw the slider for vertical scrollbars
#in their prelight state.
image
{
function = SLIDER
recolorable = TRUE
state = PRELIGHT
file = "scrollbar_prelight_vertical.png"
border = { 6, 6, 15, 15 }
stretch = TRUE
orientation = VERTICAL
}
#The image used to draw the slider for vertical scrollbars
#in their ACTIVE state.
image
{
function = SLIDER
recolorable = TRUE
state = ACTIVE
file = "scrollbar_vertical.png"
border = { 6, 6, 15, 15 }
stretch = TRUE
orientation = VERTICAL
}
#The image used to draw the slider for vertical scrollbars
#in their INSENSITIVE state.
image
{
function = SLIDER
recolorable = TRUE
state = INSENSITIVE
file = "scrollbar_vertical.png"
border = { 6, 6, 15, 15 }
stretch = TRUE
orientation = VERTICAL
}
image
{
function = BOX
recolorable = TRUE
state = NORMAL
file = "vscroll_down.png"
border = { 0, 0, 0, 0 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = PRELIGHT
file = "vscroll_down.png"
border = { 0, 0, 0, 0 }
stretch = TRUE
orientation = HORIZONTAL
}
image
{
function = BOX
recolorable = TRUE
state = ACTIVE
file = "vscroll_down.png"
border = { 0, 0, 0, 0 }
stretch = TRUE
}
image
{
function = ARROW
recolorable = TRUE
state = NORMAL
overlay_file = "vscroll_up.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = UP
}
image
{
function = ARROW
recolorable = TRUE
state = NORMAL
overlay_file = "vscroll_down.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = DOWN
}
image
{
function = ARROW
recolorable = TRUE
state = NORMAL
overlay_file = "hscroll_left.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = LEFT
}
image
{
function = ARROW
recolorable = TRUE
state = NORMAL
overlay_file = "hscroll_right.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = RIGHT
}
image
{
function = ARROW
recolorable = TRUE
state = PRELIGHT
overlay_file = "vscroll_up.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = UP
}
image
{
function = ARROW
recolorable = TRUE
state = PRELIGHT
overlay_file = "vscroll_down.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = DOWN
}
image
{
function = ARROW
recolorable = TRUE
state = PRELIGHT
overlay_file = "hscroll_left.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = LEFT
}
image
{
function = ARROW
recolorable = TRUE
state = PRELIGHT
overlay_file = "hscroll_right.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = RIGHT
}
image
{
function = ARROW
recolorable = TRUE
shadow = IN
overlay_file = "vscroll_up.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = UP
}
image
{
function = ARROW
recolorable = TRUE
shadow = IN
overlay_file = "vscroll_down.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = DOWN
}
image
{
function = ARROW
recolorable = TRUE
shadow = IN
overlay_file = "hscroll_left.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = LEFT
}
image
{
function = ARROW
recolorable = TRUE
shadow = IN
overlay_file = "hscroll_right.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = RIGHT
}
}
}
class "GtkScrollbar" style "Scrollbar"
###########################################
# Scales: The sliders used for volume, track position, etc. Drawn without
# arrow boxes on the end.
###########################################
#Problem: scales in some apps, like the Gimp, dont look right when they
#are small. The slider is too thin and has two overlapping pieces and looks
#like crap.
style "Scales"
{
GtkRange::trough_border = 0
GtkRange::slider_width = 15
engine "pixmap"
{
image
{
function = BOX
recolorable = TRUE
detail = "trough"
file = "trough_2.png"
border = { 2, 2, 6, 6 }
stretch = TRUE
orientation = VERTICAL
}
image
{
function = BOX
recolorable = TRUE
detail = "trough"
file = "horizontal_trough_3.png"
border = { 6, 6, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
image
{
function = SLIDER
recolorable = TRUE
state = NORMAL
file = "scrollbar_horizontal.png"
border = { 15, 15, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
image
{
function = SLIDER
recolorable = TRUE
state = PRELIGHT
file = "scrollbar_horizontal.png"
border = { 15, 15, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
image
{
function = SLIDER
recolorable = TRUE
state = ACTIVE
file = "scrollbar_horizontal.png"
border = { 15, 15, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
image
{
function = SLIDER
recolorable = TRUE
state = INSENSITIVE
file = "scrollbar_horizontal.png"
border = { 15, 15, 6, 6 }
stretch = TRUE
orientation = HORIZONTAL
}
image
{
function = SLIDER
recolorable = TRUE
state = NORMAL
file = "scrollbar_vertical.png"
border = { 6, 6, 15, 15 }
stretch = TRUE
orientation = VERTICAL
}
image
{
function = SLIDER
recolorable = TRUE
state = PRELIGHT
file = "scrollbar_vertical.png"
border = { 6, 6, 15, 15 }
stretch = TRUE
orientation = VERTICAL
}
image
{
function = SLIDER
recolorable = TRUE
state = ACTIVE
file = "scrollbar_vertical.png"
border = { 6, 6, 15, 15 }
stretch = TRUE
orientation = VERTICAL
}
image
{
function = SLIDER
recolorable = TRUE
state = INSENSITIVE
file = "scrollbar_vertical.png"
border = { 6, 6, 15, 15 }
stretch = TRUE
orientation = VERTICAL
}
}
}
class "GtkScale" style "Scales"
##################################################
#Spin Controls
#---------------
#These are buttons with two arrows that let you set some value by clicking the
#the arrows. The widget might also have a text entry box for setting the value
#directly by typing it in.
##################################################
style "spin"
{
engine "pixmap"
{
#First we set the images for drawing different parts of a text entry that
#might be attached to the widget. This could be done by inheriting from the
#style used for GtkEntry, but we just set everything here explicitly. Still having
#the same problem as with GtkEntry with the white outline if we do not draw
#a shadow with a thick enough border.
image
{
function = FLAT_BOX
recolorable = TRUE
state = NORMAL
detail = "entry_bg"
file = "text_entry.png"
border = {6,6,6,6 }
stretch = TRUE
}
image
{
function = FLAT_BOX
recolorable = TRUE
state = SELECTED
detail = "entry_bg"
file = "out_sel.png"
border = { 1,1,8,8 }
stretch = TRUE
}
image
{
function = FLAT_BOX
recolorable = TRUE
state = INSENSITIVE
detail = "entry_bg"
file = "text_entry.png"
border = {6,6,6,6 }
stretch = TRUE
}
image
{
function = SHADOW
recolorable = TRUE
shadow = IN
file = "transparent.png"
border = { 1,1,1,1 }
stretch = TRUE
}
#The following two sections define the images used to draw the up and
#down spin buttons in the INSENSITIVE state.
image
{
function = BOX
recolorable = TRUE
state = INSENSITIVE
detail = "spinbutton_up"
file = "spin_button_up.png"
border = { 7,7,6,0 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = INSENSITIVE
detail = "spinbutton_down"
file = "spin_button_down.png"
border = { 7,7,0,6 }
stretch = TRUE
}
#The following two sections define the images used to draw the up and
#down spin buttons in the PRELIGHT state.
image
{
function = BOX
recolorable = TRUE
state = PRELIGHT
detail = "spinbutton_up"
file = "spin_button_up_prelight.png"
border = { 7,7,6,0 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
state = PRELIGHT
detail = "spinbutton_down"
file = "spin_button_down_prelight.png"
border = { 7,7,0,6 }
stretch = TRUE
}
#The following two sections define the images used to draw the up and
#down spin buttons in any states that we have not already defined.
image
{
function = BOX
recolorable = TRUE
detail = "spinbutton_up"
file = "spin_button_up_active.png"
border = { 7,7,6,0 }
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
detail = "spinbutton_down"
file = "spin_button_down_active.png"
border = { 7,7,0,6 }
stretch = TRUE
}
#The arrows drawn on the spinbuttons are set by the next two
#entries. Different types of arrows can be used for different
#states by setting images for each state.
image
{
function = ARROW
recolorable = TRUE
overlay_file = "spin_button_up_arrow.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = UP
}
image
{
function = ARROW
recolorable = TRUE
overlay_file = "spin_button_down_arrow.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
arrow_direction = DOWN
}
}
}
class "GtkSpin*" style "spin"
############################################
# Check Boxes
# --------------
# This section tells GTK how to draw check boxes.
############################################
style "CheckBox"
{
engine "pixmap"
{
#This is the image used to draw an unchecked box.
image
{
function = CHECK
recolorable = TRUE
shadow = OUT
overlay_file = "unchecked_box.png"
overlay_stretch = FALSE
}
#This is the image used to draw a selected (checked) box.
image
{
function = CHECK
recolorable = TRUE
shadow = IN
overlay_file = "checked_box.png"
overlay_stretch = FALSE
}
#Use this image to draw the highlight when a line with a check box
#is moused over.
image
{
function = FLAT_BOX
recolorable = TRUE
file = "menu_hi-light_2.png"
border = { 1, 1, 1, 1 }
}
}
}
class "GtkCheckButton" style "CheckBox"
############################################
# Radio Buttons
############################################
style "RadioButton"
{
engine "pixmap"
{
image
{
function = OPTION
recolorable = TRUE
shadow = OUT
overlay_file = "option_out_2.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
}
image
{
function = OPTION
recolorable = TRUE
shadow = IN
overlay_file = "option_in_2.png"
overlay_border = { 0, 0, 0, 0 }
overlay_stretch = FALSE
}
#Use this image to draw the highlight when a line with a radio box
#is moused over.
image
{
function = FLAT_BOX
recolorable = TRUE
file = "menu_hi-light_2.png"
border = { 1, 1, 1, 1 }
}
}
}
class "GtkRadioButton" style "RadioButton"
################################################
# Statusbars Drawn by gtk (info bar on the bottom of the window)
################################################
style "glossy-GtkStatusbar" = "glossy-default"
{
GtkStatusbar::shadow_type = GTK_SHADOW_NONE
engine "pixmap"
{
#This does not seem to be working. It seems that you can tell gtk how
#to draw the resizing grip in the bottom right corner of the window, which
#seems to be part of the status bar. Not sure why it is not working.
image
{
function = RESIZE_GRIP
recolorable = TRUE
#state = NORMAL
detail = "statusbar"
overlay_file = "menu_hi-light_2.png"
overlay_border = {1,1,1,1 }
overlay_stretch = FALSE
}
}
}
class "GtkStatusbar" style "glossy-GtkStatusbar"
###########################################
#Progress Bars
###########################################
style "ProgressBar"
{
#xthickness = 1
#ythickness = 1
GtkProgressBar::trough_border = 0
engine "pixmap"
{
image
{
function = BOX
recolorable = TRUE
detail = "bar"
file = "menu_hi-light_2.png"
border = { 1, 1, 1, 1}
stretch = TRUE
}
image
{
function = BOX
recolorable = TRUE
detail = "trough"
file = "trough_2.png"
border = { 1, 1, 1, 1 }
stretch = TRUE
orientation = HORIZONTAL
}
}
}
class "GtkProgressBar" style "ProgressBar"
###########################################
#Text Boxes in Notebooks
###########################################
#Notebook pages have a darker background than the normal base color. This
#section sets the appropriate background colors for widgets with text entries
#so they blend in with the darker grey background. This isn't a complete fix
#for the problem, since some programs seem to use notebook pages (without
#tabs) in such a way that they don't pick up the dark grey background.
style "DarkTextEntry"
{
#xthickness = 1
#ythickness = 1
#font_name = "Bold"
base[NORMAL] = "#595959"
base[INSENSITIVE] = "#595959"
#base[ACTIVE] = "#E8E8E8"
#base[ACTIVE] = "#000000"
#base[INSENSITIVE] = "#000000"
#base[SELECTED] = "#000000"
}
widget_class "*Notebook*Entry" style "DarkTextEntry"
widget_class "*Notebook*ComboBox" style "DarkTextEntry"
widget_class "*Notebook*SpinButton" style "DarkTextEntry"
#The settings above assign the DarkTextEntry style to any TextEntry, ComboBox,
#or SpinButton widgets which are the children (or children of children, etc) of a
#Notebook widget.
#Widgets that have not been defined yet
class "GtkWidget" style "glossy-default"