diff options
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"><b>Title font</b></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"><b>Title alignment</b></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"><b>Button layout</b></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"><b>Window shortcuts</b></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"><b>Focus model</b></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"><i>Short</i></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"><i>Long</i></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"><b>Delay before window receives focus</b></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"><b>New window focus</b></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"><i>Short</i></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"><i>Long</i></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"><b>Raise on focus</b></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"><b>Raise on click</b></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"><i>Small</i></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"><i>Wide</i></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"><b>Windows snapping</b></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"><i>Small</i></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"><i>Wide</i></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"><b>Wrap workspaces</b></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"><b>Box move and resize</b></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"><b>Double click action</b></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\"><b>Title font</b></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\"><b>Title " + "alignment</b></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\"><b>Button layout</b>" + ";</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\"><b>Window shortcuts</b></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\"><b>Focus model</b></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\"><i>Short</i></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\"><i>Long&l" + "t;/i></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\"><b&" + "gt;Delay before window receives focus</b></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\"><b>New window focus<" + ";/b></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\"" + "><i>Short</i></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\"><i>Lon" + "g</i></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\"><b>Raise on focus</b></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\"><b>Ra" + "ise on click</b></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>Small</i></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\"><i>Wide</i></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\"><b>Wi" + "ndows snapping</b></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\"><i>Small</i" + "></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\"><i>Wide</i></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\"><b>Wrap workspaces&" + "lt;/b></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\"><b>" + "Box move and resize</b></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\"><b>Double click action" + "</b></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"><i>Transparent</i></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"><i>Opaque</i></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"><i>Transparent</i></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"><i>Opaque</i></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"><i>Transparent</i></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"><i>Opaque</i></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"><i>Transparent</i></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"><i>Opaque</i></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"><i>Transparent</i></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"><i>Opaque</i></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\"><i>Transparent<" + ";/i></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\"><i&g" + "t;Opaque</i></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\"><i>Transparent</i></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\"><i>Opaque</i></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\"><i>" + "Transparent</i></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\"><i>Opaque</i></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\"><i>Transparent</i></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\"><i>Opaque&l" + "t;/i></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\"" + "><i>Transparent</i></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\"><i>Opaque</i></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; }; |