[Xfce4-commits] <gtk-xfce-engine:master> Merge branch 'peter/gtk3'
Peter de Ridder
noreply at xfce.org
Sat Dec 17 17:16:15 CET 2011
Updating branch refs/heads/master
to ca97cba4b998dc068097016f6e2655c396151f35 (commit)
from b987209c2065518f6354f13883f8bc4180a251a0 (commit)
commit ca97cba4b998dc068097016f6e2655c396151f35
Merge: b987209 cab2bc1
Author: Peter de Ridder <peter at xfce.org>
Date: Sat Dec 17 16:24:06 2011 +0100
Merge branch 'peter/gtk3'
commit cab2bc1fbe877bea724e454ab7545fa3777b68f5
Author: Peter de Ridder <peter at xfce.org>
Date: Tue Dec 13 23:46:20 2011 +0100
Removed non-existing style properties
commit e43f1ad1f60932c71dc3d42a2867dd109be1b734
Author: Peter de Ridder <peter at xfce.org>
Date: Mon Dec 12 14:56:41 2011 +0100
More consistency with Gtk 2 for check, radio and notebook tab
commit 4e67318b817588aa941542a02849c2394fe1c462
Author: Peter de Ridder <peter at xfce.org>
Date: Mon Dec 12 14:54:48 2011 +0100
For grip style slide use color instead of background:selected
commit 18dcbfbff5e3df29e9dede82004bff9b5e896abc
Author: Peter de Ridder <peter at xfce.org>
Date: Sun Dec 11 23:14:03 2011 +0100
Added top comment to Gtk 3 themes which have them in Gtk 2 version
Xfce-orange
commit 3d966ec6c302b7b484d353588ac1bc054c080cad
Author: Peter de Ridder <peter at xfce.org>
Date: Sun Dec 11 23:12:55 2011 +0100
Added missing border-color
Xfce-redmondxp
commit 9b1cb5cd048373e139b3b24509646b509bbc582c
Author: Peter de Ridder <peter at xfce.org>
Date: Sun Dec 11 23:10:31 2011 +0100
Converting last themes to Gtk 3
Xfce-4.0, Xfce-4.2, Xfce-4.4, Xfce-4.6, Xfce
commit d21ebb88432202809961605797a5fcdc02da0e22
Author: Peter de Ridder <peter at xfce.org>
Date: Fri Nov 18 23:57:52 2011 +0100
Converting more gradient themes to Gtk 3
Xfce-orange, Xfce-redmondxp
commit 381e98fcc9ad07b1b5e15d85131581f74dad5e41
Author: Peter de Ridder <peter at xfce.org>
Date: Fri Nov 18 23:55:25 2011 +0100
Swapped gradient order for active and selected
Xfce-basic, Xfce-cadmium, Xfce-dusk
commit 64be8a6e7ef052dff61c6a8dbf6902af200429f2
Author: Peter de Ridder <peter at xfce.org>
Date: Thu Nov 17 22:19:12 2011 +0100
Converted basic theme to Gtk 3 not matching Gtk 2 colors
Xfce-basic
commit 1fa76c110247ec0f456da415a7ef6530c37c48b4
Author: Peter de Ridder <peter at xfce.org>
Date: Sun Nov 13 14:36:43 2011 +0100
Started on converting gradient themes to Gtk 3
Xfce-dawn, Xfce-dusk, Xfce-kde2, Xfce-kolors, Xfce-winter
commit e40aac426d54806bd1965a7409e6d6abadd62ef0
Author: Peter de Ridder <peter at xfce.org>
Date: Tue Oct 18 21:31:43 2011 +0200
Converting more themes to Gtk 3
Xfce-cadmium, Xfce-curve
commit c770fd81eb3b659abfedc5d61e6c3200c894989c
Author: Peter de Ridder <peter at xfce.org>
Date: Tue Oct 18 21:29:28 2011 +0200
Improved compatibility between Gtk 2 and Gtk 3 theme
Xfce-b5, Xfce-light, Xfce-saltlake, Xfce-smooth, Xfce-stellar
commit 5bec77f3d932c49e09700ff0293c25dd1d932874
Author: Peter de Ridder <peter at xfce.org>
Date: Tue Sep 27 23:03:24 2011 +0200
Started on converting the first themes to Gtk 3
Xfce-b5, Xfce-light, Xfce-saltlake, Xfce-smooth, Xfce-stellar
commit 6a8475e3a9da3b2cd6e5b2865dd8a4eb4aefd344
Author: Peter de Ridder <peter at xfce.org>
Date: Fri Sep 23 21:37:19 2011 +0200
Added Gtk 3 Xfce engine
Split the source into Gtk 2 and Gtk 3 variant and added basic Gtk 3
implementation to mimic Gtk 2 look
Makefile.am | 7 +-
configure.in.in | 56 +-
{src => gtk-2.0}/Makefile.am | 6 +-
{src => gtk-2.0}/cairo-support.c | 0
{src => gtk-2.0}/cairo-support.h | 0
{src => gtk-2.0}/ge-support.h | 0
{src => gtk-2.0}/general-support.h | 0
{src => gtk-2.0}/gradient_draw.c | 0
{src => gtk-2.0}/gradient_draw.h | 0
{src => gtk-2.0}/xfce_rc_style.c | 0
{src => gtk-2.0}/xfce_rc_style.h | 0
{src => gtk-2.0}/xfce_style.h | 0
{src => gtk-2.0}/xfce_theme_draw.c | 0
{src => gtk-2.0}/xfce_theme_main.c | 0
gtk-3.0/Makefile.am | 51 +
gtk-3.0/xfce_engine.c | 1708 +++++++++++++++++++++
src/xfce_theme_main.c => gtk-3.0/xfce_engine.h | 41 +-
{src => gtk-3.0}/xfce_style.h | 0
src/gradient_draw.h => gtk-3.0/xfce_style_types.h | 22 +-
{src => gtk-3.0}/xfce_theme_main.c | 17 +-
gtk-3.0/xfce_typebuiltin.c.template | 38 +
gtk-3.0/xfce_typebuiltin.h.template | 22 +
themes/b5/Makefile.am | 3 +-
themes/b5/gtk-3.0/Makefile.am | 5 +
themes/b5/gtk-3.0/gtk.css | 283 ++++
themes/basic/Makefile.am | 3 +-
themes/basic/gtk-3.0/Makefile.am | 5 +
themes/basic/gtk-3.0/gtk.css | 48 +
themes/cadmium/Makefile.am | 3 +-
themes/cadmium/gtk-3.0/Makefile.am | 5 +
themes/cadmium/gtk-3.0/gtk.css | 348 +++++
themes/curve/Makefile.am | 3 +-
themes/curve/gtk-3.0/Makefile.am | 5 +
themes/curve/gtk-3.0/gtk.css | 326 ++++
themes/dawn/Makefile.am | 3 +-
themes/dawn/gtk-3.0/Makefile.am | 5 +
themes/dawn/gtk-3.0/gtk.css | 349 +++++
themes/dusk/Makefile.am | 3 +-
themes/dusk/gtk-3.0/Makefile.am | 5 +
themes/dusk/gtk-3.0/gtk.css | 345 +++++
themes/kde2/Makefile.am | 3 +-
themes/kde2/gtk-3.0/Makefile.am | 5 +
themes/kde2/gtk-3.0/gtk.css | 304 ++++
themes/kolors/Makefile.am | 3 +-
themes/kolors/gtk-3.0/Makefile.am | 5 +
themes/kolors/gtk-3.0/gtk.css | 355 +++++
themes/light/Makefile.am | 3 +-
themes/light/gtk-3.0/Makefile.am | 5 +
themes/light/gtk-3.0/gtk.css | 295 ++++
themes/orange/Makefile.am | 3 +-
themes/orange/gtk-3.0/Makefile.am | 5 +
themes/orange/gtk-3.0/gtk.css | 448 ++++++
themes/redmondxp/Makefile.am | 3 +-
themes/redmondxp/gtk-3.0/Makefile.am | 5 +
themes/redmondxp/gtk-3.0/gtk.css | 445 ++++++
themes/saltlake/Makefile.am | 3 +-
themes/saltlake/gtk-3.0/Makefile.am | 5 +
themes/saltlake/gtk-3.0/gtk.css | 277 ++++
themes/smooth/Makefile.am | 3 +-
themes/smooth/gtk-3.0/Makefile.am | 5 +
themes/smooth/gtk-3.0/gtk.css | 272 ++++
themes/stellar/Makefile.am | 3 +-
themes/stellar/gtk-3.0/Makefile.am | 5 +
themes/stellar/gtk-3.0/gtk.css | 281 ++++
themes/winter/Makefile.am | 3 +-
themes/winter/gtk-3.0/Makefile.am | 5 +
themes/winter/gtk-3.0/gtk.css | 395 +++++
themes/xfce-4.0/Makefile.am | 3 +-
themes/xfce-4.0/gtk-3.0/Makefile.am | 5 +
themes/xfce-4.0/gtk-3.0/gtk.css | 420 +++++
themes/xfce-4.2/Makefile.am | 3 +-
themes/xfce-4.2/gtk-3.0/Makefile.am | 5 +
themes/xfce-4.2/gtk-3.0/gtk.css | 454 ++++++
themes/xfce-4.4/Makefile.am | 3 +-
themes/xfce-4.4/gtk-3.0/Makefile.am | 5 +
themes/xfce-4.4/gtk-3.0/gtk.css | 476 ++++++
themes/xfce-4.6/Makefile.am | 3 +-
themes/xfce-4.6/gtk-3.0/Makefile.am | 5 +
themes/xfce-4.6/gtk-3.0/gtk.css | 494 ++++++
themes/xfce/Makefile.am | 3 +-
themes/xfce/gtk-3.0/Makefile.am | 5 +
themes/xfce/gtk-3.0/gtk.css | 494 ++++++
82 files changed, 9159 insertions(+), 78 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 4a85e6c..ad88561 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,12 @@
SUBDIRS = \
themes \
- src
+ $(GTK_SUBDIRS)
+
+DIST_SUBDIRS= \
+ themes \
+ gtk-2.0 \
+ gtk-3.0
distclean-local:
rm -rf *.cache *~
diff --git a/configure.in.in b/configure.in.in
index e73d192..e423ad6 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -5,8 +5,8 @@ dnl
dnl ***************************
dnl *** Version information ***
dnl ***************************
-m4_define([gtk_xfce_engine_version_major], [2])
-m4_define([gtk_xfce_engine_version_minor], [9])
+m4_define([gtk_xfce_engine_version_major], [3])
+m4_define([gtk_xfce_engine_version_minor], [0])
m4_define([gtk_xfce_engine_version_micro], [0])
m4_define([gtk_xfce_engine_version_nano], []) dnl leave this empty to have no nano version
m4_define([gtk_xfce_engine_version_build], [@REVISION@])
@@ -54,12 +54,29 @@ AC_HEADER_STDC()
dnl ***********************************
dnl *** Check for required packages ***
dnl ***********************************
-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.20.0])
-XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.24.0])
+AM_PATH_GLIB_2_0([2.24.0])
XDT_CHECK_PACKAGE([GMODULE], [gmodule-2.0], [2.24.0])
-GTK_BINARY_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
-AC_SUBST([GTK_BINARY_VERSION])
+dnl ***********************************
+dnl *** Check for optional packages ***
+dnl ***********************************
+XDT_CHECK_OPTIONAL_PACKAGE([GTK2], [gtk+-2.0], [2.20.0], [gtk2], [Gtk 2 theme engine])
+XDT_CHECK_OPTIONAL_PACKAGE([GTK3], [gtk+-3.0], [3.0.0], [gtk3], [Gtk 3 theme engine])
+
+GTK_SUBDIRS=""
+if test x"$GTK2_FOUND" = x"yes"
+then
+ GTK2_BINARY_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
+ AC_SUBST([GTK2_BINARY_VERSION])
+ GTK_SUBDIRS="$GTK_SUBDIRS gtk-2.0"
+fi
+if test x"$GTK3_FOUND" = x"yes"
+then
+ GTK3_BINARY_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`
+ AC_SUBST([GTK3_BINARY_VERSION])
+ GTK_SUBDIRS="$GTK_SUBDIRS gtk-3.0"
+fi
+AC_SUBST([GTK_SUBDIRS])
dnl ***********************************
dnl *** Check for debugging support ***
@@ -82,46 +99,67 @@ AC_SUBST([PLATFORM_LDFLAGS])
AC_OUTPUT([
gtk-xfce-engine-2.spec
Makefile
-src/Makefile
+gtk-2.0/Makefile
+gtk-3.0/Makefile
themes/b5/Makefile
themes/b5/gtk-2.0/Makefile
+themes/b5/gtk-3.0/Makefile
themes/xfce/gtk-2.0/Makefile
+themes/xfce/gtk-3.0/Makefile
themes/xfce/Makefile
themes/xfce-4.0/gtk-2.0/Makefile
+themes/xfce-4.0/gtk-3.0/Makefile
themes/xfce-4.0/Makefile
themes/xfce-4.2/gtk-2.0/Makefile
+themes/xfce-4.2/gtk-3.0/Makefile
themes/xfce-4.2/Makefile
themes/xfce-4.4/Makefile
themes/xfce-4.4/gtk-2.0/Makefile
+themes/xfce-4.4/gtk-3.0/Makefile
themes/xfce-4.6/Makefile
themes/xfce-4.6/gtk-2.0/Makefile
+themes/xfce-4.6/gtk-3.0/Makefile
themes/basic/gtk-2.0/Makefile
+themes/basic/gtk-3.0/Makefile
themes/basic/Makefile
themes/cadmium/gtk-2.0/Makefile
+themes/cadmium/gtk-3.0/Makefile
themes/cadmium/Makefile
themes/curve/gtk-2.0/Makefile
+themes/curve/gtk-3.0/Makefile
themes/curve/Makefile
themes/dawn/gtk-2.0/Makefile
+themes/dawn/gtk-3.0/Makefile
themes/dawn/Makefile
themes/dusk/gtk-2.0/Makefile
+themes/dusk/gtk-3.0/Makefile
themes/dusk/Makefile
themes/kolors/gtk-2.0/Makefile
+themes/kolors/gtk-3.0/Makefile
themes/kolors/Makefile
themes/kde2/gtk-2.0/Makefile
+themes/kde2/gtk-3.0/Makefile
themes/kde2/Makefile
themes/light/Makefile
themes/light/gtk-2.0/Makefile
+themes/light/gtk-3.0/Makefile
themes/orange/gtk-2.0/Makefile
+themes/orange/gtk-3.0/Makefile
themes/orange/Makefile
themes/redmondxp/gtk-2.0/Makefile
+themes/redmondxp/gtk-3.0/Makefile
themes/redmondxp/Makefile
themes/saltlake/gtk-2.0/Makefile
+themes/saltlake/gtk-3.0/Makefile
themes/saltlake/Makefile
themes/smooth/gtk-2.0/Makefile
+themes/smooth/gtk-3.0/Makefile
themes/smooth/Makefile
themes/stellar/gtk-2.0/Makefile
+themes/stellar/gtk-3.0/Makefile
themes/stellar/Makefile
themes/winter/gtk-2.0/Makefile
+themes/winter/gtk-3.0/Makefile
themes/winter/Makefile
themes/Makefile
])
@@ -132,5 +170,9 @@ dnl ***************************
echo
echo "Build Configuration:"
echo
+echo "* Gtk 2 Engine: $GTK2_FOUND"
+echo "* Gtk 3 Engine: $GTK3_FOUND"
+echo
+echo "* Install Prefix: $prefix"
echo "* Debug Support: $enable_debug"
echo
diff --git a/src/Makefile.am b/gtk-2.0/Makefile.am
similarity index 86%
rename from src/Makefile.am
rename to gtk-2.0/Makefile.am
index d81392e..6311eed 100644
--- a/src/Makefile.am
+++ b/gtk-2.0/Makefile.am
@@ -4,7 +4,7 @@ INCLUDES = \
-DG_LOG_DOMAIN=\"gtk-xfce-engine\" \
$(PLATFORM_CPPFLAGS)
-enginedir = $(libdir)/gtk-2.0/$(GTK_BINARY_VERSION)/engines
+enginedir = $(libdir)/gtk-2.0/$(GTK2_BINARY_VERSION)/engines
engine_LTLIBRARIES = libxfce.la
@@ -22,13 +22,13 @@ libxfce_la_SOURCES = \
xfce_style.h
libxfce_la_CFLAGS = \
- $(GTK_CFLAGS) \
+ $(GTK2_CFLAGS) \
$(GLIB_CFLAGS) \
$(GMODULE_CFLAGS) \
$(PLATFORM_CFLAGS)
libxfce_la_LIBADD = \
- $(GTK_LIBS) \
+ $(GTK2_LIBS) \
$(GLIB_LIBS) \
$(GMODULE_LIBS)
diff --git a/src/cairo-support.c b/gtk-2.0/cairo-support.c
similarity index 100%
rename from src/cairo-support.c
rename to gtk-2.0/cairo-support.c
diff --git a/src/cairo-support.h b/gtk-2.0/cairo-support.h
similarity index 100%
rename from src/cairo-support.h
rename to gtk-2.0/cairo-support.h
diff --git a/src/ge-support.h b/gtk-2.0/ge-support.h
similarity index 100%
rename from src/ge-support.h
rename to gtk-2.0/ge-support.h
diff --git a/src/general-support.h b/gtk-2.0/general-support.h
similarity index 100%
rename from src/general-support.h
rename to gtk-2.0/general-support.h
diff --git a/src/gradient_draw.c b/gtk-2.0/gradient_draw.c
similarity index 100%
rename from src/gradient_draw.c
rename to gtk-2.0/gradient_draw.c
diff --git a/src/gradient_draw.h b/gtk-2.0/gradient_draw.h
similarity index 100%
copy from src/gradient_draw.h
copy to gtk-2.0/gradient_draw.h
diff --git a/src/xfce_rc_style.c b/gtk-2.0/xfce_rc_style.c
similarity index 100%
rename from src/xfce_rc_style.c
rename to gtk-2.0/xfce_rc_style.c
diff --git a/src/xfce_rc_style.h b/gtk-2.0/xfce_rc_style.h
similarity index 100%
rename from src/xfce_rc_style.h
rename to gtk-2.0/xfce_rc_style.h
diff --git a/src/xfce_style.h b/gtk-2.0/xfce_style.h
similarity index 100%
copy from src/xfce_style.h
copy to gtk-2.0/xfce_style.h
diff --git a/src/xfce_theme_draw.c b/gtk-2.0/xfce_theme_draw.c
similarity index 100%
rename from src/xfce_theme_draw.c
rename to gtk-2.0/xfce_theme_draw.c
diff --git a/src/xfce_theme_main.c b/gtk-2.0/xfce_theme_main.c
similarity index 100%
copy from src/xfce_theme_main.c
copy to gtk-2.0/xfce_theme_main.c
diff --git a/gtk-3.0/Makefile.am b/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..b8b425b
--- /dev/null
+++ b/gtk-3.0/Makefile.am
@@ -0,0 +1,51 @@
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -DG_LOG_DOMAIN=\"gtk-xfce-engine\" \
+ $(PLATFORM_CPPFLAGS)
+
+enginedir = $(libdir)/gtk-3.0/$(GTK3_BINARY_VERSION)/theming-engines
+
+engine_LTLIBRARIES = libxfce.la
+
+BUILT_SOURCES = \
+ xfce_typebuiltin.c \
+ xfce_typebuiltin.h
+
+libxfce_la_SOURCES = \
+ xfce_theme_main.c \
+ xfce_engine.c \
+ xfce_engine.h \
+ xfce_style_types.h \
+ xfce_typebuiltin.c \
+ xfce_typebuiltin.h
+
+libxfce_la_CFLAGS = \
+ $(GTK3_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GMODULE_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+libxfce_la_LIBADD = \
+ $(GTK3_LIBS) \
+ $(GLIB_LIBS) \
+ $(GMODULE_LIBS)
+
+libxfce_la_LDFLAGS = \
+ -module \
+ -avoid-version \
+ -no-undefined \
+ $(PLATFORM_LDFLAGS)
+
+xfce_typebuiltin.h: xfce_style_types.h Makefile xfce_typebuiltin.h.template
+ @( cd $(srcdir) && $(GLIB_MKENUMS) --template ./xfce_typebuiltin.h.template \
+ ./xfce_style_types.h ) >> xgen-gtbh \
+ && (cmp -s xgen-gtbh $@ || (echo "Creating $@..."; cp xgen-gtbh $@) ) \
+ && rm -f xgen-gtbh
+
+xfce_typebuiltin.c: xfce_style_types.h Makefile xfce_typebuiltin.c.template
+ @( cd $(srcdir) && $(GLIB_MKENUMS) --template ./xfce_typebuiltin.c.template \
+ ./xfce_style_types.h ) >> xgen-gtbc \
+ && (cmp -s xgen-gtbc $@ || (echo "Creating $@..."; cp xgen-gtbc $@) ) \
+ && rm -f xgen-gtbc
+
diff --git a/gtk-3.0/xfce_engine.c b/gtk-3.0/xfce_engine.c
new file mode 100644
index 0000000..1c2640e
--- /dev/null
+++ b/gtk-3.0/xfce_engine.c
@@ -0,0 +1,1708 @@
+/* $Id$
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Copyright (C) 1999-2004 Olivier Fourdan (fourdan at xfce.org)
+ * Copyright (C) 2011 Peter de Ridder (peter at xfce.org)
+ *
+ * Portions based Thinice port by
+ * Tim Gerla <timg at rrv.net>,
+ * Tomas Ögren <stric at ing.umu.se,
+ * Richard Hult <rhult at codefactory.se>
+ * Portions based on Smooth theme by
+ * Andrew Johnson <ajgenius at ajgenius.us>
+ * Portions based on IceGradient theme by
+ * Tim Gerla <timg at means.net>
+ * Tomas Ögren <stric at ing.umu.se>
+ * JM Perez <jose.perez at upcnet.es>
+ * Portions based on Wonderland theme by
+ * Garrett LeSage
+ * Alexander Larsson
+ * Owen Taylor <otaylor at redhat.com>
+ * Portions based on Raleigh theme by
+ * Owen Taylor <otaylor at redhat.com>
+ * Portions based on Notif theme
+ * Portions based on Notif2 theme
+ * Portions based on original GTK theme
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gtk/gtk.h>
+
+#include <math.h>
+
+#include "xfce_style_types.h"
+#include "xfce_typebuiltin.h"
+#include "xfce_engine.h"
+
+/* css properties */
+#define XFCE_NAMESPACE "xfce"
+#define SMOOTH_EDGE "smooth-edge"
+#define XFCE_SMOOTH_EDGE "-"XFCE_NAMESPACE"-"SMOOTH_EDGE
+#define GRIP_STYLE "grip-style"
+#define XFCE_GRIP_STYLE "-"XFCE_NAMESPACE"-"GRIP_STYLE
+
+/* macros to make sure that things are sane ... */
+#define GE_CAIRO_INIT \
+ cairo_set_line_width (cr, 1.0); \
+ cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); \
+ cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER);
+
+G_DEFINE_DYNAMIC_TYPE(XfceEngine, xfce_engine, GTK_TYPE_THEMING_ENGINE)
+
+/* Taken from raleigh theme engine */
+typedef enum
+{
+ CHECK_LIGHT,
+ CHECK_DARK,
+ CHECK_BASE,
+ CHECK_TEXT,
+ CHECK_CROSS,
+ CHECK_DASH,
+ RADIO_LIGHT,
+ RADIO_DARK,
+ RADIO_BASE,
+ RADIO_TEXT
+}
+Part;
+
+#define PART_SIZE 13
+
+static const guint32 check_light_bits[] = {
+ 0x0000, 0x0000, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800,
+ 0x0800, 0x0800, 0x0ffc, 0x0000,
+};
+static const guint32 check_dark_bits[] = {
+ 0x0000, 0x0ffe, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
+ 0x0002, 0x0002, 0x0002, 0x0000,
+};
+static const guint32 check_base_bits[] = {
+ 0x0000, 0x0000, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc,
+ 0x07fc, 0x07fc, 0x0000, 0x0000,
+};
+static const guint32 check_text_bits[] = {
+ 0x0000, 0x0000, 0x1c00, 0x0f00, 0x0380, 0x01c0, 0x00e0, 0x0073, 0x003f,
+ 0x003e, 0x001c, 0x0018, 0x0008
+};
+static const guint32 check_cross_bits[] = {
+ 0x0000, 0x0000, 0x0000, 0x0300, 0x0380, 0x01d8, 0x00f8, 0x0078, 0x0038,
+ 0x0018, 0x0000, 0x0000, 0x0000,
+};
+static const guint32 check_dash_bits[] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f8, 0x03f8, 0x03f8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000,
+};
+static const guint32 radio_light_bits[] = {
+ 0x0000, 0x0000, 0x0000, 0x0400, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800,
+ 0x0400, 0x0208, 0x01f0, 0x0000,
+};
+static const guint32 radio_dark_bits[] = {
+ 0x0000, 0x01f0, 0x0208, 0x0004, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
+ 0x0004, 0x0000, 0x0000, 0x0000,
+};
+static const guint32 radio_base_bits[] = {
+ 0x0000, 0x0000, 0x01f0, 0x03f8, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc,
+ 0x03f8, 0x01f0, 0x0000, 0x0000,
+};
+static const guint32 radio_text_bits[] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x00e0, 0x01f0, 0x01f0, 0x01f0, 0x00e0,
+ 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static struct
+{
+ const guint32 *bits;
+ cairo_surface_t *bmap;
+}
+parts[] =
+{
+ { check_light_bits, NULL },
+ { check_dark_bits, NULL },
+ { check_base_bits, NULL },
+ { check_text_bits, NULL },
+ { check_cross_bits, NULL },
+ { check_dash_bits, NULL },
+ { radio_light_bits, NULL },
+ { radio_dark_bits, NULL },
+ { radio_base_bits, NULL },
+ { radio_text_bits, NULL }
+};
+
+/* internal functions */
+static void xfce_draw_grips(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkOrientation orientation);
+
+static void render_line(GtkThemingEngine * engine, cairo_t * cr, gdouble x1, gdouble y1, gdouble x2, gdouble y2);
+static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height);
+
+static void render_check(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height);
+static void render_option(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height);
+static void render_frame_gap(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkPositionType gap_side, gdouble gap_s, gdouble gap_e);
+static void render_extension(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkPositionType gap_side);
+static void render_slider(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkOrientation orientation);
+static void render_handle(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height);
+static void render_activity(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height);
+
+static void color_dark2light(const GdkRGBA * color, GdkRGBA * color_return)
+{
+ GtkSymbolicColor *literal, *shade;
+
+ literal = gtk_symbolic_color_new_literal(color);
+ shade = gtk_symbolic_color_new_shade(literal, 1.3 / 0.7);
+ gtk_symbolic_color_unref(literal);
+
+ gtk_symbolic_color_resolve(shade, NULL, color_return);
+ gtk_symbolic_color_unref(shade);
+}
+
+static void color_dark2light_mid(const GdkRGBA * color_dark_, GdkRGBA * color_light_, GdkRGBA * color_mid_)
+{
+ GtkSymbolicColor *dark, *light, *mid;
+
+ dark = gtk_symbolic_color_new_literal(color_dark_);
+ light = gtk_symbolic_color_new_shade(dark, 1.3 / 0.7);
+
+ gtk_symbolic_color_resolve(light, NULL, color_light_);
+ mid = gtk_symbolic_color_new_mix(light, dark, 0.5);
+ gtk_symbolic_color_unref(light);
+ gtk_symbolic_color_unref(dark);
+
+ gtk_symbolic_color_resolve(mid, NULL, color_mid_);
+ gtk_symbolic_color_unref(mid);
+}
+
+static void xfce_draw_grip_rough (GtkThemingEngine * engine, cairo_t * cr, GtkStateFlags state, gdouble x, gdouble y, gdouble width, gdouble height, GtkOrientation orientation)
+{
+ gint xx, yy;
+ gint xthick, ythick;
+ GdkRGBA light, dark;
+ GtkBorder border;
+
+ gtk_theming_engine_get_border(engine, state, &border);
+
+ xthick = border.left;
+ ythick = border.top;
+
+ gtk_theming_engine_get_border_color(engine, state, &dark);
+ color_dark2light(&dark, &light);
+
+ if (orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ if (width > 15 + xthick)
+ {
+ gint len = (height - 2 * (ythick + 2) > 4 ? height - 2 * (ythick + 2) : height - 2 * ythick);
+ gint delta = x + (width / 2) - 5;
+ yy = y + (height - len) / 2;
+ for(xx = 0; xx < 10; xx += 2)
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, xx + delta + 0.5, yy + 0.5);
+ cairo_line_to(cr, xx + delta + 0.5, yy + len - 0.5);
+ cairo_stroke(cr);
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, xx + delta + 1.5, yy + 0.5);
+ cairo_line_to(cr, xx + delta + 1.5, yy + len - 0.5);
+ cairo_stroke(cr);
+ }
+ }
+ }
+ else
+ {
+ if (height > 15 + ythick)
+ {
+ gint len = (width - 2 * (xthick + 2) > 4 ? width - 2 * (xthick + 2) : width - 2 * xthick);
+ gint delta = y + (height / 2) - 5;
+ xx = x + (width - len) / 2;
+ for(yy = 0; yy < 10; yy += 2)
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, xx + 0.5, yy + delta + 0.5);
+ cairo_line_to(cr, xx + len - 0.5, yy + delta + 0.5);
+ cairo_stroke(cr);
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, xx + 0.5, yy + delta + 1.5);
+ cairo_line_to(cr, xx + len - 0.5, yy + delta + 1.5);
+ cairo_stroke(cr);
+ }
+ }
+ }
+}
+
+static void xfce_draw_grip_slide (GtkThemingEngine * engine, cairo_t * cr, GtkStateFlags state, gdouble x, gdouble y, gdouble width, gdouble height, GtkOrientation orientation)
+{
+ gint gx, gy, gwidth, gheight;
+ GdkRGBA light, dark, mid, bg;
+ GtkBorder border;
+
+ gtk_theming_engine_get_border(engine, state, &border);
+
+ gtk_theming_engine_get_border_color(engine, state, &dark);
+ color_dark2light_mid(&dark, &light, &mid);
+ gtk_theming_engine_get_color(engine, state, &bg);
+
+ gx = gy = gwidth = gheight = 0;
+
+ if (orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ gint delta = ((gint)((height - 3) / 2));
+ gx = x + delta;
+ gy = y + delta;
+ gwidth = width - 2 * delta - 1;
+ gheight = height - 2 * delta - 1;
+ }
+ else
+ {
+ gint delta = ((gint)((width - 3) / 2));
+ gx = x + delta;
+ gy = y + delta;
+ gwidth = width - 2 * delta - 1;
+ gheight = height - 2 * delta - 1;
+ }
+
+ if ((gheight > 1) && (gwidth > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &bg);
+ cairo_rectangle(cr, gx + 1, gy + 1, gwidth - 1, gheight - 1);
+ cairo_fill(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, gx + 0.5, gy + gheight + 0.5);
+ cairo_line_to(cr, gx + 0.5, gy + 0.5);
+ cairo_line_to(cr, gx + gwidth + 0.5, gy + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, gx + 0.5, gy + gheight + 0.5);
+ cairo_line_to(cr, gx + gwidth + 0.5, gy + gheight + 0.5);
+ cairo_line_to(cr, gx + gwidth + 0.5, gy + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_rectangle(cr, gx, gy, 1, 1);
+ cairo_rectangle(cr, gx + gwidth, gy, 1, 1);
+ cairo_rectangle(cr, gx, gy + gheight, 1, 1);
+ cairo_rectangle(cr, gx + gwidth, gy + gheight, 1, 1);
+ cairo_fill(cr);
+ }
+}
+
+static void xfce_draw_grips(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkOrientation orientation)
+{
+ GtkStateFlags state;
+ XfceGripStyle grip_style = XFCE_GRIP_ROUGH;
+
+ state = gtk_theming_engine_get_state(engine);
+ gtk_theming_engine_get(engine, state, XFCE_GRIP_STYLE, &grip_style, NULL);
+
+ switch (grip_style)
+ {
+ case XFCE_GRIP_DISABLED:
+ break;
+ case XFCE_GRIP_ROUGH:
+ xfce_draw_grip_rough (engine, cr, state, x, y, width, height, orientation);
+ break;
+ case XFCE_GRIP_SLIDE:
+ xfce_draw_grip_slide (engine, cr, state, x, y, width, height, orientation);
+ break;
+ }
+}
+
+static void render_line(GtkThemingEngine * engine, cairo_t * cr, gdouble x1, gdouble y_1, gdouble x2, gdouble y_2)
+{
+ gint16 xthick, ythick;
+ gint16 thickness_light;
+ gint16 thickness_dark;
+ GtkStateFlags state;
+ GdkRGBA light, dark;
+ GtkBorder border;
+ GtkBorderStyle border_style;
+
+ state = gtk_theming_engine_get_state(engine);
+
+ gtk_theming_engine_get(engine, state, GTK_STYLE_PROPERTY_BORDER_STYLE, &border_style, NULL);
+
+#if 0
+ if (border_style == GTK_BORDER_STYLE_NONE)
+ return;
+#endif
+
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+
+ gtk_theming_engine_get_border_color(engine, state, &dark);
+ gtk_theming_engine_get_border(engine, state, &border);
+
+ xthick = border.left;
+ ythick = border.top;
+
+#if 0
+ switch (border_style)
+ {
+ case GTK_BORDER_STYLE_NONE:
+ break;
+ case GTK_BORDER_STYLE_SOLID:
+ light = dark;
+ break;
+ case GTK_BORDER_STYLE_INSET:
+ break;
+ case GTK_BORDER_STYLE_OUTSET:
+ light = dark;
+ color_dark2light(&light, &dark);
+ break;
+ }
+#endif
+ color_dark2light(&dark, &light);
+
+ /* Vertical */
+ if (floor(x1 - x2) == 0)
+ {
+ thickness_light = xthick / 2;
+ thickness_dark = xthick - thickness_light;
+
+ /* Compensation for the way x and y are caclculated */
+ x1 += 1 + thickness_dark - thickness_light;
+ y_2 += 1;
+
+ cairo_set_line_width (cr, thickness_dark);
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x1 - (thickness_dark / 2.0), y_1);
+ cairo_line_to(cr, x1 - (thickness_dark / 2.0), y_2);
+ cairo_stroke(cr);
+
+ cairo_set_line_width (cr, thickness_light);
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x1 + (thickness_light / 2.0), y_1);
+ cairo_line_to(cr, x1 + (thickness_light / 2.0), y_2);
+ cairo_stroke(cr);
+ }
+ else
+ {
+ thickness_light = ythick / 2;
+ thickness_dark = ythick - thickness_light;
+
+ /* Compensation for the way x and y are caclculated */
+ y_1 += 1 + thickness_dark - thickness_light;
+ x2 += 1;
+
+ cairo_set_line_width (cr, thickness_dark);
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x1, y_1 - (thickness_dark / 2.0));
+ cairo_line_to(cr, x2, y_1 - (thickness_dark / 2.0));
+ cairo_stroke(cr);
+
+ cairo_set_line_width (cr, thickness_light);
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x1, y_1 + (thickness_light / 2.0));
+ cairo_line_to(cr, x2, y_1 + (thickness_light / 2.0));
+ cairo_stroke(cr);
+ }
+}
+
+static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height)
+{
+ gint xt, yt;
+ gint xthick, ythick;
+ GtkStateFlags state;
+ GtkBorderStyle border_style;
+ GdkRGBA dark, light, mid, bg;
+ GdkRGBA black = {0.0, 0.0, 0.0, 1.0}; /* black */
+ gboolean smooth_edge;
+ GtkBorder border;
+ GtkJunctionSides junction;
+
+ state = gtk_theming_engine_get_state(engine);
+ gtk_theming_engine_get(engine, state, GTK_STYLE_PROPERTY_BORDER_STYLE, &border_style, NULL);
+
+ if (border_style == GTK_BORDER_STYLE_NONE)
+ return;
+
+ GE_CAIRO_INIT;
+
+ gtk_theming_engine_get_border_color(engine, state, &dark);
+ gtk_theming_engine_get_border(engine, state, &border);
+
+ xthick = border.left;
+ ythick = border.top;
+
+ /* Spin buttons are a special case */
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON))
+ {
+ junction = gtk_theming_engine_get_junction_sides(engine);
+ if ((junction & GTK_JUNCTION_TOP) == GTK_JUNCTION_TOP || (junction & GTK_JUNCTION_BOTTOM) == GTK_JUNCTION_BOTTOM)
+ {
+ if (!(state & GTK_STATE_FLAG_ACTIVE))
+ {
+ border_style = GTK_BORDER_STYLE_OUTSET;
+ }
+
+ if (state == GTK_STATE_FLAG_NORMAL || state & GTK_STATE_FLAG_INSENSITIVE)
+ {
+ gtk_theming_engine_get_border_color(engine, state, &dark);
+ }
+ else
+ {
+ gtk_theming_engine_get_border_color(engine, GTK_STATE_FLAG_NORMAL, &dark);
+ }
+
+ y = floor(y);
+ height = ceil(height);
+
+ xt = MIN(xthick, width - 1);
+ yt = MIN(ythick, height - 1);
+
+ gtk_theming_engine_get(engine, state, XFCE_SMOOTH_EDGE, &smooth_edge, NULL);
+ color_dark2light_mid(&dark, &light, &mid);
+ if (smooth_edge)
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ cairo_rectangle(cr, x - 2, y, 1, 1);
+ }
+ if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
+ {
+ cairo_rectangle(cr, x - 2, y + height - 1, 1, 1);
+ }
+ cairo_fill(cr);
+
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ cairo_move_to(cr, x - 0.5, y + 1.5);
+ }
+ else
+ {
+ cairo_move_to(cr, x - 0.5, y + 0.5);
+ }
+ if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
+ {
+ cairo_line_to(cr, x - 0.5, y + height - 1.5);
+ }
+ else
+ {
+ cairo_line_to(cr, x - 0.5, y + height - 0.5);
+ }
+ cairo_stroke(cr);
+
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_rectangle(cr, x - 2, y + 1, 1, 1);
+ cairo_fill(cr);
+ }
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ cairo_move_to(cr, x - 1.5, y + 2.5);
+ }
+ else
+ {
+ cairo_move_to(cr, x - 1.5, y + 0.5);
+ }
+ if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
+ {
+ cairo_line_to(cr, x - 1.5, y + height - 1.5);
+ }
+ else
+ {
+ cairo_line_to(cr, x - 1.5, y + height - 0.5);
+ }
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ cairo_rectangle(cr, x - 1, y, 1, 1);
+ }
+ if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
+ {
+ cairo_rectangle(cr, x - 1, y + height - 1, 1, 1);
+ }
+ cairo_fill(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x - 0.5, y + 0.5);
+ cairo_line_to(cr, x - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ cairo_rectangle(cr, x - 1, y, 1, 1);
+ }
+ if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
+ {
+ cairo_rectangle(cr, x - 1, y + height - 1, 1, 1);
+ }
+ cairo_fill(cr);
+ }
+ }
+ else
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x - 1.5, y + 0.5);
+ cairo_line_to(cr, x - 0.5, y + 0.5);
+ cairo_stroke(cr);
+ }
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ cairo_move_to(cr, x - 0.5, y + 1.5);
+ }
+ else
+ {
+ cairo_move_to(cr, x - 0.5, y + 0.5);
+ }
+ cairo_line_to(cr, x - 0.5, y + height - 0.5);
+ if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
+ {
+ cairo_line_to(cr, x - 1.5, y + height - 0.5);
+ }
+ cairo_stroke(cr);
+
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ gdk_cairo_set_source_rgba(cr, &black);
+ cairo_rectangle(cr, x - 2, y + 1, 1, 1);
+ cairo_fill(cr);
+ }
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ cairo_move_to(cr, x - 1.5, y + 2.5);
+ }
+ else
+ {
+ cairo_move_to(cr, x - 1.5, y + 0.5);
+ }
+ if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
+ {
+ cairo_line_to(cr, x - 1.5, y + height - 1.5);
+ }
+ else
+ {
+ cairo_line_to(cr, x - 1.5, y + height - 0.5);
+ }
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_rectangle(cr, x - 1, y, 1, 1);
+ cairo_fill(cr);
+ }
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
+ {
+ cairo_move_to(cr, x - 0.5, y + 1.5);
+ }
+ else
+ {
+ cairo_move_to(cr, x - 0.5, y + 0.5);
+ }
+ cairo_line_to(cr, x - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ }
+
+ if (state != GTK_STATE_FLAG_NORMAL && !(state & GTK_STATE_FLAG_INSENSITIVE))
+ {
+ gtk_theming_engine_get_border_color(engine, state, &dark);
+ }
+ }
+ }
+
+ xt = MIN(xthick, width - 1);
+ yt = MIN(ythick, height - 1);
+
+ switch (border_style)
+ {
+ case GTK_BORDER_STYLE_NONE:
+ break;
+ case GTK_BORDER_STYLE_SOLID:
+ gdk_cairo_set_source_rgba(cr, &dark);
+ if ((xt > 1) && (yt > 1))
+ {
+ cairo_set_line_width(cr, 2.0);
+ cairo_rectangle(cr, x + 1, y + 1, width - 2, height - 2);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
+ }
+ cairo_stroke(cr);
+ break;
+ case GTK_BORDER_STYLE_INSET:
+ gtk_theming_engine_get(engine, state, XFCE_SMOOTH_EDGE, &smooth_edge, NULL);
+ color_dark2light_mid(&dark, &light, &mid);
+ if (smooth_edge)
+ {
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_TROUGH))
+ {
+ /* Do nothing */
+ }
+ else if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 1.5, y + 0.5);
+ cairo_line_to(cr, x + width - 1.5, y + 0.5);
+ cairo_move_to(cr, x + 0.5, y + 1.5);
+ cairo_line_to(cr, x + 0.5, y + height - 1.5);
+
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 0.5);
+ cairo_move_to(cr, x + width - 0.5, y + 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_move_to(cr, x + width - 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 2.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 2.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_rectangle(cr, x, y, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y, 1, 1);
+ cairo_rectangle(cr, x, y + height - 1, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y + height - 1, 1, 1);
+ cairo_fill(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 1.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_move_to(cr, x + 0.5, y + 1.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_rectangle(cr, x, y, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y, 1, 1);
+ cairo_rectangle(cr, x, y + height - 1, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y + height - 1, 1, 1);
+ cairo_fill(cr);
+ }
+ }
+ else
+ {
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_TROUGH))
+ {
+ gtk_theming_engine_get_border_color(engine, GTK_STATE_FLAG_ACTIVE, &dark);
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &black);
+ cairo_move_to(cr, x + width - 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 2.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 2.5);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+ }
+ }
+ break;
+ case GTK_BORDER_STYLE_OUTSET:
+ gtk_theming_engine_get(engine, state, XFCE_SMOOTH_EDGE, &smooth_edge, NULL);
+ color_dark2light_mid(&dark, &light, &mid);
+ if (smooth_edge)
+ {
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON) && !(state & GTK_STATE_FLAG_PRELIGHT))
+ {
+ /* Do nothing */
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_PROGRESSBAR))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
+ cairo_stroke(cr);
+
+ gtk_theming_engine_get_border_color(engine, GTK_STATE_FLAG_NORMAL, &dark);
+ color_dark2light_mid(&dark, &light, &mid);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_rectangle(cr, x, y, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y, 1, 1);
+ cairo_rectangle(cr, x, y + height - 1, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y + height - 1, 1, 1);
+ cairo_fill(cr);
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_MENU))
+ {
+ if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
+ cairo_stroke(cr);
+ }
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_MENUBAR))
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_move_to(cr, x + 0.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_DOCK) ||
+ gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_TOOLBAR))
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_move_to(cr, x + 0.5 , y + height - 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SLIDER))
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + width - 2.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 2.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_move_to(cr, x + 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 1.5);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+ }
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_FRAME))
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + width - 1.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gtk_theming_engine_get_background_color(engine, state, &bg);
+ gdk_cairo_set_source_rgba(cr, &bg);
+ cairo_move_to(cr, x + width - 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 1.5);
+
+ cairo_move_to(cr, x + 2.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 2.5);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+ }
+ }
+ else
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 1.5, y + 0.5);
+ cairo_line_to(cr, x + width - 1.5, y + 0.5);
+ cairo_move_to(cr, x + 0.5, y + 1.5);
+ cairo_line_to(cr, x + 0.5, y + height - 1.5);
+
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 0.5);
+ cairo_move_to(cr, x + width - 0.5, y + 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + width - 2.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 2.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_move_to(cr, x + 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_rectangle(cr, x, y, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y, 1, 1);
+ cairo_rectangle(cr, x, y + height - 1, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y + height - 1, 1, 1);
+ cairo_fill(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 1.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_move_to(cr, x + 0.5, y + 1.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_rectangle(cr, x, y, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y, 1, 1);
+ cairo_rectangle(cr, x, y + height - 1, 1, 1);
+ cairo_rectangle(cr, x + width - 1, y + height - 1, 1, 1);
+ cairo_fill(cr);
+ }
+ }
+ }
+ else
+ {
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON) && !(state & GTK_STATE_FLAG_PRELIGHT))
+ {
+ /* Do nothing */
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_MENUBAR))
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_move_to(cr, x + 0.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_DOCK) ||
+ gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_TOOLBAR))
+ {
+ if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &mid);
+ cairo_move_to(cr, x + 0.5 , y + height - 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ }
+ else if ((xt > 1) && (yt > 1))
+ {
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &black);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + width - 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 2.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 2.5);
+ cairo_stroke(cr);
+ }
+ else if ((xt > 0) && (yt > 0))
+ {
+ gdk_cairo_set_source_rgba(cr, &light);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &dark);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 1.5);
+ cairo_stroke(cr);
+ }
+ }
+ break;
+ }
+}
+
+static cairo_surface_t *get_part_bmap (Part part)
+{
+ if (!parts[part].bmap)
+ {
+ parts[part].bmap = cairo_image_surface_create_for_data((guchar*)parts[part].bits, CAIRO_FORMAT_A1, PART_SIZE, PART_SIZE, sizeof(guint32));
+ }
+ return parts[part].bmap;
+}
+
+static void draw_part(cairo_t * cr, const GdkRGBA * c, gdouble x, gdouble y, Part part)
+{
+ gdk_cairo_set_source_rgba(cr, c);
+
+ cairo_mask_surface(cr, get_part_bmap (part), x, y);
+}
+
+static void render_check(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height)
+{
+ GtkStateFlags state;
+ GdkRGBA bg, border, fg;
+
+ x -= (1 + PART_SIZE - width) / 2;
+ y -= (1 + PART_SIZE - height) / 2;
+
+ state = gtk_theming_engine_get_state(engine);
+ gtk_theming_engine_get_background_color(engine, state, &bg);
+ gtk_theming_engine_get_border_color(engine, state, &border);
+ gtk_theming_engine_get_color(engine, state, &fg);
+
+ if (!gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_MENUITEM))
+ draw_part(cr, &bg, x, y, CHECK_BASE);
+ draw_part(cr, &border, x, y, CHECK_LIGHT);
+ draw_part(cr, &border, x, y, CHECK_DARK);
+
+ if (state & GTK_STATE_FLAG_INCONSISTENT)
+ {
+ draw_part(cr, &fg, x, y, CHECK_DASH);
+ }
+ else if (state & GTK_STATE_FLAG_ACTIVE)
+ {
+ draw_part(cr, &fg, x, y, CHECK_CROSS);
+ }
+}
+
+static void render_option(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height)
+{
+ GtkStateFlags state;
+ GdkRGBA bg, border, fg;
+
+ x -= (1 + PART_SIZE - width) / 2;
+ y -= (1 + PART_SIZE - height) / 2;
+
+ state = gtk_theming_engine_get_state(engine);
+ gtk_theming_engine_get_background_color(engine, state, &bg);
+ gtk_theming_engine_get_border_color(engine, state, &border);
+ gtk_theming_engine_get_color(engine, state, &fg);
+
+ if (!gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_MENUITEM))
+ draw_part(cr, &bg, x, y, RADIO_BASE);
+ draw_part(cr, &border, x, y, RADIO_LIGHT);
+ draw_part(cr, &border, x, y, RADIO_DARK);
+
+ if (state & GTK_STATE_FLAG_INCONSISTENT)
+ {
+ draw_part(cr, &fg, x, y, CHECK_DASH);
+ }
+ else if (state & GTK_STATE_FLAG_ACTIVE)
+ {
+ draw_part(cr, &fg, x, y, RADIO_TEXT);
+ }
+}
+
+static void render_frame_gap(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkPositionType gap_side, gdouble gap_s, gdouble gap_e)
+{
+ GtkStateFlags state;
+ GtkBorderStyle border_style;
+ gdouble x0, y_0, x1, y_1;
+ gdouble ex, ey, ew, eh;
+
+ state = gtk_theming_engine_get_state(engine);
+
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_NOTEBOOK))
+ {
+ GdkRGBA c1;
+ GdkRGBA c2;
+ GdkRGBA c3;
+ GdkRGBA c4 = {0.0, 0.0, 0.0, 1.0}; /* black */
+ gboolean smooth_edge;
+
+ GE_CAIRO_INIT;
+
+ gtk_theming_engine_get(engine, state, XFCE_SMOOTH_EDGE, &smooth_edge, NULL);
+ if (smooth_edge)
+ {
+ gtk_theming_engine_get_background_color(engine, state, &c2);
+ gtk_theming_engine_get_border_color(engine, state, &c1);
+ c3 = c2;
+ c4 = c1;
+ }
+ else
+ {
+ gtk_theming_engine_get_border_color(engine, state, &c1);
+ color_dark2light(&c1, &c2);
+ c3 = c1;
+ }
+
+ switch (gap_side)
+ {
+ case GTK_POS_TOP:
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + 2.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_stroke(cr);
+
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+ if (gap_s > 0)
+ {
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x, y + 0.5);
+ cairo_line_to(cr, x + gap_s, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + 1, y + 1.5);
+ cairo_line_to(cr, x + gap_s, y + 1.5);
+ cairo_stroke(cr);
+
+ cairo_rectangle(cr, x + gap_s, y + 0.5, 1, 1);
+ cairo_move_to(cr, x + gap_s, y);
+ cairo_line_to(cr, x + gap_s + 1, y + 0.5);
+ cairo_fill(cr);
+ }
+ if ((width - gap_e) > 0)
+ {
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + gap_e, y + 0.5);
+ cairo_line_to(cr, x + width - 1, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + gap_e, y + 1.5);
+ cairo_line_to(cr, x + width - 1, y + 1.5);
+
+ cairo_move_to(cr, x + gap_e - 1, y + 0.5);
+ cairo_line_to(cr, x + gap_e, y + 0.5);
+ cairo_stroke(cr);
+ }
+ break;
+ case GTK_POS_BOTTOM:
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + width - 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + width - 1.5, y + 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+ if (gap_s > 0)
+ {
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x, y + height - 0.5);
+ cairo_line_to(cr, x + gap_s, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + 1, y + height - 1.5);
+ cairo_line_to(cr, x + gap_s, y + height - 1.5);
+
+ cairo_move_to(cr, x + gap_s, y + height - 0.5);
+ cairo_line_to(cr, x + gap_s + 1, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ if ((width - gap_e) > 0)
+ {
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + gap_e, y + height - 0.5);
+ cairo_line_to(cr, x + width - 1, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + gap_e, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1, y + height - 1.5);
+
+ cairo_move_to(cr, x + gap_e - 1, y + height - 0.5);
+ cairo_line_to(cr, x + gap_e, y + height - 0.5);
+ cairo_stroke(cr);
+ }
+ break;
+ case GTK_POS_LEFT:
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + 0.5, y + 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + 0.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_stroke(cr);
+
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+ if (gap_s > 0)
+ {
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + 0.5, y);
+ cairo_line_to(cr, x + 0.5, y + gap_s);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + 1.5, y + 1);
+ cairo_line_to(cr, x + 1.5, y + gap_s);
+
+ cairo_move_to(cr, x + 0.5, y + gap_s);
+ cairo_line_to(cr, x + 0.5, y + gap_s + 1);
+ cairo_stroke(cr);
+ }
+ if ((width - gap_e) > 0)
+ {
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + 0.5, y + gap_e);
+ cairo_line_to(cr, x + 0.5, y + height - 1);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + 1.5, y + gap_e);
+ cairo_line_to(cr, x + 1.5, y + height - 1);
+
+ cairo_move_to(cr, x + 0.5, y + gap_e - 1);
+ cairo_line_to(cr, x + 0.5, y + gap_e);
+ cairo_stroke(cr);
+ }
+ break;
+ case GTK_POS_RIGHT:
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + width - 0.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+ if (gap_s > 0)
+ {
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + width - 0.5, y);
+ cairo_line_to(cr, x + width - 0.5, y + gap_s);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + width - 1.5, y + 1);
+ cairo_line_to(cr, x + width - 1.5, y + gap_s);
+
+ cairo_move_to(cr, x + width - 0.5, y + gap_s);
+ cairo_line_to(cr, x + width - 0.5, y + gap_s + 1);
+ cairo_stroke(cr);
+ }
+ if ((width - gap_e) > 0)
+ {
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + width - 0.5, y + gap_e);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + width - 1.5, y + gap_e);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1);
+
+ cairo_move_to(cr, x + width - 0.5, y + gap_e - 1);
+ cairo_line_to(cr, x + width - 0.5, y + gap_e);
+ cairo_stroke(cr);
+ }
+ break;
+ }
+
+ return;
+ }
+
+ gtk_theming_engine_get(engine, state, GTK_STYLE_PROPERTY_BORDER_STYLE, &border_style, NULL);
+
+ if (border_style == GTK_BORDER_STYLE_NONE)
+ return;
+
+ switch (gap_side)
+ {
+ case GTK_POS_TOP:
+ ex = x + gap_s;
+ ey = y;
+ ew = gap_e - gap_s;
+ eh = 2;
+ break;
+ case GTK_POS_BOTTOM:
+ ex = x + gap_s;
+ ey = y + height - 2;
+ ew = gap_e - gap_s;
+ eh = 2;
+ break;
+ case GTK_POS_LEFT:
+ ex = x;
+ ey = y + gap_s;
+ ew = 2;
+ eh = gap_e - gap_s;
+ break;
+ case GTK_POS_RIGHT:
+ ex = x + width - 2;
+ ey = y + gap_s;
+ ew = 2;
+ eh = gap_e - gap_s;
+ break;
+ }
+
+ cairo_save (cr);
+
+ cairo_clip_extents (cr, &x0, &y_0, &x1, &y_1);
+ cairo_rectangle (cr, x0, y_0, x1 - x0, ey - y_0);
+ cairo_rectangle (cr, x0, ey, ex - x0, eh);
+ cairo_rectangle (cr, ex + ew, ey, x1 - (ex + ew), eh);
+ cairo_rectangle (cr, x0, ey + eh, x1 - x0, y_1 - (ey + eh));
+ cairo_clip (cr);
+
+ render_frame (engine, cr, x, y, width, height);
+
+ cairo_restore (cr);
+}
+
+static void render_extension(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkPositionType gap_side)
+{
+ GtkStateFlags state;
+ gboolean smooth_edge = FALSE;
+ GdkRGBA c1;
+ GdkRGBA c2;
+ GdkRGBA c3;
+ GdkRGBA c4 = {0.0, 0.0, 0.0, 1.0}; /* black */
+ GtkBorder border;
+
+ GE_CAIRO_INIT;
+
+ state = gtk_theming_engine_get_state(engine);
+ gtk_theming_engine_get_border(engine, state, &border);
+
+ GTK_THEMING_ENGINE_GET_CLASS(engine)->render_background(engine, cr, x - border.left + 1, y - border.top + 1, width + border.left + border.right - 2, height + border.top + border.bottom - 2);
+
+ gtk_theming_engine_get(engine, state, XFCE_SMOOTH_EDGE, &smooth_edge, NULL);
+
+ if (smooth_edge)
+ {
+ gtk_theming_engine_get_background_color(engine, state, &c2);
+ gtk_theming_engine_get_border_color(engine, state, &c1);
+ c3 = c2;
+ c4 = c1;
+ }
+ else
+ {
+ gtk_theming_engine_get_border_color(engine, state, &c1);
+ color_dark2light(&c1, &c2);
+ c3 = c1;
+ }
+
+ switch (gap_side)
+ {
+ case GTK_POS_TOP:
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + 2.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 0.5);
+ cairo_move_to(cr, x + width - 0.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+ break;
+ case GTK_POS_BOTTOM:
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + 1.5, y + 0.5);
+ cairo_line_to(cr, x + width - 1.5, y + 0.5);
+ cairo_move_to(cr, x + 0.5, y + 1.5);
+ cairo_line_to(cr, x + 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + width - 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + width - 1.5, y + 2.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + width - 0.5, y + 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ break;
+ case GTK_POS_LEFT:
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + 0.5, y + 0.5);
+ cairo_line_to(cr, x + width - 1.5, y + 0.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + 0.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 1.5, y + 2.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + 0.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 1.5, y + height - 0.5);
+ cairo_move_to(cr, x + width - 0.5, y + 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+ break;
+ case GTK_POS_RIGHT:
+ gdk_cairo_set_source_rgba(cr, &c1);
+ cairo_move_to(cr, x + 1.5, y + 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + 0.5);
+ cairo_move_to(cr, x + 0.5, y + 1.5);
+ cairo_line_to(cr, x + 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c2);
+ cairo_move_to(cr, x + width - 0.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + 1.5);
+ cairo_line_to(cr, x + 1.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c3);
+ cairo_move_to(cr, x + 2.5, y + height - 1.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 1.5);
+ cairo_stroke(cr);
+
+ gdk_cairo_set_source_rgba(cr, &c4);
+ cairo_move_to(cr, x + 1.5, y + height - 0.5);
+ cairo_line_to(cr, x + width - 0.5, y + height - 0.5);
+ cairo_stroke(cr);
+ break;
+ }
+}
+
+static void render_slider(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkOrientation orientation)
+{
+ GE_CAIRO_INIT;
+
+ GTK_THEMING_ENGINE_GET_CLASS(engine)->render_background(engine, cr, x, y, width, height);
+ GTK_THEMING_ENGINE_GET_CLASS(engine)->render_frame(engine, cr, x, y, width, height);
+ xfce_draw_grips(engine, cr, x, y, width, height, orientation);
+}
+
+static void render_handle(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height)
+{
+ GtkOrientation orientation;
+
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_GRIP))
+ {
+ GTK_THEMING_ENGINE_CLASS(xfce_engine_parent_class)->render_handle(engine, cr, x, y, width, height);
+ return;
+ }
+
+ GE_CAIRO_INIT;
+
+ orientation = GTK_ORIENTATION_HORIZONTAL;
+ if (height > width)
+ orientation = GTK_ORIENTATION_VERTICAL;
+
+#if 0
+ GTK_THEMING_ENGINE_GET_CLASS(engine)->render_background(engine, cr, x, y, width, height);
+#endif
+ xfce_draw_grips(engine, cr, x, y, width, height, orientation);
+}
+
+static void render_activity(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height)
+{
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_PROGRESSBAR))
+ {
+ GTK_THEMING_ENGINE_GET_CLASS(engine)->render_background(engine, cr, x, y, width, height);
+ GTK_THEMING_ENGINE_GET_CLASS(engine)->render_frame(engine, cr, x, y, width, height);
+ }
+ else
+ {
+ GTK_THEMING_ENGINE_CLASS(xfce_engine_parent_class)->render_activity(engine, cr, x, y, width, height);
+ }
+}
+
+void xfce_engine_register_types(GTypeModule * module)
+{
+ xfce_engine_register_type(module);
+}
+
+static void xfce_engine_init(XfceEngine * engine)
+{
+}
+
+static void xfce_engine_class_init(XfceEngineClass * klass)
+{
+ GtkThemingEngineClass *engine_class = GTK_THEMING_ENGINE_CLASS(klass);
+
+ engine_class->render_line = render_line;
+ engine_class->render_frame = render_frame;
+ engine_class->render_check = render_check;
+ engine_class->render_option = render_option;
+ engine_class->render_frame_gap = render_frame_gap;
+ engine_class->render_extension = render_extension;
+ engine_class->render_slider = render_slider;
+ engine_class->render_handle = render_handle;
+ engine_class->render_activity = render_activity;
+
+ gtk_theming_engine_register_property(XFCE_NAMESPACE, NULL,
+ g_param_spec_boolean(SMOOTH_EDGE, "Smooth edge", "Smooth edge",
+ FALSE, 0));
+ gtk_theming_engine_register_property(XFCE_NAMESPACE, NULL,
+ g_param_spec_enum(GRIP_STYLE, "Grip style", "Grip style",
+ XFCE_TYPE_GRIP_STYLE, XFCE_GRIP_ROUGH, 0));
+}
+
+static void xfce_engine_class_finalize(XfceEngineClass * klass)
+{
+}
+
diff --git a/src/xfce_theme_main.c b/gtk-3.0/xfce_engine.h
similarity index 65%
copy from src/xfce_theme_main.c
copy to gtk-3.0/xfce_engine.h
index 58941c0..25c4ed6 100644
--- a/src/xfce_theme_main.c
+++ b/gtk-3.0/xfce_engine.h
@@ -15,6 +15,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Copyright (C) 1999-2004 Olivier Fourdan (fourdan at xfce.org)
+ * Copyright (C) 2011 Peter de Ridder (peter at xfce.org)
*
* Portions based Thinice port by
* Tim Gerla <timg at rrv.net>,
@@ -41,36 +42,28 @@
# include "config.h"
#endif
-#include <gmodule.h>
#include <gtk/gtk.h>
-#include "xfce_rc_style.h"
-#include "xfce_style.h"
-G_MODULE_EXPORT void theme_init(GTypeModule * module);
-G_MODULE_EXPORT void theme_exit(void);
-G_MODULE_EXPORT GtkRcStyle *theme_create_rc_style(void);
-G_MODULE_EXPORT const gchar * g_module_check_init (GModule * module);
+typedef struct _XfceEngine XfceEngine;
+typedef struct _XfceEngineClass XfceEngineClass;
+#define XFCE_TYPE_ENGINE xfce_engine_get_type()
+#define XFCE_ENGINE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), XFCE_TYPE_ENGINE, XfceEngine))
+#define XFCE_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XFCE_TYPE_ENGINE, XfceEngineClass))
+#define XFCE_IS_ENGINE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), XFCE_TYPE_ENGINE))
+#define XFCE_IS_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFCE_TYPE_ENGINE))
+#define XFCE_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XFCE_TYPE_ENGINE, XfceEngineClass))
-
-G_MODULE_EXPORT void theme_init(GTypeModule * module)
+struct _XfceEngine
{
- xfce_rc_style_register_type(module);
- xfce_style_register_type(module);
-}
+ GtkThemingEngine parent_instance;
+};
-G_MODULE_EXPORT void theme_exit(void)
+struct _XfceEngineClass
{
-}
+ GtkThemingEngineClass parent_class;
+};
-G_MODULE_EXPORT GtkRcStyle *theme_create_rc_style(void)
-{
- void *ptr;
- ptr = GTK_RC_STYLE(g_object_new(XFCE_TYPE_RC_STYLE, NULL));
- return (GtkRcStyle *) ptr;
-}
+GType xfce_engine_get_type(void);
-G_MODULE_EXPORT const gchar * g_module_check_init (GModule * module)
-{
- return gtk_check_version (GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION - GTK_INTERFACE_AGE);
-}
+void xfce_engine_register_types(GTypeModule * module);
diff --git a/src/xfce_style.h b/gtk-3.0/xfce_style.h
similarity index 100%
rename from src/xfce_style.h
rename to gtk-3.0/xfce_style.h
diff --git a/src/gradient_draw.h b/gtk-3.0/xfce_style_types.h
similarity index 73%
rename from src/gradient_draw.h
rename to gtk-3.0/xfce_style_types.h
index fc7f859..213cea0 100644
--- a/src/gradient_draw.h
+++ b/gtk-3.0/xfce_style_types.h
@@ -15,7 +15,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Copyright (C) 1999-2004 Olivier Fourdan (fourdan at xfce.org)
- * Copyright (C) 2011 Peter de Ridder <peter at xfce.org>
+ * Copyright (C) 2011 Peter de Ridder (peter at xfce.org)
*
* Portions based Thinice port by
* Tim Gerla <timg at rrv.net>,
@@ -38,20 +38,14 @@
* Portions based on original GTK theme
*/
-#ifndef INC_GRADIENT_DRAW_H
-#define INC_GRADIENT_DRAW_H
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
typedef enum
{
- GRADIENT_HORIZONTAL,
- GRADIENT_VERTICAL,
- GRADIENT_NORTHERN_DIAGONAL,
- GRADIENT_SOUTHERN_DIAGONAL
-} GradientType;
+ XFCE_GRIP_DISABLED,
+ XFCE_GRIP_ROUGH,
+ XFCE_GRIP_SLIDE
+} XfceGripStyle;
-#define GRADIENT(horizontal) (horizontal ? GRADIENT_HORIZONTAL : GRADIENT_VERTICAL)
-#define DIAGONALGRADIENT(northern) (northern ? GRADIENT_NORTHERN_DIAGONAL : GRADIENT_SOUTHERN_DIAGONAL)
-
-void gradient_draw_shaded(cairo_t * cr, gint x, gint y, gint width, gint height, const GdkColor * color, gfloat shine_value, gfloat shade_value, GradientType gradient_style);
-
-#endif /* INC_GRADIENT_DRAW_H */
diff --git a/src/xfce_theme_main.c b/gtk-3.0/xfce_theme_main.c
similarity index 86%
rename from src/xfce_theme_main.c
rename to gtk-3.0/xfce_theme_main.c
index 58941c0..60c994c 100644
--- a/src/xfce_theme_main.c
+++ b/gtk-3.0/xfce_theme_main.c
@@ -15,6 +15,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Copyright (C) 1999-2004 Olivier Fourdan (fourdan at xfce.org)
+ * Copyright (C) 2011 Peter de Ridder (peter at xfce.org)
*
* Portions based Thinice port by
* Tim Gerla <timg at rrv.net>,
@@ -43,31 +44,29 @@
#include <gmodule.h>
#include <gtk/gtk.h>
-#include "xfce_rc_style.h"
-#include "xfce_style.h"
+#include "xfce_engine.h"
G_MODULE_EXPORT void theme_init(GTypeModule * module);
G_MODULE_EXPORT void theme_exit(void);
-G_MODULE_EXPORT GtkRcStyle *theme_create_rc_style(void);
+G_MODULE_EXPORT GtkThemingEngine *create_engine(void);
G_MODULE_EXPORT const gchar * g_module_check_init (GModule * module);
G_MODULE_EXPORT void theme_init(GTypeModule * module)
{
- xfce_rc_style_register_type(module);
- xfce_style_register_type(module);
+ xfce_engine_register_types(module);
}
G_MODULE_EXPORT void theme_exit(void)
{
}
-G_MODULE_EXPORT GtkRcStyle *theme_create_rc_style(void)
+G_MODULE_EXPORT GtkThemingEngine *create_engine(void)
{
- void *ptr;
- ptr = GTK_RC_STYLE(g_object_new(XFCE_TYPE_RC_STYLE, NULL));
- return (GtkRcStyle *) ptr;
+ GtkThemingEngine *ptr;
+ ptr = GTK_THEMING_ENGINE(g_object_new(XFCE_TYPE_ENGINE, "name", "xfce", NULL));
+ return ptr;
}
G_MODULE_EXPORT const gchar * g_module_check_init (GModule * module)
diff --git a/gtk-3.0/xfce_typebuiltin.c.template b/gtk-3.0/xfce_typebuiltin.c.template
new file mode 100644
index 0000000..1c5309b
--- /dev/null
+++ b/gtk-3.0/xfce_typebuiltin.c.template
@@ -0,0 +1,38 @@
+/*** BEGIN file-header ***/
+#include <gtk/gtk.h>
+#include "xfce_style_types.h"
+#include "xfce_typebuiltin.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name at _get_type(void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0))
+ {
+ static const G at Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+ { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+ { 0, NULL, NULL }
+ };
+ etype = g_ at type@_register_static(g_intern_static_string("@EnumName@"), values);
+ }
+ return etype;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+
+/*** END file-tail ***/
+
diff --git a/gtk-3.0/xfce_typebuiltin.h.template b/gtk-3.0/xfce_typebuiltin.h.template
new file mode 100644
index 0000000..b52140b
--- /dev/null
+++ b/gtk-3.0/xfce_typebuiltin.h.template
@@ -0,0 +1,22 @@
+/*** BEGIN file-header ***/
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name at _get_type (void) G_GNUC_CONST;
+#define @ENUMPREFIX at _TYPE_@ENUMSHORT@ (@enum_name at _get_type ())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+
+G_END_DECLS
+/*** END file-tail ***/
+
diff --git a/themes/b5/Makefile.am b/themes/b5/Makefile.am
index 157ddb0..60ad9a8 100644
--- a/themes/b5/Makefile.am
+++ b/themes/b5/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-b5
diff --git a/themes/b5/gtk-3.0/Makefile.am b/themes/b5/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..ee99671
--- /dev/null
+++ b/themes/b5/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-b5/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/b5/gtk-3.0/gtk.css b/themes/b5/gtk-3.0/gtk.css
new file mode 100644
index 0000000..3b8f50a
--- /dev/null
+++ b/themes/b5/gtk-3.0/gtk.css
@@ -0,0 +1,283 @@
+
+ at define-color fg_active #525051;
+ at define-color fg_insensitive #525051;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #dddbde;
+ at define-color bg_insensitive #dddbde;
+ at define-color bg_normal #dddbde;
+ at define-color bg_prelight #efedef;
+ at define-color bg_selected #b7b5b8;
+
+ at define-color base_active #dddbde;
+ at define-color base_insensitive #d6d4d6;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #efedef;
+ at define-color base_selected #b7b5b8;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #000000;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: out;
+ -GtkRange-slider-width : 11;
+ -GtkRange-stepper-size : 11;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-interior-focus : true;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.button, .header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.scale.trough, .scrollbar.trough {
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.slider {
+ color: #525051;
+
+ border-width: 1 1;
+}
+
+.slider:active {
+ background-color: #f0ebef;
+ border-color: darker(#f0ebef);
+}
+
diff --git a/themes/basic/Makefile.am b/themes/basic/Makefile.am
index 77e790f..e055dab 100644
--- a/themes/basic/Makefile.am
+++ b/themes/basic/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-basic
diff --git a/themes/basic/gtk-3.0/Makefile.am b/themes/basic/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..50aad2d
--- /dev/null
+++ b/themes/basic/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-basic/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/basic/gtk-3.0/gtk.css b/themes/basic/gtk-3.0/gtk.css
new file mode 100644
index 0000000..a9850ae
--- /dev/null
+++ b/themes/basic/gtk-3.0/gtk.css
@@ -0,0 +1,48 @@
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 2;
+ -GtkMenuBar-shadow-type : out;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-interior-focus : true;
+ -GtkRange-slider-width : 14;
+ -GtkRange-stepper-size : 14;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+}
+
+*:insensitive {
+ text-shadow: 1 1 white;
+}
+
+.button {
+ border-width: 2 2;
+
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#DCDAD5, 1.1)), to(shade(#DCDAD5, 1.0)));
+}
+
+.button:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#9E9A91, 1.0)), to(shade(#9E9A91, 1.1)));
+}
+
+.button:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#C8C5BE, 1.1)), to(shade(#C8C5BE, 1.0)));
+}
+
+.button:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#4B6983, 1.1)), to(shade(#4B6983, 1.0)));
+}
+
+.button:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#4B6983, 1.0)), to(shade(#4B6983, 1.1)));
+}
+
+.scrollbar, .scale {
+ border-width: 2 2;
+}
diff --git a/themes/cadmium/Makefile.am b/themes/cadmium/Makefile.am
index 8b23789..2ffbe0a 100644
--- a/themes/cadmium/Makefile.am
+++ b/themes/cadmium/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-cadmium
diff --git a/themes/cadmium/gtk-3.0/Makefile.am b/themes/cadmium/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..42e966d
--- /dev/null
+++ b/themes/cadmium/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-cadmium/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/cadmium/gtk-3.0/gtk.css b/themes/cadmium/gtk-3.0/gtk.css
new file mode 100644
index 0000000..12152fd
--- /dev/null
+++ b/themes/cadmium/gtk-3.0/gtk.css
@@ -0,0 +1,348 @@
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #8e8e8a;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #cececa;
+ at define-color bg_insensitive #eeeeef;
+ at define-color bg_normal #eeeeef;
+ at define-color bg_prelight #ddddea;
+ at define-color bg_selected #ddddea;
+
+ at define-color base_active #cececa;
+ at define-color base_insensitive #eeeeef;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #d8dbe0;
+ at define-color base_selected #ddddea;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #000000;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkButton-child-displacement-x : 0;
+ -GtkButton-child-displacement-y : 1;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 2;
+ -GtkCheckButton-indicator-size : 12;
+ -GtkMenuBar-internal-padding : 0;
+ -GtkMenuBar-shadow-type : out;
+ -GtkPaned-handle-size : 7;
+ -GtkRange-slider-width : 12;
+ -GtkRange-stepper-size : 12;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.button, .header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 2.0)));
+ border-color: darker(@bg_active);
+}
+
+.trough.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 2.0)));
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.dock, .menubar, .toolbar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 1.05)), to(shade(@bg_normal, 0.95)));
+}
+
+.dock:active, .menubar:active, .toolbar:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.05)), to(shade(@bg_active, 0.95)));
+}
+
+.dock:insensitive, .menubar:insensitive, .toolbar:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.05)), to(shade(@bg_insensitive, 0.95)));
+}
+
+.dock:hover, .menubar:hover, .toolbar:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 1.05)), to(shade(@bg_prelight, 0.95)));
+}
+
+.dock:selected, .menubar:selected, .toolbar:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.05)), to(shade(@bg_selected, 0.95)));
+}
+
+.button, .slider.horizontal, .progressbar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cdcdda, 2.0)), to(shade(#cdcdda, 1.0)));
+ border-color: darker(#cdcdda);
+}
+
+.button:active, .slider.horizontal:active, .progressbar:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 2.0)));
+}
+
+.button:insensitive, .slider.horizontal:insensitive, .progressbar:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 2.0)), to(shade(@bg_insensitive, 1.0)));
+}
+
+.button:hover, .slider.horizontal:hover, .progressbar:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 2.0)), to(shade(@bg_prelight, 1.0)));
+}
+
+.button:selected, .slider.horizontal:selected, .progressbar:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.0)), to(shade(@bg_selected, 2.0)));
+}
+
+.menuitem {
+ border-width: 1 2;
+}
+
+.slider.vertical, .progressbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#cdcdda, 2.0)), to(shade(#cdcdda, 1.0)));
+ border-color: darker(#cdcdda);
+}
+
+.slider.vertical:active, .progressbar.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 2.0)));
+}
+
+.slider.vertical:insensitive, .progressbar.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 2.0)), to(shade(@bg_insensitive, 1.0)));
+}
+
+.slider.vertical:hover, .progressbar.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 2.0)), to(shade(@bg_prelight, 1.0)));
+}
+
+.slider.vertical:selected, .progressbar.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 1.0)), to(shade(@bg_selected, 2.0)));
+}
diff --git a/themes/curve/Makefile.am b/themes/curve/Makefile.am
index 50dea53..8dd05df 100644
--- a/themes/curve/Makefile.am
+++ b/themes/curve/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-curve
diff --git a/themes/curve/gtk-3.0/Makefile.am b/themes/curve/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..4ee6cde
--- /dev/null
+++ b/themes/curve/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-curve/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/curve/gtk-3.0/gtk.css b/themes/curve/gtk-3.0/gtk.css
new file mode 100644
index 0000000..2250807
--- /dev/null
+++ b/themes/curve/gtk-3.0/gtk.css
@@ -0,0 +1,326 @@
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #7f7f7f;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #ffffff;
+
+ at define-color bg_active #cccccc;
+ at define-color bg_insensitive #d8d8d8;
+ at define-color bg_normal #e5e5e5;
+ at define-color bg_prelight #f5f5f5;
+ at define-color bg_selected #4464ac;
+
+ at define-color base_active #99a6bf;
+ at define-color base_insensitive #d8d8d8;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #e5e5e5;
+ at define-color base_selected #4464ac;
+
+ at define-color text_active #ffffff;
+ at define-color text_insensitive #808080;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #ffffff;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkWidget-focus-padding : 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: out;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkStatusbar-shadow-type : in;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-focus-line-pattern : "\0";
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-interior-focus : false;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.button, .header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ -xfce-smooth-edge: false;
+
+ border-width: 1 1;
+
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#4464ac, 0.8)), to(shade(#4464ac, 1.8)));
+ border-color: darker(#4464ac);
+}
+
+.trough {
+ -xfce-smooth-edge: false;
+
+ border-width: 1 1;
+
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+ border-color: darker(@bg_normal);
+}
+
+.trough.scale, .trough.scrollbar {
+ -xfce-smooth-edge: true;
+
+ border-width: 2 2;
+
+ background-color: @bg_active;
+ background-image: none;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.dock:hover, .menubar:hover, .toolbar:hover {
+ color: #ffffff;
+ background-color: #4464ac;
+ border-color: darker(#4464ac);
+}
+
+.menuitem {
+ -xfce-smooth-edge: false;
+
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+}
+
+.menuitem:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.8)), to(shade(@bg_active, 1.8)));
+}
+
+.menuitem:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8)));
+}
+
+.menuitem:hover {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#4464ac, 0.8)), to(shade(#4464ac, 1.0)));
+ border-color: darker(#4464ac);
+}
+
+.menuitem:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.8)), to(shade(@bg_selected, 1.8)));
+}
+
diff --git a/themes/dawn/Makefile.am b/themes/dawn/Makefile.am
index 3237f52..3678158 100644
--- a/themes/dawn/Makefile.am
+++ b/themes/dawn/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-dawn
diff --git a/themes/dawn/gtk-3.0/Makefile.am b/themes/dawn/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..0c75afe
--- /dev/null
+++ b/themes/dawn/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-dawn/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/dawn/gtk-3.0/gtk.css b/themes/dawn/gtk-3.0/gtk.css
new file mode 100644
index 0000000..5ab7043
--- /dev/null
+++ b/themes/dawn/gtk-3.0/gtk.css
@@ -0,0 +1,349 @@
+
+ at define-color fg_active #1f1f1f;
+ at define-color fg_insensitive #8e8e8a;
+ at define-color fg_normal #1f1f1f;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #bfbfbc;
+ at define-color bg_insensitive #ebe8e4;
+ at define-color bg_normal #ebe8e4;
+ at define-color bg_prelight #b0c0d0;
+ at define-color bg_selected #b0c0d0;
+
+ at define-color base_active #bfbfbc;
+ at define-color base_insensitive #ebe8e4;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #b0c0d0;
+ at define-color base_selected #699dc9;
+
+ at define-color text_active #1f1f1f;
+ at define-color text_insensitive #1f1f1f;
+ at define-color text_normal #1f1f1f;
+ at define-color text_prelight #000000;
+ at define-color text_selected #ffffff;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkButton-child-displacement-x : 0;
+ -GtkButton-child-displacement-y : 1;
+ -GtkCheckButton-indicator-size : 12;
+ -GtkMenuBar-internal-padding : 4;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: etched-in;
+ -GtkPaned-handle-size : 7;
+ -GtkRange-slider-width : 16;
+ -GtkRange-stepper-size : 16;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 3;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 1.0)));
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.progressbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 1.0)));
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 1.0)), to(shade(@bg_normal, 1.1)));
+}
+
+.trough.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_normal, 1.0)), to(shade(@bg_normal, 1.1)));
+}
+
+.scale.trough, .scrollbar.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 1.1)));
+ border-color: darker(@bg_active);
+}
+
+.scale.vertical, .scrollbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 1.1)));
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.button, .slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 1.1)), to(shade(@bg_normal, 1.0)));
+
+ -GtkWidget-focus-padding: 0;
+}
+
+.button:active, .slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 1.1)));
+}
+
+.button:insensitive, .slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 1.0)));
+}
+
+.button:hover, .slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 1.0)));
+}
+
+.button:selected, .slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.0)), to(shade(@bg_selected, 1.1)));
+}
+
+.button.vertical, .slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_normal, 1.1)), to(shade(@bg_normal, 1.0)));
+}
+
+.button.vertical:active, .slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 1.1)));
+}
+
+.button.vertical:insensitive, .slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 1.0)));
+}
+
+.button.vertical:hover, .slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 1.0)));
+}
+
+.button.vertical:selected, .slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 1.0)), to(shade(@bg_selected, 1.1)));
+}
+
+.menuitem {
+ border-width: 1 2;
+}
+
+.radio {
+ -GtkCheckButton-indicator-size: 14;
+}
diff --git a/themes/dusk/Makefile.am b/themes/dusk/Makefile.am
index ca92df8..1f13d4b 100644
--- a/themes/dusk/Makefile.am
+++ b/themes/dusk/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-dusk
diff --git a/themes/dusk/gtk-3.0/Makefile.am b/themes/dusk/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..7391e83
--- /dev/null
+++ b/themes/dusk/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-dusk/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/dusk/gtk-3.0/gtk.css b/themes/dusk/gtk-3.0/gtk.css
new file mode 100644
index 0000000..0f0bc12
--- /dev/null
+++ b/themes/dusk/gtk-3.0/gtk.css
@@ -0,0 +1,345 @@
+
+ at define-color fg_active #dadada;
+ at define-color fg_insensitive #151515;
+ at define-color fg_normal #ffffff;
+ at define-color fg_prelight #fcfcfc;
+ at define-color fg_selected #fcfcfc;
+
+ at define-color bg_active #151515;
+ at define-color bg_insensitive #303030;
+ at define-color bg_normal #232323;
+ at define-color bg_prelight #003263;
+ at define-color bg_selected #002849;
+
+ at define-color base_active #2f519a;
+ at define-color base_insensitive #303030;
+ at define-color base_normal #121212;
+ at define-color base_prelight #002849;
+ at define-color base_selected #003263;
+
+ at define-color text_active #fcfcfc;
+ at define-color text_insensitive #fcfcfc;
+ at define-color text_normal #fcfcfc;
+ at define-color text_prelight #fcfcfc;
+ at define-color text_selected #fcfcfc;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkButton-child-displacement-x : 0;
+ -GtkButton-child-displacement-y : 1;
+ -GtkCheckButton-indicator-size : 8;
+ -GtkMenuBar-internal-padding : 1;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: etched-in;
+ -GtkPaned-handle-size : 4;
+ -GtkRange-slider-width : 12;
+ -GtkRange-stepper-size : 10;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-has-backward-stepper: true;
+ -GtkScrollbar-has-secondary-backward-stepper: false;
+ -GtkScrollbar-min-slider-length : 10;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 1;
+ -GtkWidget-interior-focus : true;
+ -GtkWidget-cursor-color : #fcfcfc;
+ -GtkWidget-secondary-cursor-color: #fcfcfc;
+ -GtkWidget-cursor-aspect-ratio : 0.1;
+
+ border-width: 1 1;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.scale.trough, .scrollbar.trough {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 1.25)));
+ border-color: darker(@bg_active);
+}
+
+.trough.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 1.25)));
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.radio {
+ -GtkCheckButton-indicator-size: 10;
+}
+
+.menuitem {
+ border-width: 1 2;
+}
+
+.button, .slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 1.25)), to(shade(@bg_normal, 1.0)));
+
+ -GtkWidget-focus-padding: 0;
+}
+
+.button:active, .slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 1.25)));
+}
+
+.button:insensitive, .slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.25)), to(shade(@bg_insensitive, 1.0)));
+}
+
+.button:hover, .slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 1.25)), to(shade(@bg_prelight, 1.0)));
+}
+
+.button:selected, .slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.0)), to(shade(@bg_selected, 1.25)));
+}
+
+.menuitem {
+ border-width: 1 2;
+}
+
+.slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_normal, 1.25)), to(shade(@bg_normal, 1.0)));
+}
+
+.slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 1.0)), to(shade(@bg_active, 1.25)));
+}
+
+.slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.25)), to(shade(@bg_insensitive, 1.0)));
+}
+
+.slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 1.25)), to(shade(@bg_prelight, 1.0)));
+}
+
+.slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 1.0)), to(shade(@bg_selected, 1.25)));
+}
+
diff --git a/themes/kde2/Makefile.am b/themes/kde2/Makefile.am
index 688adad..62d49cd 100644
--- a/themes/kde2/Makefile.am
+++ b/themes/kde2/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-kde2
diff --git a/themes/kde2/gtk-3.0/Makefile.am b/themes/kde2/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..feeaf9d
--- /dev/null
+++ b/themes/kde2/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-kde2/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/kde2/gtk-3.0/gtk.css b/themes/kde2/gtk-3.0/gtk.css
new file mode 100644
index 0000000..c7cad14
--- /dev/null
+++ b/themes/kde2/gtk-3.0/gtk.css
@@ -0,0 +1,304 @@
+
+ at define-color fg_active rgb(25%, 25%, 25%);
+ at define-color fg_insensitive rgb(72%, 72%, 72%);
+ at define-color fg_normal rgb(0%, 0%, 0%);
+ at define-color fg_prelight rgb(0%, 0%, 0%);
+ at define-color fg_selected rgb(100%, 100%, 100%);
+
+ at define-color bg_active rgb(93%, 93%, 93%);
+ at define-color bg_insensitive rgb(86%, 86%, 86%);
+ at define-color bg_normal rgb(86%, 86%, 86%);
+ at define-color bg_prelight rgb(93%, 93%, 93%);
+ at define-color bg_selected rgb(4%, 47%, 54%);
+
+ at define-color base_active rgb(86%, 86%, 86%);
+ at define-color base_insensitive rgb(86%, 86%, 86%);
+ at define-color base_normal rgb(100%, 100%, 100%);
+ at define-color base_prelight rgb(93%, 93%, 93%);
+ at define-color base_selected rgb(4%, 47%, 54%);
+
+ at define-color text_active rgb(0%, 0%, 0%);
+ at define-color text_insensitive rgb(72%, 72%, 72%);
+ at define-color text_normal rgb(0%, 0%, 0%);
+ at define-color text_prelight rgb(0%, 0%, 0%);
+ at define-color text_selected rgb(100%, 100%, 100%);
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkWidget-focus-line-width : 1;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuItem-selected-shadow-type: in;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-trough-border : 0;
+ -GtkSpinButton-shadow-type : in;
+ -GtkScrollbar-has-backward-stepper: true;
+ -GtkScrollbar-has-forward-stepper: true;
+ -GtkScrollbar-has-secondary-backward-stepper: true;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkWidget-focus-padding : 2;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.scale.trough, .scrollbar.trough {
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.dock, .menubar, .toolbar {
+ border-width: 3 3;
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 1.1)), to(shade(@bg_normal, 0.9)));
+
+ border-width: 3 3;
+
+ -GtkWidget-focus-padding: 0;
+}
+
+.button:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+}
+
+.button:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+}
+
+.button:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 0.9)));
+}
+
+.button:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1)));
+}
diff --git a/themes/kolors/Makefile.am b/themes/kolors/Makefile.am
index d16e379..ce29426 100644
--- a/themes/kolors/Makefile.am
+++ b/themes/kolors/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-kolors
diff --git a/themes/kolors/gtk-3.0/Makefile.am b/themes/kolors/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..f558f78
--- /dev/null
+++ b/themes/kolors/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-kolors/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/kolors/gtk-3.0/gtk.css b/themes/kolors/gtk-3.0/gtk.css
new file mode 100644
index 0000000..4fd136e
--- /dev/null
+++ b/themes/kolors/gtk-3.0/gtk.css
@@ -0,0 +1,355 @@
+
+ at define-color fg_active #1f1f1f;
+ at define-color fg_insensitive #BFBCB2;
+ at define-color fg_normal #1f1f1f;
+ at define-color fg_prelight #1f1f1f;
+ at define-color fg_selected #1f1f1f;
+
+ at define-color bg_active #E4E0D5;
+ at define-color bg_insensitive #E4E0D5;
+ at define-color bg_normal #eeeee6;
+ at define-color bg_prelight #ffdd76;
+ at define-color bg_selected #ffdd76;
+
+ at define-color base_active #fef4d6;
+ at define-color base_insensitive #fdfdfd;
+ at define-color base_normal #fdfdfd;
+ at define-color base_prelight #ffdd76;
+ at define-color base_selected #ffdd76;
+
+ at define-color text_active #1f1f1f;
+ at define-color text_insensitive #e9e9e9;
+ at define-color text_normal #1f1f1f;
+ at define-color text_prelight #1f1f1f;
+ at define-color text_selected #1f1f1f;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkWidget-focus-padding : 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: none;
+ -GtkRange-slider-width : 11;
+ -GtkRange-stepper-size : 13;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkScrollbar-has-backward-stepper: true;
+ -GtkScrollbar-has-secondary-backward-stepper: true;
+ -GtkStatusbar-shadow-type : in;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-focus-line-pattern : "\0";
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 1 1;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+
+ -GtkCheckButton-indicator-size: 10;
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 0.9)));
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.progressbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 0.9)));
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.9)), to(shade(@bg_normal, 1.1)));
+}
+
+.trough.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_normal, 0.9)), to(shade(@bg_normal, 1.1)));
+}
+
+.scale.trough, .scrollbar.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+ border-color: darker(@bg_active);
+}
+
+.scale.vertical, .scrollbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.dock, .menubar, .toolbar {
+ border-width: 1 2;
+}
+
+.button, .slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 1.1)), to(shade(@bg_normal, 0.9)));
+
+ border-width: 1 1;
+}
+
+.button:active, .slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+}
+
+.button:insensitive, .slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+}
+
+.button:hover, .slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 0.9)));
+}
+
+.button:selected, .slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1)));
+}
+
+.button.vertical, .slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_normal, 1.1)), to(shade(@bg_normal, 0.9)));
+
+ border-width: 1 1;
+}
+
+.button.vertical:active, .slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+}
+
+.button.vertical:insensitive, .slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+}
+
+.button.vertical:hover, .slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 1.1)), to(shade(@bg_prelight, 0.9)));
+}
+
+.button.vertical:selected, .slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1)));
+}
diff --git a/themes/light/Makefile.am b/themes/light/Makefile.am
index c8959af..4224b9d 100644
--- a/themes/light/Makefile.am
+++ b/themes/light/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-light
diff --git a/themes/light/gtk-3.0/Makefile.am b/themes/light/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..60f0b49
--- /dev/null
+++ b/themes/light/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-light/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/light/gtk-3.0/gtk.css b/themes/light/gtk-3.0/gtk.css
new file mode 100644
index 0000000..b8c15ff
--- /dev/null
+++ b/themes/light/gtk-3.0/gtk.css
@@ -0,0 +1,295 @@
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #c5c5be;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #d4d4cd;
+ at define-color bg_insensitive #ededdd;
+ at define-color bg_normal #ededdd;
+ at define-color bg_prelight #f5f5dd;
+ at define-color bg_selected #bcb4cf;
+
+ at define-color base_active #e5e5e5;
+ at define-color base_insensitive #e5e5e5;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #f5f5dd;
+ at define-color base_selected #bcb4cf;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #000000;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: in;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-interior-focus : true;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.scale.trough, .scrollbar.trough {
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: #d4d4ce;
+ border-color: darker(#d4d4ce);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: #f8f8ef;
+ border-color: darker(#f8f8ef);
+}
+
+.button {
+ color: @fg_normal;
+ background-color: #f8f8ef;
+ border-color: darker(#f8f8ef);
+}
+
+.button:active {
+ background-color: #cfcfc4;
+ border-color: darker(#cfcfc4);
+}
+
+.button:insensitive {
+ background-color: #f8f8ef;
+ border-color: darker(#f8f8ef);
+}
+
+.button:hover {
+ background-color: #f5f5dd;
+ border-color: darker(#f5f5dd);
+}
+
diff --git a/themes/orange/Makefile.am b/themes/orange/Makefile.am
index 6f702b7..3263c58 100644
--- a/themes/orange/Makefile.am
+++ b/themes/orange/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-orange
diff --git a/themes/orange/gtk-3.0/Makefile.am b/themes/orange/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..7b537be
--- /dev/null
+++ b/themes/orange/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-orange/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/orange/gtk-3.0/gtk.css b/themes/orange/gtk-3.0/gtk.css
new file mode 100644
index 0000000..75151cf
--- /dev/null
+++ b/themes/orange/gtk-3.0/gtk.css
@@ -0,0 +1,448 @@
+/* Created January 2006
+ * Carl Bolduc <drcurl at gmail.com> and Olivier Fourdan <fourdan at xfce.org>
+ * Ported from gtk-2.0 to gtk-3.0 by Peter de Ridder <peter at xfce.org>
+ * Released under the GPL license
+ */
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #858481;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #fff9e1;
+ at define-color bg_insensitive #f4f2ed;
+ at define-color bg_normal #f4f2ed;
+ at define-color bg_prelight #fff9e1;
+ at define-color bg_selected #e0dcd7;
+
+ at define-color base_active #e0dcd7;
+ at define-color base_insensitive #f4f2ed;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #fff9e1;
+ at define-color base_selected #ffe371;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #000000;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkButton-child-displacement-x : 0;
+ -GtkButton-child-displacement-y : 1;
+ -GtkCheckButton-indicator-size : 12;
+ -GtkMenuItem-selected-shadow-type: none;
+ -GtkPaned-handle-size : 7;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-has-backward-stepper: true;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 4;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+
+ -GtkCheckButton-indicator-size: 14;
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: #ffe371;
+ border-color: darker(#ffe371);
+
+ border-width: 0 0;
+}
+
+.trough {
+ background-color: #f4f2ed;
+ border-color: darker(#f4f2ed);
+}
+
+.scale.trough, .scrollbar.trough {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e0dcd7, 0.95)), to(shade(#e0dcd7, 1.05)));
+ border-color: darker(#e0dcd7);
+}
+
+.trough.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e0dcd7, 0.95)), to(shade(#e0dcd7, 1.05)));
+ border-color: darker(#e0dcd7);
+}
+
+.notebook {
+ background-color: #f8f7f5;
+ border-color: darker(#f8f7f5);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: #e0dcd7;
+ border-color: darker(#e0dcd7);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: #f8f7f5;
+ border-color: darker(#f8f7f5);
+}
+
+.menu {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#f8f7f5, 1.05)), to(shade(#f8f7f5, 0.95)));
+ border-color: darker(#f8f7f5);
+}
+
+.menuitem {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#f8f7f5, 1.05)), to(shade(#f8f7f5, 0.95)));
+ border-color: darker(#f8f7f5);
+
+ border-width: 1 2;
+}
+
+.menuitem:active, .menu:active {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffe371, 0.95)), to(shade(#ffe371, 1.05)));
+ border-color: darker(#ffe371);
+}
+
+.menuitem:insensitive, .menu:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#f8f7f5, 1.05)), to(shade(#f8f7f5, 0.95)));
+ border-color: darker(#f8f7f5);
+}
+
+.menuitem:hover, .menu:hover {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffe371, 1.05)), to(shade(#ffe371, 0.95)));
+ border-color: darker(#ffe371);
+}
+
+.menuitem:selected, .menu:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffe371, 0.95)), to(shade(#ffe371, 1.05)));
+ border-color: darker(#ffe371);
+}
+
+.menubar, .toolbar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 1.05)), to(shade(@bg_normal, 0.95)));
+}
+
+.menubar:active, .toolbar:active {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffe371, 0.95)), to(shade(#ffe371, 1.05)));
+ border-color: darker(#ffe371);
+}
+
+.menubar:insensitive, .toolbar:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.05)), to(shade(@bg_insensitive, 0.95)));
+}
+
+.menubar:hover, .toolbar:hover {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#fff0b3, 1.05)), to(shade(#fff0b3, 0.95)));
+ border-color: darker(#fff0b3);
+}
+
+.menubar:selected, .toolbar:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffe371, 0.95)), to(shade(#ffe371, 1.05)));
+ border-color: darker(#ffe371);
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ebe6e1, 1.05)), to(shade(#ebe6e1, 0.95)));
+ border-color: darker(#ebe6e1);
+
+ -GtkWidget-focus-padding: 1;
+}
+
+.button:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffe371, 0.95)), to(shade(#ffe371, 1.05)));
+ border-color: darker(#ffe371);
+}
+
+.button:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.05)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#fff0b3, 1.05)), to(shade(#fff0b3, 0.95)));
+ border-color: darker(#fff0b3);
+}
+
+.button:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.05)));
+ border-color: darker(@bg_selected);
+}
+
+.slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#f4f2ed, 1.05)), to(shade(#f4f2ed, 0.95)));
+ border-color: darker(#f4f2ed);
+}
+
+.slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e0dcd7, 0.95)), to(shade(#e0dcd7, 1.05)));
+ border-color: darker(#e0dcd7);
+}
+
+.slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.05)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#fff0b3, 1.05)), to(shade(#fff0b3, 0.95)));
+ border-color: darker(#fff0b3);
+}
+
+.slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.05)));
+ border-color: darker(@bg_selected);
+}
+
+.slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#f4f2ed, 1.05)), to(shade(#f4f2ed, 0.95)));
+ border-color: darker(#f4f2ed);
+}
+
+.slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e0dcd7, 0.95)), to(shade(#e0dcd7, 1.05)));
+ border-color: darker(#e0dcd7);
+}
+
+.slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.05)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#fff0b3, 1.05)), to(shade(#fff0b3, 0.95)));
+ border-color: darker(#fff0b3);
+}
+
+.slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.05)));
+ border-color: darker(@bg_selected);
+}
+
+.tooltip {
+ color: #000000;
+ background-color: #ffffdf;
+ border-color: darker(#ffffdf);
+}
diff --git a/themes/redmondxp/Makefile.am b/themes/redmondxp/Makefile.am
index e833304..f0af13d 100644
--- a/themes/redmondxp/Makefile.am
+++ b/themes/redmondxp/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-redmondxp
diff --git a/themes/redmondxp/gtk-3.0/Makefile.am b/themes/redmondxp/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..f677f5d
--- /dev/null
+++ b/themes/redmondxp/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-redmondxp/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/redmondxp/gtk-3.0/gtk.css b/themes/redmondxp/gtk-3.0/gtk.css
new file mode 100644
index 0000000..6386924
--- /dev/null
+++ b/themes/redmondxp/gtk-3.0/gtk.css
@@ -0,0 +1,445 @@
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #7f7f79;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #ffffff;
+
+ at define-color bg_active #d4d4ce;
+ at define-color bg_insensitive #efebdf;
+ at define-color bg_normal #efebdf;
+ at define-color bg_prelight #efebdf;
+ at define-color bg_selected #0055ef;
+
+ at define-color base_active #e5e5e5;
+ at define-color base_insensitive #efebdf;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #efebdf;
+ at define-color base_selected #0055ef;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #ffffff;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: none;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+
+ border-width: 1 1;
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#0055ef, 0.9)), to(shade(#0055ef, 1.1)));
+ border-color: darker(#0055ef);
+
+ border-width: 1 1;
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.9)), to(shade(@bg_normal, 1.1)));
+}
+
+.scale.trough, .scrollbar.trough {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+ border-color: darker(@bg_active);
+}
+
+.trough.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+ border-color: darker(@bg_active);
+}
+
+.notebook {
+ background-color: #fafaf2;
+ border-color: darker(#fafaf2);
+
+ border-width: 1 1;
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: #d4d4ce;
+ border-color: darker(#d4d4ce);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: #fafaf2;
+ border-color: darker(#fafaf2);
+}
+
+.menu {
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+
+ border-width: 1 1;
+}
+
+.menu:active {
+ color: #ffffff;
+ background-color: #0055ef;
+ border-color: darker(#0055ef);
+}
+
+.menu:insensitive {
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menu:hover {
+ color: #ffffff;
+ background-color: #0055ef;
+ border-color: darker(#0055ef);
+}
+
+.menu:selected {
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.menubar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.9)), to(shade(@bg_normal, 1.1)));
+
+ border-width: 2 2;
+}
+
+.menubar:active {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#0055ef, 1.1)), to(shade(#0055ef, 0.9)));
+ border-color: darker(#0055ef);
+}
+
+.menubar:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.9)), to(shade(@bg_insensitive, 1.1)));
+}
+
+.menubar:hover {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#0055ef, 0.9)), to(shade(#0055ef, 1.1)));
+ border-color: darker(#0055ef);
+}
+
+.menubar:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.1)), to(shade(@bg_selected, 0.9)));
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#fafaf2, 1.1)), to(shade(#fafaf2, 0.9)));
+ border-color: darker(#fafaf2);
+}
+
+.button:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffcb39, 0.9)), to(shade(#ffcb39, 1.1)));
+ border-color: darker(#ffcb39);
+}
+
+.button:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#fafaf2, 1.1)), to(shade(#fafaf2, 0.9)));
+ border-color: darker(#fafaf2);
+}
+
+.button:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#fafaf2, 1.1)), to(shade(#fafaf2, 0.9)));
+ border-color: darker(#fafaf2);
+}
+
+.button:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.button.horizontal, .scrollbar.slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#c6d3ff, 1.1)), to(shade(#c6d3ff, 0.9)));
+ border-color: darker(#c6d3ff);
+}
+
+.button.horizontal:active, .scrollbar.slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+ border-color: darker(@bg_active);
+}
+
+.button.horizontal:insensitive, .scrollbar.slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.horizontal:hover, .scrollbar.slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#c6d3ff, 1.1)), to(shade(#c6d3ff, 0.9)));
+ border-color: darker(#c6d3ff);
+}
+
+.button.horizontal:selected, .scrollbar.slider.horizontal:selected {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#efebdf, 0.9)), to(shade(#efebdf, 1.1)));
+ border-color: darker(#efebdf);
+}
+
+.button.vertical, .scrollbar.slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#c6d3ff, 1.1)), to(shade(#c6d3ff, 0.9)));
+ border-color: darker(#c6d3ff);
+}
+
+.button.vertical:active, .scrollbar.slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.1)));
+ border-color: darker(@bg_active);
+}
+
+.button.vertical:insensitive, .scrollbar.slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.vertical:hover, .scrollbar.slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#c6d3ff, 1.1)), to(shade(#c6d3ff, 0.9)));
+ border-color: darker(#c6d3ff);
+}
+
+.button.vertical:selected, .scrollbar.slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#efebdf, 0.9)), to(shade(#efebdf, 1.1)));
+ border-color: darker(#efebdf);
+}
+
+.scale.slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#efebdf, 1.1)), to(shade(#efebdf, 0.9)));
+ border-color: darker(#efebdf);
+}
+
+.scale.slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#efebdf, 1.1)), to(shade(#efebdf, 0.9)));
+ border-color: darker(#efebdf);
+}
+
+.scale.slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#efebdf, 1.1)), to(shade(#efebdf, 0.9)));
+ border-color: darker(#efebdf);
+}
+
+.scale.slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#efebdf, 1.1)), to(shade(#efebdf, 0.9)));
+ border-color: darker(#efebdf);
+}
diff --git a/themes/saltlake/Makefile.am b/themes/saltlake/Makefile.am
index 5740d80..574c715 100644
--- a/themes/saltlake/Makefile.am
+++ b/themes/saltlake/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-saltlake
diff --git a/themes/saltlake/gtk-3.0/Makefile.am b/themes/saltlake/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..5002c1e
--- /dev/null
+++ b/themes/saltlake/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-saltlake/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/saltlake/gtk-3.0/gtk.css b/themes/saltlake/gtk-3.0/gtk.css
new file mode 100644
index 0000000..a8b726d
--- /dev/null
+++ b/themes/saltlake/gtk-3.0/gtk.css
@@ -0,0 +1,277 @@
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #717170;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #ffffff;
+
+ at define-color bg_active #cdcdc9;
+ at define-color bg_insensitive #e4e4e0;
+ at define-color bg_normal #e4e4e0;
+ at define-color bg_prelight #ccc9c5;
+ at define-color bg_selected #3f993f;
+
+ at define-color base_active #e5e5e5;
+ at define-color base_insensitive #e4e4e0;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #ccc9c5;
+ at define-color base_selected #ccc9c5;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #000000;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: false;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkButton-child-displacement-x : 1;
+ -GtkButton-child-displacement-y : 1;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuBar-shadow-type : etched-in;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.button, .header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.scale.trough, .scrollbar.trough {
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.menuitem {
+ border-width: 1 1;
+}
+
diff --git a/themes/smooth/Makefile.am b/themes/smooth/Makefile.am
index c1f126f..c1ffd2d 100644
--- a/themes/smooth/Makefile.am
+++ b/themes/smooth/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-smooth
diff --git a/themes/smooth/gtk-3.0/Makefile.am b/themes/smooth/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..b40191e
--- /dev/null
+++ b/themes/smooth/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-smooth/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/smooth/gtk-3.0/gtk.css b/themes/smooth/gtk-3.0/gtk.css
new file mode 100644
index 0000000..064bcf2
--- /dev/null
+++ b/themes/smooth/gtk-3.0/gtk.css
@@ -0,0 +1,272 @@
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #969696;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #c2c2be;
+ at define-color bg_insensitive #e2e2de;
+ at define-color bg_normal #e2e2de;
+ at define-color bg_prelight #f2f2ee;
+ at define-color bg_selected #a5abba;
+
+ at define-color base_active #a5abba;
+ at define-color base_insensitive #ffffff;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #eaeaea;
+ at define-color base_selected #a5abba;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #000000;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuItem-selected-shadow-type: out;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkWidget-interior-focus : true;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.button, .header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.scale.trough, .scrollbar.trough {
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
diff --git a/themes/stellar/Makefile.am b/themes/stellar/Makefile.am
index edcdf64..bba10a1 100644
--- a/themes/stellar/Makefile.am
+++ b/themes/stellar/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-stellar
diff --git a/themes/stellar/gtk-3.0/Makefile.am b/themes/stellar/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..7dbdf59
--- /dev/null
+++ b/themes/stellar/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-stellar/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/stellar/gtk-3.0/gtk.css b/themes/stellar/gtk-3.0/gtk.css
new file mode 100644
index 0000000..619ca9a
--- /dev/null
+++ b/themes/stellar/gtk-3.0/gtk.css
@@ -0,0 +1,281 @@
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #4e4f56;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #ffffff;
+
+ at define-color bg_active #9ba0b0;
+ at define-color bg_insensitive #9ba0b0;
+ at define-color bg_normal #aeb2c3;
+ at define-color bg_prelight #aeb2c3;
+ at define-color bg_selected #b24d7a;
+
+ at define-color base_active #888ca0;
+ at define-color base_insensitive #969bb4;
+ at define-color base_normal #fcfcf0;
+ at define-color base_prelight #b24d7a;
+ at define-color base_selected #b24d7a;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #747474;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #ffffff;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkButton-default-border : 5;
+ -GtkButton-default-outside-border: 6;
+ -GtkWidget-focus-padding : 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuItem-selected-shadow-type: in;
+ -GtkRange-slider-width : 12;
+ -GtkRange-stepper-size : 12;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-focus-line-pattern : "\0";
+ -GtkWidget-focus-line-width : 2;
+ -GtkWidget-interior-focus : false;
+
+ border-width: 1 1;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.button, .header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.scale.trough, .scrollbar.trough {
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.menu:hover {
+ color: #FFFFFF;
+ background-color: #9BA0B0;
+ border-color: darker(#9BA0B0);
+}
+
diff --git a/themes/winter/Makefile.am b/themes/winter/Makefile.am
index bbdaa7f..a33498e 100644
--- a/themes/winter/Makefile.am
+++ b/themes/winter/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-winter
diff --git a/themes/winter/gtk-3.0/Makefile.am b/themes/winter/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..f541a99
--- /dev/null
+++ b/themes/winter/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-winter/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/winter/gtk-3.0/gtk.css b/themes/winter/gtk-3.0/gtk.css
new file mode 100644
index 0000000..4875acf
--- /dev/null
+++ b/themes/winter/gtk-3.0/gtk.css
@@ -0,0 +1,395 @@
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #808080;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #224466;
+
+ at define-color bg_active #d8d8d6;
+ at define-color bg_insensitive #e8e8e6;
+ at define-color bg_normal #e8e8e6;
+ at define-color bg_prelight #e8e8e6;
+ at define-color bg_selected #a5abba;
+
+ at define-color base_active #d8d8d6;
+ at define-color base_insensitive #e8e8e6;
+ at define-color base_normal #f0f0f0;
+ at define-color base_prelight #a5abba;
+ at define-color base_selected #b3c8dd;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #224466;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: slide;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: out;
+ -GtkPaned-handle-size : 8;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : none;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 2;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: #224466;
+ background-color: @base_active;
+ border-color: darker(#A4B8CB);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: #224466;
+ background-color: @base_prelight;
+ border-color: darker(#B3C8DD);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 0.8)), to(shade(@bg_prelight, 1.8)));
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.progressbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 0.8)), to(shade(@bg_prelight, 1.8)));
+ border-color: darker(@bg_prelight);
+
+ border-width: 1 1;
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+}
+
+.trough.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+}
+
+.scrollbar.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.8)), to(shade(@bg_active, 1.8)));
+ border-color: darker(@bg_active);
+}
+
+.scrollbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 0.8)), to(shade(@bg_active, 1.8)));
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.dock, .menubar, .toolbar {
+ border-width: 1 2;
+}
+
+.dock:active, .menubar:active, .toolbar:active {
+ color: #224466;
+ background-color: #A4B8CB;
+ border-color: darker(#A4B8CB);
+}
+
+.dock:hover, .menubar:hover, .toolbar:hover {
+ color: #224466;
+ background-color: #B3C8DD;
+ border-color: darker(#B3C8DD);
+}
+
+.menuitem {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+
+ border-width: 2 2;
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+
+ border-width: 3 3;
+
+ -GtkWidget-focus-padding: 0;
+}
+
+.button:active, .menuitem:active {
+ color: #224466;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#A4B8CB, 0.8)), to(shade(#A4B8CB, 1.8)));
+ border-color: darker(#A4B8CB);
+}
+
+.button:insensitive, .menuitem:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8)));
+}
+
+.button:hover, .menuitem:hover {
+ color: #224466;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#B3C8DD, 0.8)), to(shade(#B3C8DD, 1.8)));
+ border-color: darker(#B3C8DD);
+}
+
+.button:selected, .menuitem:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.8)), to(shade(@bg_selected, 1.8)));
+}
+
+.dock {
+ color: @base_selected;
+}
+
+.slider {
+ color: @base_selected;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+}
+
+.slider:active {
+ color: @base_selected;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.8)), to(shade(@bg_active, 0.8)));
+}
+
+.slider:insensitive {
+ color: @base_selected;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8)));
+}
+
+.slider:hover {
+ color: @base_selected;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 0.8)), to(shade(@bg_prelight, 1.8)));
+}
+
+.slider:selected {
+ color: @base_selected;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.8)), to(shade(@bg_selected, 0.8)));
+}
+
+.button.vertical, .scrollbar.slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+}
+
+.button.vertical:active, .scrollbar.slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 1.8)), to(shade(@bg_active, 0.8)));
+}
+
+.button.vertical:insensitive, .scrollbar.slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8)));
+}
+
+.button.vertical:hover, .scrollbar.slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 0.8)), to(shade(@bg_prelight, 1.8)));
+}
+
+.button.vertical:selected, .scrollbar.slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 1.8)), to(shade(@bg_selected, 0.8)));
+}
diff --git a/themes/xfce-4.0/Makefile.am b/themes/xfce-4.0/Makefile.am
index 31a87c8..2690df5 100644
--- a/themes/xfce-4.0/Makefile.am
+++ b/themes/xfce-4.0/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-4.0
diff --git a/themes/xfce-4.0/gtk-3.0/Makefile.am b/themes/xfce-4.0/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..db7f95d
--- /dev/null
+++ b/themes/xfce-4.0/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-4.0/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/xfce-4.0/gtk-3.0/gtk.css b/themes/xfce-4.0/gtk-3.0/gtk.css
new file mode 100644
index 0000000..2cdba7f
--- /dev/null
+++ b/themes/xfce-4.0/gtk-3.0/gtk.css
@@ -0,0 +1,420 @@
+/* Default Xfce theme
+ * Olivier Fourdan 05/2003
+ * Ported from gtk-2.0 to gtk-3.0 by Peter de Ridder <peter at xfce.org>
+ */
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #7f7f79;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #ffffff;
+
+ at define-color bg_active #bfbdbb;
+ at define-color bg_insensitive #eae7e4;
+ at define-color bg_normal #eae7e4;
+ at define-color bg_prelight #eae7e4;
+ at define-color bg_selected #606080;
+
+ at define-color base_active #bfbdbb;
+ at define-color base_insensitive #eae7e4;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #eae7e4;
+ at define-color base_selected #606080;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #ffffff;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkCheckButton-indicator-size : 14;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: out;
+ -GtkPaned-handle-size : 8;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 2;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+
+ border-width: 3 3;
+}
+
+.view:active, .entry:active {
+ color: #000000;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: #ffffff;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#606080, 0.8)), to(shade(#606080, 1.8)));
+ border-color: darker(#606080);
+
+ border-width: 1 1;
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+}
+
+.scrollbar.trough {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 0.8)), to(shade(@bg_active, 1.8)));
+ border-color: darker(@bg_active);
+
+ border-width: 2 2;
+}
+
+.scale.trough {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 0.8)), to(shade(@bg_active, 1.8)));
+ border-color: darker(@bg_active);
+}
+
+.scrollbar.trough.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.8)), to(shade(@bg_active, 1.8)));
+}
+
+.scale.trough.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.8)), to(shade(@bg_active, 1.8)));
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+.menubar, .dock, .toolbar {
+ border-width: 1 2;
+}
+
+.menubar:active, .dock:active, .toolbar:active {
+ color: #000000;
+ background-color: #bfbdbb;
+ border-color: darker(#bfbdbb);
+}
+
+.menubar:hover, .dock:hover, .toolbar:hover {
+ color: #ffffff;
+ background-color: #606080;
+ border-color: darker(#606080);
+}
+
+.menuitem {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+
+ border-width: 2 2;
+}
+
+.menuitem:active {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#bfbdbb, 1.8)), to(shade(#bfbdbb, 0.8)));
+ border-color: darker(#bfbdbb);
+}
+
+.menuitem:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8)));
+}
+
+.menuitem:hover {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#606080, 0.8)), to(shade(#606080, 1.8)));
+ border-color: darker(#606080);
+}
+
+.menuitem:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.8)), to(shade(@bg_selected, 0.8)));
+}
+
+.button.horizontal, .scrollbar.slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+
+ border-width: 2 2;
+}
+
+.button.horizontal:active, .scrollbar.slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 1.8)), to(shade(@bg_active, 0.8)));
+}
+
+.button.horizontal:insensitive, .scrollbar.slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8)));
+}
+
+.button.horizontal:hover, .scrollbar.slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 0.8)), to(shade(@bg_prelight, 1.8)));
+}
+
+.button.horizontal:selected, .scrollbar.slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.8)), to(shade(@bg_selected, 0.8)));
+}
+
+.button.vertical, .scrollbar.slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_normal, 0.8)), to(shade(@bg_normal, 1.8)));
+
+ border-width: 2 2;
+}
+
+.button.vertical:active, .scrollbar.slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_active, 1.8)), to(shade(@bg_active, 0.8)));
+}
+
+.button.vertical:insensitive, .scrollbar.slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8)));
+}
+
+.button.vertical:hover, .scrollbar.slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_prelight, 0.8)), to(shade(@bg_prelight, 1.8)));
+}
+
+.button.vertical:selected, .scrollbar.slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 1.8)), to(shade(@bg_selected, 0.8)));
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(#fafaf2, 1.8)));
+
+ border-width: 3 3;
+
+ -GtkWidget-focus-padding: 0;
+}
+
+.scale {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.8)), to(shade(#fafaf2, 1.8)));
+
+ border-width: 3 3;
+}
+
+.button:active, .scale:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#bfbdbb, 1.8)), to(shade(#bfbdbb, 0.8)));
+ border-color: darker(#bfbdbb);
+}
+
+.button:insensitive, .scale:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8)));
+}
+
+.button:hover, .scale:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#606080, 0.8)), to(shade(#606080, 1.8)));
+ border-color: darker(#606080);
+}
+
+.button:selected, .scale:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.8)), to(shade(@bg_selected, 0.8)));
+}
diff --git a/themes/xfce-4.2/Makefile.am b/themes/xfce-4.2/Makefile.am
index 68b5c84..c12c508 100644
--- a/themes/xfce-4.2/Makefile.am
+++ b/themes/xfce-4.2/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-4.2
diff --git a/themes/xfce-4.2/gtk-3.0/Makefile.am b/themes/xfce-4.2/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..41e48e4
--- /dev/null
+++ b/themes/xfce-4.2/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-4.2/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/xfce-4.2/gtk-3.0/gtk.css b/themes/xfce-4.2/gtk-3.0/gtk.css
new file mode 100644
index 0000000..269bf25
--- /dev/null
+++ b/themes/xfce-4.2/gtk-3.0/gtk.css
@@ -0,0 +1,454 @@
+/* Created June 2005 by Olivier Fourdan
+ * Ported from gtk-2.0 to gtk-3.0 by Peter de Ridder <peter at xfce.org>
+ * Released under the GPL license
+ */
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #8e8e8a;
+ at define-color fg_normal #000000;
+ at define-color fg_prelight #000000;
+ at define-color fg_selected #ffffff;
+
+ at define-color bg_active #e6e8ea;
+ at define-color bg_insensitive #edeff2;
+ at define-color bg_normal #edeff2;
+ at define-color bg_prelight #f2f4f7;
+ at define-color bg_selected #5582c2;
+
+ at define-color base_active #d3d7e0;
+ at define-color base_insensitive #edeff2;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #e6e8ea;
+ at define-color base_selected #5582c2;
+
+ at define-color text_active #000000;
+ at define-color text_insensitive #000000;
+ at define-color text_normal #000000;
+ at define-color text_prelight #000000;
+ at define-color text_selected #ffffff;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkButton-child-displacement-x : 0;
+ -GtkButton-child-displacement-y : 1;
+ -GtkCheckButton-indicator-size : 12;
+ -GtkMenuBar-internal-padding : 2;
+ -GtkMenuBar-shadow-type : out;
+ -GtkMenuItem-selected-shadow-type: etched-in;
+ -GtkPaned-handle-size : 7;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-has-backward-stepper: true;
+ -GtkScrollbar-min-slider-length : 20;
+ -GtkToolbar-shadow-type : out;
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 4;
+ -GtkWidget-interior-focus : true;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: #ffffff;
+ background-color: #5582c2;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ background-color: #5582c2;
+ border-color: darker(#5582c2);
+
+ border-width: 0 0;
+}
+
+.trough {
+ background-color: #d3d7e0;
+ border-color: darker(#d3d7e0);
+}
+
+.scale.trough, .scrollbar.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#edeff2, 0.95)), to(shade(#edeff2, 1.1)));
+ border-color: darker(#edeff2);
+}
+
+.scale.trough.vertical, .scrollbar.trough.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#edeff2, 0.95)), to(shade(#edeff2, 1.1)));
+ border-color: darker(#edeff2);
+}
+
+.notebook {
+ background-color: #f5f5f5;
+ border-color: darker(#f5f5f5);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: #d3d7e0;
+ border-color: darker(#d3d7e0);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: @fg_normal;
+ background-color: #f5f5f5;
+ border-color: darker(#f5f5f5);
+}
+
+.menu {
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menu:active {
+ color: #ffffff;
+ background-color: #d3d7e0;
+ border-color: darker(#d3d7e0);
+}
+
+.menu:insensitive {
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menu:hover {
+ color: #ffffff;
+ background-color: #5582c2;
+ border-color: darker(#5582c2);
+}
+
+.menu:selected {
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.menuitem {
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+
+ border-width: 1 2;
+}
+
+.menuitem:active {
+ color: #ffffff;
+ background-color: #d3d7e0;
+ border-color: darker(#d3d7e0);
+}
+
+.menuitem:insensitive {
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menuitem:hover {
+ color: #ffffff;
+ background-color: #5582c2;
+ border-color: darker(#5582c2);
+}
+
+.menuitem:selected {
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.menubar:active .toolbar:active {
+ color: #ffffff;
+ background-color: #d3d7e0;
+ border-color: darker(#d3d7e0);
+}
+
+
+.menubar:hover .toolbar:hover {
+ color: #ffffff;
+ background-color: #5582c2;
+ border-color: darker(#5582c2);
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e6e8ea, 1.1)), to(shade(#e6e8ea, 0.95)));
+ border-color: darker(#e6e8ea);
+
+ -GtkWidget-focus-padding: 1;
+}
+
+.button:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#c2cacf, 0.95)), to(shade(#c2cacf, 1.1)));
+ border-color: darker(#c2cacf);
+}
+
+.button:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#f2f4f7, 1.1)), to(shade(#f2f4f7, 0.95)));
+ border-color: darker(#f2f4f7);
+}
+
+.button:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.button.horizontal, .slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e6e8ea, 1.1)), to(shade(#e6e8ea, 0.95)));
+ border-color: darker(#e6e8ea);
+}
+
+.button.horizontal:active, .slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#edeff2, 0.95)), to(shade(#edeff2, 1.1)));
+ border-color: darker(#edeff2);
+}
+
+.button.horizontal:insensitive, .slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.horizontal:hover, .slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#f2f4f7, 1.1)), to(shade(#f2f4f7, 0.95)));
+ border-color: darker(#f2f4f7);
+}
+
+.button.horizontal:selected, .slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.button.vertical, .slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e6e8ea, 1.1)), to(shade(#e6e8ea, 0.95)));
+ border-color: darker(#e6e8ea);
+}
+
+.button.vertical:active, .slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#edeff2, 0.95)), to(shade(#edeff2, 1.1)));
+ border-color: darker(#edeff2);
+}
+
+.button.vertical:insensitive, .slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.vertical:hover, .slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#f2f4f7, 1.1)), to(shade(#f2f4f7, 0.95)));
+ border-color: darker(#f2f4f7);
+}
+
+.button.vertical:selected, .slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.dock {
+ border-width: 0 2;
+}
+
+.radio {
+ -GtkCheckButton-indicator-size: 14;
+}
diff --git a/themes/xfce-4.4/Makefile.am b/themes/xfce-4.4/Makefile.am
index 85df91b..de33bfb 100644
--- a/themes/xfce-4.4/Makefile.am
+++ b/themes/xfce-4.4/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-4.4
diff --git a/themes/xfce-4.4/gtk-3.0/Makefile.am b/themes/xfce-4.4/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..12416e9
--- /dev/null
+++ b/themes/xfce-4.4/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-4.4/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/xfce-4.4/gtk-3.0/gtk.css b/themes/xfce-4.4/gtk-3.0/gtk.css
new file mode 100644
index 0000000..ad965c9
--- /dev/null
+++ b/themes/xfce-4.4/gtk-3.0/gtk.css
@@ -0,0 +1,476 @@
+/* Created July 2006
+ * Modified Dec. 2006
+ * Modified Jan. 2007
+ * Olivier Fourdan <fourdan at xfce.org>
+ * Based on Tango color scheme http://tango-project.org
+ * Ported from gtk-2.0 to gtk-3.0 by Peter de Ridder <peter at xfce.org>
+ * Released under the GPL license
+ */
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #888a85;
+ at define-color fg_normal #101010;
+ at define-color fg_prelight #101010;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #d3d7cf;
+ at define-color bg_insensitive #eeeeec;
+ at define-color bg_normal #eeeeec;
+ at define-color bg_prelight #eeeeec;
+ at define-color bg_selected #d3d7cf;
+
+ at define-color base_active #d3d7cf;
+ at define-color base_insensitive #eeeeec;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #eeeeec;
+ at define-color base_selected #3465a4;
+
+ at define-color text_active #101010;
+ at define-color text_insensitive #101010;
+ at define-color text_normal #101010;
+ at define-color text_prelight #101010;
+ at define-color text_selected #ffffff;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 4;
+ -GtkWidget-interior-focus : true;
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+ -GtkButton-child-displacement-x : 0;
+ -GtkButton-child-displacement-y : 1;
+ -GtkCheckButton-indicator-size : 12;
+ -GtkMenuItem-selected-shadow-type: etched-in;
+ -GtkPaned-handle-size : 7;
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+ -GtkScrollbar-has-backward-stepper: true;
+ -GtkScrollbar-min-slider-length : 20;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ color: #4e9a06;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#8ae234, 1.1)), to(shade(#8ae234, 0.95)));
+ border-color: darker(#8ae234);
+
+ border-width: 0 0;
+}
+
+.progressbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#8ae234, 1.1)), to(shade(#8ae234, 0.95)));
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e8e8e6, 0.95)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.trough.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e8e8e6, 0.95)), to(shade(#e8e8e6, 1.1)));
+}
+
+.notebook {
+ color: #101010;
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: #e8e8e6;
+ border-color: darker(#e8e8e6);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: #101010;
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menu {
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menu:active {
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.menu:insensitive {
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menu:hover {
+ background-color: #d3d7cf;
+ border-color: darker(#d3d7cf);
+}
+
+.menu:selected {
+ color: #000000;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.menuitem {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffffff, 1.1)), to(shade(#ffffff, 0.95)));
+ border-color: darker(#ffffff);
+
+ border-width: 1 2;
+}
+
+.menuitem:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.95)), to(shade(@bg_active, 1.1)));
+ border-color: darker(@bg_active);
+}
+
+.menuitem:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffffff, 1.1)), to(shade(#ffffff, 0.95)));
+ border-color: darker(#ffffff);
+}
+
+.menuitem:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 1.1)), to(shade(#d3d7cf, 0.95)));
+ border-color: darker(#d3d7cf);
+}
+
+.menuitem:selected {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.menubar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.2)), to(shade(#eeeeec, 0.9)));
+ border-color: darker(#eeeeec);
+
+ border-width: 1 3;
+}
+
+.menubar:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.2)));
+ border-color: darker(@bg_active);
+}
+
+.menubar:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.2)), to(shade(#eeeeec, 0.9)));
+ border-color: darker(#eeeeec);
+}
+
+.menubar:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 1.2)), to(shade(#d3d7cf, 0.9)));
+ border-color: darker(#d3d7cf);
+}
+
+.menubar:selected {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.2)));
+ border-color: darker(@bg_selected);
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.1)), to(shade(#eeeeec, 0.95)));
+ border-color: darker(#eeeeec);
+
+ -GtkWidget-focus-padding: 1;
+}
+
+.button:active {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 0.95)), to(shade(#d3d7cf, 1.1)));
+ border-color: darker(#d3d7cf);
+}
+
+.button:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 0.95)), to(shade(#d3d7cf, 1.1)));
+ border-color: darker(#d3d7cf);
+}
+
+.button:selected {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#3465a4, 1.1)), to(shade(#3465a4, 0.95)));
+ border-color: darker(#3465a4);
+}
+
+.tooltip {
+ color: #101010;
+ background-color: #ffffdf;
+ border-color: darker(#ffffdf);
+}
+
+.scrollbar {
+ -xfce-grip-style: rough;
+}
+
+.button.horizontal, .slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 1.1)), to(shade(#d3d7cf, 0.95)));
+ border-color: darker(#d3d7cf);
+}
+
+.button.horizontal:active, .slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e8e8e6, 0.95)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.button.horizontal:insensitive, .slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.horizontal:hover, .slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 1.1)), to(shade(#d3d7cf, 0.95)));
+ border-color: darker(#d3d7cf);
+}
+
+.button.horizontal:selected, .slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.button.vertical, .slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#d3d7cf, 1.1)), to(shade(#d3d7cf, 0.95)));
+ border-color: darker(#d3d7cf);
+}
+
+.button.vertical:active, .slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e8e8e6, 0.95)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.button.vertical:insensitive, .slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.vertical:hover, .slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#d3d7cf, 1.1)), to(shade(#d3d7cf, 0.95)));
+ border-color: darker(#d3d7cf);
+}
+
+.button.vertical:selected, .slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 0.95)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.radio {
+ -GtkCheckButton-indicator-size: 14;
+}
diff --git a/themes/xfce-4.6/Makefile.am b/themes/xfce-4.6/Makefile.am
index 7b4ab13..fde6903 100644
--- a/themes/xfce-4.6/Makefile.am
+++ b/themes/xfce-4.6/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce-4.6
diff --git a/themes/xfce-4.6/gtk-3.0/Makefile.am b/themes/xfce-4.6/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..9d6d9b8
--- /dev/null
+++ b/themes/xfce-4.6/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce-4.6/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/xfce-4.6/gtk-3.0/gtk.css b/themes/xfce-4.6/gtk-3.0/gtk.css
new file mode 100644
index 0000000..1f84a2f
--- /dev/null
+++ b/themes/xfce-4.6/gtk-3.0/gtk.css
@@ -0,0 +1,494 @@
+/* Created July 2006
+ * Modified Dec. 2006
+ * Modified Jan. 2007
+ * Modified Jul. 2008 for xfce 4.6
+ * Modified Feb. 2009 for xfce 4.6
+ * Olivier Fourdan <fourdan at xfce.org>
+ * Ported from gtk-2.0 to gtk-3.0 by Peter de Ridder <peter at xfce.org>
+ * Released under the GPL license
+ */
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #888a85;
+ at define-color fg_normal #101010;
+ at define-color fg_prelight #101010;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #d9d7d6;
+ at define-color bg_insensitive #eeeeec;
+ at define-color bg_normal #eeeeec;
+ at define-color bg_prelight #eeeeec;
+ at define-color bg_selected #d9d7d6;
+
+ at define-color base_active #d9d7d6;
+ at define-color base_insensitive #eeeeec;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #eeeeec;
+ at define-color base_selected #bad8ff;
+
+ at define-color text_active #101010;
+ at define-color text_insensitive #101010;
+ at define-color text_normal #101010;
+ at define-color text_prelight #101010;
+ at define-color text_selected #101010;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 0;
+ -GtkWidget-interior-focus : false;
+
+ -GtkButton-child-displacement-x : 0;
+ -GtkButton-child-displacement-y : 1;
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+
+ -GtkButtonBox-child-internal-pad-x: 0;
+ -GtkButtonBox-child-internal-pad-y: 0;
+ -GtkButtonBox-child-min-height : 0;
+ -GtkButtonBox-child-min-width : 0;
+
+ -GtkCheckButton-indicator-size : 12;
+
+ -GtkExpander-expander-size : 11;
+ -GtkExpander-expander-spacing : 0;
+
+ -GtkMenuBar-internal-padding : 0;
+
+ -GtkMenu-horizontal-padding : 0;
+ -GtkMenu-vertical-padding : 0;
+
+ -GtkMenuItem-selected-shadow-type: etched-in;
+
+ -GtkPaned-handle-size : 3;
+
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+
+ -GtkScale-value-spacing : 0;
+
+ -GtkScrollbar-has-backward-stepper: true;
+ -GtkScrollbar-min-slider-length : 20;
+
+ -GtkToolbar-internal-padding : 0;
+ -GtkToolbar-space-size : 10;
+
+ -GtkTreeView-expander-size : 11;
+ -GtkTreeView-horizontal-separator: 0;
+ -GtkTreeView-vertical-separator : 0;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+
+ -GtkEntry-focus-line-pattern: "\0";
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+
+ -GtkWidget-focus-line-pattern: "\1\1";
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ color: #4e9a06;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cce2ff, 1.1)), to(shade(#cce2ff, 0.9)));
+ border-color: darker(#cce2ff);
+
+ border-width: 0 0;
+}
+
+.progressbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#cce2ff, 1.1)), to(shade(#cce2ff, 0.9)));
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e8e8e6, 0.9)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.trough.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e8e8e6, 0.9)), to(shade(#e8e8e6, 1.1)));
+}
+
+.notebook {
+ color: #101010;
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+
+ border-width: 1 1;
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: #e8e8e6;
+ border-color: darker(#e8e8e6);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: #101010;
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menu {
+ background-color: #fafaf7;
+ border-color: darker(#fafaf7);
+}
+
+.menuitem {
+ background-color: #fafaf7;
+ border-color: darker(#fafaf7);
+
+ border-width: 1 2;
+}
+
+.menu:active, .memuitem:active {
+ color: #101010;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.menu:insensitive, .menuitem:insensitive {
+ background-color: #fafaf7;
+ border-color: darker(#fafaf7);
+}
+
+.menu:hover, .menuitem:hover {
+ color: #101010;
+ background-color: #cce2ff;
+ border-color: darker(#cce2ff);
+}
+
+.menu:selected, .menuitem:selected {
+ color: #101010;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.menubar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.0)), to(shade(#eeeeec, 0.9)));
+ border-color: darker(#eeeeec);
+
+ border-width: 1 2;
+}
+
+.menubar:active {
+ color: #101010;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.0)));
+ border-color: darker(@bg_active);
+}
+
+.menubar:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.0)), to(shade(#eeeeec, 0.9)));
+ border-color: darker(#eeeeec);
+}
+
+.menubar:hover {
+ color: #101010;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cce2ff, 1.0)), to(shade(#cce2ff, 0.9)));
+ border-color: darker(#cce2ff);
+}
+
+.menubar:selected {
+ color: #101010;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.0)));
+ border-color: darker(@bg_selected);
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.1)), to(shade(#eeeeec, 0.95)));
+ border-color: darker(#eeeeec);
+
+ -GtkWidget-focus-line-pattern: "\0";
+}
+
+.button:active {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 0.95)), to(shade(#d3d7cf, 1.1)));
+ border-color: darker(#d3d7cf);
+}
+
+.button:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 0.95)), to(shade(#d3d7cf, 1.1)));
+ border-color: darker(#d3d7cf);
+}
+
+.button:selected {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#3465a4, 1.1)), to(shade(#3465a4, 0.95)));
+ border-color: darker(#3465a4);
+}
+
+.tooltip {
+ color: #101010;
+ background-color: #ffffdf;
+ border-color: darker(#ffffdf);
+}
+
+.scrollbar {
+ -xfce-grip-style: rough;
+}
+
+.button.horizontal, .slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d9d7d6, 1.1)), to(shade(#d9d7d6, 0.9)));
+ border-color: darker(#d9d7d6);
+}
+
+.button.horizontal:active, .slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e8e8e6, 0.9)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.button.horizontal:insensitive, .slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.horizontal:hover, .slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cce2ff, 1.1)), to(shade(#cce2ff, 0.9)));
+ border-color: darker(#cce2ff);
+}
+
+.button.horizontal:selected, .slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.button.vertical, .slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#d9d7d6, 1.1)), to(shade(#d9d7d6, 0.9)));
+ border-color: darker(#d9d7d6);
+}
+
+.button.vertical:active, .slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e8e8e6, 0.9)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.button.vertical:insensitive, .slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.vertical:hover, .slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#cce2ff, 1.1)), to(shade(#cce2ff, 0.9)));
+ border-color: darker(#cce2ff);
+}
+
+.button.vertical:selected, .slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.radio {
+ -GtkCheckButton-indicator-size: 14;
+}
diff --git a/themes/xfce/Makefile.am b/themes/xfce/Makefile.am
index ec524ef..655896d 100644
--- a/themes/xfce/Makefile.am
+++ b/themes/xfce/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = gtk-2.0
+SUBDIRS = $(GTK_SUBDIRS)
+DIST_SUBDIRS = gtk-2.0 gtk-3.0
themedir = $(datadir)/themes/Xfce
diff --git a/themes/xfce/gtk-3.0/Makefile.am b/themes/xfce/gtk-3.0/Makefile.am
new file mode 100644
index 0000000..51d5846
--- /dev/null
+++ b/themes/xfce/gtk-3.0/Makefile.am
@@ -0,0 +1,5 @@
+themedir = $(datadir)/themes/Xfce/gtk-3.0
+theme_DATA = gtk.css
+
+EXTRA_DIST = $(theme_DATA)
+
diff --git a/themes/xfce/gtk-3.0/gtk.css b/themes/xfce/gtk-3.0/gtk.css
new file mode 100644
index 0000000..1f84a2f
--- /dev/null
+++ b/themes/xfce/gtk-3.0/gtk.css
@@ -0,0 +1,494 @@
+/* Created July 2006
+ * Modified Dec. 2006
+ * Modified Jan. 2007
+ * Modified Jul. 2008 for xfce 4.6
+ * Modified Feb. 2009 for xfce 4.6
+ * Olivier Fourdan <fourdan at xfce.org>
+ * Ported from gtk-2.0 to gtk-3.0 by Peter de Ridder <peter at xfce.org>
+ * Released under the GPL license
+ */
+
+ at define-color fg_active #000000;
+ at define-color fg_insensitive #888a85;
+ at define-color fg_normal #101010;
+ at define-color fg_prelight #101010;
+ at define-color fg_selected #000000;
+
+ at define-color bg_active #d9d7d6;
+ at define-color bg_insensitive #eeeeec;
+ at define-color bg_normal #eeeeec;
+ at define-color bg_prelight #eeeeec;
+ at define-color bg_selected #d9d7d6;
+
+ at define-color base_active #d9d7d6;
+ at define-color base_insensitive #eeeeec;
+ at define-color base_normal #ffffff;
+ at define-color base_prelight #eeeeec;
+ at define-color base_selected #bad8ff;
+
+ at define-color text_active #101010;
+ at define-color text_insensitive #101010;
+ at define-color text_normal #101010;
+ at define-color text_prelight #101010;
+ at define-color text_selected #101010;
+
+* {
+ engine: xfce;
+
+ -xfce-smooth-edge: true;
+ -xfce-grip-style: disabled;
+
+ -GtkWidget-focus-line-width : 1;
+ -GtkWidget-focus-padding : 0;
+ -GtkWidget-interior-focus : false;
+
+ -GtkButton-child-displacement-x : 0;
+ -GtkButton-child-displacement-y : 1;
+ -GtkButton-default-border : 0;
+ -GtkButton-default-outside-border: 0;
+
+ -GtkButtonBox-child-internal-pad-x: 0;
+ -GtkButtonBox-child-internal-pad-y: 0;
+ -GtkButtonBox-child-min-height : 0;
+ -GtkButtonBox-child-min-width : 0;
+
+ -GtkCheckButton-indicator-size : 12;
+
+ -GtkExpander-expander-size : 11;
+ -GtkExpander-expander-spacing : 0;
+
+ -GtkMenuBar-internal-padding : 0;
+
+ -GtkMenu-horizontal-padding : 0;
+ -GtkMenu-vertical-padding : 0;
+
+ -GtkMenuItem-selected-shadow-type: etched-in;
+
+ -GtkPaned-handle-size : 3;
+
+ -GtkRange-slider-width : 15;
+ -GtkRange-stepper-size : 15;
+ -GtkRange-stepper-spacing : 0;
+ -GtkRange-trough-border : 0;
+
+ -GtkScale-value-spacing : 0;
+
+ -GtkScrollbar-has-backward-stepper: true;
+ -GtkScrollbar-min-slider-length : 20;
+
+ -GtkToolbar-internal-padding : 0;
+ -GtkToolbar-space-size : 10;
+
+ -GtkTreeView-expander-size : 11;
+ -GtkTreeView-horizontal-separator: 0;
+ -GtkTreeView-vertical-separator : 0;
+
+ border-width: 2 2;
+
+ color: @fg_normal;
+ background-color: @bg_normal;
+ border-color: darker(@bg_normal);
+}
+
+*:active {
+ color: @fg_active;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+*:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+ border-color: darker(@bg_insensitive);
+ text-shadow: 1 1 white;
+}
+
+*:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+*:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.view, .entry {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+
+ -GtkEntry-focus-line-pattern: "\0";
+}
+
+.view:active, .entry:active {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_normal);
+}
+
+.view:insensitive, .entry:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_normal);
+}
+
+.view:hover, .entry:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_normal);
+}
+
+.view:selected, .entry:selected {
+ color: @text_selected;
+ background-color: @base_selected;
+ border-color: darker(@bg_normal);
+}
+
+.view row:nth-child(odd) {
+ background-color: shade(@base_normal, 0.93);
+}
+
+.view row:nth-child(odd):active {
+ background-color: shade(@base_active, 0.93);
+}
+
+.view row:nth-child(odd):insensitive {
+ background-color: shade(@base_insensitive, 0.93);
+}
+
+.view row:nth-child(odd):hover {
+ background-color: shade(@base_prelight, 0.93);
+}
+
+.view row:nth-child(odd):selected {
+ background-color: shade(@base_selected, 0.93);
+}
+
+GtkCalendar {
+ color: @text_normal;
+}
+
+.header {
+ color: @fg_normal;
+}
+
+GtkCalendar:active {
+ color: @text_active;
+}
+
+GtkCalendar:insensitive {
+ color: @text_insensitive;
+}
+
+GtkCalendar:hover {
+ color: @text_prelight;
+}
+
+GtkCalendar:selected {
+ color: @text_selected;
+}
+
+.highlight {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+GtkCalendar:inconsistent {
+ color: mix(lighter(@bg_normal), darker(@bg_normal), 0.5);
+}
+
+GtkCalendar:selected {
+ color: @text_active;
+ background-color: @base_active;
+}
+
+.check, .radio {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+
+ -GtkWidget-focus-line-pattern: "\1\1";
+}
+
+.check:active, .radio:active {
+ color: @text_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive, .radio:insensitive {
+ color: @text_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.check:hover, .radio:hover {
+ color: @text_prelight;
+ background-color: @base_prelight;
+ border-color: darker(@bg_prelight);
+}
+
+.check:selected, .radio:selected {
+ color: @text_active;
+ background-color: @base_active;
+ border-color: darker(@bg_active);
+}
+
+.check:inconsistent, .radio:inconsistent {
+ color: @fg_normal;
+ background-color: @base_normal;
+ border-color: darker(@bg_normal);
+}
+
+.check:insensitive:inconsistent, .radio:insensitive:inconsistent {
+ color: @fg_insensitive;
+ background-color: @base_insensitive;
+ border-color: darker(@bg_insensitive);
+}
+
+.cell {
+ color: @text_normal;
+}
+
+.cell:active {
+ color: @text_active;
+}
+
+.cell:insensitive {
+ color: @text_insensitive;
+}
+
+.cell:hover {
+ color: @text_prelight;
+}
+
+.cell:selected {
+ color: @text_selected;
+}
+
+.spinbutton.button {
+ color: @fg_normal;
+ background-color: @bg_normal;
+}
+
+.spinbutton.button:active {
+ color: @fg_active;
+ background-color: @bg_active;
+}
+
+.spinbutton.button:insensitive {
+ color: @fg_insensitive;
+ background-color: @bg_insensitive;
+}
+
+.spinbutton.button:hover {
+ color: @fg_prelight;
+ background-color: @bg_prelight;
+}
+
+.spinbutton.button:selected {
+ color: @fg_selected;
+ background-color: @bg_selected;
+}
+
+.progressbar {
+ color: #4e9a06;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cce2ff, 1.1)), to(shade(#cce2ff, 0.9)));
+ border-color: darker(#cce2ff);
+
+ border-width: 0 0;
+}
+
+.progressbar.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#cce2ff, 1.1)), to(shade(#cce2ff, 0.9)));
+}
+
+.trough {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e8e8e6, 0.9)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.trough.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e8e8e6, 0.9)), to(shade(#e8e8e6, 1.1)));
+}
+
+.notebook {
+ color: #101010;
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+
+ border-width: 1 1;
+}
+
+.notebook tab, .notebook tab * {
+ color: @fg_active;
+ background-color: #e8e8e6;
+ border-color: darker(#e8e8e6);
+}
+
+.notebook tab:active, .notebook tab *:active {
+ color: #101010;
+ background-color: #ffffff;
+ border-color: darker(#ffffff);
+}
+
+.menu {
+ background-color: #fafaf7;
+ border-color: darker(#fafaf7);
+}
+
+.menuitem {
+ background-color: #fafaf7;
+ border-color: darker(#fafaf7);
+
+ border-width: 1 2;
+}
+
+.menu:active, .memuitem:active {
+ color: #101010;
+ background-color: @bg_active;
+ border-color: darker(@bg_active);
+}
+
+.menu:insensitive, .menuitem:insensitive {
+ background-color: #fafaf7;
+ border-color: darker(#fafaf7);
+}
+
+.menu:hover, .menuitem:hover {
+ color: #101010;
+ background-color: #cce2ff;
+ border-color: darker(#cce2ff);
+}
+
+.menu:selected, .menuitem:selected {
+ color: #101010;
+ background-color: @bg_selected;
+ border-color: darker(@bg_selected);
+}
+
+.menubar {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.0)), to(shade(#eeeeec, 0.9)));
+ border-color: darker(#eeeeec);
+
+ border-width: 1 2;
+}
+
+.menubar:active {
+ color: #101010;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_active, 0.9)), to(shade(@bg_active, 1.0)));
+ border-color: darker(@bg_active);
+}
+
+.menubar:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.0)), to(shade(#eeeeec, 0.9)));
+ border-color: darker(#eeeeec);
+}
+
+.menubar:hover {
+ color: #101010;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cce2ff, 1.0)), to(shade(#cce2ff, 0.9)));
+ border-color: darker(#cce2ff);
+}
+
+.menubar:selected {
+ color: #101010;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.0)));
+ border-color: darker(@bg_selected);
+}
+
+.button {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#eeeeec, 1.1)), to(shade(#eeeeec, 0.95)));
+ border-color: darker(#eeeeec);
+
+ -GtkWidget-focus-line-pattern: "\0";
+}
+
+.button:active {
+ color: #000000;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 0.95)), to(shade(#d3d7cf, 1.1)));
+ border-color: darker(#d3d7cf);
+}
+
+.button:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.95)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 0.95)), to(shade(#d3d7cf, 1.1)));
+ border-color: darker(#d3d7cf);
+}
+
+.button:selected {
+ color: #ffffff;
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#3465a4, 1.1)), to(shade(#3465a4, 0.95)));
+ border-color: darker(#3465a4);
+}
+
+.tooltip {
+ color: #101010;
+ background-color: #ffffdf;
+ border-color: darker(#ffffdf);
+}
+
+.scrollbar {
+ -xfce-grip-style: rough;
+}
+
+.button.horizontal, .slider.horizontal {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d9d7d6, 1.1)), to(shade(#d9d7d6, 0.9)));
+ border-color: darker(#d9d7d6);
+}
+
+.button.horizontal:active, .slider.horizontal:active {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#e8e8e6, 0.9)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.button.horizontal:insensitive, .slider.horizontal:insensitive {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.horizontal:hover, .slider.horizontal:hover {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cce2ff, 1.1)), to(shade(#cce2ff, 0.9)));
+ border-color: darker(#cce2ff);
+}
+
+.button.horizontal:selected, .slider.horizontal:selected {
+ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.button.vertical, .slider.vertical {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#d9d7d6, 1.1)), to(shade(#d9d7d6, 0.9)));
+ border-color: darker(#d9d7d6);
+}
+
+.button.vertical:active, .slider.vertical:active {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#e8e8e6, 0.9)), to(shade(#e8e8e6, 1.1)));
+ border-color: darker(#e8e8e6);
+}
+
+.button.vertical:insensitive, .slider.vertical:insensitive {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_insensitive, 1.1)), to(shade(@bg_insensitive, 0.9)));
+ border-color: darker(@bg_insensitive);
+}
+
+.button.vertical:hover, .slider.vertical:hover {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(#cce2ff, 1.1)), to(shade(#cce2ff, 0.9)));
+ border-color: darker(#cce2ff);
+}
+
+.button.vertical:selected, .slider.vertical:selected {
+ background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1)));
+ border-color: darker(@bg_selected);
+}
+
+.radio {
+ -GtkCheckButton-indicator-size: 14;
+}
More information about the Xfce4-commits
mailing list