summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac.in9
-rw-r--r--settings-dialogs/Makefile.am112
-rw-r--r--settings-dialogs/Makefile.in782
-rw-r--r--settings-dialogs/tweaks-settings.c386
-rw-r--r--settings-dialogs/workspace-settings.c116
-rw-r--r--settings-dialogs/xfwm4-dialog.glade1359
-rw-r--r--settings-dialogs/xfwm4-dialog_glade.h1213
-rw-r--r--settings-dialogs/xfwm4-settings.c1340
-rw-r--r--settings-dialogs/xfwm4-settings.desktop12
-rw-r--r--settings-dialogs/xfwm4-settings.desktop.in12
-rw-r--r--settings-dialogs/xfwm4-tweaks-dialog.glade934
-rw-r--r--settings-dialogs/xfwm4-tweaks-dialog_glade.h802
-rw-r--r--settings-dialogs/xfwm4-tweaks-settings.desktop50
-rw-r--r--settings-dialogs/xfwm4-tweaks-settings.desktop.in12
-rw-r--r--settings-dialogs/xfwm4-workspace-dialog.glade115
-rw-r--r--settings-dialogs/xfwm4-workspace-dialog_glade.h89
-rw-r--r--settings-dialogs/xfwm4-workspace-settings.desktop12
-rw-r--r--settings-dialogs/xfwm4-workspace-settings.desktop.in12
-rw-r--r--src/Makefile.am4
-rw-r--r--src/keyboard.c4
-rw-r--r--src/keyboard.h4
-rw-r--r--src/main.c1
-rw-r--r--src/menu.c1
-rw-r--r--src/mypixmap.c8
-rw-r--r--src/mypixmap.h6
-rw-r--r--src/parserc.c163
-rw-r--r--src/parserc.h17
-rw-r--r--src/screen.c3
-rw-r--r--src/screen.h6
-rw-r--r--src/settings.c1641
-rw-r--r--src/settings.h5
32 files changed, 8143 insertions, 1089 deletions
diff --git a/Makefile.am b/Makefile.am
index 8a23fba5b..e676b5e9a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,7 +14,7 @@ DISTCLEANFILES = \
intltool-update \
xfwm4.spec
-SUBDIRS = po doc icons src mcs-plugin defaults themes
+SUBDIRS = po doc icons src defaults themes settings-dialogs
distclean-local:
rm -rf *.cache
diff --git a/configure.ac.in b/configure.ac.in
index 8f4bf4670..feaa3b019 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -62,12 +62,11 @@ AC_CHECK_LIB([Xext], [XShapeCombineShape],
], [], [$LIBX11_CFLAGS $LIBX11_LDFLAGS $LIBX11_LIBS])
XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [gtk_minimum_version])
-XDT_CHECK_PACKAGE([LIBXFCE4MCS_CLIENT], [libxfce4mcs-client-1.0], [xfce_minimum_version])
-XDT_CHECK_PACKAGE([LIBXFCE4MCS_MANAGER], [libxfce4mcs-manager-1.0], [xfce_minimum_version])
+XDT_CHECK_PACKAGE([GLADE], [libglade-2.0], [2.0.0])
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [xfce_minimum_version])
-XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [xfce_minimum_version])
+XDT_CHECK_PACKAGE([LIBXFCEGUI4], libxfcegui4-1.0, [xfce_minimum_version])
+XDT_CHECK_PACKAGE([LIBXFCONF], libxfconf-0, [0.0.0])
XDT_CHECK_PACKAGE([LIBWNCK], [libwnck-1.0], [wnck_minimum_version])
-XFCE_MCS_PLUGIN([XFCE_MCS_MANAGER], [xfce_minimum_version])
dnl
dnl Startup notification support
@@ -210,8 +209,8 @@ defaults/Makefile
icons/Makefile
icons/48x48/Makefile
icons/scalable/Makefile
-mcs-plugin/Makefile
po/Makefile.in
+settings-dialogs/Makefile
src/Makefile
themes/Makefile
themes/daloa/Makefile
diff --git a/settings-dialogs/Makefile.am b/settings-dialogs/Makefile.am
new file mode 100644
index 000000000..2afb6e0ad
--- /dev/null
+++ b/settings-dialogs/Makefile.am
@@ -0,0 +1,112 @@
+bin_PROGRAMS = \
+xfwm4-settings \
+xfwm4-tweaks-settings \
+xfwm4-workspace-settings
+
+xfwm4_workspace_settings_SOURCES = \
+ workspace-settings.c \
+ xfwm4-workspace-dialog_glade.h
+
+xfwm4_workspace_settings_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GLADE_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS) \
+ $(LIBXFCEGUI4_CFLAGS) \
+ $(LIBXFCONF_CFLAGS) \
+ -DDATADIR=\"$(datadir)\" \
+ -DSRCDIR=\"$(top_srcdir)\" \
+ -DLOCALEDIR=\"$(localedir)\"
+
+xfwm4_workspace_settings_LDADD = \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(GLADE_LIBS) \
+ $(DBUS_GLIB_LIBS) \
+ $(LIBXFCEGUI4_LIBS) \
+ $(LIBXFCONF_LIBS)
+
+xfwm4_settings_SOURCES = \
+ xfwm4-settings.c \
+ xfwm4-dialog_glade.h
+
+xfwm4_settings_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GLADE_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS) \
+ $(LIBXFCEGUI4_CFLAGS) \
+ $(LIBXFCONF_CFLAGS) \
+ -DDATADIR=\"$(datadir)\" \
+ -DSRCDIR=\"$(top_srcdir)\" \
+ -DLOCALEDIR=\"$(localedir)\"
+
+xfwm4_settings_LDADD = \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(GLADE_LIBS) \
+ $(DBUS_GLIB_LIBS) \
+ $(LIBXFCEGUI4_LIBS) \
+ $(LIBXFCONF_LIBS)
+
+xfwm4_tweaks_settings_SOURCES = \
+ tweaks-settings.c \
+ xfwm4-tweaks-dialog_glade.h
+
+xfwm4_tweaks_settings_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GLADE_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS) \
+ $(LIBXFCEGUI4_CFLAGS) \
+ $(LIBXFCONF_CFLAGS) \
+ -DDATADIR=\"$(datadir)\" \
+ -DSRCDIR=\"$(top_srcdir)\" \
+ -DLOCALEDIR=\"$(localedir)\"
+
+xfwm4_tweaks_settings_LDADD = \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(GLADE_LIBS) \
+ $(DBUS_GLIB_LIBS) \
+ $(LIBXFCEGUI4_LIBS) \
+ $(LIBXFCONF_LIBS)
+
+INCLUDES = \
+ -I${top_srcdir}
+
+if MAINTAINER_MODE
+
+BUILT_SOURCES = \
+xfwm4-dialog_glade.h \
+xfwm4-tweaks-dialog_glade.h \
+xfwm4-workspace-dialog_glade.h
+
+xfwm4-workspace-dialog_glade.h: xfwm4-workspace-dialog.glade
+ exo-csource --static --name=workspace_dialog_glade $< >$@
+
+xfwm4-dialog_glade.h: xfwm4-dialog.glade
+ exo-csource --static --name=xfwm4_dialog_glade $< >$@
+
+xfwm4-tweaks-dialog_glade.h: xfwm4-tweaks-dialog.glade
+ exo-csource --static --name=tweaks_dialog_glade $< >$@
+
+endif
+
+desktopdir = $(datadir)/applications
+desktop_in_files = \
+ xfwm4-settings.desktop.in \
+ xfwm4-tweaks-settings.desktop.in \
+ xfwm4-workspace-settings.desktop.in
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+
+settingsdir = $(datadir)/xfce4/settings-dialogs
+settings_DATA = $(desktop_DATA)
+
+@INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = \
+ $(desktop_in_files) \
+ xfwm4-workspace-dialog.glade \
+ xfwm4-tweaks-dialog.glade \
+ xfwm4-dialog.glade
diff --git a/settings-dialogs/Makefile.in b/settings-dialogs/Makefile.in
new file mode 100644
index 000000000..bfd721ed5
--- /dev/null
+++ b/settings-dialogs/Makefile.in
@@ -0,0 +1,782 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = xfwm4-settings$(EXEEXT) xfwm4-tweaks-settings$(EXEEXT) \
+ xfwm4-workspace-settings$(EXEEXT)
+subdir = settings-dialogs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(desktopdir)" \
+ "$(DESTDIR)$(settingsdir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_xfwm4_settings_OBJECTS = xfwm4_settings-xfwm4-settings.$(OBJEXT)
+xfwm4_settings_OBJECTS = $(am_xfwm4_settings_OBJECTS)
+am__DEPENDENCIES_1 =
+xfwm4_settings_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+xfwm4_settings_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(xfwm4_settings_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_xfwm4_tweaks_settings_OBJECTS = \
+ xfwm4_tweaks_settings-tweaks-settings.$(OBJEXT)
+xfwm4_tweaks_settings_OBJECTS = $(am_xfwm4_tweaks_settings_OBJECTS)
+xfwm4_tweaks_settings_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+xfwm4_tweaks_settings_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(xfwm4_tweaks_settings_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_xfwm4_workspace_settings_OBJECTS = \
+ xfwm4_workspace_settings-workspace-settings.$(OBJEXT)
+xfwm4_workspace_settings_OBJECTS = \
+ $(am_xfwm4_workspace_settings_OBJECTS)
+xfwm4_workspace_settings_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+xfwm4_workspace_settings_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(xfwm4_workspace_settings_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(xfwm4_settings_SOURCES) $(xfwm4_tweaks_settings_SOURCES) \
+ $(xfwm4_workspace_settings_SOURCES)
+DIST_SOURCES = $(xfwm4_settings_SOURCES) \
+ $(xfwm4_tweaks_settings_SOURCES) \
+ $(xfwm4_workspace_settings_SOURCES)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+desktopDATA_INSTALL = $(INSTALL_DATA)
+settingsDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(desktop_DATA) $(settings_DATA)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMPOSITOR_CFLAGS = @COMPOSITOR_CFLAGS@
+COMPOSITOR_LIBS = @COMPOSITOR_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_COMPOSITOR = @ENABLE_COMPOSITOR@
+ENABLE_KDE_SYSTRAY = @ENABLE_KDE_SYSTRAY@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLADE_CFLAGS = @GLADE_CFLAGS@
+GLADE_LIBS = @GLADE_LIBS@
+GLADE_REQUIRED_VERSION = @GLADE_REQUIRED_VERSION@
+GLADE_VERSION = @GLADE_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSM_CFLAGS = @LIBSM_CFLAGS@
+LIBSM_LDFLAGS = @LIBSM_LDFLAGS@
+LIBSM_LIBS = @LIBSM_LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LIBWNCK_CFLAGS = @LIBWNCK_CFLAGS@
+LIBWNCK_LIBS = @LIBWNCK_LIBS@
+LIBWNCK_REQUIRED_VERSION = @LIBWNCK_REQUIRED_VERSION@
+LIBWNCK_VERSION = @LIBWNCK_VERSION@
+LIBX11_CFLAGS = @LIBX11_CFLAGS@
+LIBX11_LDFLAGS = @LIBX11_LDFLAGS@
+LIBX11_LIBS = @LIBX11_LIBS@
+LIBXFCE4UTIL_CFLAGS = @LIBXFCE4UTIL_CFLAGS@
+LIBXFCE4UTIL_LIBS = @LIBXFCE4UTIL_LIBS@
+LIBXFCE4UTIL_REQUIRED_VERSION = @LIBXFCE4UTIL_REQUIRED_VERSION@
+LIBXFCE4UTIL_VERSION = @LIBXFCE4UTIL_VERSION@
+LIBXFCEGUI4_CFLAGS = @LIBXFCEGUI4_CFLAGS@
+LIBXFCEGUI4_LIBS = @LIBXFCEGUI4_LIBS@
+LIBXFCEGUI4_REQUIRED_VERSION = @LIBXFCEGUI4_REQUIRED_VERSION@
+LIBXFCEGUI4_VERSION = @LIBXFCEGUI4_VERSION@
+LIBXFCONF_CFLAGS = @LIBXFCONF_CFLAGS@
+LIBXFCONF_LIBS = @LIBXFCONF_LIBS@
+LIBXFCONF_REQUIRED_VERSION = @LIBXFCONF_REQUIRED_VERSION@
+LIBXFCONF_VERSION = @LIBXFCONF_VERSION@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANDR_LIBS = @RANDR_LIBS@
+RANLIB = @RANLIB@
+RENDER_CFLAGS = @RENDER_CFLAGS@
+RENDER_LIBS = @RENDER_LIBS@
+REVISION = @REVISION@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+XMKMF = @XMKMF@
+XSYNC_LIBS = @XSYNC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+xfwm4_workspace_settings_SOURCES = \
+ workspace-settings.c \
+ xfwm4-workspace-dialog_glade.h
+
+xfwm4_workspace_settings_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GLADE_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS) \
+ $(LIBXFCEGUI4_CFLAGS) \
+ $(LIBXFCONF_CFLAGS) \
+ -DDATADIR=\"$(datadir)\" \
+ -DSRCDIR=\"$(top_srcdir)\" \
+ -DLOCALEDIR=\"$(localedir)\"
+
+xfwm4_workspace_settings_LDADD = \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(GLADE_LIBS) \
+ $(DBUS_GLIB_LIBS) \
+ $(LIBXFCEGUI4_LIBS) \
+ $(LIBXFCONF_LIBS)
+
+xfwm4_settings_SOURCES = \
+ xfwm4-settings.c \
+ xfwm4-dialog_glade.h
+
+xfwm4_settings_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GLADE_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS) \
+ $(LIBXFCEGUI4_CFLAGS) \
+ $(LIBXFCONF_CFLAGS) \
+ -DDATADIR=\"$(datadir)\" \
+ -DSRCDIR=\"$(top_srcdir)\" \
+ -DLOCALEDIR=\"$(localedir)\"
+
+xfwm4_settings_LDADD = \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(GLADE_LIBS) \
+ $(DBUS_GLIB_LIBS) \
+ $(LIBXFCEGUI4_LIBS) \
+ $(LIBXFCONF_LIBS)
+
+xfwm4_tweaks_settings_SOURCES = \
+ tweaks-settings.c \
+ xfwm4-tweaks-dialog_glade.h
+
+xfwm4_tweaks_settings_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GLADE_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS) \
+ $(LIBXFCEGUI4_CFLAGS) \
+ $(LIBXFCONF_CFLAGS) \
+ -DDATADIR=\"$(datadir)\" \
+ -DSRCDIR=\"$(top_srcdir)\" \
+ -DLOCALEDIR=\"$(localedir)\"
+
+xfwm4_tweaks_settings_LDADD = \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(GLADE_LIBS) \
+ $(DBUS_GLIB_LIBS) \
+ $(LIBXFCEGUI4_LIBS) \
+ $(LIBXFCONF_LIBS)
+
+INCLUDES = \
+ -I${top_srcdir}
+
+@MAINTAINER_MODE_TRUE@BUILT_SOURCES = \
+@MAINTAINER_MODE_TRUE@xfwm4-dialog_glade.h \
+@MAINTAINER_MODE_TRUE@xfwm4-tweaks-dialog_glade.h \
+@MAINTAINER_MODE_TRUE@xfwm4-workspace-dialog_glade.h
+
+desktopdir = $(datadir)/applications
+desktop_in_files = \
+ xfwm4-settings.desktop.in \
+ xfwm4-tweaks-settings.desktop.in \
+ xfwm4-workspace-settings.desktop.in
+
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+settingsdir = $(datadir)/xfce4/settings-dialogs
+settings_DATA = $(desktop_DATA)
+EXTRA_DIST = \
+ $(desktop_in_files) \
+ xfwm4-workspace-dialog.glade \
+ xfwm4-tweaks-dialog.glade \
+ xfwm4-dialog.glade
+
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu settings-dialogs/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu settings-dialogs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+xfwm4-settings$(EXEEXT): $(xfwm4_settings_OBJECTS) $(xfwm4_settings_DEPENDENCIES)
+ @rm -f xfwm4-settings$(EXEEXT)
+ $(xfwm4_settings_LINK) $(xfwm4_settings_OBJECTS) $(xfwm4_settings_LDADD) $(LIBS)
+xfwm4-tweaks-settings$(EXEEXT): $(xfwm4_tweaks_settings_OBJECTS) $(xfwm4_tweaks_settings_DEPENDENCIES)
+ @rm -f xfwm4-tweaks-settings$(EXEEXT)
+ $(xfwm4_tweaks_settings_LINK) $(xfwm4_tweaks_settings_OBJECTS) $(xfwm4_tweaks_settings_LDADD) $(LIBS)
+xfwm4-workspace-settings$(EXEEXT): $(xfwm4_workspace_settings_OBJECTS) $(xfwm4_workspace_settings_DEPENDENCIES)
+ @rm -f xfwm4-workspace-settings$(EXEEXT)
+ $(xfwm4_workspace_settings_LINK) $(xfwm4_workspace_settings_OBJECTS) $(xfwm4_workspace_settings_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4_settings-xfwm4-settings.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4_tweaks_settings-tweaks-settings.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4_workspace_settings-workspace-settings.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+xfwm4_settings-xfwm4-settings.o: xfwm4-settings.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_settings_CFLAGS) $(CFLAGS) -MT xfwm4_settings-xfwm4-settings.o -MD -MP -MF $(DEPDIR)/xfwm4_settings-xfwm4-settings.Tpo -c -o xfwm4_settings-xfwm4-settings.o `test -f 'xfwm4-settings.c' || echo '$(srcdir)/'`xfwm4-settings.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/xfwm4_settings-xfwm4-settings.Tpo $(DEPDIR)/xfwm4_settings-xfwm4-settings.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xfwm4-settings.c' object='xfwm4_settings-xfwm4-settings.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_settings_CFLAGS) $(CFLAGS) -c -o xfwm4_settings-xfwm4-settings.o `test -f 'xfwm4-settings.c' || echo '$(srcdir)/'`xfwm4-settings.c
+
+xfwm4_settings-xfwm4-settings.obj: xfwm4-settings.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_settings_CFLAGS) $(CFLAGS) -MT xfwm4_settings-xfwm4-settings.obj -MD -MP -MF $(DEPDIR)/xfwm4_settings-xfwm4-settings.Tpo -c -o xfwm4_settings-xfwm4-settings.obj `if test -f 'xfwm4-settings.c'; then $(CYGPATH_W) 'xfwm4-settings.c'; else $(CYGPATH_W) '$(srcdir)/xfwm4-settings.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/xfwm4_settings-xfwm4-settings.Tpo $(DEPDIR)/xfwm4_settings-xfwm4-settings.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xfwm4-settings.c' object='xfwm4_settings-xfwm4-settings.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_settings_CFLAGS) $(CFLAGS) -c -o xfwm4_settings-xfwm4-settings.obj `if test -f 'xfwm4-settings.c'; then $(CYGPATH_W) 'xfwm4-settings.c'; else $(CYGPATH_W) '$(srcdir)/xfwm4-settings.c'; fi`
+
+xfwm4_tweaks_settings-tweaks-settings.o: tweaks-settings.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_tweaks_settings_CFLAGS) $(CFLAGS) -MT xfwm4_tweaks_settings-tweaks-settings.o -MD -MP -MF $(DEPDIR)/xfwm4_tweaks_settings-tweaks-settings.Tpo -c -o xfwm4_tweaks_settings-tweaks-settings.o `test -f 'tweaks-settings.c' || echo '$(srcdir)/'`tweaks-settings.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/xfwm4_tweaks_settings-tweaks-settings.Tpo $(DEPDIR)/xfwm4_tweaks_settings-tweaks-settings.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tweaks-settings.c' object='xfwm4_tweaks_settings-tweaks-settings.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_tweaks_settings_CFLAGS) $(CFLAGS) -c -o xfwm4_tweaks_settings-tweaks-settings.o `test -f 'tweaks-settings.c' || echo '$(srcdir)/'`tweaks-settings.c
+
+xfwm4_tweaks_settings-tweaks-settings.obj: tweaks-settings.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_tweaks_settings_CFLAGS) $(CFLAGS) -MT xfwm4_tweaks_settings-tweaks-settings.obj -MD -MP -MF $(DEPDIR)/xfwm4_tweaks_settings-tweaks-settings.Tpo -c -o xfwm4_tweaks_settings-tweaks-settings.obj `if test -f 'tweaks-settings.c'; then $(CYGPATH_W) 'tweaks-settings.c'; else $(CYGPATH_W) '$(srcdir)/tweaks-settings.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/xfwm4_tweaks_settings-tweaks-settings.Tpo $(DEPDIR)/xfwm4_tweaks_settings-tweaks-settings.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tweaks-settings.c' object='xfwm4_tweaks_settings-tweaks-settings.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_tweaks_settings_CFLAGS) $(CFLAGS) -c -o xfwm4_tweaks_settings-tweaks-settings.obj `if test -f 'tweaks-settings.c'; then $(CYGPATH_W) 'tweaks-settings.c'; else $(CYGPATH_W) '$(srcdir)/tweaks-settings.c'; fi`
+
+xfwm4_workspace_settings-workspace-settings.o: workspace-settings.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_workspace_settings_CFLAGS) $(CFLAGS) -MT xfwm4_workspace_settings-workspace-settings.o -MD -MP -MF $(DEPDIR)/xfwm4_workspace_settings-workspace-settings.Tpo -c -o xfwm4_workspace_settings-workspace-settings.o `test -f 'workspace-settings.c' || echo '$(srcdir)/'`workspace-settings.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/xfwm4_workspace_settings-workspace-settings.Tpo $(DEPDIR)/xfwm4_workspace_settings-workspace-settings.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='workspace-settings.c' object='xfwm4_workspace_settings-workspace-settings.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_workspace_settings_CFLAGS) $(CFLAGS) -c -o xfwm4_workspace_settings-workspace-settings.o `test -f 'workspace-settings.c' || echo '$(srcdir)/'`workspace-settings.c
+
+xfwm4_workspace_settings-workspace-settings.obj: workspace-settings.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_workspace_settings_CFLAGS) $(CFLAGS) -MT xfwm4_workspace_settings-workspace-settings.obj -MD -MP -MF $(DEPDIR)/xfwm4_workspace_settings-workspace-settings.Tpo -c -o xfwm4_workspace_settings-workspace-settings.obj `if test -f 'workspace-settings.c'; then $(CYGPATH_W) 'workspace-settings.c'; else $(CYGPATH_W) '$(srcdir)/workspace-settings.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/xfwm4_workspace_settings-workspace-settings.Tpo $(DEPDIR)/xfwm4_workspace_settings-workspace-settings.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='workspace-settings.c' object='xfwm4_workspace_settings-workspace-settings.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_workspace_settings_CFLAGS) $(CFLAGS) -c -o xfwm4_workspace_settings-workspace-settings.obj `if test -f 'workspace-settings.c'; then $(CYGPATH_W) 'workspace-settings.c'; else $(CYGPATH_W) '$(srcdir)/workspace-settings.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-desktopDATA: $(desktop_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)"
+ @list='$(desktop_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(desktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(desktopdir)/$$f'"; \
+ $(desktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(desktopdir)/$$f"; \
+ done
+
+uninstall-desktopDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(desktop_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(desktopdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(desktopdir)/$$f"; \
+ done
+install-settingsDATA: $(settings_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(settingsdir)" || $(MKDIR_P) "$(DESTDIR)$(settingsdir)"
+ @list='$(settings_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(settingsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(settingsdir)/$$f'"; \
+ $(settingsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(settingsdir)/$$f"; \
+ done
+
+uninstall-settingsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(settings_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(settingsdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(settingsdir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(PROGRAMS) $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(settingsdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-desktopDATA install-settingsDATA
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-desktopDATA \
+ uninstall-settingsDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am \
+ install-desktopDATA install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-settingsDATA install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS \
+ uninstall-desktopDATA uninstall-settingsDATA
+
+
+@MAINTAINER_MODE_TRUE@xfwm4-workspace-dialog_glade.h: xfwm4-workspace-dialog.glade
+@MAINTAINER_MODE_TRUE@ exo-csource --static --name=workspace_dialog_glade $< >$@
+
+@MAINTAINER_MODE_TRUE@xfwm4-dialog_glade.h: xfwm4-dialog.glade
+@MAINTAINER_MODE_TRUE@ exo-csource --static --name=xfwm4_dialog_glade $< >$@
+
+@MAINTAINER_MODE_TRUE@xfwm4-tweaks-dialog_glade.h: xfwm4-tweaks-dialog.glade
+@MAINTAINER_MODE_TRUE@ exo-csource --static --name=tweaks_dialog_glade $< >$@
+
+@INTLTOOL_DESKTOP_RULE@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/settings-dialogs/tweaks-settings.c b/settings-dialogs/tweaks-settings.c
new file mode 100644
index 000000000..4f664243d
--- /dev/null
+++ b/settings-dialogs/tweaks-settings.c
@@ -0,0 +1,386 @@
+/*
+ * Copyright (c) 2008 Stephan Arts <stephan@xfce.org>
+ *
+ * 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 Library 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.
+ */
+
+#include <config.h>
+#include <string.h>
+
+#include <glib.h>
+
+#if defined(GETTEXT_PACKAGE)
+#include <glib/gi18n-lib.h>
+#else
+#include <glib/gi18n.h>
+#endif
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libxfcegui4/libxfcegui4.h>
+#include <xfconf/xfconf.h>
+#include "xfwm4-tweaks-dialog_glade.h"
+
+static gboolean version = FALSE;
+
+void
+cb_easy_click_combo_box_changed (GtkComboBox *combo, XfconfChannel *channel)
+{
+ switch (gtk_combo_box_get_active(combo))
+ {
+ case 0:
+ xfconf_channel_set_string (channel, "/general/easy_click", "Alt");
+ break;
+ case 1:
+ xfconf_channel_set_string (channel, "/general/easy_click", "Control");
+ break;
+ default:
+ xfconf_channel_set_string (channel, "/general/easy_click", "Alt");
+ break;
+ }
+}
+
+void
+cb_use_compositing_check_button_toggled (GtkToggleButton *toggle, GtkWidget *box)
+{
+ gtk_widget_set_sensitive (box, gtk_toggle_button_get_active(toggle));
+}
+
+void
+cb_prevent_focus_stealing_check_button_toggled (GtkToggleButton *toggle, GtkWidget *box)
+{
+ gtk_widget_set_sensitive (box, gtk_toggle_button_get_active(toggle));
+}
+
+void
+cb_activate_action_bring_radio_toggled (GtkToggleButton *toggle, XfconfChannel *channel)
+{
+ if (gtk_toggle_button_get_active (toggle))
+ {
+ xfconf_channel_set_string (channel, "/general/activate_action", "bring");
+ }
+}
+
+void
+cb_activate_action_switch_radio_toggled (GtkToggleButton *toggle, XfconfChannel *channel)
+{
+ if (gtk_toggle_button_get_active (toggle))
+ {
+ xfconf_channel_set_string (channel, "/general/activate_action", "switch");
+ }
+}
+
+void
+cb_activate_action_none_radio_toggled (GtkToggleButton *toggle, XfconfChannel *channel)
+{
+ if (gtk_toggle_button_get_active (toggle))
+ {
+ xfconf_channel_set_string (channel, "/general/activate_action", "none");
+ }
+}
+
+GtkWidget *
+wm_tweaks_dialog_new_from_xml (GladeXML *gxml)
+{
+ GtkWidget *dialog, *vbox;
+ GtkTreeIter iter;
+ GtkListStore *list_store;
+ GtkCellRenderer *renderer;
+ XfconfChannel *xfwm4_channel = xfconf_channel_new("xfwm4");
+ gchar *easy_click = NULL;
+ gchar *activate_action = NULL;
+
+ /* Cycling tab */
+ GtkWidget *cycle_workspaces_check = glade_xml_get_widget (gxml, "cycle_workspaces_check");
+ GtkWidget *cycle_hidden_check = glade_xml_get_widget (gxml, "cycle_hidden_check");
+ GtkWidget *cycle_minimum_check = glade_xml_get_widget (gxml, "cycle_minimum_check");
+
+ /* Focus tab */
+ GtkWidget *prevent_focus_stealing_check = glade_xml_get_widget (gxml, "prevent_focus_stealing_check");
+ GtkWidget *prevent_focus_stealing_box = glade_xml_get_widget (gxml, "prevent_focus_stealing_box");
+ GtkWidget *focus_hint_check = glade_xml_get_widget (gxml, "focus_hint_check");
+
+ GtkWidget *activate_action_bring_option = glade_xml_get_widget (gxml, "activate_action_bring_option");
+ GtkWidget *activate_action_switch_option = glade_xml_get_widget (gxml, "activate_action_switch_option");
+ GtkWidget *activate_action_none_option = glade_xml_get_widget (gxml, "activate_action_none_option");
+
+ /* Accessibility tab */
+ GtkWidget *easy_click_combo_box = glade_xml_get_widget (gxml, "easy_click_combo_box");
+ GtkWidget *raise_on_click_check = glade_xml_get_widget (gxml, "raise_on_click_check");
+ GtkWidget *borderless_maximize_check = glade_xml_get_widget (gxml, "borderless_maximize_check");
+ GtkWidget *restore_on_move_check = glade_xml_get_widget (gxml, "restore_on_move_check");
+ GtkWidget *snap_resist_check = glade_xml_get_widget (gxml, "snap_resist_check");
+
+ /* Workspaces tab */
+ GtkWidget *scroll_workspaces_check = glade_xml_get_widget (gxml, "scroll_workspaces_check");
+ GtkWidget *toggle_workspaces_check = glade_xml_get_widget (gxml, "toggle_workspaces_check");
+ GtkWidget *wrap_layout_check = glade_xml_get_widget (gxml, "wrap_layout_check");
+ GtkWidget *wrap_cycle_check = glade_xml_get_widget (gxml, "wrap_cycle_check");
+
+
+ /* Placement tab */
+ GtkWidget *placement_ratio_scale = (GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "placement_ratio_scale")));
+
+ /* Compositing tab */
+ GtkWidget *use_compositing_check = glade_xml_get_widget (gxml, "use_compositing_check");
+ GtkWidget *use_compositing_box = glade_xml_get_widget (gxml, "use_compositing_box");
+
+ GtkWidget *unredirect_overlays_check = glade_xml_get_widget (gxml, "unredirect_overlays_check");
+ GtkWidget *show_frame_shadow_check = glade_xml_get_widget (gxml, "show_frame_shadow_check");
+ GtkWidget *show_popup_shadow_check = glade_xml_get_widget (gxml, "show_popup_shadow_check");
+ GtkWidget *show_dock_shadow_check = glade_xml_get_widget (gxml, "show_dock_shadow_check");
+
+ GtkWidget *frame_opacity_scale =(GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "frame_opacity_scale")));
+ GtkWidget *inactive_opacity_scale =(GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "inactive_opacity_scale")));
+ GtkWidget *move_opacity_scale =(GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "move_opacity_scale")));
+ GtkWidget *popup_opacity_scale =(GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "popup_opacity_scale")));
+ GtkWidget *resize_opacity_scale =(GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "resize_opacity_scale")));
+
+
+ /* Hinting Combo */
+ list_store = gtk_list_store_new(1, G_TYPE_STRING);
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter, 0, N_("Alt"), -1);
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter, 0, N_("Ctrl"), -1);
+
+ /* Fill combo-box */
+ gtk_cell_layout_clear (GTK_CELL_LAYOUT (easy_click_combo_box));
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (easy_click_combo_box), renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (easy_click_combo_box), renderer, "text", 0);
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX (easy_click_combo_box), GTK_TREE_MODEL(list_store));
+
+ easy_click = xfconf_channel_get_string (xfwm4_channel, "/general/easy_click", "Alt");
+ gtk_combo_box_set_active (GTK_COMBO_BOX(easy_click_combo_box), 0);
+ if (!strcmp(easy_click, "Ctrl"))
+ gtk_combo_box_set_active (GTK_COMBO_BOX(easy_click_combo_box), 1);
+
+ activate_action = xfconf_channel_get_string (xfwm4_channel, "/general/activate_action", "bring");
+ if (!strcmp (activate_action, "switch"))
+ {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(activate_action_bring_option), FALSE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(activate_action_switch_option), TRUE);
+ }
+ if (!strcmp (activate_action, "none"))
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(activate_action_none_option), TRUE);
+
+
+ /* not so easy properties */
+ g_signal_connect (G_OBJECT (activate_action_bring_option),
+ "toggled",
+ G_CALLBACK (cb_activate_action_bring_radio_toggled),
+ xfwm4_channel);
+ g_signal_connect (G_OBJECT (activate_action_switch_option),
+ "toggled",
+ G_CALLBACK (cb_activate_action_switch_radio_toggled),
+ xfwm4_channel);
+ g_signal_connect (G_OBJECT (activate_action_none_option),
+ "toggled",
+ G_CALLBACK (cb_activate_action_none_radio_toggled),
+ xfwm4_channel);
+
+ g_signal_connect (G_OBJECT (prevent_focus_stealing_check),
+ "toggled",
+ G_CALLBACK (cb_prevent_focus_stealing_check_button_toggled),
+ prevent_focus_stealing_box);
+ g_signal_connect (G_OBJECT (use_compositing_check),
+ "toggled",
+ G_CALLBACK (cb_use_compositing_check_button_toggled),
+ use_compositing_box);
+ g_signal_connect (G_OBJECT (easy_click_combo_box),
+ "changed",
+ G_CALLBACK (cb_easy_click_combo_box_changed),
+ xfwm4_channel);
+
+
+
+ /* Bind easy properties */
+ /* Cycling tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/cycle_minimum",
+ G_TYPE_BOOLEAN,
+ (GObject *)cycle_minimum_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/cycle_hidden",
+ G_TYPE_BOOLEAN,
+ (GObject *)cycle_hidden_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/cycle_workspaces",
+ G_TYPE_BOOLEAN,
+ (GObject *)cycle_workspaces_check, "active");
+
+ /* Focus tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/prevent_focus_stealing",
+ G_TYPE_BOOLEAN,
+ (GObject *)prevent_focus_stealing_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/focus_hint",
+ G_TYPE_BOOLEAN,
+ (GObject *)focus_hint_check, "active");
+
+ /* Accessibility tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/raise_on_click",
+ G_TYPE_BOOLEAN,
+ (GObject *)raise_on_click_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/borderless_maximize",
+ G_TYPE_BOOLEAN,
+ (GObject *)borderless_maximize_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/restore_on_move",
+ G_TYPE_BOOLEAN,
+ (GObject *)restore_on_move_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/snap_resist",
+ G_TYPE_BOOLEAN,
+ (GObject *)snap_resist_check, "active");
+
+ /* Workspaces tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/toggle_workspaces",
+ G_TYPE_BOOLEAN,
+ (GObject *)toggle_workspaces_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/scroll_workspaces",
+ G_TYPE_BOOLEAN,
+ (GObject *)scroll_workspaces_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/wrap_layout",
+ G_TYPE_BOOLEAN,
+ (GObject *)wrap_layout_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/wrap_cycle",
+ G_TYPE_BOOLEAN,
+ (GObject *)wrap_cycle_check, "active");
+
+ /* Placement tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/placement_ratio",
+ G_TYPE_INT,
+ (GObject *)placement_ratio_scale, "value");
+
+ /* Compositing tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/use_compositing",
+ G_TYPE_BOOLEAN,
+ (GObject *)use_compositing_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/unredirect_overlays",
+ G_TYPE_BOOLEAN,
+ (GObject *)unredirect_overlays_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/show_frame_shadow",
+ G_TYPE_BOOLEAN,
+ (GObject *)show_frame_shadow_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/show_popup_shadow",
+ G_TYPE_BOOLEAN,
+ (GObject *)show_popup_shadow_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/show_dock_shadow",
+ G_TYPE_BOOLEAN,
+ (GObject *)show_dock_shadow_check, "active");
+
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/frame_opacity",
+ G_TYPE_INT,
+ (GObject *)frame_opacity_scale, "value");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/resize_opacity",
+ G_TYPE_INT,
+ (GObject *)resize_opacity_scale, "value");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/move_opacity",
+ G_TYPE_INT,
+ (GObject *)move_opacity_scale, "value");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/inactive_opacity",
+ G_TYPE_INT,
+ (GObject *)inactive_opacity_scale, "value");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/popup_opacity",
+ G_TYPE_INT,
+ (GObject *)popup_opacity_scale, "value");
+
+ vbox = glade_xml_get_widget (gxml, "main-vbox");
+ dialog = glade_xml_get_widget (gxml, "main-dialog");
+
+ gtk_widget_show_all(vbox);
+
+ if (easy_click)
+ g_free (easy_click);
+ if (activate_action)
+ g_free (activate_action);
+
+ return dialog;
+}
+
+static GOptionEntry entries[] =
+{
+ { "version", 'v', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &version,
+ N_("Version information"),
+ NULL
+ },
+ { NULL }
+};
+
+int
+main(int argc, gchar **argv)
+{
+ GladeXML *gxml;
+ GtkWidget *dialog;
+ GError *cli_error = NULL;
+
+ #ifdef ENABLE_NLS
+ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+ #endif
+
+ if(!gtk_init_with_args(&argc, &argv, _("."), entries, PACKAGE, &cli_error))
+ {
+ if (cli_error != NULL)
+ {
+ g_print (_("%s: %s\nTry %s --help to see a full list of available command line options.\n"), PACKAGE, cli_error->message, PACKAGE_NAME);
+ g_error_free (cli_error);
+ return 1;
+ }
+ }
+
+ if(version)
+ {
+ g_print("%s\n", PACKAGE_STRING);
+ return 0;
+ }
+
+ xfconf_init(NULL);
+
+ gxml = glade_xml_new_from_buffer (tweaks_dialog_glade,
+ tweaks_dialog_glade_length,
+ NULL, NULL);
+
+ dialog = wm_tweaks_dialog_new_from_xml (gxml);
+
+ gtk_dialog_run(GTK_DIALOG(dialog));
+
+ xfconf_shutdown();
+
+ return 0;
+}
diff --git a/settings-dialogs/workspace-settings.c b/settings-dialogs/workspace-settings.c
new file mode 100644
index 000000000..88039ee0c
--- /dev/null
+++ b/settings-dialogs/workspace-settings.c
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2008 Stephan Arts <stephan@xfce.org>
+ *
+ * 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 Library 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.
+ */
+
+
+#include <config.h>
+#include <string.h>
+
+#include <glib.h>
+
+#if defined(GETTEXT_PACKAGE)
+#include <glib/gi18n-lib.h>
+#else
+#include <glib/gi18n.h>
+#endif
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libxfcegui4/libxfcegui4.h>
+#include <xfconf/xfconf.h>
+#include "xfwm4-workspace-dialog_glade.h"
+
+static gboolean version = FALSE;
+
+GtkWidget *
+workspace_dialog_new_from_xml (GladeXML *gxml)
+{
+ GtkWidget *dialog;
+ GtkWidget *vbox;
+ XfconfChannel *xfwm4_channel = xfconf_channel_new("xfwm4");
+
+ GtkWidget *workspace_count_spinbutton = glade_xml_get_widget (gxml, "workspace_count_spinbutton");
+
+ /* Bind easy properties */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/workspace_count",
+ G_TYPE_INT,
+ (GObject *)workspace_count_spinbutton, "value");
+
+ vbox = glade_xml_get_widget (gxml, "main-vbox");
+ dialog = glade_xml_get_widget (gxml, "main-dialog");
+
+ gtk_widget_show_all(vbox);
+
+ return dialog;
+}
+
+
+static GOptionEntry entries[] =
+{
+ { "version", 'v', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &version,
+ N_("Version information"),
+ NULL
+ },
+ { NULL }
+};
+
+
+int
+main(int argc, gchar **argv)
+{
+ GladeXML *gxml;
+ GtkWidget *dialog;
+ GError *cli_error = NULL;
+
+ #ifdef ENABLE_NLS
+ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+ #endif
+
+ if(!gtk_init_with_args(&argc, &argv, _("."), entries, PACKAGE, &cli_error))
+ {
+ if (cli_error != NULL)
+ {
+ g_print (_("%s: %s\nTry %s --help to see a full list of available command line options.\n"), PACKAGE, cli_error->message, PACKAGE_NAME);
+ g_error_free (cli_error);
+ return 1;
+ }
+ }
+
+ if(version)
+ {
+ g_print("%s\n", PACKAGE_STRING);
+ return 0;
+ }
+
+ xfconf_init(NULL);
+
+ gxml = glade_xml_new_from_buffer (workspace_dialog_glade,
+ workspace_dialog_glade_length,
+ NULL, NULL);
+
+ dialog = workspace_dialog_new_from_xml (gxml);
+
+ gtk_dialog_run(GTK_DIALOG(dialog));
+
+ xfconf_shutdown();
+
+ return 0;
+}
diff --git a/settings-dialogs/xfwm4-dialog.glade b/settings-dialogs/xfwm4-dialog.glade
new file mode 100644
index 000000000..68b5e13b4
--- /dev/null
+++ b/settings-dialogs/xfwm4-dialog.glade
@@ -0,0 +1,1359 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.4.5 on Sat Jul 5 12:39:55 2008 -->
+<glade-interface>
+ <requires lib="xfce4"/>
+ <widget class="GtkDialog" id="main-dialog">
+ <property name="border_width">5</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="main-vbox">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="XfceHeading" id="xfce-heading1">
+ <property name="visible">True</property>
+ <property name="icon_name">xfwm4</property>
+ <property name="title" translatable="yes">Windowmanager Settings</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment13">
+ <property name="visible">True</property>
+ <property name="top_padding">4</property>
+ <property name="bottom_padding">4</property>
+ <property name="left_padding">4</property>
+ <property name="right_padding">4</property>
+ <child>
+ <widget class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="width_request">120</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="theme_name_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox12">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkFrame" id="frame10">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment14">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkFontButton" id="title_font_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Title font&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame11">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment15">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkComboBox" id="title_align_combo">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes"></property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Title alignment&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame12">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment16">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox13">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label26">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Click and drag the buttons to change the layout</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="active-frame">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment17">
+ <property name="visible">True</property>
+ <property name="bottom_padding">4</property>
+ <property name="left_padding">4</property>
+ <property name="right_padding">4</property>
+ <child>
+ <widget class="GtkHBox" id="active-box">
+ <property name="height_request">26</property>
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkButton" id="button-layout-|">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip" translatable="yes">The window title, it cannot be removed</property>
+ <property name="label" translatable="yes">Title</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label27">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Active</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="hidden-frame">
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment18">
+ <property name="visible">True</property>
+ <property name="bottom_padding">4</property>
+ <property name="left_padding">4</property>
+ <property name="right_padding">4</property>
+ <child>
+ <widget class="GtkHBox" id="hidden-box">
+ <property name="height_request">26</property>
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <widget class="GtkButton" id="button-layout-O">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip" translatable="yes">Menu</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-index</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button-layout-T">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip" translatable="yes">Stick</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button-layout-S">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip" translatable="yes">Shade</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="stock">gtk-goto-top</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button-layout-H">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip" translatable="yes">Hide</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="stock">gtk-undo</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button-layout-M">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip" translatable="yes">Maximize</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="stock">gtk-zoom-100</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button-layout-C">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip" translatable="yes">Close</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="stock">gtk-close</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label28">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Hidden</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Button layout&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Style</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment11">
+ <property name="visible">True</property>
+ <property name="top_padding">4</property>
+ <property name="bottom_padding">4</property>
+ <property name="left_padding">4</property>
+ <property name="right_padding">4</property>
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkVBox" id="vbox10">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="keytheme_name_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="add_keytheme_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="del_keytheme_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame9">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment12">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="keytheme_contents_treeview">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="headers_clickable">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label22">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Window shortcuts&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Keyboard</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="top_padding">4</property>
+ <property name="bottom_padding">4</property>
+ <property name="left_padding">4</property>
+ <property name="right_padding">4</property>
+ <child>
+ <widget class="GtkVBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <widget class="GtkRadioButton" id="click_to_focus_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Click to focus</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="radiobutton2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Focus follows mouse</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">click_to_focus_mode</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Focus model&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame13">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment19">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="label30">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Short&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="focus_delay_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">100 100 2000 1 10 10</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label31">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Long&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label29">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Delay before window receives focus&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame6">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment8">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkCheckButton" id="focus_new_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Automatically give focus to newly created windows</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;New window focus&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame7">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment9">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkCheckButton" id="raise_on_focus_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Automatically raise windows when they receive focus</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox9">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Delay before raising focused window:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Short&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="focus_raise_delay_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">100 100 2000 1 10 10</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Long&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Raise on focus&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame8">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment10">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkCheckButton" id="raise_on_click_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Raise window when clicking inside application window</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Raise on click&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Focus</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="top_padding">4</property>
+ <property name="bottom_padding">4</property>
+ <property name="left_padding">4</property>
+ <property name="right_padding">4</property>
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkCheckButton" id="snap_to_border_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Snap windows to screen border</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="snap_to_window_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Snap windows to other windows</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Distance:</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Small&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="snap_width_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">20.332225913621262 0 100 1 10 10</property>
+ <property name="restrict_to_fill_level">False</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Wide&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Windows snapping&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkCheckButton" id="wrap_workspaces_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Wrap workspaces when the pointer reaches the screen edge</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="wrap_windows_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Wrap workspaces when dragging a window off the screen</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox6">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Edge resistance:</property>
+ <property name="selectable">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Small&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="wrap_resistance_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">20.332225913621262 0 100 1 10 10</property>
+ <property name="restrict_to_fill_level">False</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Wide&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Wrap workspaces&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkCheckButton" id="box_resize_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Hide content of windows when resizing</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="box_move_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Hide content of windows when moving</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Box move and resize&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">12</property>
+ <child>
+ <widget class="GtkComboBox" id="double_click_action_combo">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">The action to perform when the title-bar is double-clicked</property>
+ <property name="items" translatable="yes"> </property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Double click action&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_EDGE</property>
+ <child>
+ <widget class="GtkButton" id="help_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-help</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="close_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="GtkDialog" id="add-keytheme-dialog">
+ <property name="border_width">5</property>
+ <property name="resizable">False</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="transient_for">main-dialog</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkVBox" id="vbox11">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="XfceHeading" id="xfce-heading2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="icon_name">input-keyboard</property>
+ <property name="title" translatable="yes">Add a new window-manage shortcut theme</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label32">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Type the name for the new shortcut theme:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment20">
+ <property name="visible">True</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkEntry" id="add_keytheme_name_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <widget class="GtkButton" id="button2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/settings-dialogs/xfwm4-dialog_glade.h b/settings-dialogs/xfwm4-dialog_glade.h
new file mode 100644
index 000000000..7865779f4
--- /dev/null
+++ b/settings-dialogs/xfwm4-dialog_glade.h
@@ -0,0 +1,1213 @@
+/* automatically generated from xfwm4-dialog.glade */
+#ifdef __SUNPRO_C
+#pragma align 4 (xfwm4_dialog_glade)
+#endif
+#ifdef __GNUC__
+static const char xfwm4_dialog_glade[] __attribute__ ((__aligned__ (4))) =
+#else
+static const char xfwm4_dialog_glade[] =
+#endif
+{
+ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE"
+ " glade-interface SYSTEM \"glade-2.0.dtd\">\n<!--Generated with glade3 3"
+ ".4.5 on Sat Jul 5 12:39:55 2008 -->\n<glade-interface>\n <requires li"
+ "b=\"xfce4\"/>\n <widget class=\"GtkDialog\" id=\"main-dialog\">\n <"
+ "property name=\"border_width\">5</property>\n <property name=\"windo"
+ "w_position\">GTK_WIN_POS_CENTER_ON_PARENT</property>\n <property nam"
+ "e=\"type_hint\">GDK_WINDOW_TYPE_HINT_DIALOG</property>\n <property n"
+ "ame=\"has_separator\">False</property>\n <child internal-child=\"vbo"
+ "x\">\n <widget class=\"GtkVBox\" id=\"main-vbox\">\n <prope"
+ "rty name=\"visible\">True</property>\n <property name=\"spacing\""
+ ">2</property>\n <child>\n <widget class=\"XfceHeading\""
+ " id=\"xfce-heading1\">\n <property name=\"visible\">True</pr"
+ "operty>\n <property name=\"icon_name\">xfwm4</property>\n "
+ " <property name=\"title\" translatable=\"yes\">Windowmanager Se"
+ "ttings</property>\n </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n <property nam"
+ "e=\"fill\">False</property>\n <property name=\"position\">1<"
+ "/property>\n </packing>\n </child>\n <child>\n "
+ " <widget class=\"GtkNotebook\" id=\"notebook1\">\n <p"
+ "roperty name=\"visible\">True</property>\n <property name=\""
+ "can_focus\">True</property>\n <child>\n <widget"
+ " class=\"GtkAlignment\" id=\"alignment13\">\n <property "
+ "name=\"visible\">True</property>\n <property name=\"top_"
+ "padding\">4</property>\n <property name=\"bottom_padding"
+ "\">4</property>\n <property name=\"left_padding\">4</pro"
+ "perty>\n <property name=\"right_padding\">4</property>\n"
+ " <child>\n <widget class=\"GtkHBox\" id"
+ "=\"hbox7\">\n <property name=\"visible\">True</prope"
+ "rty>\n <child>\n <widget class="
+ "\"GtkScrolledWindow\" id=\"scrolledwindow3\">\n "
+ "<property name=\"width_request\">120</property>\n "
+ " <property name=\"visible\">True</property>\n <"
+ "property name=\"can_focus\">True</property>\n <p"
+ "roperty name=\"hscrollbar_policy\">GTK_POLICY_AUTOMATIC</property>\n "
+ " <property name=\"vscrollbar_policy\">GTK_POLICY_AU"
+ "TOMATIC</property>\n <property name=\"shadow_typ"
+ "e\">GTK_SHADOW_IN</property>\n <child>\n "
+ " <widget class=\"GtkTreeView\" id=\"theme_name_treevie"
+ "w\">\n <property name=\"visible\">True</prop"
+ "erty>\n <property name=\"can_focus\">True</p"
+ "roperty>\n <property name=\"headers_visible\""
+ ">False</property>\n </widget>\n "
+ " </child>\n </widget>\n "
+ " <packing>\n <property name=\"expand\">False</"
+ "property>\n <property name=\"fill\">False</prope"
+ "rty>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkVB"
+ "ox\" id=\"vbox12\">\n <property name=\"visible\""
+ ">True</property>\n <property name=\"spacing\">4<"
+ "/property>\n <child>\n "
+ "<widget class=\"GtkFrame\" id=\"frame10\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label_xalign\">0</property>\n "
+ " <property name=\"shadow_type\">GTK_SHADOW_NONE</property>\n "
+ " <child>\n <widget cla"
+ "ss=\"GtkAlignment\" id=\"alignment14\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"left_padding\">12</property>\n "
+ " <property name=\"right_padding\">12</property>\n "
+ " <child>\n <wid"
+ "get class=\"GtkFontButton\" id=\"title_font_button\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</propert"
+ "y>\n <property name=\"receives_defau"
+ "lt\">True</property>\n <property nam"
+ "e=\"response_id\">0</property>\n </wid"
+ "get>\n </child>\n "
+ " </widget>\n </child>\n "
+ " <child>\n <widget class=\"Gtk"
+ "Label\" id=\"label23\">\n <property name"
+ "=\"visible\">True</property>\n <property"
+ " name=\"label\" translatable=\"yes\">&lt;b&gt;Title font&lt;/b&gt;</pro"
+ "perty>\n <property name=\"use_markup\">T"
+ "rue</property>\n </widget>\n "
+ " <packing>\n <property na"
+ "me=\"type\">label_item</property>\n </pack"
+ "ing>\n </child>\n <"
+ "/widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkFrame\" id=\"fra"
+ "me11\">\n <property name=\"visible\">True</p"
+ "roperty>\n <property name=\"label_xalign\">0"
+ "</property>\n <property name=\"shadow_type\""
+ ">GTK_SHADOW_NONE</property>\n <child>\n "
+ " <widget class=\"GtkAlignment\" id=\"alignment1"
+ "5\">\n <property name=\"visible\">True</"
+ "property>\n <property name=\"left_paddin"
+ "g\">12</property>\n <property name=\"rig"
+ "ht_padding\">12</property>\n <child>\n "
+ " <widget class=\"GtkComboBox\" id=\"titl"
+ "e_align_combo\">\n <property name=\""
+ "visible\">True</property>\n <propert"
+ "y name=\"items\" translatable=\"yes\"></property>\n "
+ " </widget>\n </child>\n "
+ " </widget>\n </chil"
+ "d>\n <child>\n "
+ "<widget class=\"GtkLabel\" id=\"label24\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;b&gt;Title "
+ "alignment&lt;/b&gt;</property>\n <proper"
+ "ty name=\"use_markup\">True</property>\n <"
+ "/widget>\n <packing>\n "
+ " <property name=\"type\">label_item</property>\n "
+ " </packing>\n </child>\n "
+ " </widget>\n <packing>\n"
+ " <property name=\"expand\">False</property>\n"
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n <widget class"
+ "=\"GtkFrame\" id=\"frame12\">\n <property na"
+ "me=\"visible\">True</property>\n <property n"
+ "ame=\"label_xalign\">0</property>\n <propert"
+ "y name=\"shadow_type\">GTK_SHADOW_NONE</property>\n "
+ " <child>\n <widget class=\"GtkAlign"
+ "ment\" id=\"alignment16\">\n <property n"
+ "ame=\"visible\">True</property>\n <prope"
+ "rty name=\"left_padding\">12</property>\n "
+ " <property name=\"right_padding\">12</property>\n "
+ " <child>\n <widget class=\"G"
+ "tkVBox\" id=\"vbox13\">\n <property "
+ "name=\"visible\">True</property>\n <"
+ "child>\n <widget class=\"GtkLabel\""
+ " id=\"label26\">\n <property nam"
+ "e=\"visible\">True</property>\n "
+ "<property name=\"label\" translatable=\"yes\">Click and drag the button"
+ "s to change the layout</property>\n "
+ " </widget>\n </child>\n "
+ " <child>\n "
+ "<widget class=\"GtkFrame\" id=\"active-frame\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label_xalign\">0</prope"
+ "rty>\n <property name=\"shadow_t"
+ "ype\">GTK_SHADOW_IN</property>\n "
+ " <child>\n <widget class=\"Gtk"
+ "Alignment\" id=\"alignment17\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"bottom_padding\">4</property>\n"
+ " <property name=\"left_paddi"
+ "ng\">4</property>\n <propert"
+ "y name=\"right_padding\">4</property>\n "
+ " <child>\n <wid"
+ "get class=\"GtkHBox\" id=\"active-box\">\n "
+ " <property name=\"height_request\">26</property>\n "
+ " <property name=\"visible\""
+ ">True</property>\n <chil"
+ "d>\n <widget class=\"G"
+ "tkButton\" id=\"button-layout-|\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">"
+ "True</property>\n <p"
+ "roperty name=\"receives_default\">True</property>\n "
+ " <property name=\"tooltip\" translatable"
+ "=\"yes\">The window title, it cannot be removed</property>\n "
+ " <property name=\"label\" trans"
+ "latable=\"yes\">Title</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " </widget>\n "
+ " </child>\n "
+ " </widget>\n </ch"
+ "ild>\n </widget>\n "
+ " </child>\n "
+ " <child>\n <widget class"
+ "=\"GtkLabel\" id=\"label27\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Acti"
+ "ve</property>\n <property na"
+ "me=\"use_markup\">True</property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"type\">labe"
+ "l_item</property>\n </packing>"
+ "\n </child>\n "
+ " </widget>\n <pa"
+ "cking>\n <property name=\"positi"
+ "on\">1</property>\n </packing>\n "
+ " </child>\n "
+ " <child>\n <widget class=\""
+ "GtkFrame\" id=\"hidden-frame\">\n "
+ " <property name=\"label_xalign\">0</property>\n "
+ " <property name=\"shadow_type\">GTK_SHADOW_IN</property"
+ ">\n <child>\n "
+ " <widget class=\"GtkAlignment\" id=\"alignment18\""
+ ">\n <property name=\"visible"
+ "\">True</property>\n <proper"
+ "ty name=\"bottom_padding\">4</property>\n "
+ " <property name=\"left_padding\">4</property>\n "
+ " <property name=\"right_padding\">4</pr"
+ "operty>\n <child>\n "
+ " <widget class=\"GtkHBox\" id=\"hid"
+ "den-box\">\n <property n"
+ "ame=\"height_request\">26</property>\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"spacing\">5</prope"
+ "rty>\n <child>\n "
+ " <widget class=\"GtkButton\" i"
+ "d=\"button-layout-O\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</proper"
+ "ty>\n <property name"
+ "=\"receives_default\">True</property>\n "
+ " <property name=\"tooltip\" translatable=\"yes\">Men"
+ "u</property>\n <prop"
+ "erty name=\"response_id\">0</property>\n "
+ " <child>\n "
+ " <widget class=\"GtkImage\" id=\"image1\">\n "
+ " <property name=\"visible\">Tru"
+ "e</property>\n <"
+ "property name=\"stock\">gtk-index</property>\n "
+ " </widget>\n "
+ " </child>\n "
+ " </widget>\n "
+ "<packing>\n <propert"
+ "y name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n "
+ " </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkButton\" id=\"button-layout-T\">\n "
+ " <property name=\"visible\">True</pr"
+ "operty>\n <property "
+ "name=\"can_focus\">True</property>\n "
+ " <property name=\"receives_default\">True</property>\n "
+ " <property name=\"too"
+ "ltip\" translatable=\"yes\">Stick</property>\n "
+ " <property name=\"response_id\">0</property>\n"
+ " <child>\n "
+ " <widget class=\"GtkImage\" "
+ "id=\"image2\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"stock\">gtk-add</propert"
+ "y>\n </widget>\n "
+ " </child>\n "
+ " </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">F"
+ "alse</property>\n <p"
+ "roperty name=\"position\">1</property>\n "
+ " </packing>\n "
+ " </child>\n <chil"
+ "d>\n <widget class=\"G"
+ "tkButton\" id=\"button-layout-S\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">"
+ "True</property>\n <p"
+ "roperty name=\"receives_default\">True</property>\n "
+ " <property name=\"tooltip\" translatable"
+ "=\"yes\">Shade</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <child>\n "
+ " <widget class=\"GtkImage\" id=\"image3\">\n "
+ " <property name=\""
+ "visible\">True</property>\n "
+ " <property name=\"stock\">gtk-goto-top</property>\n "
+ " </widget>\n "
+ " </child>\n "
+ " </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</propert"
+ "y>\n <property name="
+ "\"position\">2</property>\n "
+ " </packing>\n </chi"
+ "ld>\n <child>\n "
+ " <widget class=\"GtkButton\" id"
+ "=\"button-layout-H\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</propert"
+ "y>\n <property name="
+ "\"receives_default\">True</property>\n "
+ " <property name=\"tooltip\" translatable=\"yes\">Hide"
+ "</property>\n <prope"
+ "rty name=\"response_id\">0</property>\n "
+ " <child>\n "
+ " <widget class=\"GtkImage\" id=\"image4\">\n "
+ " <property name=\"visible\">True"
+ "</property>\n <p"
+ "roperty name=\"stock\">gtk-undo</property>\n "
+ " </widget>\n "
+ " </child>\n "
+ " </widget>\n <p"
+ "acking>\n <property "
+ "name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">3</pr"
+ "operty>\n </packing>\n"
+ " </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkButton\" id=\"button-layout-M"
+ "\">\n <property name"
+ "=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"receives_default"
+ "\">True</property>\n "
+ " <property name=\"tooltip\" translatable=\"yes\">Maximize</property>\n "
+ " <property name=\"res"
+ "ponse_id\">0</property>\n "
+ " <child>\n <w"
+ "idget class=\"GtkImage\" id=\"image5\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\""
+ "stock\">gtk-zoom-100</property>\n "
+ " </widget>\n "
+ " </child>\n </w"
+ "idget>\n <packing>\n "
+ " <property name=\"expa"
+ "nd\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">4</property>\n "
+ " </packing>\n "
+ " </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkButton\" id=\"button-layout-C\">\n "
+ " <property name=\"visible\""
+ ">True</property>\n <"
+ "property name=\"can_focus\">True</property>\n "
+ " <property name=\"receives_default\">True</pro"
+ "perty>\n <property n"
+ "ame=\"tooltip\" translatable=\"yes\">Close</property>\n "
+ " <property name=\"response_id\">0</p"
+ "roperty>\n <child>\n"
+ " <widget class=\"G"
+ "tkImage\" id=\"image6\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"stock\">gtk-cl"
+ "ose</property>\n <"
+ "/widget>\n </child>\n"
+ " </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</proper"
+ "ty>\n <property name"
+ "=\"fill\">False</property>\n "
+ " <property name=\"position\">5</property>\n "
+ " </packing>\n "
+ " </child>\n "
+ " </widget>\n </child>\n "
+ " </widget>\n "
+ " </child>\n <"
+ "child>\n <widget class=\"GtkLa"
+ "bel\" id=\"label28\">\n <pro"
+ "perty name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Hidden</prop"
+ "erty>\n <property name=\"use"
+ "_markup\">True</property>\n </"
+ "widget>\n <packing>\n "
+ " <property name=\"type\">label_item</"
+ "property>\n </packing>\n "
+ " </child>\n "
+ " </widget>\n <packing>\n"
+ " <property name=\"position\">2</"
+ "property>\n </packing>\n "
+ " </child>\n <"
+ "/widget>\n </child>\n "
+ " </widget>\n </child>\n "
+ " <child>\n <widget class=\""
+ "GtkLabel\" id=\"label25\">\n <property n"
+ "ame=\"visible\">True</property>\n <prope"
+ "rty name=\"label\" translatable=\"yes\">&lt;b&gt;Button layout&lt;/b&gt"
+ ";</property>\n <property name=\"use_mark"
+ "up\">True</property>\n </widget>\n "
+ " <packing>\n <prope"
+ "rty name=\"type\">label_item</property>\n "
+ "</packing>\n </child>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</property>\n "
+ " </packing>\n </child>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"position\">1</property>\n </pack"
+ "ing>\n </child>\n </widget>\n "
+ " </child>\n </widget>\n </child>\n "
+ " <child>\n <widget class=\"GtkLabel\" id=\"label1\""
+ ">\n <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Style</property>\n"
+ " </widget>\n <packing>\n <prop"
+ "erty name=\"type\">tab</property>\n <property name=\"tab"
+ "_fill\">False</property>\n </packing>\n </child"
+ ">\n <child>\n <widget class=\"GtkAlignment\" id"
+ "=\"alignment11\">\n <property name=\"visible\">True</pro"
+ "perty>\n <property name=\"top_padding\">4</property>\n "
+ " <property name=\"bottom_padding\">4</property>\n "
+ " <property name=\"left_padding\">4</property>\n <p"
+ "roperty name=\"right_padding\">4</property>\n <child>\n "
+ " <widget class=\"GtkHBox\" id=\"hbox5\">\n "
+ " <property name=\"visible\">True</property>\n "
+ "<child>\n <widget class=\"GtkVBox\" id=\"vbox10\">"
+ "\n <property name=\"visible\">True</property>\n "
+ " <property name=\"spacing\">4</property>\n "
+ " <child>\n <widget class=\"Gtk"
+ "ScrolledWindow\" id=\"scrolledwindow1\">\n <"
+ "property name=\"visible\">True</property>\n "
+ "<property name=\"can_focus\">True</property>\n "
+ " <property name=\"hscrollbar_policy\">GTK_POLICY_AUTOMATIC</property>"
+ "\n <property name=\"vscrollbar_policy\">GTK_"
+ "POLICY_AUTOMATIC</property>\n <property name"
+ "=\"shadow_type\">GTK_SHADOW_IN</property>\n "
+ "<child>\n <widget class=\"GtkTreeView\" id"
+ "=\"keytheme_name_treeview\">\n <property"
+ " name=\"visible\">True</property>\n <pro"
+ "perty name=\"can_focus\">True</property>\n "
+ " <property name=\"headers_visible\">False</property>\n "
+ " </widget>\n </child>\n "
+ " </widget>\n </child>\n "
+ " <child>\n <widget class=\"Gtk"
+ "Button\" id=\"add_keytheme_button\">\n <prop"
+ "erty name=\"visible\">True</property>\n <pro"
+ "perty name=\"can_focus\">True</property>\n <"
+ "property name=\"receives_default\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">gtk-add</propert"
+ "y>\n <property name=\"use_stock\">True</prop"
+ "erty>\n <property name=\"response_id\">0</pr"
+ "operty>\n </widget>\n "
+ " <packing>\n <property name=\"expand\">False"
+ "</property>\n <property name=\"fill\">False<"
+ "/property>\n <property name=\"position\">1</"
+ "property>\n </packing>\n "
+ " </child>\n <child>\n "
+ "<widget class=\"GtkButton\" id=\"del_keytheme_button\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"sensitive\">False</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"receives_default\">True</propert"
+ "y>\n <property name=\"label\" translatable=\""
+ "yes\">gtk-remove</property>\n <property name"
+ "=\"use_stock\">True</property>\n <property n"
+ "ame=\"response_id\">0</property>\n </widget>\n"
+ " <packing>\n <prope"
+ "rty name=\"expand\">False</property>\n <prop"
+ "erty name=\"fill\">False</property>\n <prope"
+ "rty name=\"position\">2</property>\n </packing"
+ ">\n </child>\n </widget>\n "
+ " <packing>\n <property name="
+ "\"expand\">False</property>\n <property name=\"f"
+ "ill\">False</property>\n <property name=\"paddin"
+ "g\">4</property>\n </packing>\n "
+ " </child>\n <child>\n <widget c"
+ "lass=\"GtkFrame\" id=\"frame9\">\n <property nam"
+ "e=\"visible\">True</property>\n <property name=\""
+ "label_xalign\">0</property>\n <property name=\"s"
+ "hadow_type\">GTK_SHADOW_NONE</property>\n <child"
+ ">\n <widget class=\"GtkAlignment\" id=\"alignm"
+ "ent12\">\n <property name=\"visible\">True</"
+ "property>\n <property name=\"left_padding\">"
+ "12</property>\n <child>\n "
+ " <widget class=\"GtkScrolledWindow\" id=\"scrolledwindow2\">\n"
+ " <property name=\"visible\">True</proper"
+ "ty>\n <property name=\"can_focus\">True<"
+ "/property>\n <property name=\"hscrollbar"
+ "_policy\">GTK_POLICY_AUTOMATIC</property>\n "
+ " <property name=\"shadow_type\">GTK_SHADOW_IN</property>\n "
+ " <child>\n <widge"
+ "t class=\"GtkTreeView\" id=\"keytheme_contents_treeview\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"sensitive\">False</p"
+ "roperty>\n <property name=\"can_focu"
+ "s\">True</property>\n <property name"
+ "=\"headers_clickable\">True</property>\n "
+ " </widget>\n </child>\n "
+ " </widget>\n </child>\n "
+ " </widget>\n </child>\n "
+ " <child>\n <widget class=\"Gtk"
+ "Label\" id=\"label22\">\n <property name=\"v"
+ "isible\">True</property>\n <property name=\""
+ "label\" translatable=\"yes\">&lt;b&gt;Window shortcuts&lt;/b&gt;</prope"
+ "rty>\n <property name=\"use_markup\">True</p"
+ "roperty>\n </widget>\n "
+ " <packing>\n <property name=\"type\">label_"
+ "item</property>\n </packing>\n "
+ " </child>\n </widget>\n "
+ " <packing>\n <property name=\"position\">1</pro"
+ "perty>\n </packing>\n </child>\n"
+ " </widget>\n </child>\n </"
+ "widget>\n <packing>\n <property name=\"posi"
+ "tion\">1</property>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkLabel\" id=\"label2"
+ "\">\n <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Keyboard</prope"
+ "rty>\n </widget>\n <packing>\n "
+ " <property name=\"type\">tab</property>\n <property name"
+ "=\"position\">1</property>\n <property name=\"tab_fill\""
+ ">False</property>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkAlignment\" id=\"alig"
+ "nment6\">\n <property name=\"visible\">True</property>\n"
+ " <property name=\"top_padding\">4</property>\n "
+ " <property name=\"bottom_padding\">4</property>\n <"
+ "property name=\"left_padding\">4</property>\n <property "
+ "name=\"right_padding\">4</property>\n <child>\n "
+ " <widget class=\"GtkVBox\" id=\"vbox7\">\n <"
+ "property name=\"visible\">True</property>\n <propert"
+ "y name=\"spacing\">4</property>\n <child>\n "
+ " <widget class=\"GtkFrame\" id=\"frame5\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label_xalign\">0</property>\n "
+ " <property name=\"shadow_type\">GTK_SHADOW_NONE</property>\n "
+ " <child>\n <widget class=\"Gtk"
+ "Alignment\" id=\"alignment7\">\n <property n"
+ "ame=\"visible\">True</property>\n <property "
+ "name=\"left_padding\">12</property>\n <prope"
+ "rty name=\"right_padding\">12</property>\n <"
+ "child>\n <widget class=\"GtkHBox\" id=\"hb"
+ "ox3\">\n <property name=\"visible\">True"
+ "</property>\n <property name=\"homogeneo"
+ "us\">True</property>\n <child>\n "
+ " <widget class=\"GtkRadioButton\" id=\"click_t"
+ "o_focus_mode\">\n <property name=\"v"
+ "isible\">True</property>\n <property"
+ " name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Click to focus</propert"
+ "y>\n <property name=\"response_id\">"
+ "0</property>\n <property name=\"acti"
+ "ve\">True</property>\n <property nam"
+ "e=\"draw_indicator\">True</property>\n "
+ " </widget>\n </child>\n "
+ " <child>\n <widget class"
+ "=\"GtkRadioButton\" id=\"radiobutton2\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\""
+ ">Focus follows mouse</property>\n <p"
+ "roperty name=\"response_id\">0</property>\n "
+ " <property name=\"active\">True</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " <property name=\"group\">click_to_focus"
+ "_mode</property>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n "
+ " </widget>\n </child>\n "
+ " </widget>\n </child>\n "
+ " <child>\n <widget class="
+ "\"GtkLabel\" id=\"label15\">\n <property nam"
+ "e=\"visible\">True</property>\n <property na"
+ "me=\"label\" translatable=\"yes\">&lt;b&gt;Focus model&lt;/b&gt;</prope"
+ "rty>\n <property name=\"use_markup\">True</p"
+ "roperty>\n </widget>\n "
+ " <packing>\n <property name=\"type\">label_"
+ "item</property>\n </packing>\n "
+ " </child>\n </widget>\n "
+ " <packing>\n <property name=\"expand\">False</p"
+ "roperty>\n <property name=\"fill\">False</proper"
+ "ty>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkFra"
+ "me\" id=\"frame13\">\n <property name=\"visible\""
+ ">True</property>\n <property name=\"label_xalign"
+ "\">0</property>\n <property name=\"shadow_type\""
+ ">GTK_SHADOW_NONE</property>\n <child>\n "
+ " <widget class=\"GtkAlignment\" id=\"alignment19\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"left_padding\">12</property"
+ ">\n <child>\n <"
+ "widget class=\"GtkHBox\" id=\"hbox6\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"spacing\">4</property>\n "
+ " <child>\n <widget class=\"GtkL"
+ "abel\" id=\"label30\">\n <property n"
+ "ame=\"visible\">True</property>\n <p"
+ "roperty name=\"label\" translatable=\"yes\">&lt;i&gt;Short&lt;/i&gt;</p"
+ "roperty>\n <property name=\"use_mark"
+ "up\">True</property>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n </child"
+ ">\n <child>\n "
+ " <widget class=\"GtkHScale\" id=\"focus_delay_scale\">\n "
+ " <property name=\"visible\">True</property>\n"
+ " <property name=\"can_focus\">True</"
+ "property>\n <property name=\"update_"
+ "policy\">GTK_UPDATE_DISCONTINUOUS</property>\n "
+ " <property name=\"adjustment\">100 100 2000 1 10 10</property"
+ ">\n <property name=\"draw_value\">Fa"
+ "lse</property>\n </widget>\n "
+ " <packing>\n "
+ "<property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n <widget "
+ "class=\"GtkLabel\" id=\"label31\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;i&gt;Long&l"
+ "t;/i&gt;</property>\n <property name"
+ "=\"use_markup\">True</property>\n </wi"
+ "dget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</propert"
+ "y>\n </packing>\n "
+ " </child>\n </widget>\n "
+ " </child>\n </widget>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label29\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;b&"
+ "gt;Delay before window receives focus&lt;/b&gt;</property>\n "
+ " <property name=\"use_markup\">True</property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"type\">label_item</property>\n"
+ " </packing>\n </child>\n"
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n "
+ "<child>\n <widget class=\"GtkFrame\" id=\"frame6\""
+ ">\n <property name=\"visible\">True</property>\n"
+ " <property name=\"label_xalign\">0</property>\n "
+ " <property name=\"shadow_type\">GTK_SHADOW_NONE</"
+ "property>\n <child>\n <"
+ "widget class=\"GtkAlignment\" id=\"alignment8\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"left_padding\">12</property>\n "
+ " <property name=\"right_padding\">12</property>\n "
+ " <child>\n <widget class=\""
+ "GtkCheckButton\" id=\"focus_new_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Automatica"
+ "lly give focus to newly created windows</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " </widget>\n </c"
+ "hild>\n </widget>\n </c"
+ "hild>\n <child>\n <widg"
+ "et class=\"GtkLabel\" id=\"label16\">\n <pro"
+ "perty name=\"visible\">True</property>\n <pr"
+ "operty name=\"label\" translatable=\"yes\">&lt;b&gt;New window focus&lt"
+ ";/b&gt;</property>\n <property name=\"use_ma"
+ "rkup\">True</property>\n </widget>\n "
+ " <packing>\n <property name=\""
+ "type\">label_item</property>\n </packing>\n "
+ " </child>\n </widget>\n "
+ " <packing>\n <property name=\"expa"
+ "nd\">False</property>\n <property name=\"fill\">"
+ "False</property>\n <property name=\"position\">2"
+ "</property>\n </packing>\n </ch"
+ "ild>\n <child>\n <widget class="
+ "\"GtkFrame\" id=\"frame7\">\n <property name=\"v"
+ "isible\">True</property>\n <property name=\"labe"
+ "l_xalign\">0</property>\n <property name=\"shado"
+ "w_type\">GTK_SHADOW_NONE</property>\n <child>\n "
+ " <widget class=\"GtkAlignment\" id=\"alignment9"
+ "\">\n <property name=\"visible\">True</prope"
+ "rty>\n <property name=\"left_padding\">12</p"
+ "roperty>\n <property name=\"right_padding\">"
+ "12</property>\n <child>\n "
+ " <widget class=\"GtkVBox\" id=\"vbox8\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"spacing\">4</property>\n "
+ " <child>\n <widget "
+ "class=\"GtkCheckButton\" id=\"raise_on_focus_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</propert"
+ "y>\n <property name=\"label\" transl"
+ "atable=\"yes\">Automatically raise windows when they receive focus</pro"
+ "perty>\n <property name=\"response_i"
+ "d\">0</property>\n <property name=\""
+ "draw_indicator\">True</property>\n </w"
+ "idget>\n </child>\n "
+ " <child>\n <widget class=\"G"
+ "tkVBox\" id=\"vbox9\">\n <property n"
+ "ame=\"visible\">True</property>\n <c"
+ "hild>\n <widget class=\"GtkLabel\""
+ " id=\"label19\">\n <property nam"
+ "e=\"visible\">True</property>\n "
+ "<property name=\"xalign\">0</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Delay before rai"
+ "sing focused window:</property>\n "
+ "</widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>"
+ "\n <property name=\"fill\">False"
+ "</property>\n </packing>\n "
+ " </child>\n "
+ " <child>\n <widget class=\"GtkHB"
+ "ox\" id=\"hbox4\">\n <property n"
+ "ame=\"visible\">True</property>\n "
+ " <property name=\"spacing\">4</property>\n "
+ " <child>\n <widget "
+ "class=\"GtkLabel\" id=\"label20\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\""
+ ">&lt;i&gt;Short&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n <prop"
+ "erty name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkHScale\" id=\"fo"
+ "cus_raise_delay_scale\">\n <"
+ "property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"update_policy\">GTK"
+ "_UPDATE_DISCONTINUOUS</property>\n "
+ " <property name=\"adjustment\">100 100 2000 1 10 10</property>\n "
+ " <property name=\"draw_value\""
+ ">False</property>\n </widget>\n"
+ " <packing>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n "
+ " </child>\n <"
+ "child>\n <widget class=\"GtkLa"
+ "bel\" id=\"label21\">\n <pro"
+ "perty name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;i&gt;Lon"
+ "g&lt;/i&gt;</property>\n <pr"
+ "operty name=\"use_markup\">True</property>\n "
+ " </widget>\n <pa"
+ "cking>\n <property name=\"ex"
+ "pand\">False</property>\n <p"
+ "roperty name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</property>\n "
+ " </packing>\n "
+ " </child>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n <"
+ "/child>\n </widget>\n "
+ " <packing>\n <proper"
+ "ty name=\"position\">1</property>\n </"
+ "packing>\n </child>\n "
+ " </widget>\n </child>\n "
+ " </widget>\n </child>\n "
+ " <child>\n <widget class=\"GtkLabe"
+ "l\" id=\"label17\">\n <property name=\"visib"
+ "le\">True</property>\n <property name=\"labe"
+ "l\" translatable=\"yes\">&lt;b&gt;Raise on focus&lt;/b&gt;</property>\n"
+ " <property name=\"use_markup\">True</propert"
+ "y>\n </widget>\n <pac"
+ "king>\n <property name=\"type\">label_item</"
+ "property>\n </packing>\n "
+ " </child>\n </widget>\n <pac"
+ "king>\n <property name=\"expand\">False</propert"
+ "y>\n <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">3</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkFrame\" id=\"f"
+ "rame8\">\n <property name=\"visible\">True</prop"
+ "erty>\n <property name=\"label_xalign\">0</prope"
+ "rty>\n <property name=\"shadow_type\">GTK_SHADOW"
+ "_NONE</property>\n <child>\n "
+ " <widget class=\"GtkAlignment\" id=\"alignment10\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"left_padding\">12</property>\n "
+ " <property name=\"right_padding\">12</property>\n "
+ " <child>\n <widget"
+ " class=\"GtkCheckButton\" id=\"raise_on_click_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"ye"
+ "s\">Raise window when clicking inside application window</property>\n "
+ " <property name=\"response_id\">0</propert"
+ "y>\n <property name=\"draw_indicator\">T"
+ "rue</property>\n </widget>\n "
+ " </child>\n </widget>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label18\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;b&gt;Ra"
+ "ise on click&lt;/b&gt;</property>\n <propert"
+ "y name=\"use_markup\">True</property>\n </widg"
+ "et>\n <packing>\n <"
+ "property name=\"type\">label_item</property>\n "
+ " </packing>\n </child>\n </"
+ "widget>\n <packing>\n <prop"
+ "erty name=\"expand\">False</property>\n <propert"
+ "y name=\"fill\">False</property>\n <property nam"
+ "e=\"position\">4</property>\n </packing>\n "
+ " </child>\n </widget>\n </ch"
+ "ild>\n </widget>\n <packing>\n "
+ " <property name=\"position\">2</property>\n </packing>\n "
+ " </child>\n <child>\n <widget class=\""
+ "GtkLabel\" id=\"label3\">\n <property name=\"visible\">T"
+ "rue</property>\n <property name=\"label\" translatable=\""
+ "yes\">Focus</property>\n </widget>\n <packing"
+ ">\n <property name=\"type\">tab</property>\n "
+ " <property name=\"position\">2</property>\n <property"
+ " name=\"tab_fill\">False</property>\n </packing>\n "
+ " </child>\n <child>\n <widget class=\"GtkAli"
+ "gnment\" id=\"alignment1\">\n <property name=\"visible\""
+ ">True</property>\n <property name=\"top_padding\">4</pro"
+ "perty>\n <property name=\"bottom_padding\">4</property>\n"
+ " <property name=\"left_padding\">4</property>\n "
+ " <property name=\"right_padding\">4</property>\n <"
+ "child>\n <widget class=\"GtkVBox\" id=\"vbox1\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <child>\n <widget class=\"GtkFrame\" id=\""
+ "frame1\">\n <property name=\"visible\">True</pro"
+ "perty>\n <property name=\"label_xalign\">0</prop"
+ "erty>\n <property name=\"shadow_type\">GTK_SHADO"
+ "W_NONE</property>\n <child>\n "
+ " <widget class=\"GtkAlignment\" id=\"alignment2\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"left_padding\">12</property>\n "
+ " <property name=\"right_padding\">12</property>\n "
+ " <child>\n <widget"
+ " class=\"GtkVBox\" id=\"vbox2\">\n <prop"
+ "erty name=\"visible\">True</property>\n "
+ "<property name=\"spacing\">4</property>\n "
+ " <child>\n <widget class=\"GtkCheckBu"
+ "tton\" id=\"snap_to_border_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Sna"
+ "p windows to screen border</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n <property name=\"expan"
+ "d\">False</property>\n <property nam"
+ "e=\"fill\">False</property>\n </packin"
+ "g>\n </child>\n "
+ " <child>\n <widget class=\"GtkCh"
+ "eckButton\" id=\"snap_to_window_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\""
+ ">Snap windows to other windows</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n <property name=\"e"
+ "xpand\">False</property>\n <property"
+ " name=\"fill\">False</property>\n <p"
+ "roperty name=\"position\">1</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n <widget cl"
+ "ass=\"GtkVBox\" id=\"vbox5\">\n <pro"
+ "perty name=\"visible\">True</property>\n "
+ " <child>\n <widget class=\"Gtk"
+ "Label\" id=\"label9\">\n <proper"
+ "ty name=\"visible\">True</property>\n "
+ " <property name=\"xalign\">0</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Distance:<"
+ "/property>\n </widget>\n "
+ " </child>\n "
+ " <child>\n <widget class=\"GtkHBox"
+ "\" id=\"hbox1\">\n <property nam"
+ "e=\"visible\">True</property>\n "
+ "<property name=\"spacing\">4</property>\n "
+ " <child>\n <widget cl"
+ "ass=\"GtkLabel\" id=\"label11\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&"
+ "lt;i&gt;Small&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n <proper"
+ "ty name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkHScale\" id=\"snap"
+ "_width_scale\">\n <property "
+ "name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"update_policy\">GTK_UPDATE_D"
+ "ISCONTINUOUS</property>\n <p"
+ "roperty name=\"adjustment\">20.332225913621262 0 100 1 10 10</property>"
+ "\n <property name=\"restrict"
+ "_to_fill_level\">False</property>\n "
+ " <property name=\"draw_value\">False</property>\n "
+ " </widget>\n "
+ " <packing>\n <proper"
+ "ty name=\"position\">1</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label12\">\n "
+ " <property name=\"visible\">True</prop"
+ "erty>\n <property name=\"lab"
+ "el\" translatable=\"yes\">&lt;i&gt;Wide&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</"
+ "property>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</prop"
+ "erty>\n <property name=\"pos"
+ "ition\">2</property>\n </packi"
+ "ng>\n </child>\n "
+ " </widget>\n "
+ "<packing>\n <property name=\"pos"
+ "ition\">1</property>\n </packing>\n"
+ " </child>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"position\">2</property>\n"
+ " </packing>\n "
+ " </child>\n </widget>\n "
+ " </child>\n </widget>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label5\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;b&gt;Wi"
+ "ndows snapping&lt;/b&gt;</property>\n <prope"
+ "rty name=\"use_markup\">True</property>\n </wi"
+ "dget>\n <packing>\n "
+ " <property name=\"type\">label_item</property>\n "
+ " </packing>\n </child>\n "
+ "</widget>\n </child>\n <child>\n "
+ " <widget class=\"GtkFrame\" id=\"frame2\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label_xalign\">0</property>\n "
+ " <property name=\"shadow_type\">GTK_SHADOW_NONE</property>\n"
+ " <child>\n <widget clas"
+ "s=\"GtkAlignment\" id=\"alignment3\">\n <pro"
+ "perty name=\"visible\">True</property>\n <pr"
+ "operty name=\"left_padding\">12</property>\n "
+ " <property name=\"right_padding\">12</property>\n "
+ " <child>\n <widget class=\"GtkVBox\" "
+ "id=\"vbox4\">\n <property name=\"visible"
+ "\">True</property>\n <property name=\"sp"
+ "acing\">4</property>\n <child>\n "
+ " <widget class=\"GtkCheckButton\" id=\"wrap_wo"
+ "rkspaces_check\">\n <property name=\""
+ "visible\">True</property>\n <propert"
+ "y name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Wrap workspaces when t"
+ "he pointer reaches the screen edge</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>"
+ "\n </widget>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkCheckButton\" id=\"wrap_window"
+ "s_check\">\n <property name=\"visibl"
+ "e\">True</property>\n <property name"
+ "=\"can_focus\">True</property>\n <pr"
+ "operty name=\"label\" translatable=\"yes\">Wrap workspaces when draggin"
+ "g a window off the screen</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n <property name=\"positi"
+ "on\">1</property>\n </packing>\n "
+ " </child>\n <ch"
+ "ild>\n <widget class=\"GtkVBox\" id=\""
+ "vbox6\">\n <property name=\"visible\""
+ ">True</property>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label10\""
+ ">\n <property name=\"visible\">T"
+ "rue</property>\n <property name="
+ "\"xalign\">0</property>\n <prope"
+ "rty name=\"label\" translatable=\"yes\">Edge resistance:</property>\n "
+ " <property name=\"selectable\">Tru"
+ "e</property>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkHBox\" id=\"hbox2\">\n"
+ " <property name=\"visible\">True"
+ "</property>\n <property name=\"s"
+ "pacing\">4</property>\n <child>\n"
+ " <widget class=\"GtkLabel\" id"
+ "=\"label13\">\n <property na"
+ "me=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;i&gt;Small&lt;/i"
+ "&gt;</property>\n <property "
+ "name=\"use_markup\">True</property>\n "
+ " </widget>\n <packing>\n"
+ " <property name=\"expand\">F"
+ "alse</property>\n <property "
+ "name=\"fill\">False</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkHScale\" id=\"wrap_resistance_scale\">"
+ "\n <property name=\"visible\""
+ ">True</property>\n <property"
+ " name=\"can_focus\">True</property>\n "
+ " <property name=\"update_policy\">GTK_UPDATE_DISCONTINUOUS</pr"
+ "operty>\n <property name=\"a"
+ "djustment\">20.332225913621262 0 100 1 10 10</property>\n "
+ " <property name=\"restrict_to_fill_level\""
+ ">False</property>\n <propert"
+ "y name=\"draw_value\">False</property>\n "
+ " </widget>\n <packin"
+ "g>\n <property name=\"positi"
+ "on\">1</property>\n </packing>"
+ "\n </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label14\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatabl"
+ "e=\"yes\">&lt;i&gt;Wide&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</prope"
+ "rty>\n </packing>\n "
+ " </child>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"position\">1</prope"
+ "rty>\n </packing>\n "
+ " </child>\n </widg"
+ "et>\n <packing>\n "
+ " <property name=\"position\">2</property>\n "
+ " </packing>\n </child"
+ ">\n </widget>\n "
+ " </child>\n </widget>\n "
+ " </child>\n <child>\n <"
+ "widget class=\"GtkLabel\" id=\"label6\">\n <"
+ "property name=\"visible\">True</property>\n "
+ "<property name=\"label\" translatable=\"yes\">&lt;b&gt;Wrap workspaces&"
+ "lt;/b&gt;</property>\n <property name=\"use_"
+ "markup\">True</property>\n </widget>\n "
+ " <packing>\n <property name"
+ "=\"type\">label_item</property>\n </packing>\n"
+ " </child>\n </widget>\n "
+ " <packing>\n <property name=\"p"
+ "osition\">1</property>\n </packing>\n "
+ " </child>\n <child>\n <wi"
+ "dget class=\"GtkFrame\" id=\"frame3\">\n <proper"
+ "ty name=\"visible\">True</property>\n <property "
+ "name=\"label_xalign\">0</property>\n <property n"
+ "ame=\"shadow_type\">GTK_SHADOW_NONE</property>\n "
+ " <child>\n <widget class=\"GtkAlignment\" id=\""
+ "alignment4\">\n <property name=\"visible\">T"
+ "rue</property>\n <property name=\"left_paddi"
+ "ng\">12</property>\n <property name=\"right_"
+ "padding\">12</property>\n <child>\n "
+ " <widget class=\"GtkVBox\" id=\"vbox3\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"spacing\">4</property>\n "
+ " <child>\n "
+ " <widget class=\"GtkCheckButton\" id=\"box_resize_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</p"
+ "roperty>\n <property name=\"label\" "
+ "translatable=\"yes\">Hide content of windows when resizing</property>\n"
+ " <property name=\"response_id\">0</p"
+ "roperty>\n <property name=\"draw_ind"
+ "icator\">True</property>\n </widget>\n"
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n </c"
+ "hild>\n <child>\n "
+ " <widget class=\"GtkCheckButton\" id=\"box_move_check\">\n "
+ " <property name=\"visible\">True</prope"
+ "rty>\n <property name=\"can_focus\">"
+ "True</property>\n <property name=\"l"
+ "abel\" translatable=\"yes\">Hide content of windows when moving</proper"
+ "ty>\n <property name=\"response_id\""
+ ">0</property>\n <property name=\"dra"
+ "w_indicator\">True</property>\n </widg"
+ "et>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">1</property>"
+ "\n </packing>\n "
+ " </child>\n </widget>\n "
+ " </child>\n </widget>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label7\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;b&gt;"
+ "Box move and resize&lt;/b&gt;</property>\n <"
+ "property name=\"use_markup\">True</property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"type\">label_item</property>\n "
+ " </packing>\n </child>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"position\">2</property>\n </pac"
+ "king>\n </child>\n <child>\n "
+ " <widget class=\"GtkFrame\" id=\"frame4\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label_xalign\">0</property>\n "
+ " <property name=\"shadow_type\">GTK_SHADOW_NONE</property>\n "
+ " <child>\n <widget class=\""
+ "GtkAlignment\" id=\"alignment5\">\n <propert"
+ "y name=\"visible\">True</property>\n <proper"
+ "ty name=\"left_padding\">12</property>\n <pr"
+ "operty name=\"right_padding\">12</property>\n "
+ " <child>\n <widget class=\"GtkComboBox\" "
+ "id=\"double_click_action_combo\">\n <pro"
+ "perty name=\"visible\">True</property>\n "
+ " <property name=\"tooltip\" translatable=\"yes\">The action to perform "
+ "when the title-bar is double-clicked</property>\n "
+ " <property name=\"items\" translatable=\"yes\">\t</property>\n"
+ " </widget>\n </"
+ "child>\n </widget>\n </"
+ "child>\n <child>\n <wid"
+ "get class=\"GtkLabel\" id=\"label8\">\n <pro"
+ "perty name=\"visible\">True</property>\n <pr"
+ "operty name=\"label\" translatable=\"yes\">&lt;b&gt;Double click action"
+ "&lt;/b&gt;</property>\n <property name=\"use"
+ "_markup\">True</property>\n </widget>\n "
+ " <packing>\n <property nam"
+ "e=\"type\">label_item</property>\n </packing>\n"
+ " </child>\n </widget>\n "
+ " <packing>\n <property name=\"p"
+ "osition\">3</property>\n </packing>\n "
+ " </child>\n </widget>\n </child>\n"
+ " </widget>\n <packing>\n <prop"
+ "erty name=\"position\">3</property>\n </packing>\n "
+ " </child>\n <child>\n <widget class=\"GtkLab"
+ "el\" id=\"label4\">\n <property name=\"visible\">True</p"
+ "roperty>\n <property name=\"label\" translatable=\"yes\""
+ ">Advanced</property>\n </widget>\n <packing>\n"
+ " <property name=\"type\">tab</property>\n "
+ " <property name=\"position\">3</property>\n <property na"
+ "me=\"tab_fill\">False</property>\n </packing>\n "
+ " </child>\n </widget>\n <packing>\n <prope"
+ "rty name=\"position\">2</property>\n </packing>\n </chi"
+ "ld>\n <child internal-child=\"action_area\">\n <widget "
+ "class=\"GtkHButtonBox\" id=\"dialog-action_area1\">\n <prope"
+ "rty name=\"visible\">True</property>\n <property name=\"layo"
+ "ut_style\">GTK_BUTTONBOX_EDGE</property>\n <child>\n "
+ " <widget class=\"GtkButton\" id=\"help_button\">\n "
+ "<property name=\"visible\">True</property>\n <property n"
+ "ame=\"can_focus\">True</property>\n <property name=\"rec"
+ "eives_default\">True</property>\n <property name=\"label"
+ "\" translatable=\"yes\">gtk-help</property>\n <property "
+ "name=\"use_stock\">True</property>\n <property name=\"re"
+ "sponse_id\">0</property>\n </widget>\n </child>"
+ "\n <child>\n <widget class=\"GtkButton\" id=\"c"
+ "lose_button\">\n <property name=\"visible\">True</proper"
+ "ty>\n <property name=\"can_focus\">True</property>\n "
+ " <property name=\"receives_default\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">gtk-close</prop"
+ "erty>\n <property name=\"use_stock\">True</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " </widget>\n <packing>\n <property name=\""
+ "position\">1</property>\n </packing>\n </child>"
+ "\n </widget>\n <packing>\n <property name="
+ "\"expand\">False</property>\n <property name=\"pack_type\">G"
+ "TK_PACK_END</property>\n </packing>\n </child>\n <"
+ "/widget>\n </child>\n </widget>\n <widget class=\"GtkDialog\" id=\""
+ "add-keytheme-dialog\">\n <property name=\"border_width\">5</property"
+ ">\n <property name=\"resizable\">False</property>\n <property nam"
+ "e=\"window_position\">GTK_WIN_POS_CENTER_ON_PARENT</property>\n <pro"
+ "perty name=\"type_hint\">GDK_WINDOW_TYPE_HINT_DIALOG</property>\n <p"
+ "roperty name=\"skip_taskbar_hint\">True</property>\n <property name="
+ "\"skip_pager_hint\">True</property>\n <property name=\"transient_for"
+ "\">main-dialog</property>\n <property name=\"has_separator\">False</"
+ "property>\n <child internal-child=\"vbox\">\n <widget class=\"G"
+ "tkVBox\" id=\"dialog-vbox2\">\n <property name=\"visible\">True<"
+ "/property>\n <property name=\"spacing\">2</property>\n <c"
+ "hild>\n <widget class=\"GtkVBox\" id=\"vbox11\">\n "
+ "<property name=\"visible\">True</property>\n <property name="
+ "\"spacing\">4</property>\n <child>\n <widget cl"
+ "ass=\"XfceHeading\" id=\"xfce-heading2\">\n <property na"
+ "me=\"visible\">True</property>\n <property name=\"events"
+ "\">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_"
+ "PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>\n <prope"
+ "rty name=\"icon_name\">input-keyboard</property>\n <prop"
+ "erty name=\"title\" translatable=\"yes\">Add a new window-manage shortc"
+ "ut theme</property>\n </widget>\n <packing>\n"
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n </packing>"
+ "\n </child>\n <child>\n <widget clas"
+ "s=\"GtkLabel\" id=\"label32\">\n <property name=\"visibl"
+ "e\">True</property>\n <property name=\"xalign\">0</prope"
+ "rty>\n <property name=\"label\" translatable=\"yes\">Typ"
+ "e the name for the new shortcut theme:</property>\n </widg"
+ "et>\n <packing>\n <property name=\"expand\""
+ ">False</property>\n <property name=\"fill\">False</prope"
+ "rty>\n <property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n <child>\n "
+ " <widget class=\"GtkAlignment\" id=\"alignment20\">\n "
+ " <property name=\"visible\">True</property>\n <property"
+ " name=\"left_padding\">10</property>\n <child>\n "
+ " <widget class=\"GtkEntry\" id=\"add_keytheme_name_entry\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " </widget>\n </child>\n </widget>\n "
+ " <packing>\n <property name=\"expand\">False</p"
+ "roperty>\n <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</property>\n </"
+ "packing>\n </child>\n </widget>\n <packing"
+ ">\n <property name=\"expand\">False</property>\n "
+ "<property name=\"fill\">False</property>\n <property name=\""
+ "position\">1</property>\n </packing>\n </child>\n "
+ " <child internal-child=\"action_area\">\n <widget class=\"Gtk"
+ "HButtonBox\" id=\"dialog-action_area2\">\n <property name=\""
+ "visible\">True</property>\n <property name=\"layout_style\">"
+ "GTK_BUTTONBOX_END</property>\n <child>\n <widge"
+ "t class=\"GtkButton\" id=\"button2\">\n <property name=\""
+ "visible\">True</property>\n <property name=\"can_focus\""
+ ">True</property>\n <property name=\"receives_default\">T"
+ "rue</property>\n <property name=\"label\" translatable=\""
+ "yes\">gtk-cancel</property>\n <property name=\"use_stock"
+ "\">True</property>\n <property name=\"response_id\">-6</"
+ "property>\n </widget>\n </child>\n <"
+ "child>\n <widget class=\"GtkButton\" id=\"button1\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n <propert"
+ "y name=\"receives_default\">True</property>\n <property "
+ "name=\"label\" translatable=\"yes\">gtk-ok</property>\n "
+ "<property name=\"use_stock\">True</property>\n <property"
+ " name=\"response_id\">-5</property>\n </widget>\n "
+ " <packing>\n <property name=\"position\">1</property"
+ ">\n </packing>\n </child>\n </widget>\n"
+ " <packing>\n <property name=\"expand\">False</prope"
+ "rty>\n <property name=\"pack_type\">GTK_PACK_END</property>\n"
+ " </packing>\n </child>\n </widget>\n </child>\n"
+ " </widget>\n</glade-interface>\n"
+};
+
+static const unsigned xfwm4_dialog_glade_length = 81821u;
+
diff --git a/settings-dialogs/xfwm4-settings.c b/settings-dialogs/xfwm4-settings.c
new file mode 100644
index 000000000..f0243a6f4
--- /dev/null
+++ b/settings-dialogs/xfwm4-settings.c
@@ -0,0 +1,1340 @@
+/*
+ * Copyright (c) 2008 Stephan Arts <stephan@xfce.org>
+ *
+ * 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 Library 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.
+ *
+ * Based on the mcs-plugin written by olivier fourdan
+ */
+
+
+#include <config.h>
+#include <string.h>
+
+#include <glib.h>
+
+#if defined(GETTEXT_PACKAGE)
+#include <glib/gi18n-lib.h>
+#else
+#include <glib/gi18n.h>
+#endif
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libxfcegui4/libxfcegui4.h>
+#include <xfconf/xfconf.h>
+#include "xfwm4-dialog_glade.h"
+
+#ifndef KEYTHEMERC
+#define KEYTHEMERC "keythemerc"
+#endif
+
+typedef enum {
+ THEME_TYPE_XFWM4,
+ THEME_TYPE_KEYTHEME,
+} ThemeType;
+
+typedef struct {
+ const gchar *name;
+ const gchar *key;
+ gchar *value;
+} KeyThemeTmpl;
+
+typedef struct {
+ gchar *name;
+ gchar *value;
+} MenuTmpl;
+
+static const MenuTmpl dbl_click_values[] = {
+ {N_("Shade window"), "shade"},
+ {N_("Hide window"), "hide"},
+ {N_("Maximize window"), "maximize"},
+ {N_("Fill window"), "fill"},
+ {N_("Nothing"), "none"},
+ {NULL, NULL}
+};
+
+static const MenuTmpl title_align_values[] = {
+ {N_("Left"), "left"},
+ {N_("Center"), "center"},
+ {N_("Right"), "right"},
+ {NULL, NULL}
+};
+
+static KeyThemeTmpl key_theme_values[] = {
+ {N_("Window operations menu"), "popup_menu_key", NULL},
+ {N_("Up"), "up_key", NULL},
+ {N_("Down"), "down_key", NULL},
+ {N_("Left"), "left_key", NULL},
+ {N_("Right"), "right_key", NULL},
+ {N_("Cancel"), "cancel_key", NULL},
+ {N_("Cycle windows"), "cycle_windows_key", NULL},
+ {N_("Close window"), "close_window_key", NULL},
+ {N_("Maximize window horizontally"), "maximize_horiz_key", NULL},
+ {N_("Maximize window vertically"), "maximize_vert_key", NULL},
+ {N_("Maximize window"), "maximize_window_key", NULL},
+ {N_("Hide window"), "hide_window_key", NULL},
+ {N_("Move window"), "move_window_key", NULL},
+ {N_("Resize window"), "resize_window_key", NULL},
+ {N_("Shade window"), "shade_window_key", NULL},
+ {N_("Stick window"), "stick_window_key", NULL},
+ {N_("Raise window"), "raise_window_key", NULL},
+ {N_("Lower window"), "lower_window_key", NULL},
+ {N_("Fill window"), "fill_window_key", NULL},
+ {N_("Fill window horizontally"), "fill_horiz_key", NULL},
+ {N_("Fill window vertically"), "fill_vert_key", NULL},
+ {N_("Toggle above"), "above_key", NULL},
+ {N_("Toggle fullscreen"), "fullscreen_key", NULL},
+ {N_("Move window to upper workspace"), "move_window_up_workspace_key", NULL},
+ {N_("Move window to bottom workspace"), "move_window_down_workspace_key", NULL},
+ {N_("Move window to left workspace"), "move_window_left_workspace_key", NULL},
+ {N_("Move window to right workspace"), "move_window_right_workspace_key", NULL},
+ {N_("Move window to previous workspace"), "move_window_prev_workspace_key", NULL},
+ {N_("Move window to next workspace"), "move_window_next_workspace_key", NULL},
+ {N_("Show desktop"), "show_desktop_key", NULL},
+ {N_("Upper workspace"), "up_workspace_key", NULL},
+ {N_("Bottom workspace"), "down_workspace_key", NULL},
+ {N_("Left workspace"), "left_workspace_key", NULL},
+ {N_("Right workspace"), "right_workspace_key", NULL},
+ {N_("Previous workspace"), "prev_workspace_key", NULL},
+ {N_("Next workspace"), "next_workspace_key", NULL},
+ {N_("Add workspace"), "add_workspace_key", NULL},
+ {N_("Add adjacent workspace"), "add_adjacent_workspace_key", NULL},
+ {N_("Delete last workspace"), "del_workspace_key", NULL},
+ {N_("Delete active workspace"), "del_active_workspace_key", NULL},
+ {NULL, NULL, NULL}
+};
+
+#define INDICATOR_SIZE 9
+
+
+
+static gboolean version = FALSE;
+static GtkWidget *add_keytheme_dialog = NULL;
+static GtkWidget *add_keytheme_name_entry = NULL;
+static gchar *xfwm4_keythemerc_filename = NULL;
+static gchar *xfwm4_themerc_filename = NULL;
+
+static void
+cb_xfwm4_theme_treeselection_changed (GtkTreeSelection *selection, XfconfChannel *channel);
+static void
+cb_xfwm4_keytheme_treeselection_changed (GtkTreeSelection *selection, XfconfChannel *channel);
+
+static void
+cb_xfwm4_dbl_click_changed (GtkComboBox *combo, XfconfChannel *channel);
+
+static void
+cb_xfwm4_title_align_changed (GtkComboBox *combo, XfconfChannel *channel);
+
+static void
+cb_xfwm4_title_button_alignment_changed (GtkComboBox *combo, GtkButton *button);
+
+static void
+cb_xfwm4_keytheme_contents_row_activated (GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data);
+
+static void
+cb_xfwm4_channel_keytheme_changed (XfconfChannel *channel, const gchar *property, const GValue *value, GtkTreeView *treeview);
+
+static void
+cb_xfwm4_channel_double_click_action_changed(XfconfChannel *channel,
+ const gchar *property,
+ const GValue *value,
+ GtkComboBox *combo);
+
+static void
+cb_xfwm4_channel_title_alignment_changed(XfconfChannel *channel,
+ const gchar *property,
+ const GValue *value,
+ GtkComboBox *combo);
+
+static void
+cb_xfwm4_channel_button_layout_changed(XfconfChannel *channel,
+ const gchar *property,
+ const GValue *value,
+ GtkContainer *hidden_box);
+
+static gboolean
+str_starts_with(const gchar *str, const gchar *start);
+
+static void
+save_button_layout (GtkContainer *container, XfconfChannel *channel);
+
+static void
+cb_xfwm4_active_frame_drag_data (GtkWidget*, GdkDragContext*, gint, gint, GtkSelectionData*, guint, guint, GtkWidget*);
+static gboolean
+cb_xfwm4_active_frame_drag_motion (GtkWidget*, GdkDragContext*, gint, gint, guint, GtkWidget*);
+static void
+cb_xfwm4_active_frame_drag_leave (GtkWidget*, GdkDragContext*, guint, GtkWidget*);
+static void
+cb_xfwm4_hidden_frame_drag_data (GtkWidget*, GdkDragContext*, gint, gint, GtkSelectionData*, guint, guint, GtkWidget*);
+static void
+cb_xfwm4_title_button_data_get (GtkWidget*, GdkDragContext*, GtkSelectionData*, guint, guint, const gchar*);
+static void
+cb_xfwm4_title_button_drag_begin (GtkWidget*, GdkDragContext*, gpointer);
+static void
+cb_xfwm4_title_button_drag_end (GtkWidget*, GdkDragContext*, gpointer);
+static gboolean
+cb_xfwm4_signal_blocker (GtkWidget*, gpointer);
+static void
+cb_xfwm4_add_keytheme_button_clicked (GtkWidget *, gpointer);
+static void
+cb_xfwm4_del_keytheme_button_clicked (GtkWidget *, gpointer);
+
+static void
+load_key_theme (const gchar* user_theme_name);
+
+static GdkPixbuf*
+xfwm4_create_icon_from_widget(GtkWidget *widget);
+
+static void
+xfwm4_create_indicator(GtkWidget *box, gint x, gint y, gint width, gint height);
+static void
+xfwm4_delete_indicator(GtkWidget *box);
+
+void
+check_keytheme_contents (GtkListStore *list_store, XfconfChannel *channel, GtkTreeView *treeview)
+{
+ GtkTreeIter iter;
+ const KeyThemeTmpl *shortcuts_iter;
+ gchar *active_theme_name = xfconf_channel_get_string (channel, "/general/keytheme", "Default");
+ load_key_theme (active_theme_name);
+ shortcuts_iter = key_theme_values;
+ gtk_list_store_clear(list_store);
+ while (shortcuts_iter->name)
+ {
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter, 0, shortcuts_iter->name, 1, shortcuts_iter->value, 2, shortcuts_iter->key, -1);
+ shortcuts_iter++;
+ }
+ if (!strcmp (active_theme_name, "Default"))
+ gtk_widget_set_sensitive (GTK_WIDGET(treeview), FALSE);
+ else
+ gtk_widget_set_sensitive (GTK_WIDGET(treeview), TRUE);
+}
+
+void
+check_xfwm4_themes (GtkListStore *list_store, GtkTreeView *tree_view, XfconfChannel *channel, ThemeType type)
+{
+ GSList *check_list = NULL;
+ gint i;
+ const gchar *file;
+ gchar *xfwm4rc_filename = NULL;
+ gchar **xfwm4_theme_dirs;
+ GDir *dir;
+ gchar *active_theme_name = NULL;
+ GtkTreeIter iter;
+ GtkTreePath *tree_path = NULL;
+
+ switch (type)
+ {
+ case THEME_TYPE_XFWM4:
+ active_theme_name = xfconf_channel_get_string (channel, "/general/theme", "Default");
+ break;
+ case THEME_TYPE_KEYTHEME:
+ active_theme_name = xfconf_channel_get_string (channel, "/general/keytheme", "Default");
+ break;
+ }
+
+ xfce_resource_push_path (XFCE_RESOURCE_THEMES, DATADIR G_DIR_SEPARATOR_S "themes");
+ xfwm4_theme_dirs = xfce_resource_dirs (XFCE_RESOURCE_THEMES);
+ xfce_resource_pop_path (XFCE_RESOURCE_THEMES);
+
+ /* Iterate over all base directories */
+ for (i = 0; xfwm4_theme_dirs[i] != NULL; ++i)
+ {
+ /* Open directory handle */
+ dir = g_dir_open (xfwm4_theme_dirs[i], 0, NULL);
+
+ /* Try next base directory if this one cannot be read */
+ if (G_UNLIKELY (dir == NULL))
+ continue;
+
+ /* Iterate over filenames in the directory */
+ while ((file = g_dir_read_name (dir)) != NULL)
+ {
+ /* Build the theme style filename */
+ switch (type)
+ {
+ case THEME_TYPE_XFWM4:
+ xfwm4rc_filename = g_build_filename (xfwm4_theme_dirs[i], file, "xfwm4", "themerc", NULL);
+ break;
+ case THEME_TYPE_KEYTHEME:
+ xfwm4rc_filename = g_build_filename (xfwm4_theme_dirs[i], file, "xfwm4", "keythemerc", NULL);
+ break;
+ }
+
+ /* Check if the gtkrc file exists and the theme is not already in the list */
+ if (g_file_test (xfwm4rc_filename, G_FILE_TEST_EXISTS)
+ && g_slist_find_custom (check_list, file, (GCompareFunc) g_utf8_collate) == NULL)
+ {
+
+ /* Insert the theme in the check list */
+ check_list = g_slist_prepend (check_list, g_strdup (file));
+
+ /* Append ui theme to the list store */
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter,
+ 0, file,
+ -1);
+
+ /* Check if this is the active theme, if so, select it */
+ if (G_UNLIKELY (g_utf8_collate (file, active_theme_name) == 0))
+ {
+ switch (type)
+ {
+ case THEME_TYPE_KEYTHEME:
+ if (xfwm4_keythemerc_filename)
+ g_free (xfwm4_keythemerc_filename);
+ xfwm4_keythemerc_filename = g_strdup (xfwm4rc_filename);
+ break;
+ case THEME_TYPE_XFWM4:
+ if (xfwm4_themerc_filename)
+ g_free (xfwm4_themerc_filename);
+ xfwm4_themerc_filename = g_strdup (xfwm4rc_filename);
+ break;
+ }
+
+ tree_path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
+ gtk_tree_selection_select_path (gtk_tree_view_get_selection (tree_view), tree_path);
+ gtk_tree_path_free (tree_path);
+ }
+ }
+ /* Free xfwm4rc filename */
+ g_free (xfwm4rc_filename);
+ }
+ /* Close directory handle */
+ g_dir_close (dir);
+ }
+}
+
+static void
+load_key_theme (const gchar* user_theme_name)
+{
+ gchar *user_theme_file = NULL;
+ gchar *default_theme_file = g_build_filename (DATADIR, "themes", "Default", "xfwm4", "keythemerc", NULL);
+ gchar **shortcuts_keys, **shortcut = NULL;
+ XfceRc *default_rc = NULL;
+ XfceRc *user_rc = NULL;
+ gchar **theme_dirs, **xfwm4_theme_dirs;
+ gint i = 0;
+
+ xfce_resource_push_path (XFCE_RESOURCE_THEMES, DATADIR G_DIR_SEPARATOR_S "themes");
+ xfwm4_theme_dirs = xfce_resource_dirs (XFCE_RESOURCE_THEMES);
+ xfce_resource_pop_path (XFCE_RESOURCE_THEMES);
+
+ theme_dirs = xfwm4_theme_dirs;
+
+ while (*theme_dirs)
+ {
+ user_theme_file = g_build_filename (*theme_dirs, user_theme_name, "xfwm4", "keythemerc", NULL);
+ if (!g_file_test (user_theme_file, G_FILE_TEST_EXISTS))
+ {
+ g_free (user_theme_file);
+ user_theme_file = NULL;
+ }
+ else
+ break;
+ theme_dirs++;
+ }
+
+
+
+ default_rc = xfce_rc_simple_open (default_theme_file, TRUE);
+ if (user_theme_file)
+ user_rc = xfce_rc_simple_open (user_theme_file, TRUE);
+
+ shortcuts_keys = xfce_rc_get_entries (default_rc, NULL);
+
+ shortcut = shortcuts_keys;
+
+ while (*shortcut)
+ {
+ gboolean found = FALSE;
+ const gchar *entry_value;
+ const gchar *fallback_value;
+ fallback_value = xfce_rc_read_entry (default_rc, *shortcut, "none");
+ entry_value = xfce_rc_read_entry (user_rc, *shortcut, fallback_value);
+
+ for (i = 0; !found && key_theme_values[i].name; i++)
+ {
+ if (g_ascii_strcasecmp (*shortcut, key_theme_values[i].key) == 0)
+ {
+ key_theme_values[i].value = g_strdup(entry_value);
+ }
+ }
+ shortcut++;
+ }
+
+ g_strfreev (shortcuts_keys);
+
+ xfce_rc_close (default_rc);
+ xfce_rc_close (user_rc);
+}
+
+GtkWidget *
+xfwm4_dialog_new_from_xml (GladeXML *gxml)
+{
+ GtkWidget *dialog;
+ GtkWidget *vbox;
+ GtkTreeIter iter;
+ GtkListStore *list_store;
+ GtkCellRenderer *renderer;
+ const MenuTmpl *tmpl_iter;
+ GtkTreeSelection *theme_selection, *keytheme_selection, *keytheme_contents_selection;
+ GtkTargetEntry target_entry[2];
+ GList *list_iter, *children;
+ GValue value = { 0, };
+ XfconfChannel *xfwm4_channel = xfconf_channel_new("xfwm4");
+
+ /* Style tab */
+ GtkWidget *theme_name_treeview = glade_xml_get_widget (gxml, "theme_name_treeview");
+ GtkWidget *title_font_button = glade_xml_get_widget (gxml, "title_font_button");
+ GtkWidget *title_align_combo = glade_xml_get_widget (gxml, "title_align_combo");
+ GtkWidget *active_frame = glade_xml_get_widget (gxml, "active-frame");
+ GtkWidget *active_box = glade_xml_get_widget (gxml, "active-box");
+ GtkWidget *hidden_frame = glade_xml_get_widget (gxml, "hidden-frame");
+ GtkWidget *hidden_box = glade_xml_get_widget (gxml, "hidden-box");
+
+ /* Keyboard tab */
+ GtkWidget *add_keytheme_button = glade_xml_get_widget (gxml, "add_keytheme_button");
+ GtkWidget *del_keytheme_button = glade_xml_get_widget (gxml, "del_keytheme_button");
+ GtkWidget *keytheme_name_treeview = glade_xml_get_widget (gxml, "keytheme_name_treeview");
+ GtkWidget *keytheme_contents_treeview = glade_xml_get_widget (gxml, "keytheme_contents_treeview");
+
+ /* Focus tab */
+ GtkWidget *focus_delay_scale =(GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "focus_delay_scale")));
+ GtkWidget *focus_new_check = glade_xml_get_widget (gxml, "focus_new_check");
+ GtkWidget *raise_on_focus_check = glade_xml_get_widget (gxml, "raise_on_focus_check");
+ GtkWidget *raise_on_click_check = glade_xml_get_widget (gxml, "raise_on_click_check");
+ GtkWidget *click_to_focus_mode = glade_xml_get_widget (gxml, "click_to_focus_mode");
+
+ /* Advanced tab */
+ GtkWidget *box_move_check = glade_xml_get_widget (gxml, "box_move_check");
+ GtkWidget *box_resize_check = glade_xml_get_widget (gxml, "box_resize_check");
+ GtkWidget *snap_to_border_check = glade_xml_get_widget (gxml, "snap_to_border_check");
+ GtkWidget *snap_to_window_check = glade_xml_get_widget (gxml, "snap_to_window_check");
+ GtkWidget *double_click_action_combo = glade_xml_get_widget (gxml, "double_click_action_combo");
+ GtkWidget *snap_width_scale =(GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "snap_width_scale")));
+ GtkWidget *wrap_resistance_scale =(GtkWidget *)gtk_range_get_adjustment(GTK_RANGE(glade_xml_get_widget (gxml, "wrap_resistance_scale")));
+
+ /* Double click action */
+ list_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
+ tmpl_iter = dbl_click_values;
+ while (tmpl_iter->name)
+ {
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter, 0, tmpl_iter->name, 1, tmpl_iter->value, -1);
+ tmpl_iter++;
+ }
+
+ gtk_cell_layout_clear (GTK_CELL_LAYOUT (double_click_action_combo));
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (double_click_action_combo), renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (double_click_action_combo), renderer, "text", 0);
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX (double_click_action_combo), GTK_TREE_MODEL(list_store));
+
+ xfconf_channel_get_property (xfwm4_channel, "/general/double_click_action", &value);
+ cb_xfwm4_channel_double_click_action_changed (xfwm4_channel, "/general/double_click_action", &value, GTK_COMBO_BOX (double_click_action_combo));
+ g_value_unset (&value);
+
+ g_signal_connect (G_OBJECT (double_click_action_combo), "changed", G_CALLBACK (cb_xfwm4_dbl_click_changed), xfwm4_channel);
+ g_signal_connect (G_OBJECT (add_keytheme_button), "clicked", G_CALLBACK (cb_xfwm4_add_keytheme_button_clicked), NULL);
+ g_signal_connect (G_OBJECT (del_keytheme_button), "clicked", G_CALLBACK (cb_xfwm4_del_keytheme_button_clicked), NULL);
+
+ /* Title alignment */
+ list_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
+ tmpl_iter = title_align_values;
+ while (tmpl_iter->name)
+ {
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter, 0, tmpl_iter->name, 1, tmpl_iter->value, -1);
+ tmpl_iter++;
+ }
+
+ gtk_cell_layout_clear (GTK_CELL_LAYOUT (title_align_combo));
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (title_align_combo), renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (title_align_combo), renderer, "text", 0);
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX (title_align_combo), GTK_TREE_MODEL(list_store));
+
+ xfconf_channel_get_property (xfwm4_channel, "/general/title_alignment", &value);
+ cb_xfwm4_channel_title_alignment_changed (xfwm4_channel, "/general/title_alignment", &value, GTK_COMBO_BOX (title_align_combo));
+ g_value_unset (&value);
+
+ g_signal_connect (G_OBJECT (title_align_combo), "changed", G_CALLBACK (cb_xfwm4_title_align_changed), xfwm4_channel);
+
+ /* Button layout */
+ target_entry[0].target = "_xfwm4_button_layout";
+ target_entry[0].flags = GTK_TARGET_SAME_APP;
+ target_entry[0].info = 2;
+ target_entry[1].target = "_xfwm4_active_layout";
+ target_entry[1].flags = GTK_TARGET_SAME_APP;
+ target_entry[1].info = 3;
+
+ gtk_drag_dest_set (active_frame, GTK_DEST_DEFAULT_ALL, target_entry, 2, GDK_ACTION_MOVE);
+ g_signal_connect (active_frame, "drag-data-received", G_CALLBACK (cb_xfwm4_active_frame_drag_data), active_box);
+ g_signal_connect (active_frame, "drag-motion", G_CALLBACK (cb_xfwm4_active_frame_drag_motion), active_box);
+ g_signal_connect (active_frame, "drag-leave", G_CALLBACK (cb_xfwm4_active_frame_drag_leave), active_box);
+
+ g_object_set_data (G_OBJECT (active_box), "xfwm4_channel", xfwm4_channel);
+
+ gtk_drag_dest_set (hidden_frame, GTK_DEST_DEFAULT_ALL, target_entry, 1, GDK_ACTION_MOVE);
+ g_signal_connect (hidden_frame, "drag-data-received", G_CALLBACK (cb_xfwm4_hidden_frame_drag_data), hidden_box);
+
+ g_object_set_data (G_OBJECT (hidden_box), "active_box", active_box);
+
+ children = list_iter = gtk_container_get_children(GTK_CONTAINER(active_box));
+
+ while(list_iter)
+ {
+ GtkWidget *button;
+ const gchar *name;
+
+ button = GTK_WIDGET(list_iter->data);
+ name = gtk_widget_get_name(button);
+
+ if (name[strlen(name)-1] == '|')
+ {
+ g_signal_connect (G_OBJECT (title_align_combo), "changed", G_CALLBACK (cb_xfwm4_title_button_alignment_changed), button);
+ cb_xfwm4_title_button_alignment_changed (GTK_COMBO_BOX (title_align_combo), GTK_BUTTON (button));
+ }
+
+ g_object_set_data (G_OBJECT (button), "key_char", (gpointer)&name[strlen(name)-1]);
+ gtk_drag_source_set(button, GDK_BUTTON1_MASK, &target_entry[1], 1, GDK_ACTION_MOVE);
+ g_signal_connect (G_OBJECT (button), "drag_data_get", G_CALLBACK (cb_xfwm4_title_button_data_get), target_entry[1].target);
+ g_signal_connect (G_OBJECT (button), "drag_begin", G_CALLBACK (cb_xfwm4_title_button_drag_begin), NULL);
+ g_signal_connect (G_OBJECT (button), "drag_end", G_CALLBACK (cb_xfwm4_title_button_drag_end), NULL);
+ g_signal_connect (G_OBJECT (button), "button_press_event", G_CALLBACK (cb_xfwm4_signal_blocker), NULL);
+ g_signal_connect (G_OBJECT (button), "enter_notify_event", G_CALLBACK (cb_xfwm4_signal_blocker), NULL);
+ g_signal_connect (G_OBJECT (button), "focus", G_CALLBACK (cb_xfwm4_signal_blocker), NULL);
+
+ list_iter = g_list_next(list_iter);
+ }
+
+ g_list_free(children);
+
+ children = list_iter = gtk_container_get_children(GTK_CONTAINER(hidden_box));
+
+ while(list_iter)
+ {
+ GtkWidget *button;
+ const gchar *name;
+
+ button = GTK_WIDGET(list_iter->data);
+ name = gtk_widget_get_name(button);
+
+ g_object_set_data (G_OBJECT (button), "key_char", (gpointer)&name[strlen(name)-1]);
+ gtk_drag_source_set(button, GDK_BUTTON1_MASK, &target_entry[0], 1, GDK_ACTION_MOVE);
+ g_signal_connect (G_OBJECT (button), "drag_data_get", G_CALLBACK (cb_xfwm4_title_button_data_get), target_entry[0].target);
+ g_signal_connect (G_OBJECT (button), "drag_begin", G_CALLBACK (cb_xfwm4_title_button_drag_begin), NULL);
+ g_signal_connect (G_OBJECT (button), "drag_end", G_CALLBACK (cb_xfwm4_title_button_drag_end), NULL);
+ g_signal_connect (G_OBJECT (button), "button_press_event", G_CALLBACK (cb_xfwm4_signal_blocker), NULL);
+ g_signal_connect (G_OBJECT (button), "enter_notify_event", G_CALLBACK (cb_xfwm4_signal_blocker), NULL);
+ g_signal_connect (G_OBJECT (button), "focus", G_CALLBACK (cb_xfwm4_signal_blocker), NULL);
+
+ list_iter = g_list_next(list_iter);
+ }
+
+ g_list_free(children);
+
+ xfconf_channel_get_property (xfwm4_channel, "/general/button_layout", &value);
+ cb_xfwm4_channel_button_layout_changed (xfwm4_channel, "/general/button_layout", &value, GTK_CONTAINER (hidden_box));
+ g_value_unset (&value);
+
+
+ /* theme name */
+ list_store = gtk_list_store_new(1, G_TYPE_STRING);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_set_model (GTK_TREE_VIEW (theme_name_treeview), GTK_TREE_MODEL (list_store));
+ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (theme_name_treeview), 0, "", renderer, "text", 0, NULL);
+
+ theme_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_name_treeview));
+ gtk_tree_selection_set_mode (theme_selection, GTK_SELECTION_SINGLE);
+
+ check_xfwm4_themes (list_store, GTK_TREE_VIEW (theme_name_treeview), xfwm4_channel, THEME_TYPE_XFWM4);
+
+ /* keytheme name */
+ list_store = gtk_list_store_new(1, G_TYPE_STRING);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_set_model (GTK_TREE_VIEW (keytheme_name_treeview), GTK_TREE_MODEL (list_store));
+ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (keytheme_name_treeview), 0, "", renderer, "text", 0, NULL);
+
+ keytheme_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (keytheme_name_treeview));
+ gtk_tree_selection_set_mode (keytheme_selection, GTK_SELECTION_SINGLE);
+
+ check_xfwm4_themes (list_store, GTK_TREE_VIEW (keytheme_name_treeview), xfwm4_channel, THEME_TYPE_KEYTHEME);
+
+ /* keytheme contents */
+ list_store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+ check_keytheme_contents(list_store, xfwm4_channel, GTK_TREE_VIEW(keytheme_contents_treeview));
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_set_model (GTK_TREE_VIEW (keytheme_contents_treeview), GTK_TREE_MODEL (list_store));
+ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (keytheme_contents_treeview), 0, _("Action"), renderer, "text", 0, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (keytheme_contents_treeview), 1, _("Button"), renderer, "text", 1, NULL);
+
+ keytheme_contents_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (keytheme_contents_treeview));
+ gtk_tree_selection_set_mode (keytheme_contents_selection, GTK_SELECTION_SINGLE);
+
+
+ /* Bind easy properties */
+ /* Style tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/title_font",
+ G_TYPE_STRING,
+ (GObject *)title_font_button, "font-name");
+ g_signal_connect (G_OBJECT(xfwm4_channel),
+ "property-changed::/general/title_alignment",
+ G_CALLBACK(cb_xfwm4_channel_title_alignment_changed),
+ title_align_combo);
+ g_signal_connect (G_OBJECT(xfwm4_channel),
+ "property-changed::/general/button_layout",
+ G_CALLBACK(cb_xfwm4_channel_button_layout_changed),
+ hidden_box);
+ /* Focus tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/focus_delay",
+ G_TYPE_INT,
+ (GObject *)focus_delay_scale, "value");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/click_to_focus",
+ G_TYPE_BOOLEAN,
+ (GObject *)click_to_focus_mode, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/raise_on_click",
+ G_TYPE_BOOLEAN,
+ (GObject *)raise_on_click_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/raise_on_focus",
+ G_TYPE_BOOLEAN,
+ (GObject *)raise_on_focus_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/focus_new",
+ G_TYPE_BOOLEAN,
+ (GObject *)focus_new_check, "active");
+
+ /* Keyboard tab */
+ g_signal_connect (G_OBJECT(xfwm4_channel),
+ "property-changed::/general/keytheme",
+ G_CALLBACK (cb_xfwm4_channel_keytheme_changed),
+ keytheme_contents_treeview);
+ g_signal_connect (G_OBJECT (keytheme_contents_treeview),
+ "row-activated",
+ G_CALLBACK (cb_xfwm4_keytheme_contents_row_activated),
+ NULL);
+
+ /* Advanced tab */
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/snap_width",
+ G_TYPE_INT,
+ (GObject *)snap_width_scale, "value");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/wrap_resistance",
+ G_TYPE_INT,
+ (GObject *)wrap_resistance_scale, "value");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/box_move",
+ G_TYPE_BOOLEAN,
+ (GObject *)box_move_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/box_resize",
+ G_TYPE_BOOLEAN,
+ (GObject *)box_resize_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/snap_to_border",
+ G_TYPE_BOOLEAN,
+ (GObject *)snap_to_border_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
+ "/general/snap_to_windows",
+ G_TYPE_BOOLEAN,
+ (GObject *)snap_to_window_check, "active");
+ g_signal_connect (G_OBJECT(xfwm4_channel),
+ "property-changed::/general/double_click_action",
+ G_CALLBACK(cb_xfwm4_channel_double_click_action_changed),
+ double_click_action_combo);
+
+ g_signal_connect (G_OBJECT(theme_selection), "changed", G_CALLBACK (cb_xfwm4_theme_treeselection_changed), xfwm4_channel);
+ g_signal_connect (G_OBJECT(keytheme_selection), "changed", G_CALLBACK (cb_xfwm4_keytheme_treeselection_changed), xfwm4_channel);
+
+ vbox = glade_xml_get_widget (gxml, "main-vbox");
+ dialog = glade_xml_get_widget (gxml, "main-dialog");
+ add_keytheme_dialog = glade_xml_get_widget (gxml, "add-keytheme-dialog");
+ add_keytheme_name_entry = glade_xml_get_widget (gxml, "add_keytheme_name_entry");
+
+ gtk_widget_show_all(vbox);
+
+ return dialog;
+}
+
+
+static GOptionEntry entries[] =
+{
+ { "version", 'v', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &version,
+ N_("Version information"),
+ NULL
+ },
+ { NULL }
+};
+
+
+int
+main(int argc, gchar **argv)
+{
+ GladeXML *gxml;
+ GtkWidget *dialog;
+ GError *cli_error = NULL;
+
+ #ifdef ENABLE_NLS
+ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+ #endif
+
+ if(!gtk_init_with_args(&argc, &argv, _("."), entries, PACKAGE, &cli_error))
+ {
+ if (cli_error != NULL)
+ {
+ g_print (_("%s: %s\nTry %s --help to see a full list of available command line options.\n"), PACKAGE, cli_error->message, PACKAGE_NAME);
+ g_error_free (cli_error);
+ return 1;
+ }
+ }
+
+ if(version)
+ {
+ g_print("%s\n", PACKAGE_STRING);
+ return 0;
+ }
+
+ xfconf_init(NULL);
+
+ gxml = glade_xml_new_from_buffer (xfwm4_dialog_glade,
+ xfwm4_dialog_glade_length,
+ NULL, NULL);
+
+ dialog = xfwm4_dialog_new_from_xml (gxml);
+
+ gtk_dialog_run(GTK_DIALOG(dialog));
+
+ xfconf_shutdown();
+
+ return 0;
+}
+
+static void
+cb_xfwm4_theme_treeselection_changed (GtkTreeSelection *selection, XfconfChannel *channel)
+{
+ GtkTreeModel *model = NULL;
+ GList *list = gtk_tree_selection_get_selected_rows (selection, &model);
+ GtkTreeIter iter;
+ GValue value = {0,};
+
+ /* valid failure */
+ if ( g_list_length (list) == 0)
+ return;
+
+ /* everything else is invalid */
+ g_return_if_fail (g_list_length (list) == 1);
+
+ gtk_tree_model_get_iter (model, &iter, list->data);
+ gtk_tree_model_get_value (model, &iter, 0, &value);
+
+ xfconf_channel_set_property (channel, "/general/theme", &value);
+
+ g_value_unset (&value);
+
+ g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free (list);
+}
+
+static void
+cb_xfwm4_keytheme_treeselection_changed (GtkTreeSelection *selection, XfconfChannel *channel)
+{
+ GtkTreeModel *model = NULL;
+ GList *list = gtk_tree_selection_get_selected_rows (selection, &model);
+ GtkTreeIter iter;
+ GValue value = {0,};
+
+ /* valid failure */
+ if ( g_list_length (list) == 0)
+ return;
+
+ /* everything else is invalid */
+ g_return_if_fail (g_list_length (list) == 1);
+
+ gtk_tree_model_get_iter (model, &iter, list->data);
+ gtk_tree_model_get_value (model, &iter, 0, &value);
+
+ xfconf_channel_set_property (channel, "/general/keytheme", &value);
+
+ g_value_unset (&value);
+
+ g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free (list);
+}
+
+static void
+cb_xfwm4_dbl_click_changed (GtkComboBox *combo, XfconfChannel *channel)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GValue value = { 0, };
+
+ model = gtk_combo_box_get_model (combo);
+
+ gtk_combo_box_get_active_iter (combo, &iter);
+ gtk_tree_model_get_value (model, &iter, 1, &value);
+
+ g_signal_handlers_block_by_func (channel, G_CALLBACK (cb_xfwm4_channel_double_click_action_changed), combo);
+ xfconf_channel_set_property (channel, "/general/double_click_action", &value);
+ g_signal_handlers_unblock_by_func (channel, G_CALLBACK (cb_xfwm4_channel_double_click_action_changed), combo);
+
+ g_value_unset (&value);
+}
+
+static void
+cb_xfwm4_title_align_changed (GtkComboBox *combo, XfconfChannel *channel)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GValue value = { 0, };
+
+ model = gtk_combo_box_get_model (combo);
+
+ gtk_combo_box_get_active_iter (combo, &iter);
+ gtk_tree_model_get_value (model, &iter, 1, &value);
+
+ g_signal_handlers_block_by_func (channel, G_CALLBACK (cb_xfwm4_channel_title_alignment_changed), combo);
+ xfconf_channel_set_property (channel, "/general/title_alignment", &value);
+ g_signal_handlers_unblock_by_func (channel, G_CALLBACK (cb_xfwm4_channel_title_alignment_changed), combo);
+
+ g_value_unset (&value);
+}
+
+static void
+cb_xfwm4_title_button_alignment_changed (GtkComboBox *combo, GtkButton *button)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GValue value = { 0, };
+ const gchar *str_value;
+ float align = 0.5f;
+
+ model = gtk_combo_box_get_model (combo);
+
+ gtk_combo_box_get_active_iter (combo, &iter);
+ gtk_tree_model_get_value (model, &iter, 1, &value);
+
+ str_value = g_value_get_string (&value);
+
+ if (strcmp (str_value, "left") == 0)
+ {
+ align = 0.0f;
+ }
+ else if (strcmp (str_value, "right") == 0)
+ {
+ align = 1.0f;
+ }
+
+ g_value_unset (&value);
+
+ gtk_button_set_alignment (button, align, 0.5f);
+}
+
+static void
+cb_xfwm4_channel_double_click_action_changed(XfconfChannel *channel,
+ const gchar *property,
+ const GValue *value,
+ GtkComboBox *combo)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ const gchar *str_value;
+ GValue value2 = { 0, };
+
+ model = gtk_combo_box_get_model (combo);
+
+ str_value = g_value_get_string (value);
+
+ gtk_tree_model_get_iter_first (model, &iter);
+ do {
+ gtk_tree_model_get_value (model, &iter, 1, &value2);
+ if (strcmp (g_value_get_string (&value2), str_value) == 0)
+ {
+ g_value_unset (&value2);
+ g_signal_handlers_block_by_func (combo, G_CALLBACK (cb_xfwm4_dbl_click_changed), channel);
+ gtk_combo_box_set_active_iter (combo, &iter);
+ g_signal_handlers_unblock_by_func (combo, G_CALLBACK (cb_xfwm4_dbl_click_changed), channel);
+ break;
+ }
+ g_value_unset (&value2);
+ }
+ while (gtk_tree_model_iter_next (model, &iter));
+}
+
+static void
+cb_xfwm4_channel_title_alignment_changed(XfconfChannel *channel,
+ const gchar *property,
+ const GValue *value,
+ GtkComboBox *combo)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ const gchar *str_value;
+ GValue value2 = { 0, };
+
+ model = gtk_combo_box_get_model (combo);
+
+ str_value = g_value_get_string (value);
+
+ gtk_tree_model_get_iter_first (model, &iter);
+ do {
+ gtk_tree_model_get_value (model, &iter, 1, &value2);
+ if (strcmp (g_value_get_string (&value2), str_value) == 0)
+ {
+ g_value_unset (&value2);
+ g_signal_handlers_block_by_func (combo, G_CALLBACK (cb_xfwm4_title_align_changed), channel);
+ gtk_combo_box_set_active_iter (combo, &iter);
+ g_signal_handlers_unblock_by_func (combo, G_CALLBACK (cb_xfwm4_title_align_changed), channel);
+ break;
+ }
+ g_value_unset (&value2);
+ }
+ while (gtk_tree_model_iter_next (model, &iter));
+}
+
+static void
+save_button_layout (GtkContainer *container, XfconfChannel *channel)
+{
+ GList *children, *list_iter;
+ gchar *str_value = NULL;
+ gchar *tmp_string = "";
+
+ children = list_iter = gtk_container_get_children(container);
+
+ while(list_iter)
+ {
+ GtkWidget *button;
+
+ button = GTK_WIDGET(list_iter->data);
+
+ tmp_string = g_strconcat(tmp_string, (const gchar*)g_object_get_data (G_OBJECT (button), "key_char"), NULL);
+ g_free (str_value);
+ str_value = tmp_string;
+
+ list_iter = g_list_next(list_iter);
+ }
+
+ g_list_free(children);
+
+ g_signal_handlers_block_by_func (channel, G_CALLBACK (cb_xfwm4_channel_button_layout_changed), NULL);
+ xfconf_channel_set_string (channel, "/general/button_layout", str_value);
+ g_signal_handlers_unblock_by_func (channel, G_CALLBACK (cb_xfwm4_channel_button_layout_changed), NULL);
+
+ g_free (str_value);
+}
+
+static gboolean
+str_starts_with(const gchar *str, const gchar *start)
+{
+ while (*start)
+ {
+ if (*str++ != *start++)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+cb_xfwm4_channel_button_layout_changed(XfconfChannel *channel,
+ const gchar *property,
+ const GValue *value,
+ GtkContainer *hidden_box)
+{
+ GList *children, *list_iter;
+ const gchar *str_value;
+ GtkContainer *active_box;
+
+ str_value = g_value_get_string (value);
+
+ active_box = g_object_get_data (G_OBJECT (hidden_box), "active_box");
+
+ gtk_widget_set_app_paintable (GTK_WIDGET (active_box), FALSE);
+ gtk_widget_set_app_paintable (GTK_WIDGET (hidden_box), FALSE);
+
+ /* move all the buttons to the hidden list, except the title */
+ children = list_iter = gtk_container_get_children(active_box);
+
+ while (list_iter)
+ {
+ GtkWidget *button;
+ const gchar *key_char;
+
+ button = GTK_WIDGET(list_iter->data);
+
+ key_char = (const gchar*)g_object_get_data (G_OBJECT (button), "key_char");
+
+ if (key_char[0] != '|')
+ {
+ gtk_container_remove(active_box, button);
+ gtk_box_pack_start (GTK_BOX (hidden_box), button, FALSE, FALSE, 0);
+ }
+
+ list_iter = g_list_next(list_iter);
+ }
+
+ g_list_free(children);
+
+ /* move the buttons to the active list, in the correct order */
+ children = g_list_concat (gtk_container_get_children (active_box), gtk_container_get_children (hidden_box));
+
+ while (*str_value)
+ {
+ list_iter = children;
+ while (list_iter)
+ {
+ GtkWidget *button;
+ const gchar *key_char;
+
+ button = GTK_WIDGET(list_iter->data);
+
+ key_char = (const gchar*)g_object_get_data (G_OBJECT (button), "key_char");
+
+ if (str_starts_with(str_value, key_char))
+ {
+ gtk_container_remove(GTK_CONTAINER (gtk_widget_get_parent (button)), button);
+ gtk_box_pack_start (GTK_BOX (active_box), button, key_char[0] == '|', key_char[0] == '|', 0);
+ break;
+ }
+
+ list_iter = g_list_next(list_iter);
+ }
+
+ str_value++;
+ }
+
+ g_list_free(children);
+
+ gtk_widget_set_app_paintable (GTK_WIDGET (active_box), TRUE);
+ gtk_widget_set_app_paintable (GTK_WIDGET (hidden_box), TRUE);
+}
+
+static void
+cb_xfwm4_active_frame_drag_data (GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint time, GtkWidget *active_box)
+{
+ GtkWidget *source = gtk_drag_get_source_widget(drag_context);
+ GtkWidget *parent = gtk_widget_get_parent(source);
+
+ gtk_widget_ref(source);
+ gtk_container_remove(GTK_CONTAINER(parent), source);
+ gtk_box_pack_start(GTK_BOX(active_box), source, info == 3, info == 3, 0);
+ gtk_widget_unref(source);
+
+ guint button = 0;
+ gint xoffset = widget->allocation.x;
+ GtkWidget *item;
+
+ GList *iter, *children = iter = gtk_container_get_children(GTK_CONTAINER(active_box));
+
+ gint i = 0;
+
+ while(iter)
+ {
+ item = GTK_WIDGET(iter->data);
+
+ if(GTK_WIDGET_VISIBLE(item))
+ {
+ button++;
+ if(x < (item->allocation.width/2 + item->allocation.x - xoffset))
+ {
+ break;
+ }
+ }
+ i++;
+ iter = g_list_next(iter);
+ }
+
+ g_list_free(children);
+
+ gtk_box_reorder_child(GTK_BOX(active_box), source, i);
+
+ save_button_layout (GTK_CONTAINER (active_box), g_object_get_data (G_OBJECT (active_box), "xfwm4_channel"));
+}
+
+static gboolean
+cb_xfwm4_active_frame_drag_motion (GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, guint time, GtkWidget *active_box)
+{
+ guint button = 0;
+ gint ix, iy;
+ gint xoffset = widget->allocation.x;
+ GtkWidget *item;
+ GdkWindow *indicator;
+
+ GList *iter, *children = iter = gtk_container_get_children(GTK_CONTAINER(active_box));
+
+ ix = active_box->allocation.x + gtk_container_get_border_width(GTK_CONTAINER(active_box));
+
+ while(iter)
+ {
+ item = GTK_WIDGET(iter->data);
+
+ if(GTK_WIDGET_VISIBLE(item))
+ {
+ button++;
+ if(x < (item->allocation.width/2 + item->allocation.x - xoffset))
+ {
+ ix = item->allocation.x;
+ break;
+ }
+ ix = item->allocation.x + item->allocation.width;
+ }
+ iter = g_list_next(iter);
+ }
+
+ g_list_free(children);
+
+ ix -= INDICATOR_SIZE/2 + 1;
+ iy = active_box->allocation.y - INDICATOR_SIZE/2 + gtk_container_get_border_width(GTK_CONTAINER(active_box));
+
+ indicator = g_object_get_data (G_OBJECT (active_box), "indicator_window");
+ if(!indicator)
+ {
+ xfwm4_create_indicator(active_box, ix, iy, INDICATOR_SIZE, active_box->allocation.height + INDICATOR_SIZE - gtk_container_get_border_width(GTK_CONTAINER(active_box))*2);
+ }
+ else
+ {
+ gdk_window_move(indicator, ix, iy);
+ }
+
+ return FALSE;
+}
+
+static void
+cb_xfwm4_active_frame_drag_leave (GtkWidget *widget, GdkDragContext *drag_context, guint time, GtkWidget *active_box)
+{
+ xfwm4_delete_indicator (active_box);
+}
+
+static void
+cb_xfwm4_hidden_frame_drag_data (GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint time, GtkWidget *hidden_box)
+{
+ GtkWidget *source = gtk_drag_get_source_widget(drag_context);
+ GtkWidget *parent = gtk_widget_get_parent(source);
+
+ /* if the item was dragged back to the location it already was */
+ if(parent == hidden_box)
+ {
+ return;
+ }
+
+ gtk_widget_ref(source);
+ gtk_container_remove(GTK_CONTAINER(parent), source);
+ gtk_box_pack_start(GTK_BOX(hidden_box), source, FALSE, FALSE, 0);
+ gtk_widget_unref(source);
+
+ save_button_layout (g_object_get_data (G_OBJECT (hidden_box), "active_box"), g_object_get_data (G_OBJECT (parent), "xfwm4_channel"));
+}
+
+static void
+cb_xfwm4_title_button_data_get (GtkWidget *widget, GdkDragContext *drag_context, GtkSelectionData *data, guint info, guint time, const gchar *atom_name)
+{
+ gtk_widget_hide(widget);
+ gtk_selection_data_set(data, gdk_atom_intern(atom_name, FALSE), 8, NULL, 0);
+}
+
+static void
+cb_xfwm4_title_button_drag_begin (GtkWidget *widget, GdkDragContext *drag_context, gpointer user_data)
+{
+ GdkPixbuf *pixbuf = xfwm4_create_icon_from_widget(widget);
+
+ gtk_drag_source_set_icon_pixbuf(widget, pixbuf);
+ g_object_unref(G_OBJECT(pixbuf));
+ gtk_widget_hide(widget);
+}
+
+static void
+cb_xfwm4_title_button_drag_end (GtkWidget *widget, GdkDragContext *drag_context, gpointer user_data)
+{
+ gtk_widget_show(widget);
+}
+
+static gboolean
+cb_xfwm4_signal_blocker (GtkWidget *widget, gpointer user_data)
+{
+ return TRUE;
+}
+
+static GdkPixbuf*
+xfwm4_create_icon_from_widget(GtkWidget *widget)
+{
+ GdkWindow *drawable = GDK_DRAWABLE(gtk_widget_get_parent_window(widget));
+ return gdk_pixbuf_get_from_drawable(NULL, drawable, NULL, widget->allocation.x, widget->allocation.y, 0, 0, widget->allocation.width, widget->allocation.height);
+}
+
+static void
+xfwm4_create_indicator(GtkWidget *widget, gint x, gint y, gint width, gint height)
+{
+ gint attr_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_COLORMAP | GDK_WA_VISUAL;
+ GdkWindowAttr attributes = {
+ NULL,
+ 0,
+ x, y,
+ width, height,
+ GDK_INPUT_OUTPUT,
+ gtk_widget_get_visual(widget),
+ gtk_widget_get_colormap(widget),
+ GDK_WINDOW_CHILD,
+ NULL, NULL, NULL, FALSE
+ };
+
+ GdkWindow *indicator = gdk_window_new(gtk_widget_get_parent_window(widget), &attributes, attr_mask);
+ gdk_window_set_user_data(indicator, widget);
+ g_object_set_data (G_OBJECT (widget), "indicator_window", indicator);
+
+ GdkPoint points[9];
+ points[0].x = 0;
+ points[0].y = 0;
+ points[1].x = width;
+ points[1].y = 0;
+ points[2].x = width/2+1;
+ points[2].y = width/2;
+ points[3].x = width/2+1;
+ points[3].y = height-1-width/2;
+ points[4].x = width;
+ points[4].y = height;
+ points[5].x = 0;
+ points[5].y = height-1;
+ points[6].x = width/2;
+ points[6].y = height-1-width/2;
+ points[7].x = width/2;
+ points[7].y = width/2;
+ points[8].x = 0;
+ points[8].y = 0;
+ GdkRegion *shape = gdk_region_polygon(points, 9, GDK_WINDING_RULE);
+
+ gdk_window_shape_combine_region(indicator, shape, 0, 0);
+
+ gdk_window_show(indicator);
+ gdk_window_raise(indicator);
+}
+
+static void
+xfwm4_delete_indicator(GtkWidget *widget)
+{
+ GdkWindow *indicator = g_object_get_data (G_OBJECT (widget), "indicator_window");
+ if(indicator)
+ {
+ gdk_window_destroy(indicator);
+ g_object_set_data (G_OBJECT (widget), "indicator_window", NULL);
+ }
+}
+
+static void
+cb_xfwm4_add_keytheme_button_clicked (GtkWidget *widget, gpointer user_data)
+{
+
+ FILE *new_theme;
+ FILE *default_theme;
+ gchar buf[80];
+ gchar *new_theme_path = NULL;
+ gchar *new_theme_file = NULL;
+
+ while (TRUE)
+ {
+ gint result = gtk_dialog_run (GTK_DIALOG (add_keytheme_dialog));
+ gtk_widget_hide (add_keytheme_dialog);
+ if (result == GTK_RESPONSE_OK)
+ {
+ if (FALSE)
+ {
+ xfce_err (_("A keybinding theme with the same name already exists"));
+ continue;
+ }
+
+ if (strlen (gtk_entry_get_text (GTK_ENTRY (add_keytheme_name_entry))) == 0)
+ {
+ xfce_err (_("You have to provide a name for the keybinding theme"));
+ continue;
+ }
+
+ /* create theme (copy default) */
+ new_theme_path =
+ g_strdup_printf ("%s/xfwm4/%s", gtk_entry_get_text (GTK_ENTRY (add_keytheme_name_entry)), KEYTHEMERC);
+ new_theme_file =
+ xfce_resource_save_location (XFCE_RESOURCE_THEMES, new_theme_path, TRUE);
+
+ new_theme = fopen (new_theme_file, "w+");
+ if (!new_theme)
+ {
+ g_warning ("unable to create the new theme file");
+ break;
+ }
+
+ default_theme = fopen (xfwm4_keythemerc_filename, "r");
+ if (!default_theme)
+ {
+ g_warning ("unable to open the default theme file");
+ fclose (new_theme);
+ break;
+ }
+
+ while (fgets (buf, sizeof (buf), default_theme))
+ {
+ fputs (buf, new_theme);
+ }
+
+ fclose (new_theme);
+ fclose (default_theme);
+ }
+ break;
+ }
+
+ g_free (new_theme_path);
+ g_free (new_theme_file);
+}
+
+static void
+cb_xfwm4_del_keytheme_button_clicked (GtkWidget *widget, gpointer user_data)
+{
+ if (xfce_confirm (_("Do you really want to remove this keybinding theme ?"), GTK_STOCK_YES,
+ NULL))
+ {
+ }
+}
+
+static void
+cb_xfwm4_channel_keytheme_changed (XfconfChannel *channel, const gchar *property, const GValue *value, GtkTreeView *treeview)
+{
+ GtkListStore *list_store = GTK_LIST_STORE (gtk_tree_view_get_model(treeview));
+ check_keytheme_contents(list_store, channel, treeview);
+}
+
+static void
+cb_xfwm4_keytheme_contents_row_activated (GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
+{
+ GtkTreeIter iter;
+ GValue value = {0,};
+ GtkTreeModel *tree_model = gtk_tree_view_get_model (tree_view);
+
+ gtk_tree_model_get_iter (tree_model, &iter, path);
+ gtk_tree_model_get_value (tree_model, &iter, 0, &value);
+ g_print ("shortcut for '%s' : \n", g_value_get_string (&value));
+}
diff --git a/settings-dialogs/xfwm4-settings.desktop b/settings-dialogs/xfwm4-settings.desktop
new file mode 100644
index 000000000..b749c6044
--- /dev/null
+++ b/settings-dialogs/xfwm4-settings.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Version=1.0
+Name=Xfce 4 Windowmanager Settings
+GenericName=Windowmanager Settings
+Comment=
+Exec=xfwm4-settings
+Icon=xfwm4
+Terminal=false
+Type=Application
+Categories=X-XFCE;Settings;DesktopSettings;
+StartupNotify=true
+OnlyShowIn=XFCE;
diff --git a/settings-dialogs/xfwm4-settings.desktop.in b/settings-dialogs/xfwm4-settings.desktop.in
new file mode 100644
index 000000000..f79fd8c62
--- /dev/null
+++ b/settings-dialogs/xfwm4-settings.desktop.in
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Version=1.0
+_Name=Xfce 4 Windowmanager Settings
+_GenericName=Windowmanager Settings
+_Comment=
+Exec=xfwm4-settings
+Icon=xfwm4
+Terminal=false
+Type=Application
+Categories=X-XFCE;Settings;DesktopSettings;
+StartupNotify=true
+OnlyShowIn=XFCE;
diff --git a/settings-dialogs/xfwm4-tweaks-dialog.glade b/settings-dialogs/xfwm4-tweaks-dialog.glade
new file mode 100644
index 000000000..a884e54ff
--- /dev/null
+++ b/settings-dialogs/xfwm4-tweaks-dialog.glade
@@ -0,0 +1,934 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.4.5 on Sun Jun 29 23:59:48 2008 -->
+<glade-interface>
+ <requires lib="xfce4"/>
+ <widget class="GtkDialog" id="main-dialog">
+ <property name="width_request">500</property>
+ <property name="border_width">5</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="main-vbox">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="XfceHeading" id="xfce-heading1">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="icon_name">wmtweaks</property>
+ <property name="title" translatable="yes">Window Manager Tweaks</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkCheckButton" id="cycle_minimum_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Skip windows that have "skip pager"
+or "skip taskbar" properties set</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="cycle_hidden_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Include hidden (i.e. iconified) windows</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="cycle_workspaces_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Cycle through windows on all workspaces</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Cycling</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="spacing">3</property>
+ <child>
+ <widget class="GtkCheckButton" id="prevent_focus_stealing_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Activate focus stealing prevention</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="focus_hint_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Honor standard ICCCM focus hint</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="prevent_focus_stealing_box">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <child>
+ <widget class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">When a window raises itself:</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox14">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkRadioButton" id="activate_action_bring_option">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Bring window on current workspace</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="activate_action_switch_option">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Switch to window's workspace</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">activate_action_bring_option</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="activate_action_none_option">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Do nothing</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">activate_action_bring_option</property>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Focus</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Key used to grab and move windows</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkComboBox" id="easy_click_combo_box">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes"></property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="raise_on_click_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Raise windows when any mouse button is pressed</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="borderless_maximize_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Hide frame of windows when maximized</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="restore_on_move_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Restore original size of maximized windows when moving</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="snap_resist_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Use edge resistance instead of window-snapping</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Accessibility</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkCheckButton" id="scroll_workspaces_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Switch workspaces using mousewheel over desktop</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="toggle_workspaces_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Remember and recall previous workspace
+when switching via keyboard shortcuts</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="wrap_layout_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Wrap workspaced depending on the actual desktop layout</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="wrap_cycle_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Wrap workspaces when the first or the last workspace is reached</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Workspaces</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox6">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Minimum size of windows to trigger smart placement</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Small</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="placement_ratio_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">88 0 100 1 10 10</property>
+ <property name="restrict_to_fill_level">False</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Large</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Placement</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">4</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox7">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkCheckButton" id="use_compositing_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Enable display compositing</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="use_compositing_box">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="resize_mode">GTK_RESIZE_QUEUE</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkVBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="spacing">3</property>
+ <child>
+ <widget class="GtkCheckButton" id="unredirect_overlays_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Display fullscreen overlay windows directly</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="show_frame_shadow_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show shadows under regular windows</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="show_popup_shadow_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show shadows under popup windows</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="show_dock_shadow_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show shadows under docking windows</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox9">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Opacity of window decorations</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Transparent&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="frame_opacity_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">90 0 100 1 10 0</property>
+ <property name="restrict_to_fill_level">False</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Opaque&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox10">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Opacity of inactive windows</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox4">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Transparent&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="inactive_opacity_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">90 0 100 1 10 0</property>
+ <property name="restrict_to_fill_level">False</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Opaque&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox11">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Opacity of windows during move</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Transparent&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="move_opacity_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">100 0 100 1 10 0</property>
+ <property name="restrict_to_fill_level">False</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label22">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Opaque&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox12">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Opacity of windows during resize</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Transparent&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="resize_opacity_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">90 0 100 1 10 0</property>
+ <property name="restrict_to_fill_level">False</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Opaque&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox13">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Opacity of popup windows</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Transparent&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="popup_opacity_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
+ <property name="adjustment">90 0 100 1 10 0</property>
+ <property name="restrict_to_fill_level">False</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label26">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Opaque&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Compositor</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">5</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_EDGE</property>
+ <child>
+ <widget class="GtkButton" id="button2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-help</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/settings-dialogs/xfwm4-tweaks-dialog_glade.h b/settings-dialogs/xfwm4-tweaks-dialog_glade.h
new file mode 100644
index 000000000..dc06f579c
--- /dev/null
+++ b/settings-dialogs/xfwm4-tweaks-dialog_glade.h
@@ -0,0 +1,802 @@
+/* automatically generated from xfwm4-tweaks-dialog.glade */
+#ifdef __SUNPRO_C
+#pragma align 4 (tweaks_dialog_glade)
+#endif
+#ifdef __GNUC__
+static const char tweaks_dialog_glade[] __attribute__ ((__aligned__ (4))) =
+#else
+static const char tweaks_dialog_glade[] =
+#endif
+{
+ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE"
+ " glade-interface SYSTEM \"glade-2.0.dtd\">\n<!--Generated with glade3 3"
+ ".4.5 on Sun Jun 29 23:59:48 2008 -->\n<glade-interface>\n <requires li"
+ "b=\"xfce4\"/>\n <widget class=\"GtkDialog\" id=\"main-dialog\">\n <"
+ "property name=\"width_request\">500</property>\n <property name=\"bo"
+ "rder_width\">5</property>\n <property name=\"window_position\">GTK_W"
+ "IN_POS_CENTER_ON_PARENT</property>\n <property name=\"type_hint\">GD"
+ "K_WINDOW_TYPE_HINT_DIALOG</property>\n <property name=\"has_separato"
+ "r\">False</property>\n <child internal-child=\"vbox\">\n <widge"
+ "t class=\"GtkVBox\" id=\"main-vbox\">\n <property name=\"visible"
+ "\">True</property>\n <property name=\"spacing\">2</property>\n "
+ " <child>\n <widget class=\"XfceHeading\" id=\"xfce-headin"
+ "g1\">\n <property name=\"events\">GDK_POINTER_MOTION_MASK | "
+ "GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEA"
+ "SE_MASK</property>\n <property name=\"icon_name\">wmtweaks</"
+ "property>\n <property name=\"title\" translatable=\"yes\">Wi"
+ "ndow Manager Tweaks</property>\n </widget>\n <packing"
+ ">\n <property name=\"expand\">False</property>\n "
+ "<property name=\"fill\">False</property>\n <property name=\""
+ "position\">1</property>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkNotebook\" id=\"notebook1\">\n "
+ " <property name=\"visible\">True</property>\n <pro"
+ "perty name=\"can_focus\">True</property>\n <child>\n "
+ " <widget class=\"GtkVBox\" id=\"vbox1\">\n <propert"
+ "y name=\"visible\">True</property>\n <child>\n "
+ " <widget class=\"GtkCheckButton\" id=\"cycle_minimum_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Skip windows that "
+ "have \"skip pager\"\nor \"skip taskbar\" properties set</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " </widget>\n <packing>\n <p"
+ "roperty name=\"expand\">False</property>\n <property"
+ " name=\"fill\">False</property>\n </packing>\n "
+ " </child>\n <child>\n <widget cl"
+ "ass=\"GtkCheckButton\" id=\"cycle_hidden_check\">\n "
+ "<property name=\"visible\">True</property>\n <proper"
+ "ty name=\"can_focus\">True</property>\n <property na"
+ "me=\"label\" translatable=\"yes\">Include hidden (i.e. iconified) windo"
+ "ws</property>\n <property name=\"response_id\">0</pr"
+ "operty>\n <property name=\"draw_indicator\">True</pr"
+ "operty>\n </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ "<property name=\"position\">1</property>\n </packing>\n"
+ " </child>\n <child>\n <w"
+ "idget class=\"GtkCheckButton\" id=\"cycle_workspaces_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ "<property name=\"label\" translatable=\"yes\">Cycle through windows on "
+ "all workspaces</property>\n <property name=\"respons"
+ "e_id\">0</property>\n <property name=\"draw_indicato"
+ "r\">True</property>\n </widget>\n <pa"
+ "cking>\n <property name=\"expand\">False</property>\n"
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</property>\n "
+ "</packing>\n </child>\n </widget>\n "
+ " </child>\n <child>\n <widget class=\"GtkLab"
+ "el\" id=\"label1\">\n <property name=\"visible\">True</p"
+ "roperty>\n <property name=\"label\" translatable=\"yes\""
+ ">Cycling</property>\n </widget>\n <packing>\n"
+ " <property name=\"type\">tab</property>\n "
+ " <property name=\"tab_fill\">False</property>\n </packing>"
+ "\n </child>\n <child>\n <widget clas"
+ "s=\"GtkVBox\" id=\"vbox3\">\n <property name=\"visible\""
+ ">True</property>\n <property name=\"spacing\">3</propert"
+ "y>\n <child>\n <widget class=\"GtkCheck"
+ "Button\" id=\"prevent_focus_stealing_check\">\n <pro"
+ "perty name=\"visible\">True</property>\n <property n"
+ "ame=\"can_focus\">True</property>\n <property name=\""
+ "label\" translatable=\"yes\">Activate focus stealing prevention</proper"
+ "ty>\n <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n <"
+ "property name=\"fill\">False</property>\n </packing>\n"
+ " </child>\n <child>\n <w"
+ "idget class=\"GtkCheckButton\" id=\"focus_hint_check\">\n "
+ " <property name=\"visible\">True</property>\n <"
+ "property name=\"can_focus\">True</property>\n <prope"
+ "rty name=\"label\" translatable=\"yes\">Honor standard ICCCM focus hint"
+ "</property>\n <property name=\"response_id\">0</prop"
+ "erty>\n <property name=\"draw_indicator\">True</prop"
+ "erty>\n </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n <p"
+ "roperty name=\"position\">1</property>\n </packing>\n "
+ " </child>\n <child>\n <wi"
+ "dget class=\"GtkVBox\" id=\"prevent_focus_stealing_box\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"sensitive\">False</property>\n <ch"
+ "ild>\n <widget class=\"GtkLabel\" id=\"label11\">\n"
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"xalign\">0</property>\n "
+ " <property name=\"label\" translatable=\"yes\">When a wind"
+ "ow raises itself:</property>\n </widget>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkAlignment\" id=\"alignment2\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"left_padding\">12</property>\n "
+ " <child>\n <widget class=\"GtkVBox\" id=\"vb"
+ "ox14\">\n <property name=\"visible\">True</p"
+ "roperty>\n <child>\n "
+ " <widget class=\"GtkRadioButton\" id=\"activate_action_bring_optio"
+ "n\">\n <property name=\"visible\">True</"
+ "property>\n <property name=\"can_focus\""
+ ">True</property>\n <property name=\"labe"
+ "l\" translatable=\"yes\">Bring window on current workspace</property>\n"
+ " <property name=\"response_id\">0</prope"
+ "rty>\n <property name=\"active\">True</p"
+ "roperty>\n <property name=\"draw_indicat"
+ "or\">True</property>\n </widget>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkRadioButton\" id=\"activat"
+ "e_action_switch_option\">\n <property na"
+ "me=\"visible\">True</property>\n <proper"
+ "ty name=\"can_focus\">True</property>\n "
+ "<property name=\"label\" translatable=\"yes\">Switch to window\'s works"
+ "pace</property>\n <property name=\"respo"
+ "nse_id\">0</property>\n <property name=\""
+ "active\">True</property>\n <property nam"
+ "e=\"draw_indicator\">True</property>\n <"
+ "property name=\"group\">activate_action_bring_option</property>\n "
+ " </widget>\n <packi"
+ "ng>\n <property name=\"position\">1</pro"
+ "perty>\n </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkRadioButton\" id=\"activate_action_none"
+ "_option\">\n <property name=\"visible\">"
+ "True</property>\n <property name=\"can_f"
+ "ocus\">True</property>\n <property name="
+ "\"label\" translatable=\"yes\">Do nothing</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"active\">True</property>\n "
+ " <property name=\"draw_indicator\">True</proper"
+ "ty>\n <property name=\"group\">activate_"
+ "action_bring_option</property>\n </widget>"
+ "\n <packing>\n "
+ " <property name=\"position\">2</property>\n "
+ " </packing>\n </child>\n "
+ " </widget>\n </child>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"position\">1</property>\n </pa"
+ "cking>\n </child>\n </widget>\n "
+ " <packing>\n <property name=\"expand\">"
+ "False</property>\n <property name=\"fill\">False</pr"
+ "operty>\n <property name=\"position\">2</property>\n"
+ " </packing>\n </child>\n <"
+ "/widget>\n <packing>\n <property name=\"pos"
+ "ition\">1</property>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkLabel\" id=\"label"
+ "2\">\n <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Focus</propert"
+ "y>\n </widget>\n <packing>\n <"
+ "property name=\"type\">tab</property>\n <property name=\""
+ "position\">1</property>\n <property name=\"tab_fill\">Fa"
+ "lse</property>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkVBox\" id=\"vbox4\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <child>\n <widget class=\"GtkHBox\" id=\"hbox1\">\n"
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"spacing\">4</property>\n "
+ " <child>\n <widget class=\"GtkLabel\" id=\"label"
+ "7\">\n <property name=\"visible\">True</property"
+ ">\n <property name=\"xalign\">0</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Key u"
+ "sed to grab and move windows</property>\n </widget"
+ ">\n <packing>\n <property n"
+ "ame=\"expand\">False</property>\n <property name"
+ "=\"fill\">False</property>\n </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkComboBox\" id=\"easy_click_combo_box\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"items\" translatable=\"yes\"></property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n </widget"
+ ">\n <packing>\n <property name=\"ex"
+ "pand\">False</property>\n <property name=\"fill\">Fa"
+ "lse</property>\n </packing>\n </child>\n"
+ " <child>\n <widget class=\"GtkCheckButt"
+ "on\" id=\"raise_on_click_check\">\n <property name=\""
+ "visible\">True</property>\n <property name=\"can_foc"
+ "us\">True</property>\n <property name=\"label\" tran"
+ "slatable=\"yes\">Raise windows when any mouse button is pressed</proper"
+ "ty>\n <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n <"
+ "property name=\"fill\">False</property>\n <property "
+ "name=\"position\">1</property>\n </packing>\n "
+ " </child>\n <child>\n <widget cla"
+ "ss=\"GtkCheckButton\" id=\"borderless_maximize_check\">\n "
+ " <property name=\"visible\">True</property>\n <"
+ "property name=\"can_focus\">True</property>\n <prope"
+ "rty name=\"label\" translatable=\"yes\">Hide frame of windows when maxi"
+ "mized</property>\n <property name=\"response_id\">0<"
+ "/property>\n <property name=\"draw_indicator\">True<"
+ "/property>\n </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</property>\n </packin"
+ "g>\n </child>\n <child>\n "
+ " <widget class=\"GtkCheckButton\" id=\"restore_on_move_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Restore original size "
+ "of maximized windows when moving</property>\n <prope"
+ "rty name=\"response_id\">0</property>\n <property na"
+ "me=\"draw_indicator\">True</property>\n </widget>\n "
+ " <packing>\n <property name=\"expand\""
+ ">False</property>\n <property name=\"fill\">False</p"
+ "roperty>\n <property name=\"position\">3</property>\n"
+ " </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkCheckButton\" id=\"snap_"
+ "resist_check\">\n <property name=\"visible\">True</p"
+ "roperty>\n <property name=\"can_focus\">True</proper"
+ "ty>\n <property name=\"label\" translatable=\"yes\">"
+ "Use edge resistance instead of window-snapping</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ "</widget>\n <packing>\n <property n"
+ "ame=\"expand\">False</property>\n <property name=\"f"
+ "ill\">False</property>\n <property name=\"position\""
+ ">4</property>\n </packing>\n </child>\n"
+ " </widget>\n <packing>\n <prop"
+ "erty name=\"position\">2</property>\n </packing>\n "
+ " </child>\n <child>\n <widget class=\"GtkLab"
+ "el\" id=\"label3\">\n <property name=\"visible\">True</p"
+ "roperty>\n <property name=\"label\" translatable=\"yes\""
+ ">Accessibility</property>\n </widget>\n <pack"
+ "ing>\n <property name=\"type\">tab</property>\n "
+ " <property name=\"position\">2</property>\n <prope"
+ "rty name=\"tab_fill\">False</property>\n </packing>\n "
+ " </child>\n <child>\n <widget class=\"Gtk"
+ "VBox\" id=\"vbox5\">\n <property name=\"visible\">True</"
+ "property>\n <child>\n <widget class=\"G"
+ "tkCheckButton\" id=\"scroll_workspaces_check\">\n <p"
+ "roperty name=\"visible\">True</property>\n <property"
+ " name=\"can_focus\">True</property>\n <property name"
+ "=\"label\" translatable=\"yes\">Switch workspaces using mousewheel over"
+ " desktop</property>\n <property name=\"response_id\""
+ ">0</property>\n <property name=\"draw_indicator\">Tr"
+ "ue</property>\n </widget>\n <packing>"
+ "\n <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n </child>\n <child>\n "
+ " <widget class=\"GtkCheckButton\" id=\"toggle_workspaces_c"
+ "heck\">\n <property name=\"visible\">True</property>"
+ "\n <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Remember"
+ " and recall previous workspace\nwhen switching via keyboard shortcuts</"
+ "property>\n <property name=\"response_id\">0</proper"
+ "ty>\n <property name=\"draw_indicator\">True</proper"
+ "ty>\n </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n <pro"
+ "perty name=\"position\">1</property>\n </packing>\n "
+ " </child>\n <child>\n <widg"
+ "et class=\"GtkCheckButton\" id=\"wrap_layout_check\">\n "
+ " <property name=\"visible\">True</property>\n <pr"
+ "operty name=\"can_focus\">True</property>\n <propert"
+ "y name=\"label\" translatable=\"yes\">Wrap workspaced depending on the "
+ "actual desktop layout</property>\n <property name=\""
+ "response_id\">0</property>\n <property name=\"draw_i"
+ "ndicator\">True</property>\n </widget>\n "
+ " <packing>\n <property name=\"expand\">False</pro"
+ "perty>\n <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</property>\n "
+ " </packing>\n </child>\n <child>\n"
+ " <widget class=\"GtkCheckButton\" id=\"wrap_cycle_chec"
+ "k\">\n <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Wrap worksp"
+ "aces when the first or the last workspace is reached</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</property>\n "
+ " </widget>\n <packing>\n <prop"
+ "erty name=\"expand\">False</property>\n <property na"
+ "me=\"fill\">False</property>\n <property name=\"posi"
+ "tion\">3</property>\n </packing>\n </ch"
+ "ild>\n </widget>\n <packing>\n "
+ " <property name=\"position\">3</property>\n </packing>\n "
+ " </child>\n <child>\n <widget class=\""
+ "GtkLabel\" id=\"label4\">\n <property name=\"visible\">T"
+ "rue</property>\n <property name=\"label\" translatable=\""
+ "yes\">Workspaces</property>\n </widget>\n <pa"
+ "cking>\n <property name=\"type\">tab</property>\n "
+ " <property name=\"position\">3</property>\n <pro"
+ "perty name=\"tab_fill\">False</property>\n </packing>\n "
+ " </child>\n <child>\n <widget class=\"G"
+ "tkVBox\" id=\"vbox6\">\n <property name=\"visible\">True"
+ "</property>\n <child>\n <widget class=\""
+ "GtkLabel\" id=\"label8\">\n <property name=\"visible"
+ "\">True</property>\n <property name=\"xalign\">0</pr"
+ "operty>\n <property name=\"label\" translatable=\"ye"
+ "s\">Minimum size of windows to trigger smart placement</property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n <pro"
+ "perty name=\"fill\">False</property>\n </packing>\n "
+ " </child>\n <child>\n <widg"
+ "et class=\"GtkHBox\" id=\"hbox2\">\n <property name="
+ "\"visible\">True</property>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label9\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Small</property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n </child>\n <chil"
+ "d>\n <widget class=\"GtkHScale\" id=\"placement_ra"
+ "tio_scale\">\n <property name=\"visible\">True</"
+ "property>\n <property name=\"can_focus\">True</p"
+ "roperty>\n <property name=\"adjustment\">88 0 10"
+ "0 1 10 10</property>\n <property name=\"restrict"
+ "_to_fill_level\">False</property>\n <property na"
+ "me=\"draw_value\">False</property>\n </widget>\n "
+ " <packing>\n <property name=\""
+ "position\">1</property>\n </packing>\n "
+ " </child>\n <child>\n <w"
+ "idget class=\"GtkLabel\" id=\"label10\">\n <prop"
+ "erty name=\"visible\">True</property>\n <propert"
+ "y name=\"label\" translatable=\"yes\">Large</property>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"position\">2</property>\n </pack"
+ "ing>\n </child>\n </widget>\n "
+ " <packing>\n <property name=\"expand\">Fa"
+ "lse</property>\n <property name=\"fill\">False</prop"
+ "erty>\n <property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n </w"
+ "idget>\n <packing>\n <property name=\"posit"
+ "ion\">4</property>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkLabel\" id=\"label5\""
+ ">\n <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Placement</proper"
+ "ty>\n </widget>\n <packing>\n "
+ "<property name=\"type\">tab</property>\n <property name="
+ "\"position\">4</property>\n <property name=\"tab_fill\">"
+ "False</property>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkVBox\" id=\"vbox7\">\n"
+ " <property name=\"visible\">True</property>\n "
+ " <child>\n <widget class=\"GtkCheckButton\" id=\"u"
+ "se_compositing_check\">\n <property name=\"visible\""
+ ">True</property>\n <property name=\"can_focus\">True"
+ "</property>\n <property name=\"label\" translatable="
+ "\"yes\">Enable display compositing</property>\n <pro"
+ "perty name=\"response_id\">0</property>\n <property "
+ "name=\"draw_indicator\">True</property>\n </widget>\n "
+ " <packing>\n <property name=\"expand"
+ "\">False</property>\n <property name=\"fill\">False<"
+ "/property>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkScrolledWind"
+ "ow\" id=\"use_compositing_box\">\n <property name=\""
+ "visible\">True</property>\n <property name=\"sensiti"
+ "ve\">False</property>\n <property name=\"can_focus\""
+ ">True</property>\n <property name=\"hscrollbar_polic"
+ "y\">GTK_POLICY_AUTOMATIC</property>\n <property name"
+ "=\"vscrollbar_policy\">GTK_POLICY_AUTOMATIC</property>\n "
+ " <property name=\"shadow_type\">GTK_SHADOW_IN</property>\n "
+ " <child>\n <widget class=\"GtkViewport\""
+ " id=\"viewport1\">\n <property name=\"visible\">"
+ "True</property>\n <property name=\"resize_mode\""
+ ">GTK_RESIZE_QUEUE</property>\n <property name=\""
+ "shadow_type\">GTK_SHADOW_NONE</property>\n <chil"
+ "d>\n <widget class=\"GtkAlignment\" id=\"align"
+ "ment1\">\n <property name=\"visible\">True</"
+ "property>\n <property name=\"left_padding\">"
+ "10</property>\n <child>\n "
+ " <widget class=\"GtkVBox\" id=\"vbox8\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"spacing\">3</property>\n "
+ " <child>\n <widget "
+ "class=\"GtkCheckButton\" id=\"unredirect_overlays_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</pr"
+ "operty>\n <property name=\"label\" t"
+ "ranslatable=\"yes\">Display fullscreen overlay windows directly</proper"
+ "ty>\n <property name=\"response_id\""
+ ">0</property>\n <property name=\"dra"
+ "w_indicator\">True</property>\n </widg"
+ "et>\n </child>\n "
+ " <child>\n <widget class=\"GtkC"
+ "heckButton\" id=\"show_frame_shadow_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatable=\""
+ "yes\">Show shadows under regular windows</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</pro"
+ "perty>\n </widget>\n "
+ " <packing>\n <propert"
+ "y name=\"position\">1</property>\n </p"
+ "acking>\n </child>\n "
+ " <child>\n <widget class=\""
+ "GtkCheckButton\" id=\"show_popup_shadow_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"label\" translatabl"
+ "e=\"yes\">Show shadows under popup windows</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True</p"
+ "roperty>\n </widget>\n "
+ " <packing>\n <prope"
+ "rty name=\"position\">2</property>\n <"
+ "/packing>\n </child>\n "
+ " <child>\n <widget class="
+ "\"GtkCheckButton\" id=\"show_dock_shadow_check\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n"
+ " <property name=\"label\" translatab"
+ "le=\"yes\">Show shadows under docking windows</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " <property name=\"draw_indicator\">True"
+ "</property>\n </widget>\n "
+ " <packing>\n <pr"
+ "operty name=\"position\">3</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n <widget cla"
+ "ss=\"GtkVBox\" id=\"vbox9\">\n <prop"
+ "erty name=\"visible\">True</property>\n "
+ " <child>\n <widget class=\"GtkL"
+ "abel\" id=\"label12\">\n <proper"
+ "ty name=\"visible\">True</property>\n "
+ " <property name=\"xalign\">0</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Opacity of"
+ " window decorations</property>\n <"
+ "/widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n"
+ " </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkHBox\" id=\"hbo"
+ "x3\">\n <property name=\"visible"
+ "\">True</property>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\""
+ "label17\">\n <property name="
+ "\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt"
+ ";/i&gt;</property>\n <proper"
+ "ty name=\"use_markup\">True</property>\n "
+ " </widget>\n <packin"
+ "g>\n <property name=\"expand"
+ "\">False</property>\n <prope"
+ "rty name=\"fill\">False</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkHScale\" id=\"frame_opacity_scale\""
+ ">\n <property name=\"visible"
+ "\">True</property>\n <proper"
+ "ty name=\"can_focus\">True</property>\n "
+ " <property name=\"update_policy\">GTK_UPDATE_DISCONTINUOUS</"
+ "property>\n <property name=\""
+ "adjustment\">90 0 100 1 10 0</property>\n "
+ " <property name=\"restrict_to_fill_level\">False</property"
+ ">\n <property name=\"draw_va"
+ "lue\">False</property>\n </wid"
+ "get>\n <packing>\n "
+ " <property name=\"position\">1</property"
+ ">\n </packing>\n "
+ " </child>\n "
+ " <child>\n <widget class=\""
+ "GtkLabel\" id=\"label18\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;i&g"
+ "t;Opaque&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n <property na"
+ "me=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</property>\n "
+ " </packing>\n "
+ " </child>\n </widget>"
+ "\n <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</propert"
+ "y>\n <property name=\"position\""
+ ">1</property>\n </packing>\n "
+ " </child>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"position\">4</property>\n "
+ " </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkVBox\" id=\"vbox10\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label13\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"xalign\">0</property"
+ ">\n <property name=\"label\" tra"
+ "nslatable=\"yes\">Opacity of inactive windows</property>\n "
+ " </widget>\n "
+ " <packing>\n <property name=\""
+ "expand\">False</property>\n <pro"
+ "perty name=\"fill\">False</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkHBox\" id=\"hbox4\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label19\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" trans"
+ "latable=\"yes\">&lt;i&gt;Transparent&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</pro"
+ "perty>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</propert"
+ "y>\n </packing>\n "
+ " </child>\n "
+ " <child>\n <widget class="
+ "\"GtkHScale\" id=\"inactive_opacity_scale\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</"
+ "property>\n <property name=\""
+ "update_policy\">GTK_UPDATE_DISCONTINUOUS</property>\n "
+ " <property name=\"adjustment\">90 0 100 1 10 0"
+ "</property>\n <property name"
+ "=\"restrict_to_fill_level\">False</property>\n "
+ " <property name=\"draw_value\">False</property>\n "
+ " </widget>\n "
+ " <packing>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n </"
+ "child>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label20\">\n"
+ " <property name=\"visible\">"
+ "True</property>\n <property "
+ "name=\"label\" translatable=\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property"
+ ">\n <property name=\"use_mar"
+ "kup\">True</property>\n </widg"
+ "et>\n <packing>\n "
+ " <property name=\"expand\">False</propert"
+ "y>\n <property name=\"fill\""
+ ">False</property>\n <propert"
+ "y name=\"position\">2</property>\n "
+ " </packing>\n </child>\n "
+ " </widget>\n "
+ " <packing>\n <propert"
+ "y name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n "
+ " </child>\n </widget>\n "
+ " <packing>\n <pro"
+ "perty name=\"position\">5</property>\n "
+ " </packing>\n </child>\n "
+ " <child>\n <widget clas"
+ "s=\"GtkVBox\" id=\"vbox11\">\n <prop"
+ "erty name=\"visible\">True</property>\n "
+ " <child>\n <widget class=\"GtkL"
+ "abel\" id=\"label14\">\n <proper"
+ "ty name=\"visible\">True</property>\n "
+ " <property name=\"xalign\">0</property>\n "
+ " <property name=\"label\" translatable=\"yes\">Opacity of"
+ " windows during move</property>\n "
+ "</widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>"
+ "\n <property name=\"fill\">False"
+ "</property>\n </packing>\n "
+ " </child>\n "
+ " <child>\n <widget class=\"GtkHB"
+ "ox\" id=\"hbox5\">\n <property n"
+ "ame=\"visible\">True</property>\n "
+ " <child>\n <widget class=\"Gt"
+ "kLabel\" id=\"label21\">\n <"
+ "property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;i&gt;"
+ "Transparent&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n <property"
+ " name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkHScale\" id=\"move_o"
+ "pacity_scale\">\n <property "
+ "name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"update_policy\">GTK_UPDATE_D"
+ "ISCONTINUOUS</property>\n <p"
+ "roperty name=\"adjustment\">100 0 100 1 10 0</property>\n "
+ " <property name=\"restrict_to_fill_level\""
+ ">False</property>\n <propert"
+ "y name=\"draw_value\">False</property>\n "
+ " </widget>\n <packin"
+ "g>\n <property name=\"positi"
+ "on\">1</property>\n </packing>"
+ "\n </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label22\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatabl"
+ "e=\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</pro"
+ "perty>\n </packing>\n "
+ " </child>\n "
+ " </widget>\n <packing>\n "
+ " <property name=\"expand\">False</p"
+ "roperty>\n <property name=\"fill"
+ "\">False</property>\n <property "
+ "name=\"position\">1</property>\n <"
+ "/packing>\n </child>\n "
+ " </widget>\n <packi"
+ "ng>\n <property name=\"position\">6<"
+ "/property>\n </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkVBox\" id=\"vbox12\""
+ ">\n <property name=\"visible\">True<"
+ "/property>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label15\">\n "
+ " <property name=\"visible\">True</p"
+ "roperty>\n <property name=\"xali"
+ "gn\">0</property>\n <property na"
+ "me=\"label\" translatable=\"yes\">Opacity of windows during resize</pro"
+ "perty>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n "
+ " </child>\n <child>\n "
+ " <widget class=\"GtkHBox\" id=\"hbox6\">\n "
+ " <property name=\"visible\">True</pro"
+ "perty>\n <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label23\">\n"
+ " <property name=\"visible\">"
+ "True</property>\n <property "
+ "name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt;/i&gt;</pro"
+ "perty>\n <property name=\"us"
+ "e_markup\">True</property>\n <"
+ "/widget>\n <packing>\n "
+ " <property name=\"expand\">False</pr"
+ "operty>\n <property name=\"f"
+ "ill\">False</property>\n </pac"
+ "king>\n </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkHScale\" id=\"resize_opacity_scale\">\n "
+ " <property name=\"visible\">True</p"
+ "roperty>\n <property name=\""
+ "can_focus\">True</property>\n "
+ " <property name=\"update_policy\">GTK_UPDATE_DISCONTINUOUS</property>\n"
+ " <property name=\"adjustment"
+ "\">90 0 100 1 10 0</property>\n "
+ " <property name=\"restrict_to_fill_level\">False</property>\n "
+ " <property name=\"draw_value\">Fals"
+ "e</property>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n "
+ " </child>\n <chil"
+ "d>\n <widget class=\"GtkLabel\""
+ " id=\"label24\">\n <property"
+ " name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">&lt;i&gt;Opaque&l"
+ "t;/i&gt;</property>\n <prope"
+ "rty name=\"use_markup\">True</property>\n "
+ " </widget>\n <packi"
+ "ng>\n <property name=\"expan"
+ "d\">False</property>\n <prop"
+ "erty name=\"fill\">False</property>\n "
+ " <property name=\"position\">2</property>\n "
+ " </packing>\n "
+ " </child>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">1</proper"
+ "ty>\n </packing>\n "
+ " </child>\n </widge"
+ "t>\n <packing>\n "
+ " <property name=\"position\">7</property>\n "
+ " </packing>\n </child>"
+ "\n <child>\n "
+ " <widget class=\"GtkVBox\" id=\"vbox13\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <child>\n <w"
+ "idget class=\"GtkLabel\" id=\"label16\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"xalign\">0</property>\n "
+ " <property name=\"label\" translatable="
+ "\"yes\">Opacity of popup windows</property>\n "
+ " </widget>\n <packing>\n"
+ " <property name=\"expand\">False"
+ "</property>\n <property name=\"f"
+ "ill\">False</property>\n </packing"
+ ">\n </child>\n "
+ " <child>\n <widget cl"
+ "ass=\"GtkHBox\" id=\"hbox7\">\n "
+ "<property name=\"visible\">True</property>\n "
+ " <child>\n <widget"
+ " class=\"GtkLabel\" id=\"label25\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\""
+ ">&lt;i&gt;Transparent&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</property>\n "
+ " </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>\n "
+ " </packing>\n "
+ " </child>\n <child>\n"
+ " <widget class=\"GtkHScale\" i"
+ "d=\"popup_opacity_scale\">\n "
+ " <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"update_policy\">G"
+ "TK_UPDATE_DISCONTINUOUS</property>\n "
+ " <property name=\"adjustment\">90 0 100 1 10 0</property>\n "
+ " <property name=\"restrict_to_fi"
+ "ll_level\">False</property>\n "
+ " <property name=\"draw_value\">False</property>\n "
+ " </widget>\n "
+ " <packing>\n <property nam"
+ "e=\"position\">1</property>\n "
+ "</packing>\n </child>\n "
+ " <child>\n "
+ " <widget class=\"GtkLabel\" id=\"label26\">\n "
+ " <property name=\"visible\">True</property>\n"
+ " <property name=\"label\" tr"
+ "anslatable=\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property>\n "
+ " <property name=\"use_markup\">True</prope"
+ "rty>\n </widget>\n "
+ " <packing>\n "
+ " <property name=\"expand\">False</property>\n "
+ " <property name=\"fill\">False</property>"
+ "\n <property name=\"position"
+ "\">2</property>\n </packing>\n"
+ " </child>\n "
+ " </widget>\n <pack"
+ "ing>\n <property name=\"expand\""
+ ">False</property>\n <property na"
+ "me=\"fill\">False</property>\n <"
+ "property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n "
+ " </widget>\n "
+ " <packing>\n <property name=\"posi"
+ "tion\">8</property>\n </packing>\n "
+ " </child>\n </w"
+ "idget>\n </child>\n "
+ " </widget>\n </child>\n </w"
+ "idget>\n </child>\n </widget>\n "
+ " <packing>\n <property name=\"position\""
+ ">1</property>\n </packing>\n </child>\n"
+ " </widget>\n <packing>\n <prop"
+ "erty name=\"position\">5</property>\n </packing>\n "
+ " </child>\n <child>\n <widget class=\"GtkLab"
+ "el\" id=\"label6\">\n <property name=\"visible\">True</p"
+ "roperty>\n <property name=\"label\" translatable=\"yes\""
+ ">Compositor</property>\n </widget>\n <packing"
+ ">\n <property name=\"type\">tab</property>\n "
+ " <property name=\"position\">5</property>\n <property"
+ " name=\"tab_fill\">False</property>\n </packing>\n "
+ " </child>\n </widget>\n <packing>\n <pr"
+ "operty name=\"position\">2</property>\n </packing>\n </"
+ "child>\n <child internal-child=\"action_area\">\n <widg"
+ "et class=\"GtkHButtonBox\" id=\"dialog-action_area1\">\n <pr"
+ "operty name=\"visible\">True</property>\n <property name=\"l"
+ "ayout_style\">GTK_BUTTONBOX_EDGE</property>\n <child>\n "
+ " <widget class=\"GtkButton\" id=\"button2\">\n <"
+ "property name=\"visible\">True</property>\n <property na"
+ "me=\"can_focus\">True</property>\n <property name=\"rece"
+ "ives_default\">True</property>\n <property name=\"label\""
+ " translatable=\"yes\">gtk-help</property>\n <property na"
+ "me=\"use_stock\">True</property>\n <property name=\"resp"
+ "onse_id\">0</property>\n </widget>\n </child>\n"
+ " <child>\n <widget class=\"GtkButton\" id=\"but"
+ "ton1\">\n <property name=\"visible\">True</property>\n "
+ " <property name=\"can_focus\">True</property>\n "
+ " <property name=\"receives_default\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">gtk-close</property>\n"
+ " <property name=\"use_stock\">True</property>\n "
+ " <property name=\"response_id\">0</property>\n </wid"
+ "get>\n <packing>\n <property name=\"positio"
+ "n\">1</property>\n </packing>\n </child>\n "
+ " </widget>\n <packing>\n <property name=\"expan"
+ "d\">False</property>\n <property name=\"pack_type\">GTK_PACK"
+ "_END</property>\n </packing>\n </child>\n </widget"
+ ">\n </child>\n </widget>\n</glade-interface>\n"
+};
+
+static const unsigned tweaks_dialog_glade_length = 53689u;
+
diff --git a/settings-dialogs/xfwm4-tweaks-settings.desktop b/settings-dialogs/xfwm4-tweaks-settings.desktop
new file mode 100644
index 000000000..1847be1f5
--- /dev/null
+++ b/settings-dialogs/xfwm4-tweaks-settings.desktop
@@ -0,0 +1,50 @@
+[Desktop Entry]
+Version=1.0
+Name=Xfce 4 WM Tweaks
+GenericName=Window Manager Tweaks
+GenericName[am]=የመስኮት አስተዳዳሪ ማሰማመር
+GenericName[ar]=تضبيطات لمدير النوافذ
+GenericName[be]=Наладкі Кіраўніка вокнаў
+GenericName[ca]=Ajustaments avançats del gestor de finestres
+GenericName[cs]=Pokročilá nastavení správce oken
+GenericName[de]=Fenstermanager-Tweaks
+GenericName[dz]=སྒོ་སྒྲིག་འཛིན་སྐྱོང་པ་གཅུཝ་ཨིན།
+GenericName[el]=προσαρμογή διαχειριστή παραθύρων
+GenericName[en_GB]=Window Manager Tweaks
+GenericName[eo]=Rafina Agordo de la Administradilo de Fenestroj
+GenericName[et]=Aknahalduri ülehäälestamine
+GenericName[eu]=Leiho Kudeatzaile Gomendioak
+GenericName[fi]=Ikkunamanagerin viritys
+GenericName[fr]=Peaufinage des fenêtres
+GenericName[he]=הגדרות נוספות של מנהל החלונות
+GenericName[hu]=Ablakkezelő trükkök
+GenericName[id]=Tweak Manajer Jendela
+GenericName[ja]=ウィンドウマネージャー (詳細)
+GenericName[ko]=창 관리자 기능향상
+GenericName[lv]=Logu pārvaldnieka piedares
+GenericName[mk]=Подобрувања на менаџерот за прозорци
+GenericName[nb_NO]=Innstillinger for Vindushåndterer Avansert
+GenericName[nl]=Venster Beheer Bijstellen
+GenericName[pa]=ਵਿੰਡੋ ਮੈਨੇਜਰ ਟਵੀਕ
+GenericName[pl]=Opcje Menadżera Okien
+GenericName[pt_BR]=Ajustes do Gerenciador de janelas
+GenericName[pt_PT]=Ajustes do Gestor de Janelas
+GenericName[ro]=Preferinţe avansate ferestre
+GenericName[ru]=Оконный менеджер
+GenericName[sk]=Pokročilé nastavenie správcu okien
+GenericName[sq]=Rregullime të Imta për Përgjegjës Dritaresh
+GenericName[sv]=Finjusteringar för Fönsterhanteraren
+GenericName[tr]=Pencere Yöneticisi İnce Ayarları
+GenericName[uk]=Менеджер вікон
+GenericName[ur]=ونڈو منیجر کار کردگی
+GenericName[vi]=Tinh chỉnh của trình quản lí cửa sổ
+GenericName[zh_CN]=窗口管理器调整
+GenericName[zh_TW]=視窗管理程式調校
+Comment=
+Exec=xfwm4-tweaks-settings
+Icon=wmtweaks
+Terminal=false
+Type=Application
+Categories=X-XFCE;Settings;DesktopSettings;
+StartupNotify=true
+OnlyShowIn=XFCE;
diff --git a/settings-dialogs/xfwm4-tweaks-settings.desktop.in b/settings-dialogs/xfwm4-tweaks-settings.desktop.in
new file mode 100644
index 000000000..0697da820
--- /dev/null
+++ b/settings-dialogs/xfwm4-tweaks-settings.desktop.in
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Version=1.0
+_Name=Xfce 4 WM Tweaks
+_GenericName=Window Manager Tweaks
+_Comment=
+Exec=xfwm4-tweaks-settings
+Icon=wmtweaks
+Terminal=false
+Type=Application
+Categories=X-XFCE;Settings;DesktopSettings;
+StartupNotify=true
+OnlyShowIn=XFCE;
diff --git a/settings-dialogs/xfwm4-workspace-dialog.glade b/settings-dialogs/xfwm4-workspace-dialog.glade
new file mode 100644
index 000000000..da454e1dc
--- /dev/null
+++ b/settings-dialogs/xfwm4-workspace-dialog.glade
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.4.5 on Mon Jun 23 19:48:28 2008 -->
+<glade-interface>
+ <requires lib="xfce4"/>
+ <widget class="GtkDialog" id="main-dialog">
+ <property name="border_width">5</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="main-vbox">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="XfceHeading" id="xfce-heading1">
+ <property name="visible">True</property>
+ <property name="icon_name">xfce4-workspaces</property>
+ <property name="title" translatable="yes">Workspace Settings</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Number of workspaces:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="workspace_count_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="adjustment">0 0 100 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkTreeView" id="treeview1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_clickable">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_EDGE</property>
+ <child>
+ <widget class="GtkButton" id="button2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-help</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/settings-dialogs/xfwm4-workspace-dialog_glade.h b/settings-dialogs/xfwm4-workspace-dialog_glade.h
new file mode 100644
index 000000000..3a4b53839
--- /dev/null
+++ b/settings-dialogs/xfwm4-workspace-dialog_glade.h
@@ -0,0 +1,89 @@
+/* automatically generated from xfwm4-workspace-dialog.glade */
+#ifdef __SUNPRO_C
+#pragma align 4 (workspace_dialog_glade)
+#endif
+#ifdef __GNUC__
+static const char workspace_dialog_glade[] __attribute__ ((__aligned__ (4))) =
+#else
+static const char workspace_dialog_glade[] =
+#endif
+{
+ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE"
+ " glade-interface SYSTEM \"glade-2.0.dtd\">\n<!--Generated with glade3 3"
+ ".4.5 on Mon Jun 23 19:48:28 2008 -->\n<glade-interface>\n <requires li"
+ "b=\"xfce4\"/>\n <widget class=\"GtkDialog\" id=\"main-dialog\">\n <"
+ "property name=\"border_width\">5</property>\n <property name=\"windo"
+ "w_position\">GTK_WIN_POS_CENTER_ON_PARENT</property>\n <property nam"
+ "e=\"type_hint\">GDK_WINDOW_TYPE_HINT_DIALOG</property>\n <property n"
+ "ame=\"has_separator\">False</property>\n <child internal-child=\"vbo"
+ "x\">\n <widget class=\"GtkVBox\" id=\"main-vbox\">\n <prope"
+ "rty name=\"visible\">True</property>\n <property name=\"spacing\""
+ ">2</property>\n <child>\n <widget class=\"XfceHeading\""
+ " id=\"xfce-heading1\">\n <property name=\"visible\">True</pr"
+ "operty>\n <property name=\"icon_name\">xfce4-workspaces</pro"
+ "perty>\n <property name=\"title\" translatable=\"yes\">Works"
+ "pace Settings</property>\n </widget>\n <packing>\n "
+ " <property name=\"expand\">False</property>\n <prope"
+ "rty name=\"fill\">False</property>\n <property name=\"positi"
+ "on\">1</property>\n </packing>\n </child>\n <chi"
+ "ld>\n <widget class=\"GtkVBox\" id=\"vbox1\">\n <pr"
+ "operty name=\"visible\">True</property>\n <property name=\"s"
+ "pacing\">5</property>\n <child>\n <widget class"
+ "=\"GtkHBox\" id=\"hbox2\">\n <property name=\"visible\">"
+ "True</property>\n <property name=\"spacing\">4</property"
+ ">\n <child>\n <widget class=\"GtkLabel\""
+ " id=\"label1\">\n <property name=\"visible\">True</p"
+ "roperty>\n <property name=\"label\" translatable=\"y"
+ "es\">Number of workspaces:</property>\n </widget>\n "
+ " <packing>\n <property name=\"expand\""
+ ">False</property>\n <property name=\"fill\">False</p"
+ "roperty>\n </packing>\n </child>\n "
+ " <child>\n <widget class=\"GtkSpinButton\" i"
+ "d=\"workspace_count_spinbutton\">\n <property name=\""
+ "visible\">True</property>\n <property name=\"can_foc"
+ "us\">True</property>\n <property name=\"editable\">F"
+ "alse</property>\n <property name=\"adjustment\">0 0 "
+ "100 1 10 10</property>\n </widget>\n "
+ "<packing>\n <property name=\"expand\">False</propert"
+ "y>\n <property name=\"fill\">False</property>\n "
+ " <property name=\"position\">1</property>\n "
+ " </packing>\n </child>\n </widget>\n "
+ " <packing>\n <property name=\"expand\">False</p"
+ "roperty>\n <property name=\"fill\">False</property>\n "
+ " </packing>\n </child>\n <child>\n "
+ " <widget class=\"GtkTreeView\" id=\"treeview1\">\n "
+ " <property name=\"visible\">True</property>\n <propert"
+ "y name=\"can_focus\">True</property>\n <property name=\""
+ "headers_clickable\">True</property>\n </widget>\n "
+ " <packing>\n <property name=\"position\">1</property"
+ ">\n </packing>\n </child>\n </widget>\n"
+ " <packing>\n <property name=\"position\">2</propert"
+ "y>\n </packing>\n </child>\n <child internal-chi"
+ "ld=\"action_area\">\n <widget class=\"GtkHButtonBox\" id=\"dia"
+ "log-action_area1\">\n <property name=\"visible\">True</prope"
+ "rty>\n <property name=\"layout_style\">GTK_BUTTONBOX_EDGE</p"
+ "roperty>\n <child>\n <widget class=\"GtkButton\""
+ " id=\"button2\">\n <property name=\"visible\">True</prop"
+ "erty>\n <property name=\"can_focus\">True</property>\n "
+ " <property name=\"receives_default\">True</property>\n "
+ " <property name=\"label\" translatable=\"yes\">gtk-help</pro"
+ "perty>\n <property name=\"use_stock\">True</property>\n "
+ " <property name=\"response_id\">0</property>\n "
+ " </widget>\n </child>\n <child>\n "
+ "<widget class=\"GtkButton\" id=\"button1\">\n <property "
+ "name=\"visible\">True</property>\n <property name=\"can_"
+ "focus\">True</property>\n <property name=\"receives_defa"
+ "ult\">True</property>\n <property name=\"label\" transla"
+ "table=\"yes\">gtk-close</property>\n <property name=\"us"
+ "e_stock\">True</property>\n <property name=\"response_id"
+ "\">0</property>\n </widget>\n <packing>\n "
+ " <property name=\"position\">1</property>\n </p"
+ "acking>\n </child>\n </widget>\n <packing>"
+ "\n <property name=\"expand\">False</property>\n <"
+ "property name=\"pack_type\">GTK_PACK_END</property>\n </packin"
+ "g>\n </child>\n </widget>\n </child>\n </widget>\n</gla"
+ "de-interface>\n"
+};
+
+static const unsigned workspace_dialog_glade_length = 4991u;
+
diff --git a/settings-dialogs/xfwm4-workspace-settings.desktop b/settings-dialogs/xfwm4-workspace-settings.desktop
new file mode 100644
index 000000000..1bc3f5222
--- /dev/null
+++ b/settings-dialogs/xfwm4-workspace-settings.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Version=1.0
+Name=Xfce 4 Workspace Settings
+GenericName=Workspace Settings
+Comment=
+Exec=xfwm4-workspace-settings
+Icon=xfce4-workspaces
+Terminal=false
+Type=Application
+Categories=X-XFCE;Settings;DesktopSettings;
+StartupNotify=true
+OnlyShowIn=XFCE;
diff --git a/settings-dialogs/xfwm4-workspace-settings.desktop.in b/settings-dialogs/xfwm4-workspace-settings.desktop.in
new file mode 100644
index 000000000..3aa4586c5
--- /dev/null
+++ b/settings-dialogs/xfwm4-workspace-settings.desktop.in
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Version=1.0
+_Name=Xfce 4 Workspace Settings
+_GenericName=Workspace Settings
+_Comment=
+Exec=xfwm4-workspace-settings
+Icon=xfce4-workspaces
+Terminal=false
+Type=Application
+Categories=X-XFCE;Settings;DesktopSettings;
+StartupNotify=true
+OnlyShowIn=XFCE;
diff --git a/src/Makefile.am b/src/Makefile.am
index c6b88c5ab..01e01206d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -72,7 +72,7 @@ xfwm4_SOURCES = \
xfwm4_CFLAGS = \
$(LIBX11_CFLAGS) \
- $(LIBXFCE4MCS_CLIENT_CFLAGS) \
+ $(LIBXFCONF_CFLAGS) \
$(LIBXFCEGUI4_CFLAGS) \
$(RENDER_CFLAGS) \
$(LIBSTARTUP_NOTIFICATION_CFLAGS) \
@@ -85,7 +85,7 @@ xfwm4_CFLAGS = \
xfwm4_LDADD = \
$(LIBX11_LIBS) \
$(LIBX11_LDFLAGS) \
- $(LIBXFCE4MCS_CLIENT_LIBS) \
+ $(LIBXFCONF_LIBS) \
$(LIBXFCEGUI4_LIBS) \
$(LIBSTARTUP_NOTIFICATION_LIBS) \
$(RENDER_LIBS) \
diff --git a/src/keyboard.c b/src/keyboard.c
index fa9cbe99b..0792935fe 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -64,7 +64,7 @@ getKeycode (Display *dpy, const char *str, KeyCode *keycode)
}
int
-getModifierMap (char *str)
+getModifierMap (const char *str)
{
gchar *tmp;
int map;
@@ -122,7 +122,7 @@ getModifierMap (char *str)
}
void
-parseKeyString (Display * dpy, MyKey * key, char *str)
+parseKeyString (Display * dpy, MyKey * key, const char *str)
{
char *k;
diff --git a/src/keyboard.h b/src/keyboard.h
index c0819cc62..b6549df7f 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -44,10 +44,10 @@ extern unsigned int ScrollLockMask;
extern unsigned int SuperMask;
extern unsigned int HyperMask;
-int getModifierMap (char *);
+int getModifierMap (const char *);
void parseKeyString (Display *,
MyKey *,
- char *);
+ const char *);
gboolean grabKey (Display *,
MyKey *,
Window);
diff --git a/src/main.c b/src/main.c
index ec3cd5250..816e271f5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -114,6 +114,7 @@ cleanUp (void)
myDisplayClose (display_info);
g_free (display_info);
display_info = NULL;
+ xfconf_shutdown();
}
static void
diff --git a/src/menu.c b/src/menu.c
index d8399f6af..a7bf52550 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -36,6 +36,7 @@
#include "event_filter.h"
#include "menu.h"
+#include "misc.h"
static GtkWidget *menu_open = NULL;
static MenuItem menuitems[] = {
diff --git a/src/mypixmap.c b/src/mypixmap.c
index 2ce753e34..c667abc34 100644
--- a/src/mypixmap.c
+++ b/src/mypixmap.c
@@ -320,7 +320,7 @@ out:
return ret;
}
-static gchar *
+static const gchar *
search_color_symbol (gchar *symbol, xfwmColorSymbol *color_sym)
{
xfwmColorSymbol *i;
@@ -432,7 +432,7 @@ xpm_extract_color (const gchar *buffer, xfwmColorSymbol *color_sym)
}
else if (key == 5)
{
- gchar *new_color = NULL;
+ const gchar *new_color = NULL;
new_color = search_color_symbol (color, color_sym);
if (new_color)
{
@@ -733,7 +733,7 @@ xfwmPixmapRefreshPict (xfwmPixmap * pm)
}
static GdkPixbuf *
-xfwmPixmapCompose (GdkPixbuf *pixbuf, gchar * dir, gchar * file)
+xfwmPixmapCompose (GdkPixbuf *pixbuf, const gchar * dir, const gchar * file)
{
GdkPixbuf *alpha;
gchar *filepng;
@@ -931,7 +931,7 @@ xfwmPixmapRenderGdkPixbuf (xfwmPixmap * pm, GdkPixbuf *pixbuf)
}
gboolean
-xfwmPixmapLoad (ScreenInfo * screen_info, xfwmPixmap * pm, gchar * dir, gchar * file, xfwmColorSymbol * cs)
+xfwmPixmapLoad (ScreenInfo * screen_info, xfwmPixmap * pm, const gchar * dir, const gchar * file, xfwmColorSymbol * cs)
{
gchar *filename;
gchar *filexpm;
diff --git a/src/mypixmap.h b/src/mypixmap.h
index daf749ba0..fb7b402ec 100644
--- a/src/mypixmap.h
+++ b/src/mypixmap.h
@@ -40,7 +40,7 @@
typedef struct
{
gchar *name;
- gchar *value;
+ const gchar *value;
}
xfwmColorSymbol;
@@ -59,8 +59,8 @@ gboolean xfwmPixmapRenderGdkPixbuf (xfwmPixmap *,
GdkPixbuf *);
gboolean xfwmPixmapLoad (ScreenInfo *,
xfwmPixmap *,
- gchar *,
- gchar *,
+ const gchar *,
+ const gchar *,
xfwmColorSymbol *);
void xfwmPixmapCreate (ScreenInfo *,
xfwmPixmap *,
diff --git a/src/parserc.c b/src/parserc.c
index 58bb3cdf0..fb6cd7d67 100644
--- a/src/parserc.c
+++ b/src/parserc.c
@@ -39,6 +39,8 @@
#define DEFAULT_THEME "Default"
#endif
+#define TOINT(x) (x ? atoi(x) : 0)
+
gboolean
parseRc (const gchar * file, const gchar * dir, Settings *rc)
{
@@ -99,8 +101,8 @@ checkRc (Settings *rc)
return rval;
}
-gchar *
-getValue (const gchar * option, Settings *rc)
+GValue *
+getGValue (const gchar * option, Settings *rc)
{
gint i;
@@ -119,7 +121,7 @@ getValue (const gchar * option, Settings *rc)
}
gboolean
-setValue (const gchar * lvalue, const gchar * rvalue, Settings *rc)
+setValue (const gchar * lvalue, const gchar *rvalue, Settings *rc)
{
gint i;
@@ -134,12 +136,19 @@ setValue (const gchar * lvalue, const gchar * rvalue, Settings *rc)
{
if (rvalue)
{
- if (rc[i].value)
+ switch (rc[i].type)
{
- g_free (rc[i].value);
+ case G_TYPE_STRING:
+ setStringValue (lvalue, rvalue, rc);
+ break;
+ case G_TYPE_INT:
+ setIntValue (lvalue, TOINT(rvalue), rc);
+ break;
+ case G_TYPE_BOOLEAN:
+ setBooleanValue (lvalue, !g_ascii_strcasecmp ("true", rvalue), rc);
+ break;
}
- rc[i].value = g_strdup (rvalue);
- TRACE ("%s=%s", rc[i].option, rc[i].value);
+ //TRACE ("%s=%s", rc[i].option, rc[i].value);
return TRUE;
}
}
@@ -148,26 +157,70 @@ setValue (const gchar * lvalue, const gchar * rvalue, Settings *rc)
}
gboolean
-setBooleanValueFromInt (const gchar * lvalue, int value, Settings *rc)
+setGValue (const gchar * lvalue, const GValue *rvalue, Settings *rc)
{
- return setValue (lvalue, value ? "true" : "false", rc);
+ gint i;
+
+ TRACE ("entering setValue");
+
+ g_return_val_if_fail (lvalue != NULL, FALSE);
+ g_return_val_if_fail (rvalue != NULL, FALSE);
+
+ for (i = 0; rc[i].option; i++)
+ {
+ if (!g_ascii_strcasecmp (lvalue, rc[i].option))
+ {
+ if (rvalue)
+ {
+ if (rc[i].value)
+ {
+ g_value_unset (rc[i].value);
+ g_value_init (rc[i].value, G_VALUE_TYPE(rvalue));
+ }
+ else
+ {
+ rc[i].value = g_new0(GValue, 1);
+ g_value_init (rc[i].value, G_VALUE_TYPE(rvalue));
+ }
+
+ g_value_copy (rvalue, rc[i].value);
+ //TRACE ("%s=%s", rc[i].option, rc[i].value);
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
}
gboolean
-setIntValueFromInt (const gchar * lvalue, int value, Settings *rc)
+setBooleanValue (const gchar * lvalue, gboolean value, Settings *rc)
{
- gchar *s;
- gboolean result;
+ GValue tmp_val = {0, };
+ g_value_init(&tmp_val, G_TYPE_BOOLEAN);
+ g_value_set_boolean(&tmp_val, value);
- s = g_strdup_printf ("%i", value);
- result = setValue (lvalue, s, rc);
- g_free (s);
+ return setGValue (lvalue, &tmp_val, rc);
+}
- return result;
+gboolean
+setIntValue (const gchar * lvalue, gint value, Settings *rc)
+{
+ GValue tmp_val = {0, };
+ g_value_init(&tmp_val, G_TYPE_INT);
+ g_value_set_int(&tmp_val, value);
+ return setGValue (lvalue, &tmp_val, rc);
}
-gchar *
+gboolean
+setStringValue (const gchar * lvalue, const gchar *value, Settings *rc)
+{
+ GValue tmp_val = {0, };
+ g_value_init(&tmp_val, G_TYPE_STRING);
+ g_value_set_string(&tmp_val, value);
+ return setGValue (lvalue, &tmp_val, rc);
+}
+gchar *
getSystemThemeDir (void)
{
return g_build_filename (DATADIR, "themes", DEFAULT_THEME, "xfwm4", NULL);
@@ -228,8 +281,84 @@ freeRc (Settings *rc)
{
if (rc[i].value)
{
+ g_value_unset(rc[i].value);
g_free (rc[i].value);
rc[i].value = NULL;
}
}
}
+
+const gchar *
+getStringValue (const gchar *option, Settings *rc)
+{
+ gint i;
+
+ TRACE ("entering getStringValue");
+
+ g_return_val_if_fail (option != NULL, NULL);
+
+ for (i = 0; rc[i].option; i++)
+ {
+ if (!g_ascii_strcasecmp (option, rc[i].option))
+ {
+ if (rc[i].value == NULL)
+ return NULL;
+ if (G_VALUE_TYPE(rc[i].value) != G_TYPE_STRING)
+ {
+ g_print("%s", rc[i].option);
+ return NULL;
+ }
+ return g_value_get_string(rc[i].value);
+ }
+ }
+ return NULL;
+}
+
+gint
+getIntValue (const gchar *option, Settings *rc)
+{
+ gint i;
+
+ TRACE ("entering getIntValue");
+
+ g_return_val_if_fail (option != NULL, 0);
+
+ for (i = 0; rc[i].option; i++)
+ {
+ if (!g_ascii_strcasecmp (option, rc[i].option))
+ {
+ if (rc[i].value == NULL)
+ return 0;
+ g_return_val_if_fail(G_VALUE_TYPE(rc[i].value) == G_TYPE_INT, 0);
+ return g_value_get_int(rc[i].value);
+ }
+ }
+ return 0;
+}
+
+gboolean
+getBoolValue (const gchar *option, Settings *rc)
+{
+ gint i;
+
+ TRACE ("entering getBoolValue");
+
+ g_return_val_if_fail (option != NULL, FALSE);
+
+ for (i = 0; rc[i].option; i++)
+ {
+ if (!g_ascii_strcasecmp (option, rc[i].option))
+ {
+ if (rc[i].value == NULL)
+ return FALSE;
+ if (G_VALUE_TYPE(rc[i].value) != G_TYPE_BOOLEAN)
+ {
+ g_print("%s", rc[i].option);
+ return FALSE;
+ }
+ g_return_val_if_fail(G_VALUE_TYPE(rc[i].value) == G_TYPE_BOOLEAN, FALSE);
+ return g_value_get_boolean(rc[i].value);
+ }
+ }
+ return FALSE;
+}
diff --git a/src/parserc.h b/src/parserc.h
index 1e4e8db57..940c8d61a 100644
--- a/src/parserc.h
+++ b/src/parserc.h
@@ -35,11 +35,26 @@ gboolean parseRc (const gchar *,
const gchar *,
Settings *);
gboolean checkRc (Settings *);
-gchar *getValue (const gchar *,
+GValue *getGValue (const gchar *,
+ Settings *);
+const gchar *getStringValue (const gchar *,
+ Settings *);
+gint getIntValue (const gchar *,
+ Settings *);
+gboolean getBoolValue (const gchar *,
Settings *);
gboolean setValue (const gchar *,
const gchar *,
Settings *);
+gboolean setStringValue (const gchar *,
+ const gchar *,
+ Settings *);
+gboolean setIntValue (const gchar *,
+ gint,
+ Settings *rc);
+gboolean setBooleanValue (const gchar *,
+ gboolean,
+ Settings *rc);
gboolean setBooleanValueFromInt (const gchar *,
int,
Settings *);
diff --git a/src/screen.c b/src/screen.c
index 97b0fa887..6f5eeb190 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -210,9 +210,6 @@ myScreenInit (DisplayInfo *display_info, GdkScreen *gscr, unsigned long event_ma
screen_info->workspace_names = NULL;
screen_info->workspace_names_items = 0;
- screen_info->mcs_client = NULL;
- screen_info->mcs_initted = FALSE;
-
screen_info->windows_stack = NULL;
screen_info->last_raise = NULL;
screen_info->windows = NULL;
diff --git a/src/screen.h b/src/screen.h
index 122af074d..25328d626 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -29,7 +29,7 @@
#include <X11/cursorfont.h>
#include <gtk/gtk.h>
#include <glib.h>
-#include <libxfce4mcs/mcs-client.h>
+#include <xfconf/xfconf.h>
#ifdef HAVE_LIBSTARTUP_NOTIFICATION
#define SN_API_NOT_YET_FROZEN
@@ -116,8 +116,8 @@ struct _ScreenInfo
gulong button_handler_id;
/* MCS stuff */
- McsClient *mcs_client;
- gboolean mcs_initted;
+ XfconfChannel *xfwm4_channel;
+ XfconfChannel *keys_channel;
/* Per screen parameters */
XfwmParams *params;
diff --git a/src/settings.c b/src/settings.c
index b70e000a9..65746cdc6 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -30,7 +30,7 @@
#include <gdk/gdkx.h>
#include <gtk/gtk.h>
#include <libxfce4util/libxfce4util.h>
-#include <libxfce4mcs/mcs-client.h>
+#include <xfconf/xfconf.h>
#include "screen.h"
#include "hints.h"
@@ -42,17 +42,14 @@
#include "ui_style.h"
#define CHANNEL1 "xfwm4"
-#define CHANNEL2 "margins"
-#define CHANNEL3 "workspaces"
-#define CHANNEL4 "xfwm4_keys"
-#define CHANNEL5 "wmtweaks"
+#define CHANNEL2 "xfwm4_keys"
#define DEFAULT_KEYTHEME "Default"
#define KEYTHEMERC "keythemerc"
#define THEMERC "themerc"
-#define TOINT(x) (x ? atoi(x) : 0)
#define XPM_COLOR_SYMBOL_SIZE 22
+#define XFWM4_SETTINGS_COUNT 66
/* Forward static decls. */
@@ -60,22 +57,8 @@ static void update_grabs (ScreenInfo *);
static void set_settings_margin (ScreenInfo *,
int ,
int);
-static void notify_cb (const char *,
- const char *,
- McsAction,
- McsSetting *,
- void *);
-static GdkFilterReturn client_event_filter (GdkXEvent *,
- GdkEvent *,
- gpointer);
-static void watch_cb (Window,
- Bool,
- long,
- void *);
static void loadRcData (ScreenInfo *,
Settings *);
-static void loadMcsData (ScreenInfo *,
- Settings *);
static void loadTheme (ScreenInfo *,
Settings *);
static gboolean loadKeyBindings (ScreenInfo *,
@@ -84,6 +67,10 @@ static void unloadTheme (ScreenInfo *);
static void unloadSettings (ScreenInfo *);
static gboolean reloadScreenSettings (ScreenInfo *,
int);
+static void cb_xfwm4_channel_property_changed (XfconfChannel *,
+ const gchar *,
+ const GValue *,
+ ScreenInfo *);
static void
update_grabs (ScreenInfo *screen_info)
@@ -140,7 +127,7 @@ set_settings_margin (ScreenInfo *screen_info, int idx, int value)
}
static void
-set_easy_click (ScreenInfo *screen_info, char *modifier)
+set_easy_click (ScreenInfo *screen_info, const char *modifier)
{
g_return_if_fail (screen_info != NULL);
g_return_if_fail (modifier != NULL);
@@ -192,393 +179,10 @@ set_placement_mode (ScreenInfo *screen_info, const char *value)
}
static void
-notify_cb (const char *name, const char *channel_name, McsAction action, McsSetting * setting, void *data)
-{
- ScreenInfo *screen_info;
-
- screen_info = (ScreenInfo *) data;
- g_return_if_fail (screen_info != NULL);
-
- if (!g_ascii_strcasecmp (CHANNEL1, channel_name))
- {
- switch (action)
- {
- case MCS_ACTION_NEW:
- /* The following is to reduce initial startup time and reload */
- if (!screen_info->mcs_initted)
- {
- return;
- }
- case MCS_ACTION_CHANGED:
- if (setting->type == MCS_TYPE_INT)
- {
- if (!strcmp (name, "Xfwm/BoxMove"))
- {
- screen_info->params->box_move = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/BoxResize"))
- {
- screen_info->params->box_resize = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/ClickToFocus"))
- {
- screen_info->params->click_to_focus = setting->data.v_int;
- update_grabs (screen_info);
- }
- else if (!strcmp (name, "Xfwm/FocusNewWindow"))
- {
- screen_info->params->focus_new = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/FocusRaise"))
- {
- screen_info->params->raise_on_focus = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/RaiseDelay"))
- {
- screen_info->params->raise_delay = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/FocusDelay"))
- {
- screen_info->params->focus_delay = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/RaiseOnClick"))
- {
- screen_info->params->raise_on_click = setting->data.v_int;
- update_grabs (screen_info);
- }
- else if (!strcmp (name, "Xfwm/SnapToBorder"))
- {
- screen_info->params->snap_to_border = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/SnapToWindows"))
- {
- screen_info->params->snap_to_windows = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/SnapWidth"))
- {
- screen_info->params->snap_width = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/WrapWorkspaces"))
- {
- screen_info->params->wrap_workspaces = setting->data.v_int;
- placeSidewalks (screen_info, screen_info->params->wrap_workspaces);
- }
- else if (!strcmp (name, "Xfwm/WrapWindows"))
- {
- screen_info->params->wrap_windows = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/WrapResistance"))
- {
- screen_info->params->wrap_resistance = setting->data.v_int;
- }
- }
- else if (setting->type == MCS_TYPE_STRING)
- {
- if (!strcmp (name, "Xfwm/DblClickAction"))
- {
- reloadScreenSettings (screen_info, NO_UPDATE_FLAG);
- }
- else if (!strcmp (name, "Xfwm/ThemeName"))
- {
- reloadScreenSettings (screen_info, UPDATE_MAXIMIZE | UPDATE_GRAVITY | UPDATE_CACHE);
- }
- else if (!strcmp (name, "Xfwm/ButtonLayout"))
- {
- reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
- }
- if (!strcmp (name, "Xfwm/TitleAlign"))
- {
- reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
- }
- if (!strcmp (name, "Xfwm/TitleFont"))
- {
- reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
- }
- }
- break;
- case MCS_ACTION_DELETED:
- default:
- break;
- }
- }
- else if (!g_ascii_strcasecmp (CHANNEL2, channel_name))
- {
- switch (action)
- {
- case MCS_ACTION_NEW:
- /* The following is to reduce initial startup time and reloads */
- if (!screen_info->mcs_initted)
- {
- return;
- }
- case MCS_ACTION_CHANGED:
- if (setting->type == MCS_TYPE_INT)
- {
- if (!strcmp (name, "Xfwm/LeftMargin"))
- {
- set_settings_margin (screen_info, STRUTS_LEFT, setting->data.v_int);
- }
- else if (!strcmp (name, "Xfwm/RightMargin"))
- {
- set_settings_margin (screen_info, STRUTS_RIGHT, setting->data.v_int);
- }
- else if (!strcmp (name, "Xfwm/BottomMargin"))
- {
- set_settings_margin (screen_info, STRUTS_BOTTOM, setting->data.v_int);
- }
- else if (!strcmp (name, "Xfwm/TopMargin"))
- {
- set_settings_margin (screen_info, STRUTS_TOP, setting->data.v_int);
- }
- }
- break;
- case MCS_ACTION_DELETED:
- default:
- break;
- }
- }
- else if (!g_ascii_strcasecmp (CHANNEL3, channel_name))
- {
- switch (action)
- {
- case MCS_ACTION_NEW:
- /* The following is to reduce initial startup time and reloads */
- if (!screen_info->mcs_initted)
- {
- return;
- }
- case MCS_ACTION_CHANGED:
- if (setting->type == MCS_TYPE_INT)
- {
- if (!strcmp (name, "Xfwm/WorkspaceCount"))
- {
- workspaceSetCount(screen_info, setting->data.v_int);
- }
- }
- break;
- case MCS_ACTION_DELETED:
- default:
- break;
- }
- }
- else if (!g_ascii_strcasecmp (CHANNEL4, channel_name))
- {
- switch (action)
- {
- case MCS_ACTION_NEW:
- /* The following is to reduce initial startup time and reloads */
- if (!screen_info->mcs_initted)
- {
- return;
- }
- case MCS_ACTION_CHANGED:
- if (setting->type == MCS_TYPE_STRING)
- {
- if (!strcmp (name, "Xfwm/KeyThemeName"))
- {
- reloadScreenSettings (screen_info, NO_UPDATE_FLAG);
- }
- }
- break;
- case MCS_ACTION_DELETED:
- default:
- break;
- }
- }
- else if (!g_ascii_strcasecmp (CHANNEL5, channel_name))
- {
- switch (action)
- {
- case MCS_ACTION_NEW:
- /* The following is to reduce initial startup time and reloads */
- if (!screen_info->mcs_initted)
- {
- return;
- }
- case MCS_ACTION_CHANGED:
- if (setting->type == MCS_TYPE_INT)
- {
- if (!strcmp (name, "Xfwm/BorderlessMaximize"))
- {
- screen_info->params->borderless_maximize = setting->data.v_int;
- reloadScreenSettings (screen_info, UPDATE_MAXIMIZE);
- }
- else if (!strcmp (name, "Xfwm/CycleMinimum"))
- {
- screen_info->params->cycle_minimum = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/CycleHidden"))
- {
- screen_info->params->cycle_hidden = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/CycleWorkspaces"))
- {
- screen_info->params->cycle_workspaces = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/FocusHint"))
- {
- screen_info->params->focus_hint = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/FrameOpacity"))
- {
- screen_info->params->frame_opacity = setting->data.v_int;
- reloadScreenSettings (screen_info, UPDATE_FRAME);
- }
- else if (!strcmp (name, "Xfwm/InactiveOpacity"))
- {
- screen_info->params->inactive_opacity = setting->data.v_int;
- reloadScreenSettings (screen_info, UPDATE_FRAME);
- clientUpdateAllOpacity (screen_info);
- }
- else if (!strcmp (name, "Xfwm/MoveOpacity"))
- {
- screen_info->params->move_opacity = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/ResizeOpacity"))
- {
- screen_info->params->resize_opacity = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/PopupOpacity"))
- {
- screen_info->params->popup_opacity = setting->data.v_int;
- reloadScreenSettings (screen_info, UPDATE_FRAME);
- }
- else if (!strcmp (name, "Xfwm/PlacementRatio"))
- {
- screen_info->params->placement_ratio = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/ShowDockShadow"))
- {
- screen_info->params->show_dock_shadow = setting->data.v_int;
- reloadScreenSettings (screen_info, UPDATE_FRAME);
- }
- else if (!strcmp (name, "Xfwm/ShowFrameShadow"))
- {
- screen_info->params->show_frame_shadow = setting->data.v_int;
- reloadScreenSettings (screen_info, UPDATE_FRAME);
- }
- else if (!strcmp (name, "Xfwm/ShowPopupShadow"))
- {
- screen_info->params->show_popup_shadow = setting->data.v_int;
- reloadScreenSettings (screen_info, UPDATE_FRAME);
- }
- else if (!strcmp (name, "Xfwm/SnapResist"))
- {
- screen_info->params->snap_resist = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/PreventFocusStealing"))
- {
- screen_info->params->prevent_focus_stealing = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/RaiseWithAnyButton"))
- {
- screen_info->params->raise_with_any_button = setting->data.v_int;
- update_grabs (screen_info);
- }
- else if (!strcmp (name, "Xfwm/RestoreOnMove"))
- {
- screen_info->params->restore_on_move = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/ScrollWorkspaces"))
- {
- screen_info->params->scroll_workspaces = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/ToggleWorkspaces"))
- {
- screen_info->params->toggle_workspaces = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/UnredirectOverlays"))
- {
- screen_info->params->unredirect_overlays = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/UseCompositing"))
- {
- screen_info->params->use_compositing = setting->data.v_int;
- compositorActivateScreen (screen_info,
- screen_info->params->use_compositing);
- }
- else if (!strcmp (name, "Xfwm/WrapLayout"))
- {
- screen_info->params->wrap_layout = setting->data.v_int;
- }
- else if (!strcmp (name, "Xfwm/WrapCycle"))
- {
- screen_info->params->wrap_cycle = setting->data.v_int;
- }
- }
- else if (setting->type == MCS_TYPE_STRING)
- {
- if (!strcmp (name, "Xfwm/EasyClick"))
- {
- reloadScreenSettings (screen_info, UPDATE_BUTTON_GRABS);
- }
- else if (!strcmp (name, "Xfwm/ActivateAction"))
- {
- set_activate_action (screen_info, setting->data.v_string);
- }
- else if (!strcmp (name, "Xfwm/PlacementMode"))
- {
- set_placement_mode (screen_info, setting->data.v_string);
- }
- }
- break;
- case MCS_ACTION_DELETED:
- default:
- break;
- }
- }
-}
-
-static GdkFilterReturn
-client_event_filter (GdkXEvent * xevent, GdkEvent * event, gpointer data)
-{
- ScreenInfo *screen_info;
-
- screen_info = (ScreenInfo *) data;
- g_return_val_if_fail (screen_info != NULL, GDK_FILTER_CONTINUE);
-
- if (mcs_client_process_event (screen_info->mcs_client, (XEvent *) xevent))
- {
- return GDK_FILTER_REMOVE;
- }
- else
- {
- return GDK_FILTER_CONTINUE;
- }
-}
-
-static void
-watch_cb (Window window, Bool is_start, long mask, void *cb_data)
-{
- GdkWindow *gdkwin;
-
- gdkwin = gdk_window_lookup (window);
-
- if (is_start)
- {
- if (!gdkwin)
- {
- gdkwin = gdk_window_foreign_new (window);
- }
- else
- {
- g_object_ref (gdkwin);
- }
- gdk_window_add_filter (gdkwin, client_event_filter, cb_data);
- }
- else
- {
- g_assert (gdkwin);
- gdk_window_remove_filter (gdkwin, client_event_filter, cb_data);
- g_object_unref (gdkwin);
- }
-}
-
-static void
loadRcData (ScreenInfo *screen_info, Settings *rc)
{
gchar *homedir;
- gchar *keythemevalue;
+ const gchar *keythemevalue;
gchar *keytheme;
gchar *system_keytheme;
@@ -587,7 +191,7 @@ loadRcData (ScreenInfo *screen_info, Settings *rc)
g_warning ("Missing defaults file");
exit (1);
}
- keythemevalue = getValue ("keytheme", rc);
+ keythemevalue = getStringValue ("keytheme", rc);
if (keythemevalue)
{
system_keytheme = getSystemThemeDir ();
@@ -610,334 +214,34 @@ loadRcData (ScreenInfo *screen_info, Settings *rc)
}
static void
-loadMcsData (ScreenInfo *screen_info, Settings *rc)
+loadXfconfData (ScreenInfo *screen_info, Settings *rc)
{
- McsSetting *setting;
-
- if (screen_info->mcs_client)
+ gint i = XPM_COLOR_SYMBOL_SIZE;
+ for (; i < (XPM_COLOR_SYMBOL_SIZE + XFWM4_SETTINGS_COUNT); ++i)
{
- /* "Regular" channel */
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ClickToFocus", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("click_to_focus", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusNewWindow", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("focus_new", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusRaise", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("raise_on_focus", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RaiseDelay", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("raise_delay", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusDelay", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("focus_delay", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RaiseOnClick", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("raise_on_click", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapToBorder", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("snap_to_border", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapToWindows", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("snap_to_windows", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapWidth", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("snap_width", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapWorkspaces", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("wrap_workspaces", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapWindows", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("wrap_windows", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapResistance", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("wrap_resistance", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BoxMove", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("box_move", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BoxResize", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("box_resize", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/DblClickAction", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setValue ("double_click_action", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ThemeName", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setValue ("theme", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ButtonLayout", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setValue ("button_layout", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TitleAlign", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setValue ("title_alignment", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TitleFont", CHANNEL1,
- &setting) == MCS_SUCCESS)
- {
- setValue ("title_font", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
-
- /* Margins channel */
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/LeftMargin", CHANNEL2,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("margin_left", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RightMargin", CHANNEL2,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("margin_right", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BottomMargin", CHANNEL2,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("margin_bottom", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TopMargin", CHANNEL2,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("margin_top", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
-
- /* Workspaces channel */
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WorkspaceCount", CHANNEL3,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("workspace_count", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
-
- /* Keyboard theme channel */
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/KeyThemeName", CHANNEL4,
- &setting) == MCS_SUCCESS)
+ gchar *property_name = g_strconcat("/general/", rc[i].option, NULL);
+ if(xfconf_channel_has_property(screen_info->xfwm4_channel, property_name))
{
- setValue ("keytheme", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
+ if(rc[i].value)
+ {
+ g_value_unset(rc[i].value);
+ g_free(rc[i].value);
+ }
+ rc[i].value = g_new0(GValue, 1);
- /* Tweaks channel */
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ActivateAction", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setValue ("activate_action", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BorderlessMaximize", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("borderless_maximize", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/CycleMinimum", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("cycle_minimum", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/CycleHidden", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("cycle_hidden", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/CycleWorkspaces", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("cycle_workspaces", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/EasyClick", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setValue ("easy_click", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusHint", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("focus_hint", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FrameOpacity", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("frame_opacity", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/PlacementMode", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setValue ("placement_mode", setting->data.v_string, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/PlacementRatio", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("placement_ratio", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/InactiveOpacity", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("inactive_opacity", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/MoveOpacity", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("move_opacity", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ResizeOpacity", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("resize_opacity", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/PopupOpacity", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setIntValueFromInt ("popup_opacity", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ShowDockShadow", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("show_dock_shadow", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ShowFrameShadow", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("show_frame_shadow", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ShowPopupShadow", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("show_popup_shadow", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapResist", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("snap_resist", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/PreventFocusStealing", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("prevent_focus_stealing", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RaiseWithAnyButton", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("raise_with_any_button", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RestoreOnMove", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("restore_on_move", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ScrollWorkspaces", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("scroll_workspaces", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ToggleWorkspaces", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("toggle_workspaces", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/UnredirectOverlays", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("unredirect_overlays", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/UseCompositing", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("use_compositing", setting->data.v_int, rc);
- mcs_setting_free (setting);
- }
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapLayout", CHANNEL5,
- &setting) == MCS_SUCCESS)
- {
- setBooleanValueFromInt ("wrap_layout", setting->data.v_int, rc);
- mcs_setting_free (setting);
+ if(!xfconf_channel_get_property(screen_info->xfwm4_channel, property_name, rc[i].value))
+ {
+ /* g_debug("get prop failed"); */
+ }
}
- if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapCycle", CHANNEL5,
- &setting) == MCS_SUCCESS)
+ else
{
- setBooleanValueFromInt ("wrap_cycle", setting->data.v_int, rc);
- mcs_setting_free (setting);
+ if (rc[i].value)
+ xfconf_channel_set_property(screen_info->xfwm4_channel, property_name, rc[i].value);
}
+ g_free(property_name);
}
+
}
/* Simple helper function to avoid copy/paste of code */
@@ -950,7 +254,8 @@ setXfwmColor (ScreenInfo *screen_info, XfwmColor *color, Settings *rc, int id, c
color->allocated = FALSE;
}
- if (gdk_color_parse (rc[id].value, &color->col))
+ /** do a direct value_get_string */
+ if (gdk_color_parse (g_value_get_string(rc[id].value), &color->col))
{
if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (screen_info->gscr),
&color->col, FALSE, FALSE))
@@ -967,13 +272,19 @@ setXfwmColor (ScreenInfo *screen_info, XfwmColor *color, Settings *rc, int id, c
else
{
gdk_beep ();
- g_message (_("%s: Cannot allocate color %s\n"), g_get_prgname (), rc[id].value);
+ if (G_VALUE_TYPE(rc[id].value) == G_TYPE_STRING)
+ g_message (_("%s: Cannot allocate color %s\n"), g_get_prgname (), g_value_get_string(rc[id].value));
+ else
+ g_critical (_("%s: Cannot allocate color: GValue for color is not of type STRING"), g_get_prgname ());
}
}
else
{
gdk_beep ();
- g_message (_("%s: Cannot parse color %s\n"), g_get_prgname (), rc[id].value);
+ if (G_VALUE_TYPE(rc[id].value) == G_TYPE_STRING)
+ g_message (_("%s: Cannot parse color %s\n"), g_get_prgname (), g_value_get_string(rc[id].value));
+ else
+ g_critical (_("%s: Cannot parse color: GValue for color is not of type STRING"), g_get_prgname ());
}
}
@@ -982,7 +293,7 @@ getTitleShadow (Settings *rc, const gchar * name)
{
const gchar *val;
- val = getValue (name, rc);
+ val = getStringValue (name, rc);
if (!g_ascii_strcasecmp ("true", val) || !g_ascii_strcasecmp ("under", val))
{
return TITLE_SHADOW_UNDER;
@@ -1056,7 +367,7 @@ loadTheme (ScreenInfo *screen_info, Settings *rc)
xfwmColorSymbol colsym[ XPM_COLOR_SYMBOL_SIZE + 1 ];
GtkWidget *widget;
gchar *theme;
- gchar *font;
+ const gchar *font;
PangoFontDescription *desc;
PangoContext *context;
guint i, j;
@@ -1067,51 +378,51 @@ loadTheme (ScreenInfo *screen_info, Settings *rc)
desc = NULL;
context = NULL;
- rc[0].value = getUIStyle (widget, "fg", "selected");
- rc[1].value = getUIStyle (widget, "fg", "insensitive");
- rc[2].value = getUIStyle (widget, "dark", "selected");
- rc[3].value = getUIStyle (widget, "dark", "insensitive");
- rc[4].value = getUIStyle (widget, "fg", "normal");
- rc[5].value = getUIStyle (widget, "fg", "normal");
- rc[6].value = getUIStyle (widget, "bg", "selected");
- rc[7].value = getUIStyle (widget, "light", "selected");
- rc[8].value = getUIStyle (widget, "dark", "selected");
- rc[9].value = getUIStyle (widget, "mid", "selected");
- rc[10].value = getUIStyle (widget, "bg", "normal");
- rc[11].value = getUIStyle (widget, "light", "normal");
- rc[12].value = getUIStyle (widget, "dark", "normal");
- rc[13].value = getUIStyle (widget, "mid", "normal");
- rc[14].value = getUIStyle (widget, "bg", "insensitive");
- rc[15].value = getUIStyle (widget, "light", "insensitive");
- rc[16].value = getUIStyle (widget, "dark", "insensitive");
- rc[17].value = getUIStyle (widget, "mid", "insensitive");
- rc[18].value = getUIStyle (widget, "bg", "normal");
- rc[19].value = getUIStyle (widget, "light", "normal");
- rc[20].value = getUIStyle (widget, "dark", "normal");
- rc[21].value = getUIStyle (widget, "mid", "normal");
-
-
- theme = getThemeDir (getValue ("theme", rc), THEMERC);
+ setStringValue (rc[0].option, getUIStyle (widget, "fg", "selected"), rc);
+ setStringValue (rc[1].option, getUIStyle (widget, "fg", "insensitive"), rc);
+ setStringValue (rc[2].option, getUIStyle (widget, "dark", "selected"), rc);
+ setStringValue (rc[3].option, getUIStyle (widget, "dark", "insensitive"), rc);
+ setStringValue (rc[4].option, getUIStyle (widget, "fg", "normal"), rc);
+ setStringValue (rc[5].option, getUIStyle (widget, "fg", "normal"), rc);
+ setStringValue (rc[6].option, getUIStyle (widget, "bg", "selected"), rc);
+ setStringValue (rc[7].option, getUIStyle (widget, "light", "selected"), rc);
+ setStringValue (rc[8].option, getUIStyle (widget, "dark", "selected"), rc);
+ setStringValue (rc[9].option, getUIStyle (widget, "mid", "selected"), rc);
+ setStringValue (rc[10].option, getUIStyle (widget, "bg", "normal"), rc);
+ setStringValue (rc[11].option, getUIStyle (widget, "light", "normal"), rc);
+ setStringValue (rc[12].option, getUIStyle (widget, "dark", "normal"), rc);
+ setStringValue (rc[13].option, getUIStyle (widget, "mid", "normal"), rc);
+ setStringValue (rc[14].option, getUIStyle (widget, "bg", "insensitive"), rc);
+ setStringValue (rc[15].option, getUIStyle (widget, "light", "insensitive"), rc);
+ setStringValue (rc[16].option, getUIStyle (widget, "dark", "insensitive"), rc);
+ setStringValue (rc[17].option, getUIStyle (widget, "mid", "insensitive"), rc);
+ setStringValue (rc[18].option, getUIStyle (widget, "bg", "normal"), rc);
+ setStringValue (rc[19].option, getUIStyle (widget, "light", "normal"), rc);
+ setStringValue (rc[20].option, getUIStyle (widget, "dark", "normal"), rc);
+ setStringValue (rc[21].option, getUIStyle (widget, "mid", "normal"), rc);
+
+
+ theme = getThemeDir (getStringValue ("theme", rc), THEMERC);
parseRc (THEMERC, theme, rc);
screen_info->params->shadow_delta_x =
- - (TOINT (getValue ("shadow_delta_x", rc)));
+ - getIntValue ("shadow_delta_x", rc);
screen_info->params->shadow_delta_y =
- - (TOINT (getValue ("shadow_delta_y", rc)));
+ - getIntValue ("shadow_delta_y", rc);
screen_info->params->shadow_delta_width =
- - (TOINT (getValue ("shadow_delta_width", rc)));
+ - getIntValue ("shadow_delta_width", rc);
screen_info->params->shadow_delta_height =
- - (TOINT (getValue ("shadow_delta_height", rc)));
+ - getIntValue ("shadow_delta_height", rc);
for (i = 0; i < XPM_COLOR_SYMBOL_SIZE; i++)
{
colsym[i].name = rc[i].option;
- colsym[i].value = rc[i].value;
+ colsym[i].value = g_value_get_string(rc[i].value);
}
colsym[XPM_COLOR_SYMBOL_SIZE].name = NULL;
colsym[XPM_COLOR_SYMBOL_SIZE].value = NULL;
- display_info->dbl_click_time = abs (TOINT (getValue ("dbl_click_time", rc)));
+ display_info->dbl_click_time = abs (getIntValue ("dbl_click_time", rc));
g_value_init (&tmp_val, G_TYPE_INT);
if (gdk_setting_get ("gtk-double-click-time", &tmp_val))
{
@@ -1119,7 +430,7 @@ loadTheme (ScreenInfo *screen_info, Settings *rc)
}
screen_info->font_height = 0;
- font = getValue ("title_font", rc);
+ font = getStringValue ("title_font", rc);
if (font && strlen (font))
{
desc = pango_font_description_from_string (font);
@@ -1192,11 +503,11 @@ loadTheme (ScreenInfo *screen_info, Settings *rc)
screen_info->box_gc = createGC (screen_info, "#FFFFFF", GXxor, NULL, 2, TRUE);
- if (!g_ascii_strcasecmp ("left", getValue ("title_alignment", rc)))
+ if (!g_ascii_strcasecmp ("left", getStringValue ("title_alignment", rc)))
{
screen_info->params->title_alignment = ALIGN_LEFT;
}
- else if (!g_ascii_strcasecmp ("right", getValue ("title_alignment", rc)))
+ else if (!g_ascii_strcasecmp ("right", getStringValue ("title_alignment", rc)))
{
screen_info->params->title_alignment = ALIGN_RIGHT;
}
@@ -1206,20 +517,20 @@ loadTheme (ScreenInfo *screen_info, Settings *rc)
}
screen_info->params->full_width_title =
- !g_ascii_strcasecmp ("true", getValue ("full_width_title", rc));
+ getBoolValue ("full_width_title", rc);
screen_info->params->title_shadow[ACTIVE] = getTitleShadow (rc, "title_shadow_active");
screen_info->params->title_shadow[INACTIVE] = getTitleShadow (rc, "title_shadow_inactive");
- strncpy (screen_info->params->button_layout, getValue ("button_layout", rc), BUTTON_STRING_COUNT);
- screen_info->params->button_spacing = TOINT (getValue ("button_spacing", rc));
- screen_info->params->button_offset = TOINT (getValue ("button_offset", rc));
- screen_info->params->maximized_offset = TOINT (getValue ("maximized_offset", rc));
+ strncpy (screen_info->params->button_layout, getStringValue ("button_layout", rc), BUTTON_STRING_COUNT);
+ screen_info->params->button_spacing = getIntValue ("button_spacing", rc);
+ screen_info->params->button_offset = getIntValue ("button_offset", rc);
+ screen_info->params->maximized_offset = getIntValue ("maximized_offset", rc);
screen_info->params->title_vertical_offset_active =
- TOINT (getValue ("title_vertical_offset_active", rc));
+ getIntValue ("title_vertical_offset_active", rc);
screen_info->params->title_vertical_offset_inactive =
- TOINT (getValue ("title_vertical_offset_inactive", rc));
+ getIntValue ("title_vertical_offset_inactive", rc);
screen_info->params->title_horizontal_offset =
- TOINT (getValue ("title_horizontal_offset", rc));
+ getIntValue ("title_horizontal_offset", rc);
g_free (theme);
}
@@ -1230,7 +541,7 @@ loadKeyBindings (ScreenInfo *screen_info, Settings *rc)
gchar keyname[30];
Display *dpy;
gchar *keytheme;
- gchar *keythemevalue;
+ const gchar *keythemevalue;
guint i;
dpy = myScreenGetXDisplay (screen_info);
@@ -1243,7 +554,7 @@ loadKeyBindings (ScreenInfo *screen_info, Settings *rc)
parseRc (KEYTHEMERC, keytheme, rc);
g_free (keytheme);
- keythemevalue = getValue ("keytheme", rc);
+ keythemevalue = getStringValue ("keytheme", rc);
if (keythemevalue)
{
keytheme = getThemeDir (keythemevalue, KEYTHEMERC);
@@ -1260,54 +571,54 @@ loadKeyBindings (ScreenInfo *screen_info, Settings *rc)
}
}
- parseKeyString (dpy, &screen_info->params->keys[KEY_CANCEL], getValue ("cancel_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_DOWN], getValue ("down_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_LEFT], getValue ("left_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_RIGHT], getValue ("right_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_UP], getValue ("up_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], getValue ("add_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_ADD_ADJACENT_WORKSPACE], getValue ("add_adjacent_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_CLOSE_WINDOW], getValue ("close_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], getValue ("cycle_windows_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_DEL_WORKSPACE], getValue ("del_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_DEL_ACTIVE_WORKSPACE], getValue ("del_active_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_DOWN_WORKSPACE], getValue ("down_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_FILL_HORIZ], getValue ("fill_horiz_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_FILL_VERT], getValue ("fill_vert_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_FILL_WINDOW], getValue ("fill_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_HIDE_WINDOW], getValue ("hide_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_LEFT_WORKSPACE], getValue ("left_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_LOWER_WINDOW], getValue ("lower_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE], getValue ("move_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], getValue ("maximize_horiz_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_VERT], getValue ("maximize_vert_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], getValue ("maximize_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_DOWN_WORKSPACE], getValue ("move_window_down_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_LEFT_WORKSPACE], getValue ("move_window_left_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_NEXT_WORKSPACE], getValue ("move_window_next_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_PREV_WORKSPACE], getValue ("move_window_prev_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_RIGHT_WORKSPACE], getValue ("move_window_right_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_UP_WORKSPACE], getValue ("move_window_up_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], getValue ("next_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_POPUP_MENU], getValue ("popup_menu_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_PREV_WORKSPACE], getValue ("prev_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_RAISE_WINDOW], getValue ("raise_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE], getValue ("resize_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_RIGHT_WORKSPACE], getValue ("right_workspace_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_SHADE_WINDOW], getValue ("shade_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_SHOW_DESKTOP], getValue("show_desktop_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_STICK_WINDOW], getValue ("stick_window_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_TOGGLE_ABOVE], getValue ("above_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_TOGGLE_FULLSCREEN], getValue ("fullscreen_key", rc));
- parseKeyString (dpy, &screen_info->params->keys[KEY_UP_WORKSPACE], getValue ("up_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_CANCEL], getStringValue ("cancel_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_DOWN], getStringValue ("down_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_LEFT], getStringValue ("left_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RIGHT], getStringValue ("right_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_UP], getStringValue ("up_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], getStringValue ("add_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_ADD_ADJACENT_WORKSPACE], getStringValue ("add_adjacent_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_CLOSE_WINDOW], getStringValue ("close_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], getStringValue ("cycle_windows_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_DEL_WORKSPACE], getStringValue ("del_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_DEL_ACTIVE_WORKSPACE], getStringValue ("del_active_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_DOWN_WORKSPACE], getStringValue ("down_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_FILL_HORIZ], getStringValue ("fill_horiz_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_FILL_VERT], getStringValue ("fill_vert_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_FILL_WINDOW], getStringValue ("fill_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_HIDE_WINDOW], getStringValue ("hide_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_LEFT_WORKSPACE], getStringValue ("left_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_LOWER_WINDOW], getStringValue ("lower_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE], getStringValue ("move_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], getStringValue ("maximize_horiz_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_VERT], getStringValue ("maximize_vert_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], getStringValue ("maximize_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_DOWN_WORKSPACE], getStringValue ("move_window_down_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_LEFT_WORKSPACE], getStringValue ("move_window_left_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_NEXT_WORKSPACE], getStringValue ("move_window_next_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_PREV_WORKSPACE], getStringValue ("move_window_prev_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_RIGHT_WORKSPACE], getStringValue ("move_window_right_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_UP_WORKSPACE], getStringValue ("move_window_up_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], getStringValue ("next_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_POPUP_MENU], getStringValue ("popup_menu_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_PREV_WORKSPACE], getStringValue ("prev_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RAISE_WINDOW], getStringValue ("raise_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE], getStringValue ("resize_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RIGHT_WORKSPACE], getStringValue ("right_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHADE_WINDOW], getStringValue ("shade_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHOW_DESKTOP], getStringValue("show_desktop_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_STICK_WINDOW], getStringValue ("stick_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_TOGGLE_ABOVE], getStringValue ("above_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_TOGGLE_FULLSCREEN], getStringValue ("fullscreen_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_UP_WORKSPACE], getStringValue ("up_workspace_key", rc));
for (i = 0; i < 12; i++)
{
g_snprintf(keyname, sizeof (keyname), "move_window_workspace_%d_key", i + 1);
- parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_1 + i], getValue (keyname, rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_1 + i], getStringValue (keyname, rc));
g_snprintf(keyname, sizeof (keyname), "workspace_%d_key", i + 1);
- parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_1 + i], getValue (keyname, rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_1 + i], getStringValue (keyname, rc));
}
myScreenUngrabKeys (screen_info);
@@ -1322,168 +633,169 @@ loadSettings (ScreenInfo *screen_info)
const gchar *value;
Settings rc[] = {
/* Do not change the order of the following parameters */
- {"active_text_color", NULL, FALSE},
- {"inactive_text_color", NULL, FALSE},
- {"active_text_shadow_color", NULL, FALSE},
- {"inactive_text_shadow_color", NULL, FALSE},
- {"active_border_color", NULL, FALSE},
- {"inactive_border_color", NULL, FALSE},
- {"active_color_1", NULL, FALSE},
- {"active_hilight_1", NULL, FALSE},
- {"active_shadow_1", NULL, FALSE},
- {"active_mid_1", NULL, FALSE},
- {"active_color_2", NULL, FALSE},
- {"active_hilight_2", NULL, FALSE},
- {"active_shadow_2", NULL, FALSE},
- {"active_mid_2", NULL, FALSE},
- {"inactive_color_1", NULL, FALSE},
- {"inactive_hilight_1", NULL, FALSE},
- {"inactive_shadow_1", NULL, FALSE},
- {"inactive_mid_1", NULL, FALSE},
- {"inactive_color_2", NULL, FALSE},
- {"inactive_hilight_2", NULL, FALSE},
- {"inactive_shadow_2", NULL, FALSE},
- {"inactive_mid_2", NULL, FALSE},
+ {"active_text_color", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_text_color", NULL, G_TYPE_STRING, FALSE},
+ {"active_text_shadow_color", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_text_shadow_color", NULL, G_TYPE_STRING, FALSE},
+ {"active_border_color", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_border_color", NULL, G_TYPE_STRING, FALSE},
+ {"active_color_1", NULL, G_TYPE_STRING, FALSE},
+ {"active_hilight_1", NULL, G_TYPE_STRING, FALSE},
+ {"active_shadow_1", NULL, G_TYPE_STRING, FALSE},
+ {"active_mid_1", NULL, G_TYPE_STRING, FALSE},
+ {"active_color_2", NULL, G_TYPE_STRING, FALSE},
+ {"active_hilight_2", NULL, G_TYPE_STRING, FALSE},
+ {"active_shadow_2", NULL, G_TYPE_STRING, FALSE},
+ {"active_mid_2", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_color_1", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_hilight_1", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_shadow_1", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_mid_1", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_color_2", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_hilight_2", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_shadow_2", NULL, G_TYPE_STRING, FALSE},
+ {"inactive_mid_2", NULL, G_TYPE_STRING, FALSE},
/* You can change the order of the following parameters */
- {"activate_action", NULL, TRUE},
- {"borderless_maximize", NULL, TRUE},
- {"box_move", NULL, TRUE},
- {"box_resize", NULL, TRUE},
- {"button_layout", NULL, TRUE},
- {"button_offset", NULL, TRUE},
- {"button_spacing", NULL, TRUE},
- {"click_to_focus", NULL, TRUE},
- {"focus_delay", NULL, TRUE},
- {"cycle_hidden", NULL, TRUE},
- {"cycle_minimum", NULL, TRUE},
- {"cycle_workspaces", NULL, TRUE},
- {"dbl_click_time", NULL, TRUE},
- {"double_click_action", NULL, TRUE},
- {"easy_click", NULL, TRUE},
- {"focus_hint", NULL, TRUE},
- {"focus_new", NULL, TRUE},
- {"frame_opacity", NULL, TRUE},
- {"full_width_title", NULL, TRUE},
- {"inactive_opacity", NULL, TRUE},
- {"keytheme", NULL, TRUE},
- {"margin_bottom", NULL, FALSE},
- {"margin_left", NULL, FALSE},
- {"margin_right", NULL, FALSE},
- {"margin_top", NULL, FALSE},
- {"maximized_offset", NULL, TRUE},
- {"move_opacity", NULL, TRUE},
- {"placement_ratio", NULL, TRUE},
- {"placement_mode", NULL, TRUE},
- {"popup_opacity", NULL, TRUE},
- {"prevent_focus_stealing", NULL, TRUE},
- {"raise_delay", NULL, TRUE},
- {"raise_on_click", NULL, TRUE},
- {"raise_on_focus", NULL, TRUE},
- {"raise_with_any_button", NULL, TRUE},
- {"resize_opacity", NULL, TRUE},
- {"restore_on_move", NULL, TRUE},
- {"scroll_workspaces", NULL, TRUE},
- {"shadow_delta_height", NULL, TRUE},
- {"shadow_delta_width", NULL, TRUE},
- {"shadow_delta_x", NULL, TRUE},
- {"shadow_delta_y", NULL, TRUE},
- {"show_app_icon", NULL, TRUE},
- {"show_dock_shadow", NULL, TRUE},
- {"show_frame_shadow", NULL, TRUE},
- {"show_popup_shadow", NULL, TRUE},
- {"snap_resist", NULL, TRUE},
- {"snap_to_border", NULL, TRUE},
- {"snap_to_windows", NULL, TRUE},
- {"snap_width", NULL, TRUE},
- {"theme", NULL, TRUE},
- {"title_alignment", NULL, TRUE},
- {"title_font", NULL, FALSE},
- {"title_horizontal_offset", NULL, TRUE},
- {"title_shadow_active", NULL, TRUE},
- {"title_shadow_inactive", NULL, TRUE},
- {"title_vertical_offset_active", NULL, TRUE},
- {"title_vertical_offset_inactive", NULL, TRUE},
- {"toggle_workspaces", NULL, TRUE},
- {"unredirect_overlays", NULL, TRUE},
- {"use_compositing", NULL, TRUE},
- {"workspace_count", NULL, TRUE},
- {"wrap_cycle", NULL, TRUE},
- {"wrap_layout", NULL, TRUE},
- {"wrap_resistance", NULL, TRUE},
- {"wrap_windows", NULL, TRUE},
- {"wrap_workspaces", NULL, TRUE},
+ {"activate_action", NULL, G_TYPE_STRING, TRUE},
+ {"borderless_maximize", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"box_move", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"box_resize", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"button_layout", NULL, G_TYPE_STRING, TRUE},
+ {"button_offset", NULL, G_TYPE_INT, TRUE},
+ {"button_spacing", NULL, G_TYPE_INT, TRUE},
+ {"click_to_focus", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"focus_delay", NULL, G_TYPE_INT, TRUE},
+ {"cycle_hidden", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"cycle_minimum", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"cycle_workspaces", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"dbl_click_time", NULL, G_TYPE_INT, TRUE},
+ {"double_click_action", NULL, G_TYPE_STRING, TRUE},
+ {"easy_click", NULL, G_TYPE_STRING, TRUE},
+ {"focus_hint", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"focus_new", NULL, G_TYPE_BOOLEAN,TRUE},
+ {"frame_opacity", NULL, G_TYPE_INT, TRUE},
+ {"full_width_title", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"inactive_opacity", NULL, G_TYPE_INT, TRUE},
+ {"keytheme", NULL, G_TYPE_STRING, TRUE},
+ {"margin_bottom", NULL, G_TYPE_INT, FALSE},
+ {"margin_left", NULL, G_TYPE_INT, FALSE},
+ {"margin_right", NULL, G_TYPE_INT, FALSE},
+ {"margin_top", NULL, G_TYPE_INT, FALSE},
+ {"maximized_offset", NULL, G_TYPE_INT, TRUE},
+ {"move_opacity", NULL, G_TYPE_INT, TRUE},
+ {"placement_ratio", NULL, G_TYPE_INT, TRUE},
+ {"placement_mode", NULL, G_TYPE_STRING, TRUE},
+ {"popup_opacity", NULL, G_TYPE_INT, TRUE},
+ {"prevent_focus_stealing", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"raise_delay", NULL, G_TYPE_INT, TRUE},
+ {"raise_on_click", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"raise_on_focus", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"raise_with_any_button", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"resize_opacity", NULL, G_TYPE_INT, TRUE},
+ {"restore_on_move", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"scroll_workspaces", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"shadow_delta_height", NULL, G_TYPE_INT, TRUE},
+ {"shadow_delta_width", NULL, G_TYPE_INT, TRUE},
+ {"shadow_delta_x", NULL, G_TYPE_INT, TRUE},
+ {"shadow_delta_y", NULL, G_TYPE_INT, TRUE},
+ {"show_app_icon", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"show_dock_shadow", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"show_frame_shadow", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"show_popup_shadow", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"snap_resist", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"snap_to_border", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"snap_to_windows", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"snap_width", NULL, G_TYPE_INT, TRUE},
+ {"theme", NULL, G_TYPE_STRING, TRUE},
+ {"title_alignment", NULL, G_TYPE_STRING, TRUE},
+ {"title_font", NULL, G_TYPE_STRING, FALSE},
+ {"title_horizontal_offset", NULL, G_TYPE_INT, TRUE},
+ {"title_shadow_active", NULL, G_TYPE_STRING, TRUE},
+ {"title_shadow_inactive", NULL, G_TYPE_STRING, TRUE},
+ {"title_vertical_offset_active", NULL, G_TYPE_INT, TRUE},
+ {"title_vertical_offset_inactive", NULL, G_TYPE_INT, TRUE},
+ {"toggle_workspaces", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"unredirect_overlays", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"use_compositing", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"workspace_count", NULL, G_TYPE_INT, TRUE},
+ {"wrap_cycle", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"wrap_layout", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"wrap_resistance", NULL, G_TYPE_INT, TRUE},
+ {"wrap_windows", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"wrap_workspaces", NULL, G_TYPE_BOOLEAN, TRUE},
/* Keys */
- {"above_key", NULL, TRUE},
- {"add_adjacent_workspace_key", NULL, TRUE},
- {"add_workspace_key", NULL, TRUE},
- {"cancel_key", NULL, TRUE},
- {"close_window_key", NULL, TRUE},
- {"cycle_windows_key", NULL, TRUE},
- {"del_active_workspace_key", NULL, TRUE},
- {"del_workspace_key", NULL, TRUE},
- {"down_key", NULL, TRUE},
- {"down_workspace_key", NULL, TRUE},
- {"fill_horiz_key", NULL, TRUE},
- {"fill_vert_key", NULL, TRUE},
- {"fill_window_key", NULL, TRUE},
- {"fullscreen_key", NULL, TRUE},
- {"hide_window_key", NULL, TRUE},
- {"left_key", NULL, TRUE},
- {"left_workspace_key", NULL, TRUE},
- {"lower_window_key", NULL, TRUE},
- {"maximize_horiz_key", NULL, TRUE},
- {"maximize_vert_key", NULL, TRUE},
- {"maximize_window_key", NULL, TRUE},
- {"move_window_down_workspace_key", NULL, TRUE},
- {"move_window_left_workspace_key", NULL, TRUE},
- {"move_window_next_workspace_key", NULL, TRUE},
- {"move_window_key", NULL, TRUE},
- {"move_window_prev_workspace_key", NULL, TRUE},
- {"move_window_right_workspace_key", NULL, TRUE},
- {"move_window_up_workspace_key", NULL, TRUE},
- {"move_window_workspace_1_key", NULL, TRUE},
- {"move_window_workspace_2_key", NULL, TRUE},
- {"move_window_workspace_3_key", NULL, TRUE},
- {"move_window_workspace_4_key", NULL, TRUE},
- {"move_window_workspace_5_key", NULL, TRUE},
- {"move_window_workspace_6_key", NULL, TRUE},
- {"move_window_workspace_7_key", NULL, TRUE},
- {"move_window_workspace_8_key", NULL, TRUE},
- {"move_window_workspace_9_key", NULL, TRUE},
- {"move_window_workspace_10_key", NULL, TRUE},
- {"move_window_workspace_11_key", NULL, TRUE},
- {"move_window_workspace_12_key", NULL, TRUE},
- {"next_workspace_key", NULL, TRUE},
- {"popup_menu_key", NULL, TRUE},
- {"prev_workspace_key", NULL, TRUE},
- {"raise_window_key", NULL, TRUE},
- {"resize_window_key", NULL, TRUE},
- {"right_key", NULL, TRUE},
- {"right_workspace_key", NULL, TRUE},
- {"shade_window_key", NULL, TRUE},
- {"show_desktop_key", NULL, FALSE},
- {"stick_window_key", NULL, TRUE},
- {"up_key", NULL, TRUE},
- {"up_workspace_key", NULL, TRUE},
- {"workspace_1_key", NULL, TRUE},
- {"workspace_2_key", NULL, TRUE},
- {"workspace_3_key", NULL, TRUE},
- {"workspace_4_key", NULL, TRUE},
- {"workspace_5_key", NULL, TRUE},
- {"workspace_6_key", NULL, TRUE},
- {"workspace_7_key", NULL, TRUE},
- {"workspace_8_key", NULL, TRUE},
- {"workspace_9_key", NULL, TRUE},
- {"workspace_10_key", NULL, TRUE},
- {"workspace_11_key", NULL, TRUE},
- {"workspace_12_key", NULL, TRUE},
- {NULL, NULL, FALSE}
+ {"above_key", NULL, G_TYPE_STRING, TRUE},
+ {"add_adjacent_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"add_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"cancel_key", NULL, G_TYPE_STRING, TRUE},
+ {"close_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"cycle_windows_key", NULL, G_TYPE_STRING, TRUE},
+ {"del_active_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"del_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"down_key", NULL, G_TYPE_STRING, TRUE},
+ {"down_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"fill_horiz_key", NULL, G_TYPE_STRING, TRUE},
+ {"fill_vert_key", NULL, G_TYPE_STRING, TRUE},
+ {"fill_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"fullscreen_key", NULL, G_TYPE_STRING, TRUE},
+ {"hide_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"left_key", NULL, G_TYPE_STRING, TRUE},
+ {"left_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"lower_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"maximize_horiz_key", NULL, G_TYPE_STRING, TRUE},
+ {"maximize_vert_key", NULL, G_TYPE_STRING, TRUE},
+ {"maximize_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_down_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_left_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_next_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_prev_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_right_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_up_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_1_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_2_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_3_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_4_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_5_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_6_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_7_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_8_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_9_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_10_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_11_key", NULL, G_TYPE_STRING, TRUE},
+ {"move_window_workspace_12_key", NULL, G_TYPE_STRING, TRUE},
+ {"next_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"popup_menu_key", NULL, G_TYPE_STRING, TRUE},
+ {"prev_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"raise_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"resize_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"right_key", NULL, G_TYPE_STRING, TRUE},
+ {"right_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"shade_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"show_desktop_key", NULL, G_TYPE_STRING, FALSE},
+ {"stick_window_key", NULL, G_TYPE_STRING, TRUE},
+ {"up_key", NULL, G_TYPE_STRING, TRUE},
+ {"up_workspace_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_1_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_2_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_3_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_4_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_5_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_6_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_7_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_8_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_9_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_10_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_11_key", NULL, G_TYPE_STRING, TRUE},
+ {"workspace_12_key", NULL, G_TYPE_STRING, TRUE},
+ {NULL, NULL, G_TYPE_INVALID, FALSE}
};
TRACE ("entering loadSettings");
loadRcData (screen_info, rc);
- loadMcsData (screen_info, rc);
+ loadRcData (screen_info, rc);
+ loadXfconfData (screen_info, rc);
loadTheme (screen_info, rc);
update_grabs (screen_info);
@@ -1494,80 +806,80 @@ loadSettings (ScreenInfo *screen_info)
}
screen_info->params->borderless_maximize =
- !g_ascii_strcasecmp ("true", getValue ("borderless_maximize", rc));
+ getBoolValue ("borderless_maximize", rc);
screen_info->params->box_resize =
- !g_ascii_strcasecmp ("true", getValue ("box_resize", rc));
+ getBoolValue ("box_resize", rc);
screen_info->params->box_move =
- !g_ascii_strcasecmp ("true", getValue ("box_move", rc));
+ getBoolValue ("box_move", rc);
screen_info->params->click_to_focus =
- !g_ascii_strcasecmp ("true", getValue ("click_to_focus", rc));
+ getBoolValue ("click_to_focus", rc);
screen_info->params->cycle_minimum =
- !g_ascii_strcasecmp ("true", getValue ("cycle_minimum", rc));
+ getBoolValue ("cycle_minimum", rc);
screen_info->params->cycle_hidden =
- !g_ascii_strcasecmp ("true", getValue ("cycle_hidden", rc));
+ getBoolValue ("cycle_hidden", rc);
screen_info->params->cycle_workspaces =
- !g_ascii_strcasecmp ("true", getValue ("cycle_workspaces", rc));
+ getBoolValue ("cycle_workspaces", rc);
screen_info->params->focus_hint =
- !g_ascii_strcasecmp ("true", getValue ("focus_hint", rc));
+ getBoolValue ("focus_hint", rc);
screen_info->params->focus_new =
- !g_ascii_strcasecmp ("true", getValue ("focus_new", rc));
+ getBoolValue ("focus_new", rc);
screen_info->params->raise_on_focus =
- !g_ascii_strcasecmp ("true", getValue ("raise_on_focus", rc));
+ getBoolValue ("raise_on_focus", rc);
screen_info->params->prevent_focus_stealing =
- !g_ascii_strcasecmp ("true", getValue ("prevent_focus_stealing", rc));
+ getBoolValue ("prevent_focus_stealing", rc);
screen_info->params->raise_delay =
- abs (TOINT (getValue ("raise_delay", rc)));
+ getIntValue ("raise_delay", rc);
screen_info->params->focus_delay =
- abs (TOINT (getValue ("focus_delay", rc)));
+ getIntValue ("focus_delay", rc);
screen_info->params->raise_on_click =
- !g_ascii_strcasecmp ("true", getValue ("raise_on_click", rc));
+ getBoolValue ("raise_on_click", rc);
screen_info->params->raise_with_any_button =
- !g_ascii_strcasecmp ("true", getValue ("raise_with_any_button", rc));
+ getBoolValue ("raise_with_any_button", rc);
screen_info->params->restore_on_move =
- !g_ascii_strcasecmp ("true", getValue ("restore_on_move", rc));
+ getBoolValue ("restore_on_move", rc);
screen_info->params->frame_opacity =
- abs (TOINT (getValue ("frame_opacity", rc)));
+ getIntValue ("frame_opacity", rc);
screen_info->params->inactive_opacity =
- abs (TOINT (getValue ("inactive_opacity", rc)));
+ getIntValue ("inactive_opacity", rc);
screen_info->params->move_opacity =
- abs (TOINT (getValue ("move_opacity", rc)));
+ getIntValue ("move_opacity", rc);
screen_info->params->resize_opacity =
- abs (TOINT (getValue ("resize_opacity", rc)));
+ getIntValue ("resize_opacity", rc);
screen_info->params->popup_opacity =
- abs (TOINT (getValue ("popup_opacity", rc)));
+ getIntValue ("popup_opacity", rc);
screen_info->params->placement_ratio =
- abs (TOINT (getValue ("placement_ratio", rc)));
+ getIntValue ("placement_ratio", rc);
screen_info->params->show_app_icon =
- !g_ascii_strcasecmp ("true", getValue ("show_app_icon", rc));
+ getBoolValue ("show_app_icon", rc);
screen_info->params->show_dock_shadow =
- !g_ascii_strcasecmp ("true", getValue ("show_dock_shadow", rc));
+ getBoolValue ("show_dock_shadow", rc);
screen_info->params->show_frame_shadow =
- !g_ascii_strcasecmp ("true", getValue ("show_frame_shadow", rc));
+ getBoolValue ("show_frame_shadow", rc);
screen_info->params->show_popup_shadow =
- !g_ascii_strcasecmp ("true", getValue ("show_popup_shadow", rc));
+ getBoolValue ("show_popup_shadow", rc);
screen_info->params->snap_to_border =
- !g_ascii_strcasecmp ("true", getValue ("snap_to_border", rc));
+ getBoolValue ("snap_to_border", rc);
screen_info->params->snap_to_windows =
- !g_ascii_strcasecmp ("true", getValue ("snap_to_windows", rc));
+ getBoolValue ("snap_to_windows", rc);
screen_info->params->snap_resist =
- !g_ascii_strcasecmp ("true", getValue ("snap_resist", rc));
+ getBoolValue ("snap_resist", rc);
screen_info->params->snap_width =
- abs (TOINT (getValue ("snap_width", rc)));
+ getIntValue ("snap_width", rc);
- set_settings_margin (screen_info, STRUTS_LEFT, TOINT (getValue ("margin_left", rc)));
- set_settings_margin (screen_info, STRUTS_RIGHT, TOINT (getValue ("margin_right", rc)));
- set_settings_margin (screen_info, STRUTS_BOTTOM, TOINT (getValue ("margin_bottom", rc)));
- set_settings_margin (screen_info, STRUTS_TOP, TOINT (getValue ("margin_top", rc)));
+ set_settings_margin (screen_info, STRUTS_LEFT, getIntValue ("margin_left", rc));
+ set_settings_margin (screen_info, STRUTS_RIGHT, getIntValue ("margin_right", rc));
+ set_settings_margin (screen_info, STRUTS_BOTTOM, getIntValue ("margin_bottom", rc));
+ set_settings_margin (screen_info, STRUTS_TOP, getIntValue ("margin_top", rc));
- set_easy_click (screen_info, getValue ("easy_click", rc));
+ set_easy_click (screen_info, getStringValue ("easy_click", rc));
- value = getValue ("placement_mode", rc);
+ value = getStringValue ("placement_mode", rc);
set_placement_mode (screen_info, value);
- value = getValue ("activate_action", rc);
+ value = getStringValue ("activate_action", rc);
set_activate_action (screen_info, value);
- value = getValue ("double_click_action", rc);
+ value = getStringValue ("double_click_action", rc);
if (!g_ascii_strcasecmp ("shade", value))
{
screen_info->params->double_click_action = DBL_CLICK_ACTION_SHADE;
@@ -1592,7 +904,7 @@ loadSettings (ScreenInfo *screen_info)
if (screen_info->workspace_count < 0)
{
gint workspace_count;
- workspace_count = abs (TOINT (getValue ("workspace_count", rc)));
+ workspace_count = getIntValue ("workspace_count", rc);
if (workspace_count < 0)
{
workspace_count = 0;
@@ -1601,23 +913,23 @@ loadSettings (ScreenInfo *screen_info)
}
screen_info->params->toggle_workspaces =
- !g_ascii_strcasecmp ("true", getValue ("toggle_workspaces", rc));
+ getBoolValue ("toggle_workspaces", rc);
screen_info->params->unredirect_overlays =
- !g_ascii_strcasecmp ("true", getValue ("unredirect_overlays", rc));
+ getBoolValue ("unredirect_overlays", rc);
screen_info->params->use_compositing =
- !g_ascii_strcasecmp ("true", getValue ("use_compositing", rc));
+ getBoolValue ("use_compositing", rc);
screen_info->params->wrap_workspaces =
- !g_ascii_strcasecmp ("true", getValue ("wrap_workspaces", rc));
+ getBoolValue ("wrap_workspaces", rc);
screen_info->params->wrap_layout =
- !g_ascii_strcasecmp ("true", getValue ("wrap_layout", rc));
+ getBoolValue ("wrap_layout", rc);
screen_info->params->wrap_windows =
- !g_ascii_strcasecmp ("true", getValue ("wrap_windows", rc));
+ getBoolValue ("wrap_windows", rc);
screen_info->params->wrap_cycle =
- !g_ascii_strcasecmp ("true", getValue ("wrap_cycle", rc));
+ getBoolValue ("wrap_cycle", rc);
screen_info->params->scroll_workspaces =
- !g_ascii_strcasecmp ("true", getValue ("scroll_workspaces", rc));
+ getBoolValue ("scroll_workspaces", rc);
screen_info->params->wrap_resistance =
- abs (TOINT (getValue ("wrap_resistance", rc)));
+ getIntValue ("wrap_resistance", rc);
freeRc (rc);
return TRUE;
@@ -1727,32 +1039,23 @@ initSettings (ScreenInfo *screen_info)
TRACE ("entering initSettings");
+ if (!xfconf_init (NULL))
+ {
+ g_critical ("Xfconf could not be initialized");
+ return FALSE;
+ }
+
+
display_info = screen_info->display_info;
names = NULL;
val = 0;
i = 0;
- if (!mcs_client_check_manager (myScreenGetXDisplay (screen_info), screen_info->screen, "xfce-mcs-manager"))
- {
- g_warning ("MCS manager not running, startup delayed for 5 seconds");
- sleep (5);
- }
+ screen_info->xfwm4_channel = xfconf_channel_new(CHANNEL1);
+ screen_info->keys_channel = xfconf_channel_new(CHANNEL2);
+
+ g_signal_connect (G_OBJECT(screen_info->xfwm4_channel), "property-changed", (GCallback)cb_xfwm4_channel_property_changed, screen_info);
- screen_info->mcs_client = mcs_client_new (myScreenGetXDisplay (screen_info), screen_info->screen, notify_cb, watch_cb, (gpointer) screen_info);
- if (screen_info->mcs_client)
- {
- mcs_client_add_channel (screen_info->mcs_client, CHANNEL1);
- mcs_client_add_channel (screen_info->mcs_client, CHANNEL2);
- mcs_client_add_channel (screen_info->mcs_client, CHANNEL3);
- mcs_client_add_channel (screen_info->mcs_client, CHANNEL4);
- mcs_client_add_channel (screen_info->mcs_client, CHANNEL5);
- mcs_client_set_raw_channel (screen_info->mcs_client, CHANNEL4, TRUE);
- }
- else
- {
- g_warning ("Cannot create MCS client channel");
- }
- screen_info->mcs_initted = TRUE;
if (!loadSettings (screen_info))
{
@@ -1788,10 +1091,260 @@ closeSettings (ScreenInfo *screen_info)
{
g_return_if_fail (screen_info);
- if (screen_info->mcs_client)
+ unloadSettings (screen_info);
+}
+
+static void
+cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_name, const GValue *value, ScreenInfo *screen_info)
+{
+ if (g_str_has_prefix(property_name, "/general/") == TRUE)
{
- mcs_client_destroy (screen_info->mcs_client);
- screen_info->mcs_client = NULL;
+ const gchar *name = &property_name[9];
+ switch (G_VALUE_TYPE(value))
+ {
+ case G_TYPE_STRING:
+ if (!strcmp (name, "double_click_action"))
+ {
+ reloadScreenSettings (screen_info, NO_UPDATE_FLAG);
+ }
+ else if (!strcmp (name, "theme"))
+ {
+ reloadScreenSettings(screen_info, UPDATE_MAXIMIZE | UPDATE_GRAVITY | UPDATE_CACHE);
+ }
+ else if (!strcmp (name, "button_layout"))
+ {
+ reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
+ }
+ else if (!strcmp (name, "title_alignment"))
+ {
+ reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
+ }
+ else if (!strcmp (name, "title_font"))
+ {
+ reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
+ }
+ else if (!strcmp (name, "keytheme"))
+ {
+ reloadScreenSettings (screen_info, NO_UPDATE_FLAG);
+ }
+ else if (!strcmp (name, "easy_click"))
+ {
+ reloadScreenSettings (screen_info, UPDATE_BUTTON_GRABS);
+ }
+ else if (!strcmp (name, "activate_action"))
+ {
+ set_activate_action (screen_info, g_value_get_string (value));
+ }
+ else if (!strcmp (name, "placement_mode"))
+ {
+ set_placement_mode (screen_info, g_value_get_string (value));
+ }
+ else
+ {
+ g_warning("The property '%s' is not supported", property_name);
+ }
+ break;
+ case G_TYPE_INT:
+ if (!strcmp (name, "raise_delay"))
+ {
+ screen_info->params->raise_delay = g_value_get_int (value);
+ }
+ else if (!strcmp (name, "focus_delay"))
+ {
+ screen_info->params->focus_delay = g_value_get_int (value);
+ }
+ else if (!strcmp (name, "snap_width"))
+ {
+ screen_info->params->snap_width = g_value_get_int (value);
+ }
+ else if (!strcmp (name, "wrap_resistance"))
+ {
+ screen_info->params->wrap_resistance = g_value_get_int (value);
+ }
+ else if (!strcmp (name, "margin_left"))
+ {
+ set_settings_margin (screen_info, STRUTS_LEFT, g_value_get_int (value));
+ }
+ else if (!strcmp (name, "margin_right"))
+ {
+ set_settings_margin (screen_info, STRUTS_RIGHT, g_value_get_int (value));
+ }
+ else if (!strcmp (name, "margin_bottom"))
+ {
+ set_settings_margin (screen_info, STRUTS_BOTTOM, g_value_get_int (value));
+ }
+ else if (!strcmp (name, "margin_top"))
+ {
+ set_settings_margin (screen_info, STRUTS_TOP, g_value_get_int (value));
+ }
+ else if (!strcmp (name, "workspace_count"))
+ {
+ workspaceSetCount(screen_info, g_value_get_int (value));
+ }
+ else if (!strcmp (name, "frame_opacity"))
+ {
+ screen_info->params->frame_opacity = g_value_get_int(value);
+ reloadScreenSettings (screen_info, UPDATE_FRAME);
+ }
+ else if (!strcmp (name, "inactive_opacity"))
+ {
+ screen_info->params->inactive_opacity = g_value_get_int(value);
+ reloadScreenSettings (screen_info, UPDATE_FRAME);
+ clientUpdateAllOpacity (screen_info);
+ }
+ else if (!strcmp (name, "move_opacity"))
+ {
+ screen_info->params->move_opacity = g_value_get_int (value);
+ }
+ else if (!strcmp (name, "resize_opacity"))
+ {
+ screen_info->params->resize_opacity = g_value_get_int (value);
+ }
+ else if (!strcmp (name, "popup_opacity"))
+ {
+ screen_info->params->popup_opacity = g_value_get_int (value);
+ reloadScreenSettings (screen_info, UPDATE_FRAME);
+ }
+ else if (!strcmp (name, "placement_ratio"))
+ {
+ screen_info->params->placement_ratio = g_value_get_int (value);
+ }
+ else
+ {
+ g_warning("The property '%s' is not supported", property_name);
+ }
+ break;
+ case G_TYPE_BOOLEAN:
+ if (!strcmp (name, "box_move"))
+ {
+ screen_info->params->box_move = g_value_get_boolean (value);
+
+ }
+ else if (!strcmp (name, "box_resize"))
+ {
+ screen_info->params->box_resize = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "click_to_focus"))
+ {
+ screen_info->params->click_to_focus = g_value_get_boolean (value);
+ update_grabs (screen_info);
+ }
+ else if (!strcmp (name, "focus_new"))
+ {
+ screen_info->params->focus_new = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "raise_on_focus"))
+ {
+ screen_info->params->raise_on_focus = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "raise_on_click"))
+ {
+ screen_info->params->raise_on_click = g_value_get_boolean (value);
+ update_grabs (screen_info);
+ }
+ else if (!strcmp (name, "snap_to_border"))
+ {
+ screen_info->params->snap_to_border = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "snap_to_windows"))
+ {
+ screen_info->params->snap_to_windows = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "wrap_workspaces"))
+ {
+ screen_info->params->wrap_workspaces = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "wrap_windows"))
+ {
+ screen_info->params->wrap_windows = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "borderless_maximize"))
+ {
+ screen_info->params->borderless_maximize = g_value_get_boolean (value);
+ reloadScreenSettings (screen_info, UPDATE_MAXIMIZE);
+ }
+ else if (!strcmp (name, "cycle_minimum"))
+ {
+ screen_info->params->cycle_minimum = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "cycle_hidden"))
+ {
+ screen_info->params->cycle_hidden = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "cycle_workspaces"))
+ {
+ screen_info->params->cycle_workspaces = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "focus_hint"))
+ {
+ screen_info->params->focus_hint = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "show_dock_shadow"))
+ {
+ screen_info->params->show_dock_shadow = g_value_get_boolean (value);
+ reloadScreenSettings (screen_info, UPDATE_FRAME);
+ }
+ else if (!strcmp (name, "show_frame_shadow"))
+ {
+ screen_info->params->show_frame_shadow = g_value_get_boolean (value);
+ reloadScreenSettings (screen_info, UPDATE_FRAME);
+ }
+ else if (!strcmp (name, "show_popup_shadow"))
+ {
+ screen_info->params->show_popup_shadow = g_value_get_boolean (value);
+ reloadScreenSettings (screen_info, UPDATE_FRAME);
+ }
+ else if (!strcmp (name, "snap_resist"))
+ {
+ screen_info->params->snap_resist = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "prevent_focus_stealing"))
+ {
+ screen_info->params->prevent_focus_stealing = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "raise_with_any_button"))
+ {
+ screen_info->params->raise_with_any_button = g_value_get_boolean (value);
+ update_grabs (screen_info);
+ }
+ else if (!strcmp (name, "restore_on_move"))
+ {
+ screen_info->params->restore_on_move = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "scroll_workspaces"))
+ {
+ screen_info->params->scroll_workspaces = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "toggle_workspaces"))
+ {
+ screen_info->params->toggle_workspaces = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "unredirect_overlays"))
+ {
+ screen_info->params->unredirect_overlays = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "use_compositing"))
+ {
+ screen_info->params->use_compositing = g_value_get_boolean (value);
+ compositorActivateScreen (screen_info,
+ screen_info->params->use_compositing);
+ }
+ else if (!strcmp (name, "wrap_layout"))
+ {
+ screen_info->params->wrap_layout = g_value_get_boolean (value);
+ }
+ else if (!strcmp (name, "wrap_cycle"))
+ {
+ screen_info->params->wrap_cycle = g_value_get_boolean (value);
+ }
+ else
+ {
+ g_warning("The property '%s' is not supported", property_name);
+ }
+ break;
+ default:
+ g_warning("The type of property '%s' is not supported", property_name);
+ break;
+ }
}
- unloadSettings (screen_info);
}
diff --git a/src/settings.h b/src/settings.h
index 55b6e12c6..c9ac90d25 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -152,8 +152,9 @@ struct _XfwmColor
struct _Settings
{
- gchar *option;
- gchar *value;
+ gchar *option;
+ GValue *value;
+ GType type;
gboolean required;
};