compiz team mailing list archive
-
compiz team
-
Mailing list archive
-
Message #20507
[Merge] lp:~lievenvanderheide/compiz/PixmapLeakFix into lp:compiz
Lieven van der Heide has proposed merging lp:~lievenvanderheide/compiz/PixmapLeakFix into lp:compiz.
Requested reviews:
compiz packagers (compiz)
For more details, see:
https://code.launchpad.net/~lievenvanderheide/compiz/PixmapLeakFix/+merge/71483
See Bug #740258
--
The attached diff has been truncated due to its size.
https://code.launchpad.net/~lievenvanderheide/compiz/PixmapLeakFix/+merge/71483
Your team compiz packagers is requested to review the proposed merge of lp:~lievenvanderheide/compiz/PixmapLeakFix into lp:compiz.
=== added file '.gitignore'
--- .gitignore 1970-01-01 00:00:00 +0000
+++ .gitignore 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1 @@
+po/compiz.pot
=== added directory '.pc'
=== added file '.pc/.version'
--- .pc/.version 1970-01-01 00:00:00 +0000
+++ .pc/.version 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1 @@
+2
=== added directory '.pc/01_don_t_init_a11y.patch'
=== added directory '.pc/01_don_t_init_a11y.patch/src'
=== added file '.pc/01_don_t_init_a11y.patch/src/main.cpp'
--- .pc/01_don_t_init_a11y.patch/src/main.cpp 1970-01-01 00:00:00 +0000
+++ .pc/01_don_t_init_a11y.patch/src/main.cpp 2011-08-14 15:11:23 +0000
@@ -0,0 +1,300 @@
+/*
+ * Copyright © 2005 Novell, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Novell, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Novell, Inc. makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: David Reveman <davidr@xxxxxxxxxx>
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <compiz.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/wait.h>
+
+#include <gtk/gtk.h>
+
+#include <core/core.h>
+#include "privatescreen.h"
+
+char *programName;
+char **programArgv;
+int programArgc;
+
+char *backgroundImage = NULL;
+
+bool shutDown = false;
+bool restartSignal = false;
+
+CompWindow *lastFoundWindow = 0;
+
+bool replaceCurrentWm = false;
+bool indirectRendering = false;
+bool noDetection = false;
+bool useDesktopHints = false;
+bool debugOutput = false;
+bool useCow = true;
+
+std::list <CompString> initialPlugins;
+
+unsigned int pluginClassHandlerIndex = 0;
+
+void
+CompManager::usage ()
+{
+ printf ("Usage: %s "
+ "[--replace] "
+ "[--display DISPLAY]\n "
+ "[--indirect-rendering] "
+ "[--sm-disable] "
+ "[--sm-client-id ID]\n "
+ "[--bg-image PNG] "
+ "[--no-detection] "
+ "[--keep-desktop-hints]\n "
+ "[--use-root-window] "
+ "[--debug] "
+ "[--version] "
+ "[--help] "
+ "[PLUGIN]...\n",
+ programName);
+}
+
+static void
+signalHandler (int sig)
+{
+ int status;
+
+ switch (sig) {
+ case SIGCHLD:
+ waitpid (-1, &status, WNOHANG | WUNTRACED);
+ break;
+ case SIGHUP:
+ restartSignal = true;
+ break;
+ case SIGINT:
+ case SIGTERM:
+ shutDown = true;
+ default:
+ break;
+ }
+}
+
+bool
+CompManager::parseArguments (int argc, char **argv)
+{
+ for (int i = 1; i < argc; i++)
+ {
+ if (!strcmp (argv[i], "--help"))
+ {
+ usage ();
+ return false;
+ }
+ else if (!strcmp (argv[i], "--version"))
+ {
+ printf (PACKAGE_STRING "\n");
+ return false;
+ }
+ else if (!strcmp (argv[i], "--debug"))
+ {
+ debugOutput = true;
+ }
+ else if (!strcmp (argv[i], "--display"))
+ {
+ if (i + 1 < argc)
+ displayName = argv[++i];
+ }
+ else if (!strcmp (argv[i], "--indirect-rendering"))
+ {
+ indirectRendering = true;
+ }
+ else if (!strcmp (argv[i], "--keep-desktop-hints"))
+ {
+ useDesktopHints = true;
+ }
+ else if (!strcmp (argv[i], "--use-root-window"))
+ {
+ useCow = false;
+ }
+ else if (!strcmp (argv[i], "--replace"))
+ {
+ replaceCurrentWm = true;
+ }
+ else if (!strcmp (argv[i], "--sm-disable"))
+ {
+ disableSm = true;
+ }
+ else if (!strcmp (argv[i], "--sm-client-id"))
+ {
+ if (i + 1 < argc)
+ clientId = argv[++i];
+ }
+ else if (!strcmp (argv[i], "--no-detection"))
+ {
+ noDetection = true;
+ }
+ else if (!strcmp (argv[i], "--bg-image"))
+ {
+ if (i + 1 < argc)
+ backgroundImage = argv[++i];
+ }
+ else if (*argv[i] == '-')
+ {
+ compLogMessage ("core", CompLogLevelWarn,
+ "Unknown option '%s'\n", argv[i]);
+ }
+ else
+ {
+ plugins.push_back (argv[i]);
+ }
+ }
+
+ /* add in default plugins if none are given */
+ if (plugins.size () == 0)
+ plugins.push_back ("ccp");
+
+ initialPlugins = plugins;
+
+ return true;
+}
+
+CompManager::CompManager () :
+ disableSm (false),
+ clientId (NULL),
+ displayName (NULL)
+{
+}
+
+bool
+CompManager::init ()
+{
+ screen = new CompScreen ();
+
+ if (!screen || !screen->priv)
+ return false;
+
+ if (screen->priv->createFailed ())
+ {
+ delete screen;
+ return false;
+ }
+
+ modHandler = new ModifierHandler ();
+
+ if (!modHandler)
+ return false;
+
+ if (!plugins.empty ())
+ {
+ CompOption::Value::Vector list;
+ CompOption::Value value;
+ CompOption *o = screen->getOption ("active_plugins");
+
+ foreach (CompString &str, plugins)
+ {
+ value.set (str);
+ list.push_back (value);
+ }
+
+ value.set (CompOption::TypeString, list);
+
+ if (o)
+ o->set (value);
+ }
+
+ screen->priv->dirtyPluginList = true;
+ screen->priv->updatePlugins ();
+
+ if (!screen->init (displayName))
+ return false;
+
+ if (!disableSm)
+ {
+ if (clientId == NULL)
+ {
+ char *desktop_autostart_id = getenv ("DESKTOP_AUTOSTART_ID");
+ if (desktop_autostart_id != NULL)
+ clientId = strdup (desktop_autostart_id);
+ unsetenv ("DESKTOP_AUTOSTART_ID");
+ }
+ CompSession::init (clientId);
+ }
+
+ return true;
+}
+
+void
+CompManager::run ()
+{
+ screen->eventLoop ();
+}
+
+void
+CompManager::fini ()
+{
+ if (!disableSm)
+ CompSession::close ();
+
+ delete screen;
+ delete modHandler;
+}
+
+
+
+int
+main (int argc, char **argv)
+{
+ CompManager manager;
+
+ programName = argv[0];
+ programArgc = argc;
+ programArgv = argv;
+
+ signal (SIGHUP, signalHandler);
+ signal (SIGCHLD, signalHandler);
+ signal (SIGINT, signalHandler);
+ signal (SIGTERM, signalHandler);
+
+ gtk_init_check (&argc, &argv);
+
+ if (!manager.parseArguments (argc, argv))
+ return 0;
+
+ if (!manager.init ())
+ return 1;
+
+ manager.run ();
+
+ manager.fini ();
+
+ if (restartSignal)
+ {
+ execvp (programName, programArgv);
+ return 1;
+ }
+
+ return 0;
+}
=== added file '.pc/applied-patches'
--- .pc/applied-patches 1970-01-01 00:00:00 +0000
+++ .pc/applied-patches 2011-08-14 15:11:23 +0000
@@ -0,0 +1,2 @@
+01_don_t_init_a11y.patch
+debian-changes-1:0.9.5.0-0ubuntu3
=== added directory '.pc/debian-changes-1:0.9.5.0-0ubuntu3'
=== added directory '.pc/debian-changes-1:0.9.5.0-0ubuntu3/po'
=== added file '.pc/debian-changes-1:0.9.5.0-0ubuntu3/po/compiz.pot'
=== added file 'AUTHORS'
--- AUTHORS 1970-01-01 00:00:00 +0000
+++ AUTHORS 2011-08-14 15:11:23 +0000
@@ -0,0 +1,29 @@
+compiz and the standard set of plugins are designed and written by
+
+David Reveman <davidr@xxxxxxxxxx>
+
+with additional functionality by
+
+Radek Doulik <rodo@xxxxxxxxxx> IO multiplexing
+Mirco Müller <macslow@xxxxxxxxxx> Skydome support in cube plugin
+Søren Sandmann <sandmann@xxxxxxxxxx> plane plugin
+Dan Winship <danw@xxxxxxxxxx> gconf-dump plugin
+Brian Paul <brian.paul@xxxxxxxxxxxxxxxxxxxx> Matrix functions
+
+and other contributions by
+
+Mike Cook <mcook@xxxxxxxxxx>
+Mike Dransfield <mike@xxxxxxxxxxxxxx>
+Diogo Ferreira <diogo@xxxxxxxxxxxx>
+gandalfn <gandalfn@xxxxxxxxxxxxxxxx>
+Guillaume <ixcemix@xxxxxxxxx>
+Kristian Høgsberg <krh@xxxxxxxxxx>
+Dennis Kasprzyk <onestone@xxxxxxxxxxxxxxxxx>
+Gerd Kohlberger <lowfi@xxxxxxxxx>
+Volker Krause <vkrause@xxxxxxx>
+moppsy <moppsy@xxxxxxxxxxx>
+Jeremy C. Reed <reed@xxxxxxxxxxxxx>
+Thierry Reding <thierry@xxxxxxxx>
+Julian Sikorski <lordzanon@xxxxxxxxxxxxxx>
+Quinn Storm <livinglatexkali@xxxxxxxxx>
+Erkin Bahceci <erkinbah@xxxxxxxxx>
=== added file 'CMakeLists.txt'
--- CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ CMakeLists.txt 2011-08-14 15:11:23 +0000
@@ -0,0 +1,135 @@
+project (compiz)
+
+set (CMAKE_MODULE_PATH_ORIG ${CMAKE_MODULE_PATH})
+set (COMPIZ_CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${COMPIZ_CMAKE_MODULE_PATH})
+include (CompizCommon)
+include (CompizPackage)
+include (cmake/base.cmake)
+include (CheckFunctionExists)
+include (CTest)
+
+
+set (CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;MinSizeRe" CACHE INTERNAL "" FORCE)
+if (NOT CMAKE_BUILD_TYPE)
+ set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type (Debug/Release/RelWithDebInfo/MinSizeRe)" FORCE)
+endif (NOT CMAKE_BUILD_TYPE)
+
+file (READ ${CMAKE_SOURCE_DIR}/VERSION COMPIZ_RELEASE_VERSION LIMIT 12 OFFSET 0)
+string (STRIP ${COMPIZ_RELEASE_VERSION} COMPIZ_RELEASE_VERSION)
+
+set (VERSION ${COMPIZ_RELEASE_VERSION})
+
+set (DECOR_INTERFACE_VERSION 20110504)
+
+if (COMPIZ_PACKAGING_ENABLED)
+ set (prefix ${CMAKE_INSTALL_PREFIX} CACHE PATH "prefix")
+ set (exec_prefix ${CMAKE_INSTALL_PREFIX}/bin CACHE PATH "bindir")
+ set (libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE PATH "libdir")
+ set (includedir ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "includedir")
+ set (datadir ${CMAKE_INSTALL_PREFIX}/share CACHE PATH "datadir")
+else (COMPIZ_PACKAGING_ENABLED)
+ set (prefix ${CMAKE_INSTALL_PREFIX} )
+ set (exec_prefix ${CMAKE_INSTALL_PREFIX}/bin )
+ set (libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
+ set (includedir ${CMAKE_INSTALL_PREFIX}/include )
+ set (datadir ${CMAKE_INSTALL_PREFIX}/share )
+endif (COMPIZ_PACKAGING_ENABLED)
+
+set (compiz_plugindir ${libdir}/compiz)
+set (compiz_sharedir ${datadir}/compiz/)
+set (compiz_metadatadir ${datadir}/compiz)
+set (COMPIZ_I18N_DIR ${CMAKE_SOURCE_DIR}/po)
+
+set (ALL_LINGUAS af ar bg bn bn_IN bs ca cs cy da de el en_GB en_US es eu et fi fr gl gu he hi hr hu id it ja ka km ko lo lt mk mr nb nl or pa pl pt pt_BR ro ru sk sl sr sv ta tr uk vi xh zh_CN zh_TW zu)
+set (GETTEXT_PACKAGE compiz)
+
+find_package (Boost 1.34.0 REQUIRED serialization)
+
+set (COMPIZ_REQUIRES
+ x11
+ xext
+ xdamage
+ xcomposite
+ x11-xcb
+ xrandr
+ xinerama
+ xext
+ ice
+ sm
+ libxml-2.0
+ libxslt
+ glib-2.0
+ gtk+-3.0
+ gio-2.0
+ glibmm-2.4
+ "libstartup-notification-1.0 >= 0.7"
+)
+
+set (DECORATION_REQUIRES xrender)
+
+compiz_pkg_check_modules (COMPIZ REQUIRED ${COMPIZ_REQUIRES})
+compiz_pkg_check_modules (LIBDECORATION REQUIRED ${DECORATION_REQUIRES})
+
+list (APPEND COMPIZ_LIBRARIES ${Boost_LIBRARIES})
+
+include (CompizDefaults)
+
+set (COMPIZ_CFLAGS "${COMPIZ_CFLAGS} -I${Boost_INCLUDE_DIR}")
+
+set (_compiz_package_string "Compiz ${VERSION}")
+set (_compiz_package "Compiz")
+
+compiz_configure_file (${compiz_SOURCE_DIR}/config.h.core.in ${compiz_BINARY_DIR}/generated/config.h)
+
+compiz_configure_file (
+ ${CMAKE_SOURCE_DIR}/include/compiz-common.h.in
+ ${CMAKE_BINARY_DIR}/generated/compiz-common.h
+)
+
+install (
+ FILES ${CMAKE_BINARY_DIR}/generated/compiz-common.h
+ DESTINATION ${COMPIZ_DESTDIR}${includedir}/compiz
+)
+
+compiz_configure_file (
+ ${CMAKE_SOURCE_DIR}/compiz.pc.in
+ ${CMAKE_BINARY_DIR}/compiz.pc
+ COMPIZ_REQUIRES
+ COMPIZ_CFLAGS
+)
+
+install (
+ FILES ${CMAKE_BINARY_DIR}/compiz.pc
+ DESTINATION ${COMPIZ_DESTDIR}${libdir}/pkgconfig
+)
+
+add_subdirectory (cmake)
+add_subdirectory (include)
+add_subdirectory (images)
+add_subdirectory (libdecoration)
+add_subdirectory (gtk)
+add_subdirectory (kde)
+add_subdirectory (po)
+add_subdirectory (metadata)
+add_subdirectory (src)
+add_subdirectory (xslt)
+add_subdirectory (plugins)
+add_subdirectory (unity)
+if (BUILD_TESTING)
+ add_subdirectory (tests)
+endif (BUILD_TESTING)
+
+compiz_ensure_linkage ()
+compiz_package_generation ("Compiz")
+compiz_add_uninstall ()
+compiz_add_git_dist ()
+compiz_add_distcheck ()
+compiz_add_release ()
+compiz_add_release_signoff ()
+
+_print_configure_results ()
+
+_check_compiz_cmake_macro (${CMAKE_MODULE_PATH_ORIG})
+
+
=== added file 'COPYING'
--- COPYING 1970-01-01 00:00:00 +0000
+++ COPYING 2011-08-14 15:11:23 +0000
@@ -0,0 +1,6 @@
+Most of the code is MIT licensed, some code is instead licensed
+under the LGPL and some under the GPL. Each source code file
+contain a header that describes the license for the code in that
+specific file.
+
+For More information see COPYING.GPL, COPYING.LGPL and COPYING.MIT.
=== added file 'COPYING.GPL'
--- COPYING.GPL 1970-01-01 00:00:00 +0000
+++ COPYING.GPL 2011-08-14 15:11:23 +0000
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
=== added file 'COPYING.LGPL'
--- COPYING.LGPL 1970-01-01 00:00:00 +0000
+++ COPYING.LGPL 2011-08-14 15:11:23 +0000
@@ -0,0 +1,510 @@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard. To achieve this, non-free programs must
+be allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+ Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
=== added file 'COPYING.MIT'
--- COPYING.MIT 1970-01-01 00:00:00 +0000
+++ COPYING.MIT 2011-08-14 15:11:23 +0000
@@ -0,0 +1,21 @@
+
+Copyright © 2005 Novell, Inc.
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without
+fee, provided that the above copyright notice appear in all copies
+and that both that copyright notice and this permission notice
+appear in supporting documentation, and that the name of
+Novell, Inc. not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+Novell, Inc. makes no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
\ No newline at end of file
=== added file 'ChangeLog'
--- ChangeLog 1970-01-01 00:00:00 +0000
+++ ChangeLog 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1795 @@
+2006-06-21 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c: Add updateTransientHint to protect against circular
+ transient dependencies. (bnc 186825)
+
+2006-06-20 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c (addWindowSizeChanges): Constrain window
+ dimensions if they are too large.
+
+ * gnome/window-decorator/gnome-window-decorator.c (get_mwm_prop):
+ Trap X errors.
+
+2006-06-20 Dan Winship <danw@xxxxxxxxxx>
+
+ * configure.ac (ALL_LINGUAS): Add pl
+
+2006-06-16 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/compiz.schemas.in.in: Regen.
+
+ * plugins/switcher.c:
+ * plugins/scale.c: Add modal dialogs and fullscreen windows
+ to default window types. (bnc 185749)
+
+ * gnome/window-decorator/gnome-window-decorator.c: Track motif
+ WM hints and disable decorations when application wants no
+ titlebar. (bnc 185852)
+
+2006-06-15 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/cube.c (cubePaintTransformedScreen): Remove
+ PAINT_SCREEN_CLEAR_MASK from mask.
+
+ * plugins/switcher.c (switchPaintScreen): Add PAINT_SCREEN_CLEAR_MASK
+ when zooming. (bnc 183676)
+
+ * src/paint.c (paintTransformedScreen): Clear color buffer if
+ PAINT_SCREEN_CLEAR_MASK is present.
+
+ * include/compiz.h: Add PAINT_SCREEN_CLEAR_MASK.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Add DM selection
+ support and --repalce option so it's possible to replace an
+ existing window decorator in the same way as it's possible to replace
+ a window manager. (bnc 185296)
+ (close_button_event):
+ (max_button_event):
+ (min_button_event): De-highlight on NotifyGrab. (bnc 185293)
+
+2006-06-12 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/cube.c:
+ * plugins/switcher.c: Mark cube as needing to load before switcher
+ rather than marking switcher as requiring cube. bnc #183676.
+
+ * plugins/gconf-dump.c (dumpPluginOptions): Output load_before and
+ requires for all plugins, even if the list is empty, to ensure
+ that an empty value in a new release overrides a non-empty value
+ in an older release.
+
+ * plugins/compiz.schemas.in.in: regen
+
+2006-06-09 Dan Winship <danw@xxxxxxxxxx>
+
+ * configure.ac: add translations
+
+2006-06-09 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/move.c (moveHandleMotionEvent): Handle shaded windows
+ better.
+
+ * src/window.c (maximizeWindow):
+ * src/event.c (handleEvent): Allow windows to be both maximized
+ and shaded.
+
+ * src/window.c: Update addWindowSizeChanges so it can be used by
+ moveResizeWindow.
+ (updateWindowAttributes): Add missing sendSyncRequest call.
+ (addWindowSizeChanges): Make maximized window placement a bit better.
+ (moveResizeWindow): Adjust window geometry using
+ addWindowSizeChanges. (bnc 183121)
+
+ * src/window.c: Only allow shading on windows with top decoration.
+
+ * src/event.c (handleEvent): Check that shade action is allowed
+ before shading a window.
+
+2006-06-08 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/decoration.c (decorInitWindow):
+ * plugins/minimize.c (minInitWindow):
+ * src/window.c (addWindow): Handle initially shaded windows
+ correctly.
+
+ * plugins/switcher.c (switchTerminate): Only use hideWindow
+ if switcher window is managed and mapped.
+ (switchInitiate): Only use showWindow if switcher window is
+ hidden. (bnc 182519)
+
+ * plugins/minimize.c (minHandleEvent): Make sure we adjust the window
+ region correctly when it's being unshaded.
+
+2006-06-07 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Bump version to 0.0.13.
+
+ * plugins/compiz.schemas.in.in: Regen.
+
+ * src/window.c: Add window shading support.
+
+ * src/screen.c:
+ * src/paint.c:
+ * src/event.c: Adjust for window shading support.
+ (handleEvent): Handle RESTACK client messages with sibling None
+ correctly.
+
+ * src/event.c:
+ * src/display.c: Add toggle window shade binding.
+
+ * plugins/minimize.c: Add window shading animation support.
+
+ * plugins/fade.c:
+ * plugins/place.c:
+ * plugins/resize.c:
+ * plugins/scale.c:
+ * plugins/switcher.c:
+ * plugins/decoration.c: Adjust for window shading support.
+
+ * include/compiz.h: Add window shading support.
+
+ * gnome/window-decorator/gnome-window-decorator.c: lower_window ->
+ restack_window and change it so it can be used for both
+ raising and lowering a window.
+ Add support for double_click_titlebar setting.
+ (title_event): Don't activate window on titlebar click only
+ raise it. Use double_click_action to determine what should be
+ done when titlebar is double clicked.
+ (update_event_windows): Remove vertical resize event windows
+ when top level window is shaded.
+ (window_state_changed): Update event windows when window state
+ changed.
+
+ * gnome/window-decorator/gnome-window-decorator.c:
+ * gnome/compiz-window-manager.c: Add support for shade double click
+ setting.
+
+ * plugins/compiz.schemas.in.in: Regen.
+
+ * plugins/cube.c (cubePaintTransformedScreen):
+ * plugins/wobbly.c (wobblyDrawWindowGeometry):
+ * plugins/switcher.c (switchPaintWindow):
+ * src/paint.c (drawWindowGeometry): Disable client-side texture
+ coordinate arrays that are not used. (bnc #182430)
+
+ * plugins/compiz.schemas.in.in:
+ * plugins/resize.c:
+ * plugins/move.c: Add initiate_keyboard binding which is more
+ appropriate for key-binding as it moves the cursor to middle of
+ window.
+
+2006-06-06 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/switcher.c: Track thumbnail damage correctly.
+ (switchPaintScreen): Only intercept paintScreen when screen is
+ grabbed or we're zooming and ss->translate > 0.001.
+ (switchPaintScreen): Paint switcher window correctly when we're
+ not zooming.
+ Add cube as a dependency to make sure background is rendered
+ correctly when zooming.
+ (bnc #181909)
+
+ * src/window.c (moveResizeWindow, ensureWindowVisibility):
+ Don't make sure fullscreen windows are in workarea.
+ (fdo #7115) (bnc #181907)
+
+ * src/event.c (handleEvent): Track XA_WM_CLASS property changes.
+
+ * src/window.c:
+ * include/compiz.h: remove updateWindowClass and update
+ updateWindowClassHints.
+
+2006-06-02 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Bump version to 0.0.12.
+
+ * src/event.c (handleEvent): Fix typo.
+
+ * gnome/window-decorator/gnome-window-decorator.c:
+ Hide tooltips on NotifyGrab. (bnc #180692)
+
+2006-06-01 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/event.c (handleEvent): If we receive a _NET_SHOWING_DESKTOP
+ request with no window set, set the flag on all screens. (Fixes
+ the KDE "show desktop" applet.) Also, don't allow a client to
+ change its _NET_WM_DESKTOP.
+
+ * src/window.c (addWindow): Set _NET_WM_DESKTOP on all windows to
+ 0; KDE's pager and tasklist require this to be set. (bnc 178320)
+
+2006-06-01 David Reveman <davidr@xxxxxxxxxx>
+
+ * include/compiz.h:
+ * src/window.c: Add updateWindowClass.
+
+2006-05-31 David Reveman <davidr@xxxxxxxxxx>
+
+ * include/compiz.h:
+ * src/screen.c:
+ * src/display.c: Add hide_skip_taskbar_windows option. (bnc 180055)
+
+ * include/compiz.h:
+ * src/window.c: Add getStartupId.
+
+ * src/screen.c: Save initial viewport when startup notification
+ is received. Fix implementation of applyStartupProperties.
+ (bnc 180224)
+
+ * src/event.c (handleEvent): Handle startup ID property changes.
+
+ * plugins/place.c: Adjust work area to initial viewport.
+
+ * plugins/cube.c (cubePaintTransformedScreen): Disable skydome
+ animation while cube is unfolded. (bnc 179833)
+
+ * plugins/switcher.c (switchPaintWindow): Make sure selected window is
+ not clipped incorrectly when some window is transformed. (bnc 179828)
+
+ * plugins/move.c (moveHandleEvent): Initialize xRoot and yRoot.
+ (bnc 179902)
+
+ * src/Makefile.am (INCLUDES): Add @GL_CFLAGS@. (Eric Work)
+
+2006-05-30 Dan Winship <danw@xxxxxxxxxx>
+
+ * configure.ac: Check libwnck for wnck_window_has_name (new in
+ HEAD).
+
+ * gnome/window-decorator/gnome-window-decorator.c
+ (wnck_window_get_real_name): #if HAVE_WNCK_WINDOW_HAS_NAME,
+ redefine wnck_window_get_name to return NULL if the window only
+ has a fallback name. bnc 173059.
+
+ * src/event.c (handleEvent): call moveInputFocusToOtherWindow()
+ before destroyWindow() when processing a DestroyNotify, or else
+ the input focus can get stranded.
+
+2006-05-26 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/compiz.schemas.in.in: Regen.
+
+ * plugins/scale.c (SCALE_SLOPPY_FOCUS_DEFAULT): TRUE.
+
+ * plugins/decoration.c (decorWindowUpdate): No drop-shadow decoration
+ on windows with below state.
+
+ * src/window.c (recalcWindowType): Treat dock windows with below state
+ as normal windows. (bnc #178316)
+
+ * plugins/cube.c (cubePaintTransformedScreen): Avoid optimized case
+ when more than 4 cube sides.
+
+2006-05-25 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/compiz.schemas.in.in: Regen.
+
+ * src/window.c (moveResizeWindow): Don't adjust position for NorthWest
+ gravity. (bnc 178765) (fdo #6992)
+
+ * plugins/compiz.schemas.in.in:
+ * include/compiz.h:
+ * src/event.c (handleEvent):
+ * src/display.c: Add maximize_window_horizontally,
+ maximize_window_vertically, toggle_window_maximized,
+ toggle_window_maximized_horizontally,
+ toggle_window_maximized_vertically.
+
+ * src/event.c (handleEvent): Track changes to maximizeWindow function.
+
+ * plugins/move.c (moveHandleMotionEvent): Make sure we have a saved
+ width before we use it. Track changes to maximizeWindow function.
+
+ * plugins/wobbly.c (wobblyHandleEvent): Handle the case where
+ window is not both vertically and horizontally maximized better.
+
+ * include/compiz.h: Add MAXIMIZE_STATE macro.
+
+ * include/compiz.h:
+ * src/window.c: Remove unmaximizeWindow and make maximizeWindow
+ take a state mask so it can be used for both maximizing and
+ unmaximizing.
+
+ * plugins/switcher.c: Don't add windows that appear after the switcher
+ is popped up. (bnc 178350)
+ (switchWindowRemove): Don't create a new list. Instead remove
+ window from the existing list and make sure we're positioned
+ correctly.
+
+2006-05-24 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/scale.c (scaleMoveFocusWindow): When moving to window on
+ left, make sure the window we're moving to is completely left of
+ currently selected window. And same thing when moving to window on
+ right, top, bottom.
+ (layoutThumbs): Set slot->x2 and slot->y2 correctly. (bnc 178216)
+
+2006-05-23 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/water.c: GL_UNSIGNED_INT_8_8_8_8_REV as pixel data type on
+ MSBFirst machines.
+
+ * src/texture.c: Include config.h before compiz.h so that
+ IMAGE_BYTE_ORDER is defined correctly. (bnc 178171)
+
+ * include/compiz.h: Define LSBFirst, MSBFirst, IMAGE_BYTE_ORDER,
+ BITMAP_BIT_ORDER. (bnc 178171)
+
+2006-05-23 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/switcher.c (switchToWindow): use ss->windows here as
+ well so that multiple activeNum==0 windows don't get skipped.
+ (switchTerminate): Remove the screen grab right away so that
+ keystrokes don't get dropped. bnc 177650
+ (switchPreparePaintScreen, switchPaintScreen,
+ switchDonePaintScreen): update for that
+
+2006-05-22 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/window.c (moveResizeWindow): deal with both vertical and
+ horizontal struts; but not when moving a dock window
+
+ * plugins/switcher.c (switchHandleEvent): Check init_all binding
+ before init, so you can bind "<Alt>" to init_all and so end up
+ with "<Alt>Tab" being init_all rather than init (but with no way
+ to get "init"...). bnc 173376
+
+2006-05-21 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/display.c (addDisplay): Select for button events on root windows.
+
+ * configure.ac: Bump version to 0.0.11.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Fix shadow
+ performance by separating the convolution filter into one vertical and
+ one horizontal pass.
+
+ * src/window.c (mapWindow): Give sync request on map another try, it
+ seems to be working now.
+
+ * src/window.c (addWindow): Allow XGetWindowAttributes to fail.
+ (bnc 173416).
+
+ * src/window.c (addWindow): Initialize managed to false. Set managed
+ to true if widows is viewable.
+
+ * src/event.c (handleEvent): Set managed to false when window
+ transitions to withdrawn state.
+ (handleEvent): Set managed to true when we get MapRequest.
+ (handleEvent): Constrain configure request if window is managed.
+
+ * include/compiz.h: Add "managed" variable that is true while
+ windows is managed.
+
+2006-05-19 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/switcher.c (ICON_SIZE): Allow use of larger window icons.
+
+2006-05-18 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/wobbly.c (WOBBLY_FOCUS_DEFAULT): Set this to "None" to
+ match wobblyInitScreen() so that it actually works right.
+
+ * plugins/compiz.schemas.in.in: regen
+
+2006-05-18 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/session.c (saveYourselfCallback): if we have a
+ RestartCommand registered with the session manager, update the
+ --sm-client-id in it to match the id we were assigned. bnc 176746
+
+ * src/main.c (main, usage): remove unused --sm-save-file arg and
+ fix documentation of --sm-client-id.
+
+2006-05-17 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/compiz.schemas.in.in: Regen (Overlay Icon).
+
+ * plugins/switcher.c (switchPaintScreen): Don't remove switcher
+ from window list, just temporarily mark it as destroyed. This fixes
+ issue with switcher decorations disappearing when some window is
+ unmapped.
+
+ * src/screen.c (updateDefaultIcon): width and height should be
+ unsigned.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Add minimal
+ option that can be used to run g-w-d with drop-shadows but without full
+ window decorations.
+
+ * plugins/minimize.c (minHandleEvent): Restore window position
+ when transitioning to withdrawn state.
+
+ * plugins/scale.c: Remove next_window binding and fix so that arrow
+ keys can be used to select window.
+ Focus new window when pointer enter window decorations and sloppy focus
+ is used.
+ Remove scaleSelectWindow.
+
+ * plugins/scale.c: Icon support (Nat Friedman).
+
+2006-05-17 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/display.c (handleSelectionClear, eventLoop): don't process
+ exit-on-selection-clear until the event queue is empty, or else
+ MapRequest and ConfigureRequest events could get lost. bnc 175558
+
+2006-05-14 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/event.c (handleEvent): mapNum might be 0 if we found the window
+ unmapped when trying to bind it to a texture.
+
+2006-05-12 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/screen.c (enterShowDesktopMode): Only go into show desktop mode
+ when some window is being hidden.
+
+ * src/event.c (handleWindowDamageRect): Make sure placed is set to true
+ when no plugin is doing placement.
+ (handleEvent): Don't set WM_STATE on override redirect windows.
+
+ * plugins/switcher.c (isSwitchWin): Don't show windows that ask not to
+ be in tasklists.
+
+ * plugins/rotate.c (rotateHandleEvent): Only adjust viewport if window
+ has been placed.
+
+ * plugins/minimize.c (minHandleEvent): Reset everything when going
+ into withdrawn state.
+
+ * src/window.c (moveResizeWindow): Handle west and north gravity
+ correctly.
+
+2006-05-11 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/display.c (addDisplay):
+ * src/screen.c (addScreen): Move server grab to addDisplay to make
+ sure that no windows are created between XSelectInput and XQueryTree
+ as that would result in them being added two times.
+
+ * src/window.c (moveResizeWindow): Fix typo, CWY should be CWX.
+ (moveResizeWindow): Constrain Y position so that window titlebar is
+ visible.
+ (restoreWindowGeometry): Fix issue with going from maximized state
+ to non-maximized state without changing the window size.
+
+ * gnome/window-decorator/gnome-window-decorator.c
+ (max_window_name_width): Make sure title text fit in titlebar.
+
+2006-05-11 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/gconf-compiz-utils.c (gconfStringToBinding): Treat "" as
+ meaning "disabled"
+
+2006-05-11 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/window-decorator/gnome-window-decorator.c (action_menu_map):
+ Don't show window action menu on desktop and dock windows.
+
+ * src/event.c (handleEvent): Allow click on window decorations
+ to trigger window action menu.
+
+ * plugins/place.c (placeWindow): Place fullscreen and maximized
+ windows correctly.
+ (placeWindow): Only clip dialog position to screen if parent is
+ visible in current viewport.
+
+2006-05-09 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/switcher.c (switchPaintThumb): Rearrange code so we handle
+ the case when bindWindow fails.
+
+ * src/paint.c (paintWindow): Bail out if window is not mapped.
+
+ * src/window.c (bindWindow): Make sure window is mapped when
+ getting the window pixmap. (bnc 173248)
+
+ * plugins/compiz.schemas.in.in: Regen.
+
+ * plugins/cube.c (CUBE_MIPMAP_DEFAULT): Enable by default as
+ performance seem to be OK now when new mipmaps are only generated
+ when necessary.
+
+ * src/texture.c (enableTexture): Don't generate new mipmaps
+ every time the texture is used.
+
+2006-05-08 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/switcher.c: Allow switcher to be initiated with prev
+ bindings. (Quinn Storm)
+
+2006-05-07 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/compiz.schemas.in.in: Regen.
+
+ * plugins/switcher.c: Add icon support, minimized windows support
+ and allow switcher to show up when only one selectable window exist.
+
+ * images/Makefile.am: Add default icon image.
+
+ * include/compiz.h:
+ * src/texture.c:
+ * src/event.c (handleEvent):
+ * src/screen.c:
+ * src/display.c:
+ * src/window.c: Add WM icon interface.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Compute
+ switcher title text width correctly.
+
+ * src/event.c (handleEvent): Insert windows correctly when
+ reparenting.
+
+2006-05-07 Dan Winship <danw@xxxxxxxxxx>
+
+ * configure.ac: Add --with-scale-corner option and make
+ compiz.schemas reflect it; the best corner to use depends on where
+ the panels are and what's on them, so distros will want to
+ override this to match their default panel layout.
+
+ * src/event.c (eventMatches): Fix the the "water plugin gets
+ mysteriously activated when activating some other keybinding" bug.
+
+2006-05-05 Dan Winship <danw@xxxxxxxxxx>
+
+ * Makefile.am:
+ * autogen.sh:
+ * configure.ac: require intltool for option-description
+ translation
+
+ * plugins/Makefile.am: translate compiz.schemas.in into
+ compiz.schemas
+
+2006-05-05 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/display.c (COMMAND_OPTION): Put numbers into the shortDescs
+ of the command and run_command options
+
+ * plugins/wobbly.c (WOBBLY_SNAP_MODIFIERS_DEFAULT): Use Shift
+ rather than Control, for consistency with Metacity, and to remove
+ the ambiguity about whether Ctrl+Alt+Button1 should be "grab cube"
+ or "move with snapping". (bnc 169402)
+
+ * plugins/compiz.schemas: regen
+
+2006-05-05 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/compiz.schemas: Regen.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Forward
+ metacity's bell settings to compiz.
+
+ * plugins/water.c:
+ * plugins/wobbly.c:
+ * plugins/fade.c: Add visual bell.
+
+ * include/compiz.h:
+ * src/display.c: Add audible bell option.
+
+2006-05-04 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c (getModalTransient): Avoid infinite recursion when more
+ than one group transient got modal state.
+
+2006-05-03 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/move.c:
+ * plugins/resize.c (resizeHandleMotionEvent): Don't constrain the
+ cursor.
+
+ * plugins/rotate.c (rotateHandleEvent): Use defaultViewportForWindow
+ to figure out which viewport we should move to. (bnc 152677)
+
+ * src/window.c (addWindowSizeChanges): Offset x coordinate with
+ default viewport coordinate. (bnc 171465)
+ (updateWindowAttributes): Always add windows size changes. (bnc 171465)
+
+ * include/compiz.h:
+ * src/window.c (defaultViewportForWindow): Add defaultViewportForWindow
+ function that computes the default viewport for a window.
+
+2006-05-02 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/cube.c (cubePaintTransformedScreen): Bump up size a bit more
+ to make sure the cube unfolds completely.
+
+ * src/event.c (handleEvent): Not constraints should be applied to
+ ConfigureRequests for withdrawn windows. (bnc 171143)
+
+ * src/window.c (syncWindowPosition): We never need to send synthetic
+ ConfigureNotify events as we're not reparenting windows.
+
+2006-05-02 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/gconf-dump.c: rewrite to make compiz.schema regeneration
+ a little easier, and to make it possible to generate schema files
+ for third-party plugins. Include plugin descriptions and
+ dependency information in the schema.
+
+ * plugins/Makefile.am: add a rule to generate compiz.schemas
+
+ * plugins/compiz.schemas: regen
+
+ * plugins/cube.c, plugins/decoration.c, plugins/fade.c,
+ plugins/gconf.c, plugins/minimize.c, plugins/wobbly.c:
+ s/expose/scale/ in dependencies
+
+2006-05-02 David Reveman <davidr@xxxxxxxxxx>
+
+ * include/compiz.h:
+ * configure.ac: Don't require glproto, include necessary enums in
+ compiz.h.
+
+ * src/texture.c:
+ * include/compiz.h: Update to latest EXT_tfp spec. Requires an
+ X server that has also been updated.
+
+ * configure.ac: Require glproto >= 1.4.7 with final EXT_tfp tokens.
+
+2006-05-01 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c (circulateWindow):
+ * src/event.c (handleEvent): Use getTopWindow instead of
+ reverseWindows->id as reverseWindows might be a destroyed window.
+
+ * include/compiz.h:
+ * src/screen.c: Add getTopWindow function that returns top window.
+
+2006-04-30 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/compiz.schemas: Regen.
+
+ * plugins/decoration.c (decorWindowUpdate): Don't decorate fullscreen
+ windows.
+
+ * plugins/cube.c: Add initial support for unfolding the cube. Default
+ key-binding is <Control><Alt>Down.
+
+ * plugins/rotate.c (rotateHandleEvent): Fix absolute rotation.
+
+ * plugins/switcher.c: Fix so that bring-to-front doesn't change
+ the actual stacking order.
+ Add zoom option, enable it by default so it gets some testing.
+ Made bring-to-front enabled by default as it makes zoom functionality
+ more useful.
+ Made switcher window always rendered above all other windows and
+ not affected by screen transformations.
+
+ * src/event.c (handleEvent): Send configure notify before mapping
+ window if PPosition or USPosition is set.
+
+ * src/screen.c (insertWindowIntoScreen): Sibling above doesn't have to
+ be mapped. This change seem to currently by causing the
+ stacking order of some override-redirect windows to be incorrect.
+ Don't insert window when aboveId doesn't match an existing window.
+ (removeScreenGrab): ifdef DEBUG around abort.
+
+ * src/event.c (handleEvent): Only update active window property
+ when it's changing.
+
+ * src/window.c (sendConfigureNotify): Make sure the latest
+ window attributes are put in the ConfigureNotify.
+ (moveResizeWindow): Only send sync request if window is mapped.
+
+ * plugins/rotate.c: Add support for edge-flipping when using
+ drag-and-drop. Remove edge_flip and flip_move options and add
+ edge_flip_pointer, edge_flip_move, edge_flip_dnd.
+
+ * src/screen.c:
+ * src/display.c:
+ * include/compiz.h:
+ Make screen edges drag-and-drop aware.
+
+ * plugins/zoom.c:
+ * plugins/water.c:
+ * plugins/switcher.c:
+ * plugins/scale.c:
+ * plugins/rotate.c:
+ * plugins/resize.c:
+ * plugins/move.c:
+ * src/scren.c:
+ * include/compiz.h:
+ Variable argument list to otherScreenGrabExist, last argument must
+ be 0.
+
+ * src/event.c:
+ * src/display.c:
+ * include/compiz.h: Add raise-on-click option.
+
+ * gnome/window-decorator/gnome-window-decorator.c (title_event):
+ Activate window when clicking titlebar.
+
+2006-04-28 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/window-decorator/gnome-window-decorator.c: Back out last change
+ as it clearly didn't fix anything. XFixed being defined as "int"
+ is perfectly fine of course. libXrender is currently broken on 64bit.
+ See Bug #6774 for a fix.
+ (XRenderSetPictureFilter_wrapper): Add workaround for 64bit
+ issue in libXrender. (Dan Winship)
+
+ * src/event.c (handleEvent):
+ * src/display.c:
+ * include/compiz.h:
+ Add show desktop binding. (Martin Szulecki)
+
+ * plugins/rotate.c: Reset timout handle correctly.
+
+ * plugins/move.c:
+ * plugins/resize.c:
+ * plugins/rotate.c:
+ * plugins/scale.c:
+ * plugins/switcher.c:
+ * plugins/water.c:
+ * plugins/zoom.c: Track screen grab changes changes.
+
+ * src/screen.c:
+ * include/compiz.h: Associate all screen grabs with a name. Add
+ otherScreenGrabExist function which can be used to check if screen
+ is grabbed by other plugins.
+
+2006-04-28 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/event.c (eventMatches): new method that replaces EV_KEY and
+ EV_BUTTON. Tests if an event matches a binding, being more precise
+ about modifier state than EV_KEY and EV_BUTTON were.
+ (eventTerminates): Tests if an event is "the opposite" of a
+ binding. (Eg, button or modifier key release.) Replaces
+ CompReleaseMask and "terminate" bindings.
+ (handleEvent): Use eventMatches
+
+ * src/screen.c (addPassiveKeyGrab, removePassiveKeyGrab,
+ updatePassiveKeyGrabs): When passed a keybinding containing just
+ modifiers, grab/ungrab every keypress event that would result in
+ that modifier state (eg, both left and right modifier keys, and
+ allow them to be pressed in any order).
+
+ * src/display.c: Remove CompPressMask from default bindings.
+ (eventLoop): don't add virtual modifiers to event state.
+ (updateModifierMappings): store the XModifierKeymap for later
+ use.
+
+ * plugins/*.c: Use eventMatches and eventTerminates. Remove
+ CompPressMask and "terminate" bindings (except from scale, which
+ is different from the others).
+
+ * plugins/switcher.c: Make initiate_all be just the modifier key
+ used in addition to the initiate binding ("<Control>"). Remove
+ next_window since it doesn't make a lot of sense to have it be
+ different from initiate_all, and make prev_window be just a
+ modifier key as well. ("<Shift>").
+ (SwitchScreen): add extra options to store the fully-composed
+ initiate_all, prev, and prev_all bindings.
+ (switchScreenInitOptions, switchSetScreenOption): Generate and
+ regenerate initiate_all, prev, and prev_all bindings as needed.
+ (switchHandleEvent): update
+
+ * plugins/gconf-compiz-utils.c: Remove "<Release>" handling.
+
+ * plugins/compiz.schemas: regen, dropping the terminate bindings
+ and updating a few others.
+
+ * include/compiz.h: remove CompPressMask, CompReleaseMask,
+ EV_BUTTON, and EV_KEY. Add eventMatches, eventTerminates, and
+ keycodeToModifiers. Add modMap field to CompDisplay.
+
+2006-04-28 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/water.c: Handle enter/leave notify events.
+
+ * plugins/decoration.c (decorInitWindow): Check for window specific
+ decoration on both mapped and unmapped windows so that initially
+ minimized windows get properly decorated. (Dan Winship)
+
+ * gnome/window-decorator/gnome-window-decorator.c: Use xfixed_16_16_t
+ instead of XFixed to avoid 64bit issue with XFixed being defined as
+ "int".
+
+ * configure.ac: xrender 0.8.4 is good enough.
+
+2006-04-27 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/rotate.c (rotateHandleEvent): for the
+ rotate-to-specific-face keys, rotate counterclockwise when that's
+ faster. (bnc 169427)
+
+ * plugins/scale.c (scaleHandleEvent): Make the corners toggle
+ scale mode rather than only activating it. (bnc 169408)
+
+2006-04-27 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Bump version to 0.0.10.
+
+ * plugins/decoration.c: Remove debug variable.
+
+ * src/window.c (addWindow): Check if window is minimized. (Dan Winship)
+
+ * plugins/compiz.schemas: Regen (snapoff and maximize_effect).
+
+ * plugins/wobbly.c: Add maximize effect.
+
+ * plugins/zoom.c:
+ * plugins/water.c:
+ * plugins/rotate.c:
+ * plugins/resize.c:
+ * plugins/move.c:
+ * src/event.c:
+ * src/screen.c:
+ * src/display.c:
+ * include/compiz.h: Add proper warp pointer interface and update
+ all plugins to use it.
+
+2006-04-26 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/event.c (handleEvent): activate window on Button2 click in
+ addition to Button1 and Button3.
+
+ * plugins/gconf.c (gconfSetOption): gconf_value_compare against
+ the old value for list-type options too.
+ (gconfInitOption): Change the call to gconf_client_get_entry to
+ request the default value again; the fix to gconfSetOption will
+ prevent the infinite loops that happened before.
+
+2006-04-26 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/window-decorator/gnome-window-decorator.c (update_shadow):
+ Remove comment that is no longer valid.
+
+ * plugins/move.c: Support for maximized windows snap-off. Based on
+ patch by Colin Guthrie.
+
+ * plugins/rotate.c (rotateHandleEvent): Don't do edge flipping
+ when a horizontally maximized or fullscreen window is grabbed.
+
+ * plugins/zoom.c:
+ * plugins/rotate.c:
+ * plugins/resize.c:
+ * plugins/move.c:
+ * src/screen.c:
+ * include/compiz.h: Add warpPointerToScreenPos and use it everywhere
+ we want to invisibly warp the pointer.
+
+2006-04-25 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/window-decorator/gnome-window-decorator.c:
+ * plugins/decoration.c: Add clamp and min size.
+
+ * plugins/decoration.c (decorReleaseDecoration): Fix memory leak.
+
+ * plugins/scale.c: Click on background leaves scale mode and enters
+ show desktop mode. (Dan Winship)
+
+ * plugins/minimize.c (minHandleEvent): Initialize scale and
+ translate properly.
+
+ * src/window.c (activateWindow):
+ * src/event.c (handleEvent):
+ * src/screen.c: Add window parameter to leaveShowDesktopMode and
+ use this function for making one window leave show desktop mode.
+ Fixes so that we're leaving show desktop mode when no windows
+ are longer hidden.
+
+ * plugins/scale.c (scaleSetScreenOption): Add missing break statement.
+
+ * plugins/rotate.c (rotateInitScreen): Initialize rotateHandle.
+
+ * src/paint.c (paintScreen): Only paint windows that have been
+ damaged.
+
+2006-04-24 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/scale.c:
+ * plugins/switcher.c: clarify the "initiate" descriptions
+
+ * plugins/compiz.schemas: regen
+
+2006-04-24 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/paint.c (paintScreen): Always call paintWindow when window
+ is visible. Fixes so that window animations (fade, minimize...) aren't
+ paused when if window becomes invisible.
+ (paintWindow): Return early if region is empty.
+
+ * plugins/switcher.c: Use hideWindow and showWindow so that the
+ decoration doesn't have to be redrawn every time the switcher window
+ is mapped.
+
+ * src/window.c:
+ * include/compiz.h: Add hidden flag, that can be used to hide windows
+ without minimizing them.
+
+ * plugins/compiz.schemas: Regen (drop-shadow options).
+
+ * configure.ac: xrender 0.9, required for g-w-d.
+
+ * gnome/window-decorator/gnome-window-decorator.c:
+ * plugins/decoration.c: Add configurable drop-shadows. A minor issue is
+ that shadows around "tiny" windows are not rendered correctly when
+ large shadow offsets are used. Solution is to have the decorator set
+ a minimum size for which a decoration can be used so that no shadows
+ are rendered around "tiny" windows.
+
+2006-04-20 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/rotate.c: add 12 go-directly-to-cube-face and 12
+ go-directly-to-cube-face-with-window bindings.
+
+ * src/display.c (compDisplayInitOptions): fix the binding type on
+ WINDOW_MENU.
+
+ * plugins/compiz.schemas: Regen. (lower_window, window_menu,
+ scale_image, images, resize, flip_move, move_window_types, and the
+ new rotate bindings)
+
+2006-04-20 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c:
+ * src/event.c (handleEvent):
+ * src/display.c:
+ * include/compiz.h:
+ * gnome/window-decorator/gnome-window-decorator.c: Add force quit
+ dialog.
+
+ * plugins/resize.c: Changed default binding to Button2.
+
+ * src/display.c (LOWER_WINDOW_BUTTON_DEFAULT): Button2 -> 6.
+
+ * gnome/window-decorator/gnome-window-decorator.c:
+ * include/compiz.h:
+ * src/event.c (handleEvent):
+ * src/display.c: Add window menu binding.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Pick up toolkit
+ actions from compiz and send gnome panel actions for "main menu" and
+ "run dialog" actions.
+
+ * src/event.c (handleEvent):
+ * src/screen.c:
+ * include/compiz.h:
+ * src/display.c (addDisplay): panel action -> toolkit action.
+
+ * src/window.c (getModalTransient): Group transient must not be an
+ ancestor to the window we've currently found as the window to focus.
+ (getModalTransient): Check for child modal transient.
+
+2006-04-19 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/compiz-window-manager.c: Be nice to gnome-theme-manager
+ and return a theme even though we currently don't support it.
+
+ * include/compiz.h:
+ * src/main.c: Remove window-image option.
+
+ * include/compiz.h:
+ * plugins/water.c:
+ * plugins/cube.c:
+ * src/texture.c:
+ * src/paint.c:
+ * src/main.c: Add strict-binding option.
+
+2006-04-18 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/event.c (handleEvent): Fix a crasher in the screenshot
+ binding code (and rename some of the #defines to make them not so
+ ridiculously long). Also temporarily hack around a bug in EV_KEY
+ by putting the check for WINDOW_SCREENSHOT before the check for
+ SCREENSHOT.
+
+ * plugins/scale.c: Change the keybinding again, now to "Pause".
+ (F11 is the "fullscreen mode" binding for many apps.)
+
+ * plugins/compiz.schemas: update
+
+ * plugins/gconf.c:
+ * plugins/gconf-compiz-utils.c:
+ * plugins/gconf-dump.c: Rearrange #includes to prevent warning
+ about TRUE and FALSE being redefined
+
+2006-04-18 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/rotate.c (ROTATE_FLIPMOVE_DEFAULT): Changed to TRUE.
+
+ * src/window.c (recalcWindowActions): Remove maximize and fullscreen
+ actions when resizing isn't allowed.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Dynamic positioning
+ of window buttons.
+
+ * plugins/cube.c (readSvgToTexture): Fix typo.
+
+ * plugins/resize.c: Constrain cursor movement to min/max window size.
+
+ * src/window.c (constrainNewWindowSize): Fix aspect ratio calculations.
+
+2006-04-17 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/cube.c: Put PNG on top face by default.
+
+ * images/Makefile.am: Remove window.png.
+ Add novell.png.
+
+ * include/compiz.h:
+ * src/readpng.c: Add openImageFile.
+
+ * plugins/cube.c: Support for PNGs on top face.
+ Add scale image option which is used to determine if top face
+ image should be scaled or not.
+
+2006-04-15 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/wobbly.c: Add modal dialog type to default list of windows
+ that should be wobbly when moved.
+
+ * plugins/water.c (SET): +1 for border.
+
+2006-04-14 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/gconf-dump.c: add "water" to gconfDeps
+
+ * plugins/compiz.schemas: regen including the water options
+
+2006-04-14 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/event.c (handleWindowDamageRect): Ignore damage from windows
+ that aren't redirected.
+
+ * include/compiz.h:
+ * src/window.c:
+ * src/display.c (eventLoop):
+ * src/screen.c: Add support for automatic unredirecting of fullscreen
+ windows.
+
+ * plugins/scale.c (scaleInitiate): Layout thumbnails before we
+ grab the screen to make sure some window exist.
+
+ * plugins/resize.c: Allow 4-way resize. (Mike Hearn)
+
+2006-04-13 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/screen.c (panelAction): take a timestamp and pass that to
+ the panel rather than using CurrentTime
+
+ * src/event.c (handleEvent): update for that
+
+ * src/window.c (moveResizeWindow): fix the gravity handling so
+ self-resizing windows don't dance (although I'm pretty sure this
+ is a symptom of mishandling gravity somewhere else).
+
+ * plugins/gconf.c (gconfInitOption): Request the default value of
+ the key from gconf, rather than initializing the key to the
+ internal default value if it hasn't yet been set by the user.
+ Notably, this makes it so that "compiz gconf" on a new account
+ will use the default value of active_plugins rather than the
+ (effectively empty) list of plugins on the command line. (It also
+ makes it so that the sysadmin can override defaults via sabayon or
+ whatever.)
+
+2006-04-13 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c (mapWindow): Maybe not, disable it again. :(
+
+ * src/window.c (mapWindow): Enable draw synchronization on map
+ again. Should be working correctly with CVS version of X server.
+
+2006-04-12 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/window.c (moveResizeWindow): move duplicated code from
+ _NET_MOVERESIZE_WINDOW and ConfigureRequest handlers in event.c to
+ here, and handle gravity as well. (Fixes bnc 163058.)
+ (updateWindowAttributes): Do nothing if the window is
+ override_redirect (and remove a few now-redundant checks of that
+ elsewhere). Previously we were forgetting to check
+ !override_redirect in the case where the motif hints changed. (bnc
+ 163931)
+ (getWindowUserTime): fix a cut-and-paste-o that caused a crash on
+ 64bit machines.
+
+ * src/event.c (handleEvent): fix the _NET_MOVERESIZE_WINDOW bit
+ manipulation to correspond to what the EWMH means rather than what
+ it says, and use moveResizeWindow for that and for
+ ConfigureRequest.
+
+ * plugins/gconf-compiz-utils.c (gconfBindingToString): DTRT with
+ "None" bindings.
+
+ * gnome/window-decorator/gnome-window-decorator.c (title_event):
+ if the user right-clicks on the titlebar while the context menu is
+ popped up, just pop it down and eat the click, like all other
+ GNOME context menus do.
+ (style_changed, value_changed): Don't add decorations to
+ previously-undecorated windows. (bnc 165393)
+
+2006-04-11 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/screen.c (addScreen): Fix typo.
+
+2006-04-10 Dan Winship <danw@xxxxxxxxxx>
+
+ * src/window.c (focusWindowOnMap): new function to decide whether
+ or not to focus a newly-mapped window. In addition to the old
+ checks, this also checks that _NET_WM_USER_TIME isn't 0, to allow
+ a window to explicitly request to not get focus.
+
+ * src/event.c (handleEvent): use focusWindowOnMap when processing
+ MapRequest.
+
+ * plugins/rotate.c (rotateHandleEvent): fix _NET_ACTIVE_WINDOW
+ handling so this doesn't interfere with focusable panel applets.
+
+ * plugins/compiz.schemas: regen (fixing cube top/bottom color)
+
+ * plugins/gconf-dump.c: Handle CompOptionTypeColor.
+
+ * configure.ac: Add --enable-gconf-dump so that the gconf-dump
+ plugin doesn't get built in normal builds
+
+ * plugins/Makefile.am: make gconf-dump optional.
+
+2006-04-09 Dan Winship <danw@xxxxxxxxxx>
+
+ * plugins/gconf-dump.c: add plugin options, and add information
+ about restrictions (numeric ranges, specific string values) to the
+ long description. Make gconf-dump refuse to run if gconf is
+ running (since you want the defaults it writes out to be coming
+ from the defaults in the source code, not from any gconf
+ overrides).
+
+ * plugins/compiz.schemas: regen
+
+ * plugins/gconf.c (gconfGetOptionValue): don't call gconfSetOption
+ from here, or we'll get an infinite loop when anything changes
+
+2006-04-09 David Reveman <davidr@xxxxxxxxxx>
+
+ * include/compiz.h:
+ * src/display.c:
+ * src/main.c:
+ * src/screen.c:
+ * src/texture.c:
+ * src/window.c: Remove test mode.
+
+ * plugins/Makefile.am: Remove schema from CLEANFILES.
+
+ * plugins/compiz.schemas:
+ * src/display.c:
+ Improve documentation for runcommand keys slightly. (Mike Hearn)
+
+ * include/compiz.h:
+ * src/texture.c:
+ * src/screen.c (addScreen): Switch to using GLX 1.3 functions.
+ (James Jones)
+
+ * src/main.c: Indirect rendering option. (James Jones)
+
+2006-04-08 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/water.c: Add rain delay option. (Emilie Roberts)
+
+2006-04-07 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/gconf-dump.c: Dump list options correctly.
+
+ * plugins/rotate.c: Add flip_move option, edge flipping is only
+ used when moving windows if this option is enabled.
+ (rotateHandleEvent): Make we don't rotate when some other plugin
+ has grabbed the screen.
+
+ * plugins/scale.c: Change default key-binding to F11.
+ (scaleInitiate): Make sure screen isn't grabbed by some other plugin.
+ (scaleInitScreen): Initialize darkenBack properly.
+
+ * configure.ac: Bump version to 0.0.9.
+
+ * plugins/Makefile.am (CLEANFILES, EXTRA_DIST): Fix.
+
+ * plugins/rotate.c (ROTATE_SPEED_DEFAULT): 1.5.
+
+2006-04-07 Dan Winship <danw@xxxxxxxxxx>
+
+ (Much of this patch was written by Radek Doulik
+ <rodo@xxxxxxxxxx>.)
+
+ * src/display.c:
+ * src/event.c:
+ * src/screen.c: Move keybinding stuff to CompDisplay, making it no
+ longer settable per-screen. Add bindings for screenshots (for
+ compatibility with metacity, which handles that keybinding in
+ GNOME for historical reasons).
+
+ * include/compiz.h: add an explicit CompBindingTypeNone rather
+ than relying on modifiers==0 to mean none. Update bindings stuff.
+
+ * src/screen.c (removePassiveKeyGrab, removePassiveButtonGrab):
+ Fix these to remove the right grab rather than always removing the
+ most-recently-added one.
+ (addScreenBinding): deal with CompBindingTypeNone
+
+ * plugins/gconf-dump.c: hacky plugin to dump information about the
+ other plugins to a gconf schemas file (used to regenerate
+ compiz.schemas)
+
+ * plugins/gconf-compiz-utils.c: shared code between gconf.c and
+ gconf-dump.c
+
+ * plugins/Makefile.am: add gconf-dump plugin and compiz.schemas,
+ and code to install compiz.schemas.
+
+ * configure.ac: Update gconf test to set macros needed for schema
+ install.
+
+2006-04-07 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/rotate.c: Add edge flipping support.
+
+ * plugins/scale.c: Allow corner screen edges to be used for
+ initiating scale mode.
+
+ * src/option.c (compSetBoolOption): Only return TRUE if value changed.
+
+ * src/screen.c:
+ * src/window.c:
+ * plugins/minimize.c:
+ * plugins/decoration.c:
+ * include/compiz.h: Add immediate argument to MoveNotify, immediate
+ means that any animations should be avoided.
+
+ * src/screen.c:
+ * plugins/water.c:
+ * plugins/resize.c:
+ * plugins/place.c:
+ * plugins/move.c:
+ * plugins/zoom.c:
+ * plugins/rotate.c:
+ * plugins/scale.c:
+ * src/event.c:
+ * include/compiz.h:
+ Add previous pointer position that can be shared between multiple
+ plugins.
+
+2006-04-06 David Reveman <davidr@xxxxxxxxxx>
+
+ * include/compiz.h:
+ * src/screen.c: Add screen edges and simple interface for enabling
+ and disabling them.
+
+ * plugins/switcher.c (switchDamageWindowRect)
+ (switchWindowRemove): Update switcher list even when screen isn't
+ grabbed.
+
+ * plugins/switcher.c (switchDamageWindowRect):
+ * include/compiz.h:
+ * src/event.c (handleEvent):
+ * src/window.c: Made it possible to select if window should be
+ stacked above fullscreen windows or not.
+
+ * src/window.c (findSiblingBelow): Only find a fullscreen sibling
+ if aboveFs is TRUE.
+ (activateWindow): Allow stacking of window above fullscreen windows
+ when being activated.
+
+2006-04-05 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/water.c (fboEpilogue): Reset raster position. Avoids
+ an FBO/raster-position issue found in newer nvidia drivers.
+
+ * plugins/move.c: Add constrain_y option that constrains window
+ movement so that top of window is always visible (on by default).
+
+ * src/event.c (handleEvent): Change active window property even though
+ it's not different than the window we currently have as active.
+
+ * src/window.c (moveInputFocusToWindow): Set focus even though
+ the window is considered the active window.
+
+2006-04-03 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/water.c: Use char everywhere instead.
+ Fix offset direction (P-a Bäckström).
+ Add offset scale option.
+
+ * plugins/water.c: (loadFragmentProgram): GLubyte -> const GLbyte.
+ (loadWaterProgram): char -> GLbyte.
+ (loadBumpMapProgram): char -> GLbyte.
+ Use char everywhere.
+
+ * configure.ac: Bump version to 0.0.8.
+
+ * plugins/water.c: Add simple rain effect.
+ (loadFragmentProgram): Clear any previous error.
+
+ * src/display.c: Change so that timeouts are not only triggered
+ when we're idle.
+
+2006-04-02 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/water.c: Add scale and bias to normal so that light can be
+ computed correclty. Offset texture coordinates for nice refraction
+ effect. (P-a Bäckström)
+ (waterDrawWindowTexture): Add scaling after setting up texture
+ coordinate generation.
+ Fix up loading of bump map programs.
+ (softwareUpdate): Improve performance of software fall-back code a bit.
+ (waterDrawWindowTexture): Always use filter for when window is
+ transformed.
+
+ * plugins/gconf.c (gconfGetValue): Fix typo that caused color
+ parsing to be incomplete (Quinn Storm).
+
+2006-04-01 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/switcher.c: Add "initiate all" binding which brings up the
+ switcher window with all mapped windows and "initiate" binding will
+ now bring up the switcher window with only the visible windows.
+
+2006-03-31 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/minimize.c (minDamageWindowRect): Never leave windows
+ in scaled state.
+
+ * src/screen.c (moveScreenViewport): Move hidden windows as well.
+
+ * src/window.c (addWindow, activateWindow, hideWindow)
+ (showWindow):
+ * src/screen.c (enterShowDesktopMode, leaveShowDesktopMode):
+ * src/event.c (handleEvent):
+ * include/compiz.h: Fix up show desktop mode.
+
+ * plugins/water.c (fboVertices): return 1.
+
+2006-03-30 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/texture.c (enableTexture): Always make sure mipmaps are up to
+ date when using GL_LINEAR_MIPMAP_LINEAR filter.
+
+2006-03-29 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/window-decorator/gnome-window-decorator.c: Draw outline around
+ window title text and buttons instead of small shadow.
+
+ * src/event.c (handleEvent):
+ * include/compiz.h:
+ * src/window.c: Set allowed window actions more correctly.
+
+ * plugins/move.c: Add opacity option.
+
+ * plugins/Makefile.am: Add water plugin. It's not very useful yet
+ and it needs more work but it's a good example of how to use
+ GL_ARB_fragment_program and GL_EXT_framebuffer_object for visual
+ effects.
+
+ * src/screen.c (addScreen): Fix light position.
+
+ * src/paint.c (paintWindow):
+ * plugins/switcher.c (switchPaintThumb):
+ * plugins/decoration.c (decorPaintWindow):
+ * include/compiz.h: Make drawWindowTexture a screen function so that
+ plugins can wrap it.
+
+ * src/texture.c (enableTexture):
+ * src/screen.c (addScreen):
+ * include/compiz.h: GL_EXT_framebuffer_object and
+ GL_ARB_fragment_program support.
+
+2006-03-21 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/window-decorator/gnome-window-decorator.c (lower_window): Don't
+ try to lower a window below hidden windows or desktop windows.
+
+2006-03-20 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/wobbly.c (wobblyHandleEvent):
+ xunmap -> xmap (François Ingelrest).
+
+ * src/screen.c (isClientListWindow): All type of windows should go into
+ the client lists (Thanks to Quinn Storm).
+
+ * src/window.c (freeWindow): Destroy frame window.
+ (mapWindow): Fix so the sync requests are sent correctly when a window
+ is mapped but disable it for now as it seems to be causing problems
+ with some applications.
+ (recalcWindowActions): Allow dialog window actions on util and
+ toolbar windows.
+
+ * src/event.c (handleEvent): Remove event mask and button grabs
+ when window is reparented.
+ (handleEvent): Update client list when window type changes.
+ (handleEvent): Use constrainNewWindowSize on move/resize client
+ messages and configure requests.
+
+ * gnome/window-decorator/gnome-window-decorator.c (window_closed):
+ Delete decor property when window is closed.
+
+2006-03-17 Jeremy C. Reed <reed@xxxxxxxxxxxxx>
+
+ reviewed by: David Reveman
+
+ * autogen.sh:
+ Be consistent with rest of modular xorg by using same
+ autogen.sh. This allows it to be run using a different
+ work directory.
+
+2006-03-17 Jeremy C. Reed <reed@xxxxxxxxxxxxx>
+
+ reviewed by: David Reveman
+
+ * INSTALL:
+ Mention startup-notification requirement.
+
+2006-03-17 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/scale.c: Add opacity option.
+
+ * configure.ac: Bump version to 0.0.7.
+
+2006-03-17 Radek Doulik <rodo@xxxxxxxxxx>
+
+ * src/session.c: added all mandatory SM client callbacks, handle
+ ICE connection and process ICE messages
+
+ * src/display.c (compAddWatchFd): new function, adds new fd watch
+ - for poll io multiplexing
+ (compRemoveWatchFd): new function, remove fd watch added by
+ compAddWatchFd
+ (doPoll): new helper function, does call poll and calls callbacks
+ for watch fd's. returns the value of poll call
+ (eventLoop): use doPoll, we use NULL for display fd watch so that
+ it doesn't call anything and just use return value from poll as
+ before
+
+2006-03-17 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/switcher.c (switchDamageWindowRect): Update window
+ attributes for popup window. We never get a MapRequest for this
+ window so it most be done here.
+ Add "bring to front" option. (Greg)
+
+ * src/window.c (stackAncestors): Never raise desktop windows.
+ Made restackWindowAbove and restackWindowBelow smarter.
+
+2006-03-16 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/minimize.c:
+ * src/event.c (handleEvent):
+ * src/window.c:
+ Handle window state changes correctly.
+ (maximizeWindow): Use actions to determine if we're allowed maximize
+ window.
+
+ * src/event.c (handleEvent):
+ * src/window.c: Send configure notifies correctly.
+
+2006-03-15 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/switcher.c (switchPaintWindow): Fix paint attribute
+ calculations.
+
+ * include/compiz.h:
+ * src/event.c (handleEvent):
+ * src/window.c: Add restackWindowBelow.
+
+2006-03-14 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/switcher.c: Opacity, brightness and saturation as adjustable
+ options. (Greg)
+
+ * src/window.c (syncWindowPosition): Move frame window now instead of
+ waiting for client window to change before moving it.
+
+ * plugins/move.c (moveTerminate): Sync window position before
+ releasing pointer grab so that the EnterNotify event from the release
+ go to the correct window.
+
+ * src/window.c (unmapWindow): Put window in withdrawn state when
+ being unmapped. Should make it work better with KDE. (Tim Northover)
+
+ * src/screen.c (addScreen): Fix ambient and diffuse light.
+
+ * src/main.c (main): Add --version command line option.
+
+ * src/event.c:
+ * src/screen.c:
+ * include/compiz.h: Add bindings for changing window opacity.
+
+2006-03-14 Radek Doulik <rodo@xxxxxxxxxx>
+
+ * src/event.c (handleEvent): handle minimize/maximize/unmaximize
+ window keybindings
+
+ * src/screen.c: added minimize/maximize/unmaximize window
+ options/keybindings
+
+ * src/window.c (maximizeWindow): new helper function
+ (unmaximizeWindow): ditto
+
+2006-03-14 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/scale.c: Add darken background option (Daniel G. Taylor).
+
+2006-03-13 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/display.c (eventLoop):
+ * include/compiz.h:
+ * src/screen.c (addScreen): CopySubBufferMESA support.
+
+2006-03-07 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/window-decorator/gnome-window-decorator.c (lower_window):
+ Remove unused variable tmp.
+
+ * src/event.c:
+ * src/display.c:
+ * src/window.c:
+ * src/screen.c:
+ * include/compiz.h: Better window stacking support.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Lower window
+ when clicking button 2 on titlebar.
+
+ * src/window.c (ensureWindowVisibility): Only ensure that window is
+ visible if it isn't a override redirect window, dock window or
+ window with struts.
+
+2006-03-06 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Bump version to 0.0.6.
+
+ * plugins/cube.c: Skydome update. (MacSlow)
+
+ * src/window.c: Ensure window visibility when activating window.
+
+2006-03-05 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c (closeWindow): Use protocol mask to determine if
+ Client Message should be send or if we should kill the client.
+
+ * plugins/decoration.c: Don't draw shadow only decorations around
+ windows with alpha channel.
+
+2006-03-03 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/texture.c (readImageBufferToTexture):
+ (readImageToTexture): Check that returnWidth and returnHeight are
+ not NULL.
+
+ * plugins/cube.c: Skydome support. Thanks to MacSlow.
+
+ * plugins/fade.c (fadeHandleEvent): Make sure opacity isn't opaque
+ when fading out.
+ Stop fading if window is resized.
+
+ * src/window.c (resizeWindow): Only verify pixmap size if window is
+ mapped.
+ (resizeWindow): Check XGetGeometry result.
+
+ * plugins/switcher.c: Make sure switcher is correctly updated
+ even though the previously selected window isn't selectable by
+ switcher.
+
+ * src/event.c (handleEvent): Avoid panel actions when screen is
+ grabbed.
+
+2006-03-03 Radek Doulik <rodo@xxxxxxxxxx>
+
+ * src/main.c (main): init and close session when sm is not
+ disabled. Enable sm by default.
+
+ * src/session.c: added minimal session support so that compiz at
+ least register with session manager to avoid registering timeouts
+
+2006-03-03 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/screen.c (removeScreenGrab): Use correct cursor when changing
+ actvie pointer grab.
+
+2006-03-02 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/rotate.c (rotateHandleEvent):
+ * plugins/zoom.c (zoomHandleEvent): Make sure no pending motion
+ notify events exists when warping the pointer.
+
+ * plugins/rotate.c (rotateHandleEvent): Reset movement.
+
+ * plugins/switcher.c: Always send activate request when selecting a
+ window.
+
+ * plugins/cube.c (cubePaintTransformedScreen): Reset color.
+
+ * plugins/switcher.c (switchPaintThumb): PAINT_WINDOW_TRANSLUCENT_MASK
+ if opacity isn't opaque.
+ (switchPaintWindow): Reset color.
+
+2006-03-01 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Bump version to 0.0.5.
+
+ * plugins/fade.c (fadeAddDisplayModal): Higher brightness when showing
+ display modal dialogs.
+
+ * plugins/switcher.c (switchPreparePaintScreen): Continue adjusting
+ window selection even though we're not grabbing the screen.
+ (switchPaintWindow): Use last used paint attributes for thumbnails.
+ (switchPaintWindow): Use blending when drawing selection rectangle.
+
+ * plugins/fade.c (fadeHandleEvent): unmap. -> map.
+ (fadeDamageWindowRect): Only zero opacity if we're not already
+ fading the window.
+
+ * src/window.c (unmapWindow): 'placed' variable should be reset on
+ first call to unmapWindow.
+
+ * src/screen.c:
+ * src/event.c (handleEvent):
+ * src/display.c (eventLoop):
+ * include/compiz.h: Add slow animation option.
+
+ * src/window.c (recalcNormalHints): Constrain window dimensions to
+ max texture size.
+
+ * src/screen.c (addScreen): Get max texture size.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Nicer drop shadow
+ on windows without decorations.
+
+ * src/window.c (addWindow): Move initialization of sync alarm.
+
+ * plugins/cube.c:
+ * plugins/decoration.c:
+ (decorCreateDecoration): Fix minimum size check.
+
+ * src/main.c:
+ * include/compiz.h:
+ * src/paint.c:
+ * src/screen.c: Ligthing support.
+
+ * compiz.pc.in: Fix.
+
+2006-02-23 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c (unmapWindow): Not minimized and not part of showing
+ desktop mode.
+
+ * plugins/wobbly.c: Fix handling of scaled windows.
+ Update options so that user gets more control over which windows
+ that should wobble and when.
+
+ * configure.ac: Bump version to 0.0.4.
+
+ * gnome/window-decorator/gnome-window-decorator.c (window_opened): Make
+ sure decoration property for switcher window is set.
+
+ * plugins/decoration.c (decorHandleEvent):
+ * src/event.c (handleEvent):
+ * plugins/switcher.c:
+ * src/screen.c (addScreen, setScreenOption)
+ (compScreenInitOptions):
+ * src/texture.c:
+ * include/compiz.h: Mipmap support. Add more RUN_COMMAND options.
+
+2006-02-22 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/display.c (realToVirtualModMask): Remove modifiers that should
+ be ignored.
+ (addDisplay): Select ButtonPress and ButtonRelease events on root
+ window.
+
+ * include/compiz.h (EV_KEY):
+ (EV_BUTTON): Modifiers should match exactly.
+
+ * plugins/switcher.c: Add binding for selecting previous window.
+
+ * plugins/decoration.c: Remove sync hack.
+
+ * gnome/window-decorator/gnome-window-decorator.c
+ (draw_shadow_background): Fix drawing of bottom and bottom right
+ shadow rectangle.
+ Add switcher window decorations.
+ Remove sync hack.
+ Always use double buffering.
+
+ * plugins/switcher.c: Remove background color option.
+ Use property instead of client message to indicate change of selected
+ window.
+
+2006-02-21 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/cube.c (cubeHandleEvent): Only load new SVG when available.
+
+2006-02-20 David Reveman <davidr@xxxxxxxxxx>
+
+ * plugins/decoration.c (decorWindowUpdate): Decorate window
+ MwmDecorTitle is present.
+
+ * src/window.c (focusWindow):
+ (moveInputFocusToWindow):
+ Allow focusing windows with input hint set to false.
+ (activateWindow): Fix so that dock windows can be active.
+
+ * src/screen.c (isClientListWindow): Don't put destroyed windows in
+ client lists.
+
+ * src/event.c (handleEvent): Fix so that dock windows can be active.
+ (handleEvent): Avoid focusing windows with input hint set to false
+ when mapped.
+
+2006-02-18 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/window.c (unmapWindow): Windows not being minimized should be
+ placed again at next map.
+
+ * plugins/wobbly.c (wobblyDonePaintScreen): Also add pending damage
+ if any window is in initial wobbly state.
+
+2006-02-17 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Bump version to 0.0.3.
+
+ * plugins/zoom.c (zoomIn): Translate less.
+ (zoomPaintScreen): Use selected filter.
+ (adjustZoomVelocity): Made zoom animation nicer.
+ (zoomPreparePaintScreen): Don't zoom to much.
+ ADd filter selection option.
+
+ * plugins/decoration.c (decorPaintWindow):
+ * src/paint.c (drawWindowTexture): Use screen filters.
+
+ * include/compiz.h: Add support for adjusting filters.
+
+ * plugins/scale.c (scaleHandleEvent): Only button 1.
+
+ * plugins/cube.c (cubePaintTransformedScreen): Fix drawing with size
+ greater than 4.
+
+2006-02-16 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Remove menu.
+
+ * plugins/switcher.c (switchNextWindow): Damage new and previously
+ selected window.
+ (switchInitiate): Damage screen initiating switching.
+ (switchTerminate): Damage screen terminating switching.
+ (switchPaintThumb): Draw thumbnail without calling any function that
+ can be wrapped.
+
+ * gnome/window-decorator/gnome-window-decorator.c
+ (update_window_decoration_size): Make sure title isn't rendered
+ when it doesn't fit.
+
+2006-02-14 David Reveman <davidr@xxxxxxxxxx>
+
+ * gnome/window-decorator/gnome-window-decorator.c
+ (draw_window_decoration): Make sure complete icon is visible.
+
+ * src/display.c (eventLoop):
+ (getTimeToNextRedraw): Handle clock rollback.
+
+2006-02-13 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Remove menu plugin check.
+ Require version 2.8.0 or greater of gtk+.
+
+2006-02-11 David Reveman <davidr@xxxxxxxxxx>
+
+ * configure.ac: Bump version to 0.0.2.
+
+ * src/window.c:
+ * src/event.c:
+ * plugins/fade.c:
+ * src/display.c:
+ * include/compiz.h: Lower brightness of windows that are not responding
+ and all windows when showing logout dialog.
+
+ * gnome/window-decorator/gnome-window-decorator.c: Use metacity
+ titlebar font settings.
+
+ * gnome/compiz-window-manager.c: Add titlebar font setting.
+
+ * plugins/Makefile.am:
+ * plugins/switcher.c: Add switcher plugin.
+
+ * plugins/gconf.c: Add alpha to color options.
+
+2006-02-10 David Reveman <davidr@xxxxxxxxxx>
+
+ * src/screen.c:
+ * src/display.c: Do not include X11/extensions/Xevie.h.
=== added file 'Doxyfile'
--- Doxyfile 1970-01-01 00:00:00 +0000
+++ Doxyfile 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1514 @@
+# Doxyfile 1.6.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = Compiz
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = 0.9
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = YES
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = YES
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = NO
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = include/ src/
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS = *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS = private*
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS = _* *Private* *Wrap*
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX = _,Private
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = YES
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
+# there is already a search function so this one should typically
+# be disabled.
+
+SEARCHENGINE = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = NO
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = YES
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
=== added file 'INSTALL'
--- INSTALL 1970-01-01 00:00:00 +0000
+++ INSTALL 2011-08-14 15:11:23 +0000
@@ -0,0 +1,18 @@
+compiz uses libstartup-notification which is available at
+ftp://ftp.gnome.org/pub/GNOME/sources/startup-notification/
+
+compiz uses out-of-tree builds with cmake, in order to generate the Makefiles for compiz use:
+
+ $ mkdir build
+ $ cd build
+ $ cmake ..
+
+After that, standard build procedures apply:
+
+ $ make
+ # make install
+
+In order to build other plugins, you will need to install the compiz cmake set
+
+ # make findcompiz_install
+
=== added file 'NEWS'
--- NEWS 1970-01-01 00:00:00 +0000
+++ NEWS 2011-08-14 15:11:23 +0000
@@ -0,0 +1,498 @@
+Release 0.9.4 (2010-02-24 Sam Spilsbury <sam.spilsbury@xxxxxxxxxxxxx>)
+========================================================================
+Development Release.
+
+Main loop implementation now replaced by the GLib main loop, use custom
+event sources and event dispatch synchronisation. Allows better integration
+with plugins that require tight timing with GLib timers
+
+Moved image and data generation into buildsystem extensions, and installation
+of such data into namespaced areas on the filesystem so plugins can't
+overwrite other plugin's data
+
+Intelligently clip window shadows in decor
+
+Fixed a number of 2D decoration issues
+
+Fixed a number of reparenting, stacking and focus issues
+
+Support different frame types in gtk-window-decorator
+
+
+Release 0.9.2.1 (2010-11-06 Sam Spilsbury <sam.spilsbury@xxxxxxxxxxxxx>)
+========================================================================
+Bugfix release.
+
+
+Release 0.9.2 (2010-10-24 Sam Spilsbury <smspillaz@xxxxxxxxx>)
+==============================================================
+Development release.
+
+Made minimization functions wrappable
+
+Decorators now get shadow settings from window properties on the root
+window and not through gconf, kconfig or dbus
+
+Allow resizing from the center of the window
+
+Clean up gtk-window-decorator
+
+Fixed a number of reparenting bugs
+
+Release 0.9.0 (2010-07-03 Sam Spilsbury <smspillaz@xxxxxxxxx>)
+==============================================================
+Development release.
+
+Rewritten core in C++.
+
+Rewritten plugin APIs.
+
+Rewritten buildsystem in CMake, supports option code autogeneration,
+plugin build dependency handling, amongst other things.
+
+Smart wrappable functions, enables saving on otherwise useless CPU cycles.
+
+Reparenting window decorations.
+
+Support for tiled textures and screen sizes larger than max_texture_size
+through the use of the copytex plugin.
+
+Composite and OpenGL based rendering dropped from core, split into the
+opengl and composite plugins, which represent a step towards pluggable
+rendering backends.
+
+Ability to run in non composited mode added to gtk-window-decorator
+and kde4-window-decorator.
+
+kde-window-decorator dropped.
+
+Added KDE plugin to integrate with the QT main loop and create a KApplication
+for KCrash support on KDE.
+
+dbus plugin now uses screen number to identify compiz instance.
+
+Dropped multi-screen mode, launch compiz on individual screens instead.
+
+Shape drawing mode added to annotate plugin.
+
+Fixed screen updates issue in annotate plugin.
+
+Added serialization interface, which allows plugins to save/restore activity
+states between plugin and compiz reloads. Serialization info is stored in
+X11 window properties and is automatically dropped by the X Server when
+the window is destroyed.
+
+Added compiztoolbox library plugin used by switchers and screenshot, which
+provide a simple interface for accessing XDG and drawing thumbnails.
+
+Release 0.8.6 (2010-03-28 Danny Baumann <dannybaumann@xxxxxx>)
+==============================================================
+Maintenance release.
+
+Various focus and window placement fixes.
+
+Fixed handling of windows that have a (server-drawn) border.
+
+Fixed handling of window icons that have a colour depth of 1 bit.
+
+Added KDE 4.4 support to KDE4 window decorator.
+
+Release 0.8.4 (2009-10-14 Erkin Bahceci <erkinbah@xxxxxxxxx>)
+=============================================================
+Maintenance release.
+
+Fixed many crashes (including doPoll/eventLoop ones).
+
+Various memory leak fixes.
+
+Fixed lost window issues with windows that are visible on all workspaces.
+
+Fixed lost window issue when reducing the number of workspaces.
+
+Fixed placing of dialogs (e.g. PolicyKit) behind currently focused window.
+
+Fixed placing of new windows behind fullscreen window.
+
+Fixed and improved screen resolution change handling (Compiz now remembers
+original window size and position).
+
+Lowering a window now activates the topmost window when click-to-focus is on.
+
+Fixed wobbly title bar hiding and bouncing near panel edges.
+
+Screenshot plugin now saves to the correct desktop directory by default.
+
+Fixed inconsistent icon sizes in switcher plugin.
+
+Improved constraining of window size and position in move, resize, and wobbly.
+
+Ported KDE4 window decorator to KDE 4.3.
+
+Added support for _NET_REQUEST_FRAME_EXTENTS and _NET_SUPPORT_FULL_PLACEMENT
+EWMH hints.
+
+Release 0.8.2 (2009-03-01 Danny Baumann <dannybaumann@xxxxxx>)
+==============================================================
+Maintenance release.
+
+Fixed issue in strut handling that could lead to struts being ignored
+for certain monitor configurations.
+
+Fixed window position constraining logic.
+
+Fixed kconfig xslt files missing from 0.8.0 tarball.
+
+Release 0.8.0 (2009-02-20 Danny Baumann <dannybaumann@xxxxxx>)
+==============================================================
+Fourth stable release of compiz.
+
+New plugin "commands" that handles the bindings for arbitrary commands that
+previously were handled in core. In addition to the previously present key
+bindings button and edge bindings were added as well.
+
+New plugin "gnomecompat" which handles bindings that are exclusively used
+in the Gnome desktop environment and removed the corresponding bindings
+from core. This change fixes main menu and run dialog bindings for KDE users
+as those previously were conflicting between compiz and KDE. Gnome users
+upgrading should make sure to enable this plugin.
+
+Added support for _NET_WM_FULLSCREEN_MONITORS EWMH hint.
+
+Added support for reading the icon hint from the WM_HINTS property if
+_NET_WM_ICON is not available.
+
+Update Gnome support for Gnome 2.24.
+
+Added options to scale plugin that allow "toggle type" behaviour for
+key and button bindings.
+
+Several memory leak fixes.
+
+Adjusted gtk-window-decorator for newer libmetacity-private versions.
+
+Fixed gtk-window-decorator display for RTL languages.
+
+Adjusted kde4-window-decorator for KDE 4.2 API.
+
+Large number of minor bug fixes, especially in resize handling and
+stacking code.
+
+Translation updates
+
+Release 0.7.8 (2008-09-17 Danny Baumann <dannybaumann@xxxxxx>)
+==============================================================
+Development release.
+
+New plugin "obs" that handles opacity, brightness and saturation bindings
+and matches.
+
+Put unresponsive window greyout, including options to configure it, to
+fade plugin.
+
+Add "constant fade time" fade mode to fade plugin.
+
+Removed opacity bindings and matches from core. Users that entered opacity
+matches should enable the obs plugin and enter the matches there.
+
+Enhanced timer infrastructure to allow synchronization of execution of
+multiple timer callbacks.
+
+Added matching for window's alpha channel (match type rgba=[0|1]).
+
+Reflect new Metacity "spacer" button type in gtk-window-decorator.
+
+Various bugfixes.
+
+Translation updates.
+
+Release 0.7.6 (2008-05-29 Dennis Kasprzyk <onestone@xxxxxxxxxxxxxxxxxxx>)
+=========================================================================
+Development release.
+
+Rewrite of place plugin, which significantly improves multi-output
+behaviour.
+
+Configurable multi-output behaviour in place.
+
+Removed plane plugin. Former plane plugin users are encouraged to use
+the wall plugin of Compiz Fusion.
+
+Removed cube wallpaper painting. Users are encouraged to use the Compiz
+Fusion wallpaper plugin instead.
+
+Place plugin viewport placement viewport numbers are now 1-based.
+
+Panel and desktop selection mode in switcher plugin.
+
+Improved painting behaviour when using overlapping outputs.
+
+Gtk-window-decorator now emits accessibility events when switching.
+
+Gtk-window-decorator behaviour when using Metacity themes has been
+improved to match Metacity better.
+
+KDE4-window-decorator has been adapted to current KDE4 API.
+
+Various bugfixes.
+
+Release 0.7.4 (2008-03-04 Dennis Kasprzyk <onestone@xxxxxxxxxxxxxxxxxxx>)
+=========================================================================
+Development release.
+
+Configurable handling of overlapping output devices.
+
+Enhanced focus stealing prevention with configurable amount of focus
+stealing prevention.
+
+Added configurable, optional delay for edge actions to prevent
+accidential invocation.
+
+Generalized vertex system to improve plugin compatibility.
+
+Optimized gaussian blur shaders to support more hardware.
+
+Improved unredirection of fullscreen windows.
+
+Several bugfixes.
+
+Translation updates.
+
+Release 0.7.2 (2008-03-06 Dennis Kasprzyk <onestone@xxxxxxxxxxxxxxxxxxx>)
+=========================================================================
+Development release.
+
+Several bugfixes
+
+Translation support in gtk-window-decorator.
+
+Updated translations.
+
+Added wrapable session functions to core. This allows to provide a full session save/restore in a plugin.
+
+Release 0.7.0 (2008-02-07 Dennis Kasprzyk <onestone@xxxxxxxxxxxxxxxxxxx>)
+=========================================================================
+Development release.
+
+A core plugin has been added that allows handling certain core APIs, such as
+querying the ABI version, similarly to plugin APIs, allowing sharing more
+code.
+
+Added a simple object system, which generalize the privates mechanism and the plugin system. It allows to share more code between display, screen and window objects. It also makes it possible to properly introduce new object types without changing the plugin interface or breaking the API.
+
+Multi-display support.
+
+Various fixes in ICCCM compliance, window stacking and focus handling.
+
+Validity checking of ConfigureRequest events.
+
+Fixes to transient children placement in place plugin.
+
+Hooks have been added to the cube plugin which allow better control of
+viewport drawing.
+
+Middle and right click actions have been made configurable in
+gtk-window-decorator.
+
+Gtk-window-decorator now optionally allows mouse wheel title bar actions, such
+as shading.
+
+A KDE4 port of the kde-window-decorator has been added.
+
+Frequent crashes of kde-window-decorator for some people have been fixed.
+
+
+Release 0.5.4 (2007-08-20 David Reveman <davidr@xxxxxxxxxx>)
+============================================================
+Development release.
+
+XCB is now required.
+
+Major improvements to option system that makes
+configuration backend integration much less complex.
+
+Kconfig plugin that provides proper KDE configuration
+support.
+
+Kcfg files are generated from the meta-data and they can
+be used to generate C++ source code that will provide an
+API for applications to access all compiz configuration
+data used by the kconfig plugin.
+
+
+Release 0.5.2 (2007-08-03 David Reveman <davidr@xxxxxxxxxx>)
+============================================================
+Development release.
+
+Better support for multiple X-screens.
+
+XML-based meta-data system for handling of various kinds
+for meta-data like plugin descriptions, default option
+values, etc.
+
+Major improvements to option initialization based on the
+new meta-data system.
+
+Logging framework.
+
+Support for configurable button layout in metacity themes
+has been added to gtk-window-decorator.
+
+Glib plugin that allows plugins that use the glib main
+loop to integrate properly with the compiz main loop
+without waking up periodically to check for pending
+events.
+
+Plugin plugins that make it possible to adjust and extend
+the behavior of existing plugins through new plugins.
+
+More dynamic handling of output devices, which allows the
+output device configuration used when rendering to be
+changed between frames.
+
+Transparency support in cube plugin.
+
+Introspection support in dbus plugin.
+
+
+Release 0.5.0 (2007-04-02 David Reveman <davidr@xxxxxxxxxx>)
+============================================================
+Development release.
+
+Remove stencil buffer requirement.
+
+Focus stealing prevention support.
+
+Blur plugin that provide support for blurring windows and
+contents behind translucent windows.
+
+Fragment attribute interface that allow plugins
+to perform more advanced fragment shading effects and
+integrate properly with other plugins.
+
+Extensible window matching interface and new option type
+that provide advanced window selection functionality.
+
+Plugin that provide a composited video interface for
+efficient video playback.
+
+FUSE plugin that maps compiz options to a file-system and
+allow efficient manipulation of options by reading and
+writing files.
+
+Better occlusion detection and more efficient rendering.
+
+Flat file configuration backend.
+
+
+Release 0.3.6 (2006-12-31 David Reveman <davidr@xxxxxxxxxx>)
+============================================================
+Development release.
+
+Add support for unredirect of fullscreen windows when using
+the composite overlay window and make usage of the
+composite overlay window for output default.
+
+Add file notification API.
+
+Add inotify plugin that implements file notification API.
+
+A "GetPlugins" method has been added to dbus plugin
+and it can be used to retrieve a list of available plugins.
+
+A 'GetPluginMetadata' method has been added to dbus plugin
+and it returns metadata for available plugins.
+
+Add support for switching between windows without having
+the thumbnail window show up.
+
+Switcher thumbnails now include decorations and shadows.
+
+Basic drag and drop support has been added to scale plugin.
+
+It's now possible to initiate scale plugin for specific window
+groups.
+
+Window menu icon support has been added to gtk window decorator.
+
+Improved support for metacity themes.
+
+Add KDE window decorator with support for shadows and opacity
+has been added.
+
+
+Release 0.3.4 (2006-11-21 David Reveman <davidr@xxxxxxxxxx>)
+============================================================
+Development release.
+
+Edge button, which can be used to require a button press
+for edge actions to be triggered.
+
+Basic compiz event support.
+
+Zoom plugin now works without "largedesktop" feature.
+
+Cube plugin now handles desktop width less than 4 times
+the screen better.
+
+Support for multiple desktops (workspaces).
+
+Handling of _NET_DESKTOP_GEOMETRY client messages has
+been fixed.
+
+Much better multi-head support.
+
+Annotate plugin has been added.
+
+Clone plugin which can be used to clone outputs in a
+convenient way has been added. Currently more of a
+prototype as we need randr++ and input transformation
+in the server to do this properly.
+
+Shadow color option has been added.
+
+initiate_all option has been added to scale plugin.
+
+Zoom factor option has been added to zoom plugin.
+
+Support for new metacity theme version and support for
+metacity versions < 2.15.21.
+
+Event window placement when using some metacity
+themes has been fixed.
+
+Fix a number of issues related to minimizing windows
+with transients.
+
+
+Release 0.3.2 (2006-10-20 David Reveman <davidr@xxxxxxxxxx>)
+============================================================
+Development release.
+
+snap_inverted option has been added to wobbly plugin.
+
+Configuration support has been added to dbus plugin.
+
+Add 'command' option has been added to decoration plugin,
+which can be used to automatically launch a decorator
+when one isn't already running.
+
+Opacity support for metacity themes.
+
+A raise_window option has been added.
+
+Decorations on maximized windows are now rendered
+correctly when using metacity themes.
+
+An ignore_hints_when_maximized option, which makes compiz
+ignore size increment and aspect hints for maximized
+windows has been added and made default.
+
+Better default option values for rotate plugin.
+
+and much more...
+
+
+Release 0.2.0 (2006-10-02 David Reveman <davidr@xxxxxxxxxx>)
+============================================================
+First official release of compiz.
+
=== added file 'README'
--- README 1970-01-01 00:00:00 +0000
+++ README 2011-08-14 15:11:23 +0000
@@ -0,0 +1,8 @@
+compiz - OpenGL window and compositing manager
+
+Compiz is an OpenGL compositing manager that use GLX_EXT_texture_from_pixmap
+for binding redirected top-level windows to texture objects. It has a flexible
+plug-in system and it is designed to run well on most graphics hardware.
+
+David Reveman
+davidr@xxxxxxxxxx
=== added file 'RELEASING'
--- RELEASING 1970-01-01 00:00:00 +0000
+++ RELEASING 2011-08-14 15:11:23 +0000
@@ -0,0 +1,75 @@
+Here are the steps to follow to create a new compiz release:
+
+1) Ensure that there are no local, uncommitted modifications.
+ It's probably good enough if "git diff HEAD" doesn't output
+ anything and your "master" and "origin" branches are at the
+ current revision.
+
+2) Verify that the code passes "make distcheck"
+
+ Running "make distcheck" should result in no warnings or
+ errors and end with a message of the form:
+
+ ==============================================
+ compiz-X.Y.Z archives ready for distribution:
+ compiz-X.Y.Z.tar.gz
+ ==============================================
+
+ (But the tar file isn't actually ready yet, as we still have
+ some more steps to follow).
+
+3) Fill out an entry in the NEWS file
+
+ Shift through the logs since the last release. This is most
+ easily done with a comand such as:
+
+ git log --stat compiz-X.Y.Z..
+
+ where X.Y.Z is the previous release version.
+
+ Summarize major changes briefly in a style similar to other
+ entries in NEWS.
+
+4) Increment version number in configure.ac:
+
+ Increment to the micro version number to the next larger
+ (even) number.
+
+5) Commit the changes to NEWS and configure.ac
+
+ It's especially important to mention the new version number in your
+ commit log.
+
+6) Run "make release-publish" which will perform the following steps
+ for you:
+
+ * Check that the version number ends with an even micro component
+ * Check that no release exists with the current version
+ * Verify that make distcheck completes successfully
+ * Generate the final tar file
+ * Generate an sha1sum file
+ * Sign the sha1sum using your GPG setup (asks for your GPG password)
+ * scp the three files to appear on
+ http://xorg.freedesktop.org/archive/individual/app
+ * Place local copies of the three files in the releases directory
+ * Tag the entire source tree with a tag of the form compiz-X.Y.Z, and
+ sign the tag with your GPG key (asks for your GPG password, and you
+ may need to set GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL to match
+ your public-key's setting or this fails.)
+ * Provide some text for the release announcement (see below).
+ If for some reason you lost this message,
+ "make release-publish-message" prints it for you.
+
+7) Increment compiz_version_micro to the next larger (odd) number in
+ configure, commit, and push.
+
+8) Push the newly created tag out to the central tree with a command
+ something like:
+
+ git push compiz-X.Y.Z
+
+9) Send a message to compiz@xxxxxxxxxxxxxxxxxxxx to announce the
+ new release using the text provided from "make release-publish",
+ adding the excerpt from NEWS, your signature, followed by
+ tacking on the detailed changelog-ish thing that gets mailed
+ out when you push the tag (but not the diffstat thing).
=== added file 'TODO'
--- TODO 1970-01-01 00:00:00 +0000
+++ TODO 2011-08-14 15:11:23 +0000
@@ -0,0 +1,22 @@
+
+General:
+
+* Session management
+
+* Various window management improvements
+
+* Window shade mode
+
+* Support for multiple desktops
+
+* Multi-screen support
+
+
+KDE:
+
+* Remove glib dependency from place plugin
+
+* QT/KDE configuration plugin similar to the gconf plugin
+
+* QT/KDE decoration program
+
=== added file 'VERSION'
--- VERSION 1970-01-01 00:00:00 +0000
+++ VERSION 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1 @@
+0.9.5.0
=== added directory 'cmake'
=== added file 'cmake/CMakeLists.txt'
--- cmake/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ cmake/CMakeLists.txt 2011-08-14 15:11:23 +0000
@@ -0,0 +1,32 @@
+compiz_configure_file (
+ ${CMAKE_CURRENT_SOURCE_DIR}/CompizDefaults.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/CompizDefaults.cmake
+)
+
+set (_files
+ CompizCommon.cmake
+ CompizPlugin.cmake
+ CompizPackage.cmake
+ CompizBcop.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/CompizDefaults.cmake
+)
+
+list (APPEND _PluginExtensionFiles
+ plugin_extensions/CompizGenInstallData.cmake)
+list (APPEND _PluginExtensionFiles
+ plugin_extensions/CompizGenInstallImages.cmake)
+
+if (USE_GCONF)
+ list (APPEND _files CompizGconf.cmake)
+ list (APPEND _PluginExtensionFiles plugin_extensions/CompizGenGconf.cmake)
+endif (USE_GCONF)
+
+install (
+ FILES ${_files}
+ DESTINATION ${COMPIZ_DESTDIR}${CMAKE_INSTALL_PREFIX}/share/compiz/cmake
+)
+
+install (
+ FILES ${_PluginExtensionFiles}
+ DESTINATION ${COMPIZ_DESTDIR}${CMAKE_INSTALL_PREFIX}/share/compiz/cmake/plugin_extensions
+)
=== added file 'cmake/CompizBcop.cmake'
--- cmake/CompizBcop.cmake 1970-01-01 00:00:00 +0000
+++ cmake/CompizBcop.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,41 @@
+find_program (XSLTPROC_EXECUTABLE xsltproc)
+mark_as_advanced (FORCE XSLTPROC_EXECUTABLE)
+
+if (NOT XSLTPROC_EXECUTABLE)
+ message (FATAL_ERROR "xsltproc not found.")
+endif ()
+
+# does the plugin require bcop
+function (compiz_plugin_needs_bcop _file _return)
+ file (READ ${_file} _xml_content)
+ if ("${_xml_content}" MATCHES "useBcop=\"true\"")
+ set (${_return} TRUE PARENT_SCOPE)
+ else ()
+ set (${_return} FALSE PARENT_SCOPE)
+ endif ()
+endfunction ()
+
+# prepare bcop build
+function (compiz_add_bcop_targets _plugin _file _sources)
+
+ add_custom_command (
+ OUTPUT ${CMAKE_BINARY_DIR}/generated/${_plugin}_options.h
+ COMMAND ${XSLTPROC_EXECUTABLE}
+ -o ${CMAKE_BINARY_DIR}/generated/${_plugin}_options.h
+ --stringparam "file" "header" ${COMPIZ_BCOP_XSLT}
+ ${_file}
+ DEPENDS ${_file}
+ )
+ add_custom_command (
+ OUTPUT ${CMAKE_BINARY_DIR}/generated/${_plugin}_options.cpp
+ COMMAND ${XSLTPROC_EXECUTABLE}
+ -o ${CMAKE_BINARY_DIR}/generated/${_plugin}_options.cpp
+ --stringparam "file" "source" ${COMPIZ_BCOP_XSLT}
+ ${_file} > ${CMAKE_BINARY_DIR}/generated/${_plugin}_options.cpp
+ DEPENDS ${_file}
+ ${CMAKE_BINARY_DIR}/generated/${_plugin}_options.h
+ )
+ set (${_sources} "${CMAKE_BINARY_DIR}/generated/${_plugin}_options.h;${CMAKE_BINARY_DIR}/generated/${_plugin}_options.cpp" PARENT_SCOPE)
+
+
+endfunction ()
\ No newline at end of file
=== added file 'cmake/CompizCommon.cmake'
--- cmake/CompizCommon.cmake 1970-01-01 00:00:00 +0000
+++ cmake/CompizCommon.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,541 @@
+cmake_minimum_required (VERSION 2.6)
+
+if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
+ message (SEND_ERROR "Building in the source directory is not supported.")
+ message (FATAL_ERROR "Please remove the created \"CMakeCache.txt\" file, the \"CMakeFiles\" directory and create a build directory and call \"${CMAKE_COMMAND} <path to the sources>\".")
+endif ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
+
+#### CTest
+include (CTest)
+
+#### policies
+
+cmake_policy (SET CMP0000 OLD)
+cmake_policy (SET CMP0002 OLD)
+cmake_policy (SET CMP0003 NEW)
+cmake_policy (SET CMP0005 OLD)
+cmake_policy (SET CMP0011 OLD)
+
+set (CMAKE_SKIP_RPATH FALSE)
+
+option (COMPIZ_BUILD_WITH_RPATH "Leave as ON unless building packages" ON)
+option (COMPIZ_RUN_LDCONFIG "Leave OFF unless you need to run ldconfig after install")
+option (COMPIZ_PACKAGING_ENABLED "Enable to manually set prefix, exec_prefix, libdir, includedir, datadir" OFF)
+set (COMPIZ_DESTDIR "${DESTDIR}" CACHE STRING "Leave blank unless building packages")
+
+if (NOT COMPIZ_DESTDIR)
+ set (COMPIZ_DESTDIR $ENV{DESTDIR})
+endif ()
+
+set (COMPIZ_DATADIR ${CMAKE_INSTALL_PREFIX}/share)
+set (COMPIZ_METADATADIR ${CMAKE_INSTALL_PREFIX}/share/compiz)
+set (COMPIZ_IMAGEDIR ${CMAKE_INSTALL_PREFIX}/share/compiz/images)
+set (COMPIZ_PLUGINDIR ${libdir}/compiz)
+set (COMPIZ_SYSCONFDIR ${sysconfdir})
+
+set (
+ VERSION ${VERSION} CACHE STRING
+ "Package version that is added to a plugin pkg-version file"
+)
+
+set (
+ COMPIZ_I18N_DIR ${COMPIZ_I18N_DIR} CACHE PATH "Translation file directory"
+)
+
+option (COMPIZ_SIGN_WARNINGS "Should compiz use -Wsign-conversion during compilation." OFF)
+
+if (COMPIZ_SIGN_WARNINGS)
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wsign-conversion")
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wsign-conversion")
+else ()
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
+endif ()
+
+if (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.git)
+ set(IS_GIT_REPO 1)
+else (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.git)
+ set(IS_GIT_REPO 0)
+endif (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.git)
+
+if (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.gitmodules)
+ set(IS_GIT_SUBMODULES_REPO 1)
+else (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.gitmodules)
+ set(IS_GIT_SUBMODULES_REPO 0)
+endif (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.gitmodules)
+
+if (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.bzr)
+ set(IS_BZR_REPO 1)
+elseif (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.bzr)
+ set(IS_BZR_REPO 0)
+endif (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.bzr)
+
+function (compiz_ensure_linkage)
+ find_program (LDCONFIG_EXECUTABLE ldconfig)
+ mark_as_advanced (FORCE LDCONFIG_EXECUTABLE)
+
+ if (LDCONFIG_EXECUTABLE AND ${COMPIZ_RUN_LDCONFIG})
+
+ install (
+ CODE "message (\"Running \" ${LDCONFIG_EXECUTABLE} \" \" ${CMAKE_INSTALL_PREFIX} \"/lib\")
+ exec_program (${LDCONFIG_EXECUTABLE} ARGS \"-v\" ${CMAKE_INSTALL_PREFIX}/lib)"
+ )
+
+ endif (LDCONFIG_EXECUTABLE AND ${COMPIZ_RUN_LDCONFIG})
+endfunction ()
+
+macro (compiz_add_git_dist)
+
+ # Try to use the git and bzr inbuilt functions for generating
+ # archives first, otherwise do it manually
+ if (${IS_GIT_REPO})
+
+ if (${IS_GIT_SUBMODULES_REPO})
+ find_program (GIT_ARCHIVE_ALL git-archive-all.sh)
+
+ if (NOT (${GIT_ARCHIVE_ALL} STREQUAL "GIT_ARCHIVE_ALL-NOTFOUND"))
+ add_custom_target (dist ${GIT_ARCHIVE_ALL} --prefix ${CMAKE_PROJECT_NAME}-${VERSION}/ ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar
+ COMMAND bzip2 ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMENT "Creating bz2 archive")
+ else (NOT (${GIT_ARCHIVE_ALL} STREQUAL "GIT_ARCHIVE_ALL-NOTFOUND"))
+ add_custom_target (dist
+ COMMAND echo "[WARNING]: git-archive-all.sh is needed to make releases of git submodules, get it from https://github.com/meitar/git-archive-all.sh.git and install it into your PATH"
+ COMMENT "Creating bz2 archive"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+ message ("[WARNING]: git-archive-all.sh is needed to make releases of git submodules, get it from https://github.com/meitar/git-archive-all.sh.git and install it into your PATH")
+ endif (NOT (${GIT_ARCHIVE_ALL} STREQUAL "GIT_ARCHIVE_ALL-NOTFOUND"))
+ else (${IS_GIT_SUBMODULES_REPO})
+ add_custom_target (dist git archive --format=tar --prefix ${CMAKE_PROJECT_NAME}-${VERSION}/ -o ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar HEAD
+ COMMAND bzip2 ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMENT "Creating bz2 archive")
+ endif (${IS_GIT_SUBMODULES_REPO})
+ else (${IS_GIT_REPO})
+ if (${IS_BZR_REPO})
+ add_custom_target (dist
+ COMMAND bzr export --root=${CMAKE_PROJECT_NAME}-${VERSION} ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+ else (${IS_BZR_REPO})
+ add_custom_target (dist)
+ #add_custom_target (dist
+ # COMMAND tar -cvf ${CMAKE_SOURCE_DIR} | bzip2 > ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2
+ # WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../)
+ endif (${IS_BZR_REPO})
+ endif (${IS_GIT_REPO})
+
+endmacro ()
+
+macro (compiz_add_distcheck)
+ add_custom_target (distcheck
+ COMMAND mkdir -p ${CMAKE_BINARY_DIR}/dist-build
+ && cp ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2 ${CMAKE_BINARY_DIR}/dist-build
+ && cd ${CMAKE_BINARY_DIR}/dist-build
+ && tar xvf ${CMAKE_BINARY_DIR}/dist-build/${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2
+ && mkdir -p ${CMAKE_BINARY_DIR}/dist-build/${CMAKE_PROJECT_NAME}-${VERSION}/build
+ && cd ${CMAKE_BINARY_DIR}/dist-build/${CMAKE_PROJECT_NAME}-${VERSION}/build
+ && cmake -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/dist-build/buildroot -DCOMPIZ_PLUGIN_INSTALL_TYPE='package' .. -DCMAKE_MODULE_PATH=/usr/share/cmake -DCOMPIZ_DISABLE_PLUGIN_KDE=ON -DBUILD_KDE4=OFF
+ && make -j4
+ && make test
+ && make -j4 install
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ add_dependencies (distcheck dist)
+endmacro ()
+
+macro (compiz_add_release_signoff)
+
+ add_custom_target (release-signoff)
+
+ add_custom_target (release-update-working-tree
+ COMMAND cp NEWS ${CMAKE_SOURCE_DIR} &&
+ cp AUTHORS ${CMAKE_SOURCE_DIR} &&
+ cp ChangeLog ${CMAKE_SOURCE_DIR})
+
+ if (${IS_GIT_REPO})
+ add_custom_target (release-commits
+ COMMAND git commit -a -m "Update NEWS for ${VERSION}"
+ COMMENT "Release Commit"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ add_custom_target (release-tags
+ COMMAND git tag -u $ENV{RELEASE_KEY} compiz-${VERSION} HEAD -m "Compiz ${VERSION} Release"
+ COMMENT "Release Tags"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ add_custom_target (release-branch
+ COMMAND git checkout -b compiz-${VERSION}-series &&
+ touch RELEASED &&
+ git add RELEASED &&
+ cat VERSION > RELEASED &&
+ git commit -a -m "Add RELEASED file"
+ COMMENT "Release Branch"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ add_custom_target (release-update-dist
+ COMMAND git checkout master &&
+ rm ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2 &&
+ make dist
+ COMMENT "Updating bz2 archive"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ add_custom_target (release-version-bump
+ COMMAND git checkout master &&
+ $ENV{EDITOR} VERSION &&
+ git add VERSION &&
+ git commit VERSION -m "Bump VERSION"
+ COMMENT "Bumping VERSION"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ else (${IS_GIT_REPO})
+ add_custom_target (release-commits)
+ add_custom_target (release-tags)
+ add_custom_target (release-branch)
+ add_custom_target (release-update-dist)
+ add_custom_target (release-version-bump)
+
+ endif (${IS_GIT_REPO})
+
+ add_custom_target (release-sign-tarballs
+ COMMAND gpg --armor --sign --detach-sig ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2
+ COMMENT "Signing tarball"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ add_custom_target (release-sha1-tarballs
+ COMMAND sha1sum ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2 > ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2.sha1
+ COMMENT "SHA1Summing tarball"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ add_custom_target (release-sign-sha1-tarballs
+ COMMAND gpg --armor --sign --detach-sig ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2.sha1
+ COMMENT "Signing SHA1Sum checksum"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+
+ add_dependencies (release-commits release-update-working-tree)
+ add_dependencies (release-tags release-commits)
+ add_dependencies (release-branch release-tags)
+ add_dependencies (release-update-dist release-branch)
+ add_dependencies (release-version-bump release-update-dist)
+ add_dependencies (release-sign-tarballs release-version-bump)
+ add_dependencies (release-sha1-tarballs release-sign-tarballs)
+ add_dependencies (release-sign-sha1-tarballs release-sha1-tarballs)
+
+ # This means that releasing needs to be done from a git repo for now
+ # But that's fine
+ add_dependencies (release-signoff release-sign-sha1-tarballs)
+
+ # Actually pushes the release
+ if (${IS_GIT_REPO})
+ add_custom_target (push-master
+ COMMAND git push origin master
+ COMMENT "Pushing to master"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ add_custom_target (push-release-branch
+ COMMAND git push origin compiz-${VERISON}-series
+ COMMENT "Pushing to compiz-${VERISON}-series"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ add_custom_target (push-tag
+ COMMAND git push origin compiz-${VERSION}
+ COMMENT "Pushing tag compiz-${VERSION}"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ else (${IS_GIT_REPO})
+ add_custom_target (push-master)
+ add_custom_target (push-release-branch)
+ add_custom_target (push-tag)
+ endif (${IS_GIT_REPO})
+
+ add_custom_target (release-push)
+
+ add_dependencies (release-push push-release-branch)
+ add_dependencies (push-release-branch push-tag)
+ add_dependencies (push-tag push-master)
+
+ # Push the tarball to releases.compiz.org
+ set (COMPIZ_RELEASE_UPLOAD_HOST releases.compiz.org)
+ set (COMPIZ_RELEASE_UPLOAD_BASE /home/releases)
+ set (COMPIZ_RELEASE_UPLOAD_DIR_VERSION ${COMPIZ_RELEASE_UPLOAD_BASE}/${VERSION}/)
+ set (COMPIZ_RELEASE_UPLOAD_DIR_COMPONENT ${COMPIZ_RELEASE_UPLOAD_BASE}/components/${CMAKE_PROJECT_NAME})
+
+ message ("releasing to " ${COMPIZ_RELEASE_UPLOAD_HOST})
+ message (" base: " ${COMPIZ_RELEASE_UPLOAD_BASE})
+ message (" version: " ${COMPIZ_RELEASE_UPLOAD_BASE}/${VERSION})
+ message (" component: ${COMPIZ_RELEASE_UPLOAD_BASE}/components/${CMAKE_PROJECT_NAME}")
+
+ add_custom_target (release-upload-version
+ COMMAND ssh $ENV{USER}@${COMPIZ_RELEASE_UPLOAD_HOST} "mkdir -p ${COMPIZ_RELEASE_UPLOAD_BASE}/${VERSION}" && scp ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2 $ENV{USER}@${COMPIZ_RELEASE_UPLOAD_HOST}:${COMPIZ_RELEASE_UPLOAD_DIR_VERSION}
+ COMMENT "Uploading ${CMAKE_PROJECT_NAME}-${VERSION} to ${VERSION}"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+
+ # Does nothing for now
+ add_custom_target (release-upload-component)
+ #add_custom_target (release-upload-component
+ # COMMAND ssh $ENV{USER}@${COMPIZ_RELEASE_UPLOAD_HOST} "mkdir -p ${COMPIZ_RELEASE_UPLOAD_BASE}/${VERSION}" && scp ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2 ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2.asc ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2.sha1 ${CMAKE_PROJECT_NAME}-${VERSION}.tar.bz2.sha1.asc $ENV{USER}@${COMPIZ_RELEASE_UPLOAD_HOST}:${COMPIZ_RELEASE_UPLOAD_BASE_DIR_COMPONENT}
+ # COMMENT "Uploading ${CMAKE_PROJECT_NAME}-${VERSION} to ${CMAKE_PROJECT_NAME}/${VERSION}"
+ # WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+
+ add_custom_target (release-upload)
+
+ add_dependencies (release-upload-component release-upload-version)
+ add_dependencies (release-upload release-upload-component)
+
+endmacro ()
+
+macro (compiz_add_release)
+
+ if (${IS_GIT_REPO})
+ find_program (GEN_GIT_LOG gen-git-log.sh)
+ add_custom_target (authors
+ COMMAND git shortlog -se | cut -c8- > AUTHORS
+ COMMENT "Generating AUTHORS"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ if (NOT (${GEN_GIT_LOG} STREQUAL "GEN_GIT_LOG-NOTFOUND"))
+ add_custom_target (changelog
+ COMMAND ${GEN_GIT_LOG} > ChangeLog
+ COMMENT "Generating ChangeLog"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ else (NOT (${GEN_GIT_LOG} STREQUAL "GEN_GIT_LOG-NOTFOUND"))
+ add_custom_target (changelog
+ COMMAND echo "[WARNING]: gen-git-log.sh is required to make releases, ensure that it is installed into your PATH"
+ COMMENT "Generating ChangeLog"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ message ("[WARNING]: gen-git-log.sh is required to make releases, ensure that it is installed into your PATH")
+ endif (NOT (${GEN_GIT_LOG} STREQUAL "GEN_GIT_LOG-NOTFOUND"))
+
+ add_custom_target (news-header echo 'Release ${VERSION} ('`date +%Y-%m-%d`' '`git config user.name`' <'`git config user.email`'>)' > ${CMAKE_BINARY_DIR}/NEWS.update && seq -s "=" `cat ${CMAKE_BINARY_DIR}/NEWS.update | wc -c` | sed 's/[0-9]//g' >> ${CMAKE_BINARY_DIR}/NEWS.update && $ENV{EDITOR} ${CMAKE_BINARY_DIR}/NEWS.update && echo >> ${CMAKE_BINARY_DIR}/NEWS.update
+ COMMAND $ENV{EDITOR} ${CMAKE_BINARY_DIR}/NEWS.update
+ COMMENT "Generating NEWS Header"
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ else (${IS_GIT_REPO})
+ if (${IS_BZR_REPO})
+ add_custom_target (authors
+ COMMAND bzr log --long --levels=0 | grep -e "^\\s*author:" -e "^\\s*committer:" | cut -d ":" -f 2 | sort -u > AUTHORS
+ COMMENT "Generating AUTHORS")
+ add_custom_target (changelog
+ COMMAND bzr log --gnu-changelog > ChangeLog
+ COMMENT "Generating ChangeLog")
+
+ add_custom_target (news-header echo > ${CMAKE_BINARY_DIR}/NEWS.update
+ COMMAND echo 'Release ${VERSION} ('`date +%Y-%m-%d`' '`bzr config email`')' > ${CMAKE_BINARY_DIR}/NEWS.update && seq -s "=" `cat ${CMAKE_BINARY_DIR}/NEWS.update | wc -c` | sed 's/[0-9]//g' >> ${CMAKE_BINARY_DIR}/NEWS.update && $ENV{EDITOR} ${CMAKE_BINARY_DIR}/NEWS.update && echo >> ${CMAKE_BINARY_DIR}/NEWS.update
+ COMMENT "Generating NEWS Header"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ else (${IS_BZR_REPO})
+ add_custom_target (authors)
+ add_custom_target (changelog)
+ add_custom_target (news-header)
+ endif (${IS_BZR_REPO})
+ endif (${IS_GIT_REPO})
+
+ add_custom_target (news
+ COMMAND cat ${CMAKE_SOURCE_DIR}/NEWS > NEWS.old &&
+ cat NEWS.old >> ${CMAKE_BINARY_DIR}/NEWS.update &&
+ cat NEWS.update > NEWS
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+
+ add_dependencies (changelog authors)
+ add_dependencies (news-header changelog)
+ add_dependencies (news news-header)
+
+ add_custom_target (release-prep)
+ add_dependencies (release-prep news)
+
+endmacro (compiz_add_release)
+
+# unsets the given variable
+macro (compiz_unset var)
+ set (${var} "" CACHE INTERNAL "")
+endmacro ()
+
+# sets the given variable
+macro (compiz_set var value)
+ set (${var} ${value} CACHE INTERNAL "")
+endmacro ()
+
+
+macro (compiz_format_string str length return)
+ string (LENGTH "${str}" _str_len)
+ math (EXPR _add_chr "${length} - ${_str_len}")
+ set (${return} "${str}")
+ while (_add_chr GREATER 0)
+ set (${return} "${${return}} ")
+ math (EXPR _add_chr "${_add_chr} - 1")
+ endwhile ()
+endmacro ()
+
+string (ASCII 27 _escape)
+function (compiz_color_message _str)
+ if (CMAKE_COLOR_MAKEFILE)
+ message (${_str})
+ else ()
+ string (REGEX REPLACE "${_escape}.[0123456789;]*m" "" __str ${_str})
+ message (${__str})
+ endif ()
+endfunction ()
+
+function (compiz_configure_file _src _dst)
+ foreach (_val ${ARGN})
+ set (_${_val}_sav ${${_val}})
+ set (${_val} "")
+ foreach (_word ${_${_val}_sav})
+ set (${_val} "${${_val}}${_word} ")
+ endforeach (_word ${_${_val}_sav})
+ endforeach (_val ${ARGN})
+
+ configure_file (${_src} ${_dst} @ONLY)
+
+ foreach (_val ${ARGN})
+ set (${_val} ${_${_val}_sav})
+ set (_${_val}_sav "")
+ endforeach (_val ${ARGN})
+endfunction ()
+
+function (compiz_add_plugins_in_folder folder)
+ set (COMPIZ_PLUGIN_PACK_BUILD 1)
+ file (
+ GLOB _plugins_in
+ RELATIVE "${folder}"
+ "${folder}/*/CMakeLists.txt"
+ )
+
+ foreach (_plugin ${_plugins_in})
+ get_filename_component (_plugin_dir ${_plugin} PATH)
+ add_subdirectory (${folder}/${_plugin_dir})
+ endforeach ()
+endfunction ()
+
+#### pkg-config handling
+
+include (FindPkgConfig)
+
+function (compiz_pkg_check_modules _var _req)
+ if (NOT ${_var})
+ pkg_check_modules (${_var} ${_req} ${ARGN})
+ if (${_var}_FOUND)
+ set (${_var} 1 CACHE INTERNAL "" FORCE)
+ endif ()
+ set(__pkg_config_checked_${_var} 0 CACHE INTERNAL "" FORCE)
+ endif ()
+endfunction ()
+
+#### translations
+
+# translate metadata file
+function (compiz_translate_xml _src _dst)
+ find_program (INTLTOOL_MERGE_EXECUTABLE intltool-merge)
+ mark_as_advanced (FORCE INTLTOOL_MERGE_EXECUTABLE)
+
+ if (INTLTOOL_MERGE_EXECUTABLE
+ AND COMPIZ_I18N_DIR
+ AND EXISTS ${COMPIZ_I18N_DIR})
+ add_custom_command (
+ OUTPUT ${_dst}
+ COMMAND ${INTLTOOL_MERGE_EXECUTABLE} -x -u -c
+ ${CMAKE_BINARY_DIR}/.intltool-merge-cache
+ ${COMPIZ_I18N_DIR}
+ ${_src}
+ ${_dst}
+ DEPENDS ${_src}
+ )
+ else ()
+ add_custom_command (
+ OUTPUT ${_dst}
+ COMMAND cat ${_src} |
+ sed -e 's;<_;<;g' -e 's;</_;</;g' >
+ ${_dst}
+ DEPENDS ${_src}
+ )
+ endif ()
+endfunction ()
+
+function (compiz_translate_desktop_file _src _dst)
+ find_program (INTLTOOL_MERGE_EXECUTABLE intltool-merge)
+ mark_as_advanced (FORCE INTLTOOL_MERGE_EXECUTABLE)
+
+ if (INTLTOOL_MERGE_EXECUTABLE
+ AND COMPIZ_I18N_DIR
+ AND EXISTS ${COMPIZ_I18N_DIR})
+ add_custom_command (
+ OUTPUT ${_dst}
+ COMMAND ${INTLTOOL_MERGE_EXECUTABLE} -d -u -c
+ ${CMAKE_BINARY_DIR}/.intltool-merge-cache
+ ${COMPIZ_I18N_DIR}
+ ${_src}
+ ${_dst}
+ DEPENDS ${_src}
+ )
+ else ()
+ add_custom_command (
+ OUTPUT ${_dst}
+ COMMAND cat ${_src} |
+ sed -e 's;^_;;g' >
+ ${_dst}
+ DEPENDS ${_src}
+ )
+ endif ()
+endfunction ()
+
+#### optional file install
+
+function (compiz_opt_install_file _src _dst)
+ install (CODE
+ "message (\"-- Installing: ${_dst}\")
+ execute_process (
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different \"${_src}\" \"${COMPIZ_DESTDIR}${_dst}\"
+ RESULT_VARIABLE _result
+ OUTPUT_QUIET ERROR_QUIET
+ )
+ if (_result)
+ message (\"-- Failed to install: ${_dst}\")
+ endif ()
+ "
+ )
+endfunction ()
+
+#### uninstall
+
+macro (compiz_add_uninstall)
+ if (NOT _compiz_uninstall_rule_created)
+ compiz_set(_compiz_uninstall_rule_created TRUE)
+
+ set (_file "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake")
+
+ file (WRITE ${_file} "if (NOT EXISTS \"${CMAKE_BINARY_DIR}/install_manifest.txt\")\n")
+ file (APPEND ${_file} " message (FATAL_ERROR \"Cannot find install manifest: \\\"${CMAKE_BINARY_DIR}/install_manifest.txt\\\"\")\n")
+ file (APPEND ${_file} "endif (NOT EXISTS \"${CMAKE_BINARY_DIR}/install_manifest.txt\")\n\n")
+ file (APPEND ${_file} "file (READ \"${CMAKE_BINARY_DIR}/install_manifest.txt\" files)\n")
+ file (APPEND ${_file} "string (REGEX REPLACE \"\\n\" \";\" files \"\${files}\")\n")
+ file (APPEND ${_file} "foreach (file \${files})\n")
+ file (APPEND ${_file} " message (STATUS \"Uninstalling \\\"\${file}\\\"\")\n")
+ file (APPEND ${_file} " if (EXISTS \"\${file}\")\n")
+ file (APPEND ${_file} " exec_program(\n")
+ file (APPEND ${_file} " \"${CMAKE_COMMAND}\" ARGS \"-E remove \\\"\${file}\\\"\"\n")
+ file (APPEND ${_file} " OUTPUT_VARIABLE rm_out\n")
+ file (APPEND ${_file} " RETURN_VALUE rm_retval\n")
+ file (APPEND ${_file} " )\n")
+ file (APPEND ${_file} " if (\"\${rm_retval}\" STREQUAL 0)\n")
+ file (APPEND ${_file} " else (\"\${rm_retval}\" STREQUAL 0)\n")
+ file (APPEND ${_file} " message (FATAL_ERROR \"Problem when removing \\\"\${file}\\\"\")\n")
+ file (APPEND ${_file} " endif (\"\${rm_retval}\" STREQUAL 0)\n")
+ file (APPEND ${_file} " else (EXISTS \"\${file}\")\n")
+ file (APPEND ${_file} " message (STATUS \"File \\\"\${file}\\\" does not exist.\")\n")
+ file (APPEND ${_file} " endif (EXISTS \"\${file}\")\n")
+ file (APPEND ${_file} "endforeach (file)\n")
+
+ add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake")
+
+ endif ()
+endmacro ()
+
+#posix 2008 scandir check
+if (CMAKE_CXX_COMPILER)
+ include (CheckCXXSourceCompiles)
+ CHECK_CXX_SOURCE_COMPILES (
+ "# include <dirent.h>
+ int func (const char *d, dirent ***list, void *sort)
+ {
+ int n = scandir(d, list, 0, (int(*)(const dirent **, const dirent **))sort);
+ return n;
+ }
+
+ int main (int, char **)
+ {
+ return 0;
+ }
+ "
+ HAVE_SCANDIR_POSIX)
+endif (CMAKE_CXX_COMPILER)
+
+if (HAVE_SCANDIR_POSIX)
+ add_definitions (-DHAVE_SCANDIR_POSIX)
+endif ()
=== added file 'cmake/CompizDefaults.cmake'
--- cmake/CompizDefaults.cmake 1970-01-01 00:00:00 +0000
+++ cmake/CompizDefaults.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,15 @@
+set (COMPIZ_PREFIX ${CMAKE_INSTALL_PREFIX})
+set (COMPIZ_INCLUDEDIR ${includedir})
+set (COMPIZ_LIBDIR ${libdir})
+
+list (APPEND COMPIZ_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/include)
+list (APPEND COMPIZ_INCLUDE_DIRS ${CMAKE_BINARY_DIR})
+
+set (COMPIZ_BCOP_XSLT ${CMAKE_SOURCE_DIR}/xslt/bcop.xslt)
+
+set (COMPIZ_GCONF_SCHEMAS_SUPPORT ${USE_GCONF})
+set (COMPIZ_GCONF_SCHEMAS_XSLT ${CMAKE_SOURCE_DIR}/xslt/compiz_gconf_schemas.xslt)
+
+set (COMPIZ_PLUGIN_INSTALL_TYPE "package")
+
+set (_COMPIZ_INTERNAL 1)
=== added file 'cmake/CompizDefaults.cmake.in'
--- cmake/CompizDefaults.cmake.in 1970-01-01 00:00:00 +0000
+++ cmake/CompizDefaults.cmake.in 2011-08-14 15:11:23 +0000
@@ -0,0 +1,5 @@
+
+set (COMPIZ_BCOP_XSLT @CMAKE_INSTALL_PREFIX@/share/compiz/xslt/bcop.xslt)
+
+set (COMPIZ_GCONF_SCHEMAS_SUPPORT @USE_GCONF@)
+set (COMPIZ_GCONF_SCHEMAS_XSLT @CMAKE_INSTALL_PREFIX@/share/compiz/xslt/compiz_gconf_schemas.xslt)
\ No newline at end of file
=== added file 'cmake/CompizGconf.cmake'
--- cmake/CompizGconf.cmake 1970-01-01 00:00:00 +0000
+++ cmake/CompizGconf.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,52 @@
+option (
+ COMPIZ_DISABLE_SCHEMAS_INSTALL
+ "Disables gconf schema installation with gconftool"
+ OFF
+)
+
+set (
+ COMPIZ_INSTALL_GCONF_SCHEMA_DIR ${COMPIZ_INSTALL_GCONF_SCHEMA_DIR} CACHE PATH
+ "Installation path of the gconf schema file"
+)
+
+function (compiz_install_gconf_schema _src _dst)
+ find_program (GCONFTOOL_EXECUTABLE gconftool-2)
+ mark_as_advanced (FORCE GCONFTOOL_EXECUTABLE)
+
+ if (GCONFTOOL_EXECUTABLE AND NOT COMPIZ_DISABLE_SCHEMAS_INSTALL)
+ install (CODE "
+ if (\"\$ENV{USER}\" STREQUAL \"root\")
+ exec_program (${GCONFTOOL_EXECUTABLE}
+ ARGS \"--get-default-source\"
+ OUTPUT_VARIABLE ENV{GCONF_CONFIG_SOURCE})
+ exec_program (${GCONFTOOL_EXECUTABLE}
+ ARGS \"--makefile-install-rule ${_src} > /dev/null\")
+ else (\"\$ENV{USER}\" STREQUAL \"root\")
+ exec_program (${GCONFTOOL_EXECUTABLE}
+ ARGS \"--install-schema-file=${_src} > /dev/null\")
+ endif (\"\$ENV{USER}\" STREQUAL \"root\")
+ ")
+ endif ()
+ install (
+ FILES "${_src}"
+ DESTINATION "${COMPIZ_DESTDIR}${_dst}"
+ )
+endfunction ()
+
+# generate gconf schema
+function (compiz_gconf_schema _src _dst _inst)
+ find_program (XSLTPROC_EXECUTABLE xsltproc)
+ mark_as_advanced (FORCE XSLTPROC_EXECUTABLE)
+
+ if (XSLTPROC_EXECUTABLE)
+ add_custom_command (
+ OUTPUT ${_dst}
+ COMMAND ${XSLTPROC_EXECUTABLE}
+ -o ${_dst}
+ ${COMPIZ_GCONF_SCHEMAS_XSLT}
+ ${_src}
+ DEPENDS ${_src}
+ )
+ compiz_install_gconf_schema (${_dst} ${_inst})
+ endif ()
+endfunction ()
=== added file 'cmake/CompizPackage.cmake'
--- cmake/CompizPackage.cmake 1970-01-01 00:00:00 +0000
+++ cmake/CompizPackage.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,101 @@
+include (CompizCommon)
+
+function (compiz_package_generation _name)
+ include(InstallRequiredSystemLibraries)
+
+ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${_name}")
+ set (CPACK_PACKAGE_VENDOR "Compiz")
+ set (CPACK_PACKAGE_VERSION "${VERSION}")
+ set (CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION}")
+
+ set (CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
+ set (CPACK_RPM_PACKAGE_NAME ${CPACK_PACKAGE_NAME})
+ set (CPACK_RPM_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
+ set (CPACK_RPM_PACKAGE_RELEASE 1)
+ set (CPACK_RPM_PACKAGE_LICENCE "GPL")
+ set (CPACK_RPM_PACKAGE_GROUP "unknown")
+ set (CPACK_RPM_PACKAGE_VENDOR ${CPACK_PACKAGE_VENDOR})
+ set (CPACK_RPM_PACKAGE_DESCRIPTION "The blingiest window manager in the world")
+ set (CPACK_SOURCE_GENERATOR "TGZ;TBZ2")
+ set (CPACK_SOURCE_IGNORE_FILES "\\\\.#;/#;.*~")
+ list (APPEND CPACK_SOURCE_IGNORE_FILES "/\\\\.git")
+ list (APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_BINARY_DIR}")
+ list (APPEND CPACK_SOURCE_IGNORE_FILES "legacy/")
+ list (APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.intltool-merge-cache")
+ list (APPEND CPACK_SOURCE_IGNORE_FILES "/po/POTFILES$")
+ list (APPEND CPACK_SOURCE_IGNORE_FILES "CMakeCache.txt")
+ list (APPEND CPACK_SOURCE_IGNORE_FILES "CMakeFiles")
+ include(CPack)
+
+ #file (REMOVE "${CMAKE_BINARY_DIR}/CPackConfig.cmake")
+endfunction ()
+
+function (compiz_print_configure_header _name)
+ compiz_format_string ("${_name}" 40 _project)
+ compiz_format_string ("${VERSION}" 40 _version)
+ compiz_color_message ("\n${_escape}[40;37m************************************************************${_escape}[0m")
+ compiz_color_message ("${_escape}[40;37m* ${_escape}[1;31mCompiz ${_escape}[0;40;34mBuildsystem${_escape}[0m${_escape}[40;37m *${_escape}[0m")
+ compiz_color_message ("${_escape}[40;37m* *${_escape}[0m")
+ compiz_color_message ("${_escape}[40;37m* Package : ${_escape}[32m${_project} ${_escape}[37m *${_escape}[0m")
+ compiz_color_message ("${_escape}[40;37m* Version : ${_escape}[32m${_version} ${_escape}[37m *${_escape}[0m")
+ compiz_color_message ("${_escape}[40;37m************************************************************${_escape}[0m")
+endfunction ()
+
+function (compiz_print_configure_footer)
+ compiz_color_message ("${_escape}[40;37m************************************************************${_escape}[0m\n")
+endfunction ()
+
+function (compiz_print_plugin_stats _folder)
+ compiz_color_message ("\n${_escape}[4mPlugin configure check results:${_escape}[0m\n")
+ file (
+ GLOB _plugins_in
+ RELATIVE "${_folder}"
+ "${_folder}/*/CMakeLists.txt"
+ )
+ foreach (_plugin ${_plugins_in})
+ file (READ "${_folder}/${_plugin}" _file)
+ if (_file MATCHES "^.*compiz_plugin ?\\(([^\\) ]*).*$")
+ string (
+ REGEX REPLACE
+ "^.*compiz_plugin ?\\(([^\\) ]*).*$" "\\1"
+ _plugin_name ${_file}
+ )
+ else ()
+ get_filename_component (_plugin_name ${_plugin} PATH)
+ endif ()
+
+ string (TOUPPER ${_plugin_name} _PLUGIN)
+ compiz_format_string (${_plugin_name} 14 _plugin_name)
+
+ if (COMPIZ_DISABLE_PLUGIN_${_PLUGIN})
+ compiz_color_message (" ${_plugin_name}: ${_escape}[1;34mDisabled${_escape}[0m")
+ else ()
+ if (COMPIZ_${_PLUGIN}_BUILD)
+ compiz_color_message (" ${_plugin_name}: ${_escape}[1;32mYes${_escape}[0m")
+ else ()
+ compiz_color_message (" ${_plugin_name}: ${_escape}[1;31mNo${_escape}[0m (Missing dependencies :${COMPIZ_${_PLUGIN}_MISSING_DEPS})")
+ endif ()
+ endif ()
+ endforeach ()
+ message ("")
+endfunction ()
+
+function (compiz_print_result_message _name _var)
+ compiz_format_string ("${_name}" 30 __name)
+ if (${_var})
+ set (_result "${_escape}[1;32mYes${_escape}[0m")
+ else (${_var})
+ set (_result "${_escape}[1;31mNo${_escape}[0m")
+ endif (${_var})
+ compiz_color_message (" ${__name} : ${_result}")
+endfunction (compiz_print_result_message)
+
+function (compiz_get_version_from_file)
+ file (READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" _file)
+ string (
+ REGEX REPLACE
+ "^.*VERSION=([^\n]*).*$" "\\1"
+ _version ${_file}
+ )
+ set (VERSION ${_version} PARENT_SCOPE)
+endfunction ()
=== added file 'cmake/CompizPlugin.cmake'
--- cmake/CompizPlugin.cmake 1970-01-01 00:00:00 +0000
+++ cmake/CompizPlugin.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,451 @@
+#######################################################################
+#
+# Generic Compiz Fusion plugin cmake module
+#
+# Copyright : (C) 2008 by Dennis Kasprzyk
+# E-mail : onestone@xxxxxxxxxxxxxxxxxxx
+#
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+#######################################################################
+#
+# This module provides the following macro:
+#
+# compiz_plugin (<plugin name>
+# [PKGDEPS dep1 dep2 ...]
+# [PLUGINDEPS plugin1 plugin2 ...]
+# [LDFLAGSADD flag1 flag2 ...]
+# [CFLAGSADD flag1 flag2 ...]
+# [LIBRARIES lib1 lib2 ...]
+# [LIBDIRS dir1 dir2 ...]
+# [INCDIRS dir1 dir2 ...])
+#
+# PKGDEPS = pkgconfig dependencies
+# PLUGINDEPS = compiz plugin dependencies
+# LDFLAGSADD = flags added to the link command
+# CFLAGSADD = flags added to the compile command
+# LIBRARIES = libraries added to link command
+# LIBDIRS = additional link directories
+# INCDIRS = additional include directories
+#
+# The following variables will be used by this macro:
+#
+# BUILD_GLOBAL=true Environment variable to install a plugin
+# into the compiz directories
+#
+# COMPIZ_PLUGIN_INSTALL_TYPE = (package | compiz | local (default))
+# package = Install into ${CMAKE_INSTALL_PREFIX}
+# compiz = Install into compiz prefix (BUILD_GLOBAL=true)
+# local = Install into home directory
+#
+# COMPIZ_I18N_DIR = Translation file directory
+#
+# COMPIZ_DISABLE_SCHEMAS_INSTALL = Disables gconf schema installation with gconftool
+# COMPIZ_INSTALL_GCONF_SCHEMA_DIR = Installation path of the gconf schema file
+#
+# VERSION = package version that is added to a plugin pkg-version file
+#
+#######################################################################
+
+include (CompizCommon)
+include (CompizBcop)
+
+if (COMPIZ_PACKAGING_ENABLED)
+ set (prefix ${CMAKE_INSTALL_PREFIX} CACHE PATH "prefix")
+ set (exec_prefix ${CMAKE_INSTALL_PREFIX}/bin CACHE PATH "bindir")
+ set (libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE PATH "libdir")
+ set (includedir ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "includedir")
+ set (datadir ${CMAKE_INSTALL_PREFIX}/share CACHE PATH "datadir")
+else (COMPIZ_PACKAGING_ENABLED)
+ set (prefix ${CMAKE_INSTALL_PREFIX} )
+ set (exec_prefix ${CMAKE_INSTALL_PREFIX}/bin )
+ set (libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
+ set (includedir ${CMAKE_INSTALL_PREFIX}/include )
+ set (datadir ${CMAKE_INSTALL_PREFIX}/share )
+endif (COMPIZ_PACKAGING_ENABLED)
+
+### Set up core lib dependences so this in correctly imported into plugins
+
+find_package (Boost 1.34.0 REQUIRED serialization)
+
+set (COMPIZ_REQUIRES
+ x11
+ xext
+ xdamage
+ xcomposite
+ x11-xcb
+ xrandr
+ xinerama
+ xext
+ ice
+ sm
+ libxml-2.0
+ libxslt
+ "libstartup-notification-1.0 >= 0.7"
+)
+
+compiz_pkg_check_modules (COMPIZ REQUIRED ${COMPIZ_REQUIRES})
+
+list (APPEND COMPIZ_LIBRARIES ${Boost_LIBRARIES})
+
+# determinate installation directories
+macro (_prepare_directories)
+ set (CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;MinSizeRe" CACHE INTERNAL "" FORCE)
+ if ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
+ set (PLUGIN_BUILDTYPE global)
+ set (PLUGIN_PREFIX ${CMAKE_INSTALL_PREFIX})
+ set (PLUGIN_LIBDIR ${libdir}/compiz)
+ set (PLUGIN_INCDIR ${includedir})
+ set (PLUGIN_PKGDIR ${libdir}/pkgconfig)
+ set (PLUGIN_XMLDIR ${datadir}/compiz)
+
+ if (NOT CMAKE_BUILD_TYPE)
+ set (CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Build type (Debug/Release/RelWithDebInfo/MinSizeRe)" FORCE)
+ endif (NOT CMAKE_BUILD_TYPE)
+ elseif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
+ "$ENV{BUILD_GLOBAL}" STREQUAL "true")
+ set (PLUGIN_BUILDTYPE global)
+ set (PLUGIN_PREFIX ${COMPIZ_PREFIX})
+ set (PLUGIN_LIBDIR ${COMPIZ_LIBDIR}/compiz)
+ set (PLUGIN_INCDIR ${COMPIZ_INCLUDEDIR})
+ set (PLUGIN_PKGDIR ${COMPIZ_LIBDIR}/pkgconfig)
+ set (PLUGIN_XMLDIR ${COMPIZ_PREFIX}/share/compiz)
+
+ if (NOT CMAKE_BUILD_TYPE)
+ set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type (Debug/Release/RelWithDebInfo/MinSizeRe)" FORCE)
+ endif (NOT CMAKE_BUILD_TYPE)
+ else ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
+ "$ENV{BUILD_GLOBAL}" STREQUAL "true")
+ set (PLUGIN_BUILDTYPE local)
+ set (PLUGIN_PREFIX $ENV{HOME}/.compiz-1)
+ set (PLUGIN_LIBDIR $ENV{HOME}/.compiz-1/plugins)
+ set (PLUGIN_XMLDIR $ENV{HOME}/.compiz-1/metadata)
+
+ if (NOT CMAKE_BUILD_TYPE)
+ set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type (Debug/Release/RelWithDebInfo/MinSizeRe)" FORCE)
+ endif (NOT CMAKE_BUILD_TYPE)
+ endif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
+endmacro (_prepare_directories)
+
+# parse plugin macro parameter
+macro (_get_plugin_parameters _prefix)
+ set (_current_var _foo)
+ set (_supported_var PKGDEPS PLUGINDEPS LDFLAGSADD CFLAGSADD LIBRARIES LIBDIRS INCDIRS)
+ foreach (_val ${_supported_var})
+ set (${_prefix}_${_val})
+ endforeach (_val)
+ foreach (_val ${ARGN})
+ set (_found FALSE)
+ foreach (_find ${_supported_var})
+ if ("${_find}" STREQUAL "${_val}")
+ set (_found TRUE)
+ endif ("${_find}" STREQUAL "${_val}")
+ endforeach (_find)
+
+ if (_found)
+ set (_current_var ${_prefix}_${_val})
+ else (_found)
+ list (APPEND ${_current_var} ${_val})
+ endif (_found)
+ endforeach (_val)
+endmacro (_get_plugin_parameters)
+
+# check pkgconfig dependencies
+macro (_check_plugin_pkg_deps _prefix)
+ set (${_prefix}_HAS_PKG_DEPS TRUE)
+ foreach (_val ${ARGN})
+ string (REGEX REPLACE "[<>=\\.]" "_" _name ${_val})
+ string (TOUPPER ${_name} _name)
+
+ compiz_pkg_check_modules (_${_name} ${_val})
+
+ if (_${_name}_FOUND)
+ list (APPEND ${_prefix}_PKG_LIBDIRS "${_${_name}_LIBRARY_DIRS}")
+ list (APPEND ${_prefix}_PKG_LIBRARIES "${_${_name}_LIBRARIES}")
+ list (APPEND ${_prefix}_PKG_INCDIRS "${_${_name}_INCLUDE_DIRS}")
+ else ()
+ set (${_prefix}_HAS_PKG_DEPS FALSE)
+ compiz_set (COMPIZ_${_prefix}_MISSING_DEPS "${COMPIZ_${_prefix}_MISSING_DEPS} ${_val}")
+ set(__pkg_config_checked__${_name} 0 CACHE INTERNAL "" FORCE)
+ endif ()
+ endforeach ()
+endmacro ()
+
+# check plugin dependencies
+macro (_check_plugin_plugin_deps _prefix)
+ set (${_prefix}_HAS_PLUGIN_DEPS TRUE)
+ foreach (_val ${ARGN})
+ string (TOUPPER ${_val} _name)
+
+ find_file (
+ _plugin_dep_${_val}
+ compiz-${_val}.pc.in
+ PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../${_val}
+ NO_DEFAULT_PATH
+ )
+
+ if (_plugin_dep_${_val})
+ file (RELATIVE_PATH _relative ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dep_${_val}})
+ get_filename_component (_plugin_inc_dir ${_relative} PATH)
+ list (APPEND ${_prefix}_LOCAL_INCDIRS "${_plugin_inc_dir}/include")
+ list (APPEND ${_prefix}_LOCAL_LIBRARIES ${_val})
+ else ()
+ # fallback to pkgconfig
+ compiz_pkg_check_modules (_${_name} compiz-${_val})
+ if (_${_name}_FOUND)
+ list (APPEND ${_prefix}_PKG_LIBDIRS "${_${_name}_LIBRARY_DIRS}")
+ list (APPEND ${_prefix}_PKG_LIBRARIES "${_${_name}_LIBRARIES}")
+ list (APPEND ${_prefix}_PKG_INCDIRS "${_${_name}_INCLUDE_DIRS}")
+ else ()
+ set (${_prefix}_HAS_PLUGIN_DEPS FALSE)
+ compiz_set (COMPIZ_${_prefix}_MISSING_DEPS "${COMPIZ_${_prefix}_MISSING_DEPS} compiz-${_val}")
+ endif ()
+ endif ()
+
+ compiz_set (_plugin_dep_${_val} "${_plugin_dep_${_val}}")
+
+ endforeach ()
+endmacro ()
+
+
+
+
+# main function
+function (_build_compiz_plugin plugin)
+ string (TOUPPER ${plugin} _PLUGIN)
+
+ if (COMPIZ_PLUGIN_INSTALL_TYPE)
+ set (
+ COMPIZ_PLUGIN_INSTALL_TYPE ${COMPIZ_PLUGIN_INSTALL_TYPE} CACHE STRING
+ "Where a plugin should be installed \(package | compiz | local\)"
+ )
+ else (COMPIZ_PLUGIN_INSTALL_TYPE)
+ set (
+ COMPIZ_PLUGIN_INSTALL_TYPE "local" CACHE STRING
+ "Where a plugin should be installed \(package | compiz | local\)"
+ )
+ endif (COMPIZ_PLUGIN_INSTALL_TYPE)
+
+ _get_plugin_parameters (${_PLUGIN} ${ARGN})
+ _prepare_directories ()
+
+ find_file (
+ _${plugin}_xml_in ${plugin}.xml.in
+ PATHS ${CMAKE_CURRENT_SOURCE_DIR}
+ NO_DEFAULT_PATH
+ )
+ if (_${plugin}_xml_in)
+ set (_${plugin}_xml ${_${plugin}_xml_in})
+ else ()
+ find_file (
+ _${plugin}_xml ${plugin}.xml
+ PATHS ${CMAKE_CURRENT_SOURCE_DIR} }
+ NO_DEFAULT_PATH
+ )
+ endif ()
+
+ set (${_PLUGIN}_HAS_PKG_DEPS)
+ set (${_PLUGIN}_HAS_PLUGIN_DEPS)
+
+ # check dependencies
+ compiz_unset (COMPIZ_${_PLUGIN}_MISSING_DEPS)
+ _check_plugin_plugin_deps (${_PLUGIN} ${${_PLUGIN}_PLUGINDEPS})
+ _check_plugin_pkg_deps (${_PLUGIN} ${${_PLUGIN}_PKGDEPS})
+
+ if (${_PLUGIN}_HAS_PKG_DEPS AND ${_PLUGIN}_HAS_PLUGIN_DEPS)
+
+ compiz_set (COMPIZ_${_PLUGIN}_BUILD TRUE PARENT_SCOPE)
+
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/generated)
+ file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/generated)
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/generated)
+
+ if (_${plugin}_xml_in)
+ # translate xml
+ compiz_translate_xml ( ${_${plugin}_xml_in} "${CMAKE_BINARY_DIR}/generated/${plugin}.xml")
+ set (_translation_sources "${CMAKE_BINARY_DIR}/generated/${plugin}.xml")
+ set (_translated_xml ${CMAKE_BINARY_DIR}/generated/${plugin}.xml)
+ else ()
+ if (_${plugin}_xml)
+ set (_translated_xml ${_${plugin}_xml})
+ endif ()
+ endif ()
+
+ if (_${plugin}_xml)
+ # do we need bcop for our plugin
+ compiz_plugin_needs_bcop (${_${plugin}_xml} _needs_bcop)
+ if (_needs_bcop)
+ # initialize everything we need for bcop
+ compiz_add_bcop_targets (${plugin} ${_${plugin}_xml} _bcop_sources)
+ endif ()
+ endif ()
+
+ if (_translated_xml)
+
+ # install xml
+ install (
+ FILES ${_translated_xml}
+ DESTINATION ${COMPIZ_DESTDIR}${PLUGIN_XMLDIR}
+ )
+ endif (_translated_xml)
+
+ find_file (
+ _${plugin}_pkg compiz-${plugin}.pc.in
+ PATHS ${CMAKE_CURRENT_SOURCE_DIR}
+ NO_DEFAULT_PATH
+ )
+
+ # generate pkgconfig file and install it and the plugin header file
+ if (_${plugin}_pkg AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/include/${plugin})
+ if ("${PLUGIN_BUILDTYPE}" STREQUAL "local")
+ message (STATUS "[WARNING] The plugin ${plugin} might be needed by other plugins. Install it systemwide.")
+ else ()
+ set (prefix ${PLUGIN_PREFIX})
+ set (libdir ${PLUGIN_LIBDIR})
+ set (includedir ${PLUGIN_INCDIR})
+ if (NOT VERSION)
+ set (VERSION 0.0.1-git)
+ endif (NOT VERSION)
+
+ compiz_configure_file (
+ ${_${plugin}_pkg}
+ ${CMAKE_BINARY_DIR}/generated/compiz-${plugin}.pc
+ COMPIZ_REQUIRES
+ COMPIZ_CFLAGS
+ )
+
+ install (
+ FILES ${CMAKE_BINARY_DIR}/generated/compiz-${plugin}.pc
+ DESTINATION ${COMPIZ_DESTDIR}${PLUGIN_PKGDIR}
+ )
+ install (
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/${plugin}
+ DESTINATION ${COMPIZ_DESTDIR}${PLUGIN_INCDIR}/compiz
+ )
+ endif ()
+ endif ()
+
+ set (COMPIZ_CURRENT_PLUGIN ${plugin})
+ set (COMPIZ_CURRENT_XML_FILE ${_translated_xml})
+
+ # find extension files
+ file (GLOB _extension_files "${COMPIZ_CMAKE_MODULE_PATH}/plugin_extensions/*.cmake")
+
+ foreach (_file ${_extension_files})
+ include (${_file})
+ endforeach ()
+
+ # find files for build
+ file (GLOB _h_files "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
+ file (GLOB _h_ins_files "${CMAKE_CURRENT_SOURCE_DIR}/include/${plugin}/*.h")
+ file (GLOB _cpp_files "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
+
+# set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs")
+
+# set (_cflags "-Wall -Wpointer-arith -fno-strict-aliasing")
+
+
+ add_definitions (-DPREFIX='\"${PLUGIN_PREFIX}\"'
+ ${COMPIZ_DEFINITIONS_ADD})
+
+ include_directories (
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_BINARY_DIR}/generated
+ ${${_PLUGIN}_LOCAL_INCDIRS}
+ ${${_PLUGIN}_PKG_INCDIRS}
+ ${${_PLUGIN}_INCDIRS}
+ ${COMPIZ_INCLUDE_DIRS}
+ ${CMAKE_PREFIX_PATH}/include
+ ${CMAKE_INCLUDE_PATH}
+ )
+
+ link_directories (
+ ${COMPIZ_LINK_DIRS}
+ ${${_PLUGIN}_PKG_LIBDIRS}
+ ${${_PLUGIN}_LIBDIRS}
+ ${PLUGIN_LIBDIR}
+ ${COMPIZ_LIBDIR}/compiz
+ ${CMAKE_PREFIX_PATH}/lib
+ ${CMAKE_PREFIX_PATH}/lib32
+ ${CMAKE_PREFIX_PATH}/lib64
+ )
+
+ add_library (
+ ${plugin} SHARED ${_cpp_files}
+ ${_h_files}
+ ${_h_ins_files}
+ ${_bcop_sources}
+ ${_translation_sources}
+ ${COMPIZ_CURRENT_SOURCES_ADDS}
+ )
+
+ if (COMPIZ_BUILD_WITH_RPATH)
+ set_target_properties (
+ ${plugin} PROPERTIES
+ INSTALL_RPATH_USE_LINK_PATH 1
+ BUILD_WITH_INSTALL_RPATH 1
+ SKIP_BUILD_RPATH 0
+ COMPILE_FLAGS "${${_PLUGIN}_CFLAGSADD}"
+ LINK_FLAGS "${${_PLUGIN}_LDFLAGSADD}"
+ )
+ else (COMPIZ_BUILD_WITH_RPATH)
+ set_target_properties (
+ ${plugin} PROPERTIES
+ INSTALL_RPATH_USE_LINK_PATH 0
+ SKIP_BUILD_RPATH 1
+ INSTALL_RPATH "${COMPIZ_LIBDIR}/compiz"
+ COMPILE_FLAGS "${${_PLUGIN}_CFLAGSADD}"
+ LINK_FLAGS "${${_PLUGIN}_LDFLAGSADD}"
+ )
+ endif (COMPIZ_BUILD_WITH_RPATH)
+
+ target_link_libraries (
+ ${plugin} ${COMPIZ_LIBRARIES}
+ ${${_PLUGIN}_LOCAL_LIBRARIES}
+ ${${_PLUGIN}_PKG_LIBRARIES}
+ ${${_PLUGIN}_LIBRARIES}
+ )
+
+ install (
+ TARGETS ${plugin}
+ LIBRARY DESTINATION ${COMPIZ_DESTDIR}${PLUGIN_LIBDIR}
+ )
+
+ compiz_add_uninstall ()
+
+ if (NOT COMPIZ_PLUGIN_PACK_BUILD)
+ compiz_add_git_dist ()
+ compiz_add_release ()
+ compiz_add_release_signoff ()
+ endif (NOT COMPIZ_PLUGIN_PACK_BUILD)
+
+ else ()
+ message (STATUS "[WARNING] One or more dependencies for compiz plugin ${plugin} not found. Skipping plugin.")
+ message (STATUS "Missing dependencies :${COMPIZ_${_PLUGIN}_MISSING_DEPS}")
+ compiz_set (COMPIZ_${_PLUGIN}_BUILD FALSE)
+ endif ()
+endfunction ()
+
+macro (compiz_plugin plugin)
+ string (TOUPPER ${plugin} _PLUGIN)
+
+ option (
+ COMPIZ_DISABLE_PLUGIN_${_PLUGIN}
+ "Disable building of plugin \"${plugin}\""
+ OFF
+ )
+
+ if (NOT COMPIZ_DISABLE_PLUGIN_${_PLUGIN})
+ _build_compiz_plugin (${plugin} ${ARGN})
+ endif (NOT COMPIZ_DISABLE_PLUGIN_${_PLUGIN})
+endmacro ()
=== added file 'cmake/FindCompiz.cmake'
--- cmake/FindCompiz.cmake 1970-01-01 00:00:00 +0000
+++ cmake/FindCompiz.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,94 @@
+
+
+
+################################################################################
+#
+# FindCompiz
+#
+# This module finds Compiz (www.compiz.org). It uses the FindPkgConfig to
+# locate Compiz and adds the Compiz CMake module path to the CMake module path.
+# It also loads the CompizDefaults that sets all variables to compile Compiz
+# modules.
+#
+# This module sets the following variables:
+# COMPIZ_FOUND ... set to true if compiz and its CompizDefaults macro
+# is found
+#
+# Variables set by the FindPkgConfig macro for compiz
+# COMPIZ_LIBRARY_DIRS ... the paths of the libraries (w/o the '-L')
+# COMPIZ_LDFLAGS ... all required linker flags
+# COMPIZ_LDFLAGS_OTHER ... all other linker flags
+# COMPIZ_INCLUDE_DIRS ... the '-I' preprocessor flags (w/o the '-I')
+# COMPIZ_CFLAGS ... all required cflags
+# COMPIZ_CFLAGS_OTHER ... the other compiler flags
+# COMPIZ_VERSION ... version of the module
+# COMPIZ_PREFIX ... prefix-directory of the module
+# COMPIZ_INCLUDEDIR ... include-dir of the module
+# COMPIZ_LIBDIR ... lib-dir of the module
+#
+# If the _COMPIZ_INTERNAL variable is set to true, then this module will do
+# nothing. This is required for the Compiz core package build system.
+#
+# Author: Dennis Kasprzyk <onestone@xxxxxxxxxx>
+#
+################################################################################
+
+if (NOT _COMPIZ_INTERNAL)
+
+ if (Compiz_FIND_REQUIRED)
+ set (_req REQUIRED)
+ endif ()
+
+ # look for pkg-config
+ find_package (PkgConfig ${_req})
+
+ if (PKG_CONFIG_FOUND)
+
+ # do we need to look for a specified version?
+ set (_comp_ver)
+ if (Compiz_FIND_VERSION)
+ if (Compiz_FIND_VERSION_EXACT)
+ set (_comp_ver "=${Compiz_FIND_VERSION}")
+ else ()
+ set (_comp_ver ">=${Compiz_FIND_VERSION}")
+ endif ()
+ endif ()
+
+ # add install prefix to pkgconfig search path if needed
+ string (REGEX REPLACE "([\\+\\(\\)\\^\\\$\\.\\-\\*\\?\\|])" "\\\\\\1" PKGCONFIG_REGEX ${CMAKE_INSTALL_PREFIX})
+ set (PKGCONFIG_REGEX ".*${PKGCONFIG_REGEX}/lib/pkgconfig:${PKGCONFIG_REGEX}/share/pkgconfig.*")
+
+ if (NOT CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+
+ if (NOT "$ENV{PKG_CONFIG_PATH}" MATCHES "${PKGCONFIG_REGEX}")
+ if ("" STREQUAL "$ENV{PKG_CONFIG_PATH}")
+ set (ENV{PKG_CONFIG_PATH} "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig:${CMAKE_INSTALL_PREFIX}/share/pkgconfig")
+ else ()
+ set (ENV{PKG_CONFIG_PATH}
+ "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig:${CMAKE_INSTALL_PREFIX}/share/pkgconfig:$ENV{PKG_CONFIG_PATH}")
+ endif ()
+ endif ()
+
+ endif (NOT CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+
+ # look for compiz
+ pkg_check_modules (COMPIZ ${_req} "compiz${_comp_ver}")
+
+ # is the CompizDefaults module installed?
+ find_path(_compiz_def_macro CompizDefaults.cmake ${COMPIZ_PREFIX}/share/compiz/cmake)
+
+ if (COMPIZ_FOUND AND _compiz_def_macro)
+ # everything found. Set module path and include defaults module
+ set (COMPIZ_CMAKE_MODULE_PATH ${COMPIZ_PREFIX}/share/compiz/cmake)
+ set (CMAKE_MODULE_PATH ${COMPIZ_CMAKE_MODULE_PATH})
+ include (CompizDefaults)
+ else ()
+ set (COMPIZ_FOUND 0)
+ endif ()
+
+ if (Compiz_FIND_REQUIRED AND NOT COMPIZ_FOUND)
+ message (FATAL_ERROR "Unable to find Compiz ${_comp_ver}")
+ endif ()
+ endif ()
+endif ()
+
=== added file 'cmake/all_plugins_in_folder_example-CMakeLists.txt'
--- cmake/all_plugins_in_folder_example-CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ cmake/all_plugins_in_folder_example-CMakeLists.txt 2011-08-14 15:11:23 +0000
@@ -0,0 +1,10 @@
+find_package (Compiz REQUIRED)
+
+include (CompizCommon)
+include (CompizPackage)
+
+compiz_add_plugins_in_folder ("${CMAKE_SOURCE_DIR}")
+
+compiz_print_configure_header ("Compiz")
+compiz_print_plugin_stats ("${CMAKE_SOURCE_DIR}")
+compiz_print_configure_footer ()
\ No newline at end of file
=== added file 'cmake/base.cmake'
--- cmake/base.cmake 1970-01-01 00:00:00 +0000
+++ cmake/base.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,63 @@
+set (USE_GCONF 1 CACHE BOOL "Install core GConf schemas")
+
+if (USE_GCONF)
+ pkg_check_modules (GCONF gconf-2.0)
+
+ find_program (GCONFTOOL_EXECUTABLE gconftool-2)
+ mark_as_advanced (FORCE GCONFTOOL_EXECUTABLE)
+
+ if (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ set (SCHEMADIR "${CMAKE_INSTALL_PREFIX}/share/gconf/schemas")
+ else (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ set (SCHEMADIR "${COMPIZ_INSTALL_GCONF_SCHEMA_DIR}")
+ endif (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+
+ if (NOT GCONF_FOUND OR NOT GCONFTOOL_EXECUTABLE)
+ set (USE_GCONF 0)
+ else ()
+ include (CompizGconf)
+ endif ()
+endif ()
+
+function (_print_configure_results)
+ compiz_print_configure_header ("Compiz")
+ compiz_color_message ("\n${_escape}[4mOptional features:${_escape}[0m\n")
+
+ compiz_print_result_message ("gtk window decorator" USE_GTK)
+ compiz_print_result_message ("metacity theme support" USE_METACITY)
+ compiz_print_result_message ("gconf schemas" USE_GCONF)
+ compiz_print_result_message ("gnome" USE_GNOME)
+ compiz_print_result_message ("kde4 window decorator" USE_KDE4)
+
+ compiz_print_configure_footer ()
+ compiz_print_plugin_stats ("${CMAKE_SOURCE_DIR}/plugins")
+ compiz_print_configure_footer ()
+endfunction ()
+
+function (_check_compiz_cmake_macro)
+ find_file (_find_compiz FindCompiz.cmake PATHS ${CMAKE_ROOT}/Modules ${ARGN})
+ if (NOT _find_compiz)
+ compiz_color_message ("${_escape}[1;31mWARNING:${_escape}[0m")
+ message ("\"FindCompiz.cmake\" file not found in cmake module directories.")
+ message ("It should be installed to allow building of external compiz packages.")
+ message ("Call \"sudo make findcompiz_install\" to install it.\n")
+ compiz_print_configure_footer ()
+ endif ()
+ add_custom_target (findcompiz_install
+ ${CMAKE_COMMAND} -E make_directory ${COMPIZ_DESTDIR}${CMAKE_ROOT}/Modules &&
+ ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/cmake/FindCompiz.cmake ${COMPIZ_DESTDIR}${CMAKE_ROOT}/Modules
+ )
+endfunction ()
+
+# add install prefix to pkgconfig search path if needed
+string (REGEX REPLACE "([\\+\\(\\)\\^\\\$\\.\\-\\*\\?\\|])" "\\\\\\1" PKGCONFIG_REGEX ${CMAKE_INSTALL_PREFIX})
+set (PKGCONFIG_REGEX ".*${PKGCONFIG_REGEX}/lib/pkgconfig:${PKGCONFIG_REGEX}/share/pkgconfig.*")
+
+if (NOT "$ENV{PKG_CONFIG_PATH}" MATCHES "${PKGCONFIG_REGEX}")
+ if ("" STREQUAL "$ENV{PKG_CONFIG_PATH}")
+ set (ENV{PKG_CONFIG_PATH} "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig:${CMAKE_INSTALL_PREFIX}/share/pkgconfig")
+ else ()
+ set (ENV{PKG_CONFIG_PATH}
+ "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig:${CMAKE_INSTALL_PREFIX}/share/pkgconfig:$ENV{PKG_CONFIG_PATH}")
+ endif ()
+endif ()
=== added directory 'cmake/plugin_extensions'
=== added file 'cmake/plugin_extensions/CompizGenGconf.cmake'
--- cmake/plugin_extensions/CompizGenGconf.cmake 1970-01-01 00:00:00 +0000
+++ cmake/plugin_extensions/CompizGenGconf.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,79 @@
+option (
+ COMPIZ_DISABLE_SCHEMAS_INSTALL
+ "Disables gconf schema installation with gconftool"
+ OFF
+)
+
+set (
+ COMPIZ_INSTALL_GCONF_SCHEMA_DIR ${COMPIZ_INSTALL_GCONF_SCHEMA_DIR} CACHE PATH
+ "Installation path of the gconf schema file"
+)
+
+macro (compiz_gconf_prepare_install_dirs)
+ if ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
+ if (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ set (PLUGIN_SCHEMADIR "${datadir}/gconf/schemas")
+ else (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ set (PLUGIN_SCHEMADIR "${COMPIZ_INSTALL_GCONF_SCHEMA_DIR}")
+ endif (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ elseif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
+ "$ENV{BUILD_GLOBAL}" STREQUAL "true")
+ if (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ set (PLUGIN_SCHEMADIR "${COMPIZ_PREFIX}/share/gconf/schemas")
+ else (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ set (PLUGIN_SCHEMADIR "${COMPIZ_INSTALL_GCONF_SCHEMA_DIR}")
+ endif (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ else ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
+ "$ENV{BUILD_GLOBAL}" STREQUAL "true")
+
+ if (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ set (PLUGIN_SCHEMADIR "$ENV{HOME}/.gconf/schemas")
+ else (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+ set (PLUGIN_SCHEMADIR "${COMPIZ_INSTALL_GCONF_SCHEMA_DIR}")
+ endif (NOT COMPIZ_INSTALL_GCONF_SCHEMA_DIR)
+
+ endif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
+endmacro (compiz_gconf_prepare_install_dirs)
+
+function (compiz_install_gconf_schema _src _dst)
+ find_program (GCONFTOOL_EXECUTABLE gconftool-2)
+ mark_as_advanced (FORCE GCONFTOOL_EXECUTABLE)
+
+ if (GCONFTOOL_EXECUTABLE AND NOT COMPIZ_DISABLE_SCHEMAS_INSTALL)
+ install (CODE "
+ if (\"\$ENV{USER}\" STREQUAL \"root\")
+ exec_program (${GCONFTOOL_EXECUTABLE}
+ ARGS \"--get-default-source\"
+ OUTPUT_VARIABLE ENV{GCONF_CONFIG_SOURCE})
+ exec_program (${GCONFTOOL_EXECUTABLE}
+ ARGS \"--makefile-install-rule ${_src} > /dev/null\")
+ else (\"\$ENV{USER}\" STREQUAL \"root\")
+ exec_program (${GCONFTOOL_EXECUTABLE}
+ ARGS \"--install-schema-file=${_src} > /dev/null\")
+ endif (\"\$ENV{USER}\" STREQUAL \"root\")
+ ")
+ endif ()
+ install (
+ FILES "${_src}"
+ DESTINATION "${COMPIZ_DESTDIR}${_dst}"
+ )
+endfunction ()
+
+# generate gconf schema
+find_program (XSLTPROC_EXECUTABLE xsltproc)
+mark_as_advanced (FORCE XSLTPROC_EXECUTABLE)
+
+if (XSLTPROC_EXECUTABLE)
+ compiz_gconf_prepare_install_dirs ()
+ add_custom_command (
+ OUTPUT "${CMAKE_BINARY_DIR}/generated/compiz-${COMPIZ_CURRENT_PLUGIN}.schemas"
+ COMMAND ${XSLTPROC_EXECUTABLE}
+ -o "${CMAKE_BINARY_DIR}/generated/compiz-${COMPIZ_CURRENT_PLUGIN}.schemas"
+ ${COMPIZ_GCONF_SCHEMAS_XSLT}
+ ${COMPIZ_CURRENT_XML_FILE}
+ DEPENDS ${COMPIZ_CURRENT_XML_FILE}
+ )
+
+ compiz_install_gconf_schema ("${CMAKE_BINARY_DIR}/generated/compiz-${COMPIZ_CURRENT_PLUGIN}.schemas" ${PLUGIN_SCHEMADIR})
+ list (APPEND COMPIZ_CURRENT_SOURCES_ADDS ${CMAKE_BINARY_DIR}/generated/compiz-${COMPIZ_CURRENT_PLUGIN}.schemas)
+endif ()
=== added file 'cmake/plugin_extensions/CompizGenInstallData.cmake'
--- cmake/plugin_extensions/CompizGenInstallData.cmake 1970-01-01 00:00:00 +0000
+++ cmake/plugin_extensions/CompizGenInstallData.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,25 @@
+# determinate installation directories
+macro (compiz_data_prepare_dirs)
+ if ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
+ set (PLUGIN_DATADIR ${datadir}/compiz/${COMPIZ_CURRENT_PLUGIN})
+
+ elseif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
+ "$ENV{BUILD_GLOBAL}" STREQUAL "true")
+ set (PLUGIN_DATADIR ${COMPIZ_PREFIX}/share/compiz/${COMPIZ_CURRENT_PLUGIN})
+
+ else ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
+ "$ENV{BUILD_GLOBAL}" STREQUAL "true")
+ set (PLUGIN_DATADIR $ENV{HOME}/.compiz-1/${COMPIZ_CURRENT_PLUGIN})
+
+ endif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
+endmacro (compiz_data_prepare_dirs)
+
+# install plugin data files
+if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/data)
+ compiz_data_prepare_dirs ()
+ install (
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data
+ DESTINATION ${COMPIZ_DESTDIR}${PLUGIN_DATADIR}
+ )
+ list (APPEND COMPIZ_DEFINITIONS_ADD "-DDATADIR='\"${PLUGIN_DATADIR}\"'")
+endif ()
=== added file 'cmake/plugin_extensions/CompizGenInstallImages.cmake'
--- cmake/plugin_extensions/CompizGenInstallImages.cmake 1970-01-01 00:00:00 +0000
+++ cmake/plugin_extensions/CompizGenInstallImages.cmake 2011-08-14 15:11:23 +0000
@@ -0,0 +1,25 @@
+# determinate installation directories
+macro (compiz_images_prepare_dirs)
+ if ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
+ set (PLUGIN_IMAGEDIR ${datadir}/compiz/${COMPIZ_CURRENT_PLUGIN})
+
+ elseif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
+ "$ENV{BUILD_GLOBAL}" STREQUAL "true")
+ set (PLUGIN_IMAGEDIR ${COMPIZ_PREFIX}/share/compiz/${COMPIZ_CURRENT_PLUGIN})
+
+ else ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "compiz" OR
+ "$ENV{BUILD_GLOBAL}" STREQUAL "true")
+ set (PLUGIN_IMAGEDIR $ENV{HOME}/.compiz-1/${COMPIZ_CURRENT_PLUGIN})
+
+ endif ("${COMPIZ_PLUGIN_INSTALL_TYPE}" STREQUAL "package")
+endmacro (compiz_images_prepare_dirs)
+
+# install plugin data files
+if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/images)
+ compiz_images_prepare_dirs ()
+ install (
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/images
+ DESTINATION ${COMPIZ_DESTDIR}${PLUGIN_IMAGEDIR}
+ )
+ list (APPEND COMPIZ_DEFINITIONS_ADD "-DIMAGEDIR='\"${PLUGIN_IMAGEDIR}\"'")
+endif ()
=== added file 'compiz.pc.in'
--- compiz.pc.in 1970-01-01 00:00:00 +0000
+++ compiz.pc.in 2011-08-14 15:11:23 +0000
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: compiz
+Description: OpenGL compositing manager
+Version: @VERSION@
+
+Requires: @COMPIZ_REQUIRES@
+Libs:
+Cflags: @COMPIZ_CFLAGS@ -I${includedir}/compiz
=== added file 'config.h.core.in'
--- config.h.core.in 1970-01-01 00:00:00 +0000
+++ config.h.core.in 2011-08-14 15:11:23 +0000
@@ -0,0 +1,5 @@
+#define PACKAGE_STRING "@_compiz_package_string@"
+
+#define PACKAGE "@_compiz_package@"
+
+#define GETTEXT_PACKAGE "@GETTEXT_PACKAGE@"
=== added directory 'debian'
=== renamed directory 'debian' => 'debian.moved'
=== added file 'debian/65compiz_profile-on-session'
--- debian/65compiz_profile-on-session 1970-01-01 00:00:00 +0000
+++ debian/65compiz_profile-on-session 2011-08-14 15:11:23 +0000
@@ -0,0 +1,9 @@
+# This file is sourced by Xsession(5), not executed.
+# Select unity profile if we are in the default session.
+# The default profile is used otherwise.
+
+if [ "x$DESKTOP_SESSION" = "xubuntu" ]; then
+ COMPIZ_CONFIG_PROFILE="ubuntu"
+ export COMPIZ_CONFIG_PROFILE
+fi
+
=== added file 'debian/changelog'
--- debian/changelog 1970-01-01 00:00:00 +0000
+++ debian/changelog 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1568 @@
+compiz (1:0.9.5.0-0ubuntu5) oneiric; urgency=low
+
+ * Make compiz-dev deps on libdecoration0-dev as compiztoolbox is using it.
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 11 Aug 2011 21:21:23 +0200
+
+compiz (1:0.9.5.0-0ubuntu4) oneiric; urgency=low
+
+ * debian/compiz-gnome.gconf-defaults, debian/unity.ini:
+ - remove Static Application Switcher plugin as now handled by unity.
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 11 Aug 2011 16:28:49 +0200
+
+compiz (1:0.9.5.0-0ubuntu3) oneiric; urgency=low
+
+ * debian/control:
+ - build-dep on boost 46
+ * debian/65compiz_profile-on-session:
+ - set ubuntu as the default unity session
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 10 Aug 2011 10:22:16 +0200
+
+compiz (1:0.9.5.0-0ubuntu2) oneiric; urgency=low
+
+ * debian/compiz-decorator:
+ - use gtk-window-decorator for alpha3 by default. Too many bugs with u-w-d
+ right now (the side effect is that the decorator isn't removed and we
+ don't get the invisible resize area anymore)
+ * debian/compiz-gnome.gconf-defaults, debian/unity.ini
+ - remove the unity dialogs from oneiric, it's not ready, we won't ship it
+ for now.
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 01 Aug 2011 14:38:26 +0200
+
+compiz (1:0.9.5.0-0ubuntu1) oneiric; urgency=low
+
+ * New upstream release:
+ - unity window decorator needs to support different metacity frame types
+ (LP: #795048)
+ - firefox window mapped fullscreen gets mapped under gnome-panel
+ (LP: #800592)
+ * Switch to dpkg-source 3.0 (quilt) format
+ * remove all debian/patches/*:
+ - upstream now directly deliver with our patches
+ * debian/control:
+ - replace kdebase-workspace-dev build-dep by kde-workspace-dev
+ - build on libdecoration0-dev to build the unity window decorator
+ - make compiz-dev dep on gtk-3
+ * debian/compiz-plugins-default.install:
+ - grid is now in -main
+ * debian/libdecoration0.symbols:
+ - add new symbols
+ * debian/patches/01_don_t_init_a11y.patch:
+ - don't initialize the GAIL and AT bridges when comipz initialize
+ (LP: #810045)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 19 Jul 2011 08:00:29 +0200
+
+compiz (1:0.9.4+bzr20110606-0ubuntu6) oneiric; urgency=low
+
+ * debian/control:
+ - don't build with g-c-c integration (broken with gnome 3)
+ removed dep on libgnome-window-settings-dev, libgnomeui-dev,
+ libgnome-desktop-dev
+ * debian/patches/091_no_use_gnome_but_desktop_file.patch,
+ debian/rules, debian/compiz-gnome.install:
+ - don't install anymore previous files, but still build
+ /usr/share/applications/compiz.desktop for starting compiz with
+ gnome-session
+ * debian/65compiz_profile-on-session:
+ - use DESKTOP_SESSION now
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 07 Jul 2011 16:15:23 +0200
+
+compiz (1:0.9.4+bzr20110606-0ubuntu5) oneiric; urgency=low
+
+ * debian/patches/090_run_gtk_init.patch:
+ - run gtk_init_check in compiz core (needed for unity and unity dialogs, and
+ there is no good upgrade story with the current backend to add a new
+ plugin)
+ * debian/control:
+ - add a libgtk-3-dev dep
+ - breaks against previous unity version (gtk_init should run be once with
+ ldopen)
+ - bump standards-version
+ * debian/compiz-gnome.gconf-defaults, debian/unity.ini:
+ - add unity dialogs by default (doesn't support upgrade though, need to
+ reset the profile manually)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 04 Jul 2011 18:33:26 +0200
+
+compiz (1:0.9.4+bzr20110606-0ubuntu4) oneiric; urgency=low
+
+ * debian/patches/00_bzr_fix_727143.patch:
+ - Fix unity-window-decorator crashes with SIGSEGV when closing Java
+ windows (LP: #727143)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Fri, 24 Jun 2011 10:46:01 +0200
+
+compiz (1:0.9.4+bzr20110606-0ubuntu3) oneiric; urgency=low
+
+ * Separate plugins we install by default from others:
+ - create compiz-plugins-default which is a subpart of what compiz-plugins
+ depended on
+ - compiz-plugins install compiz-plugins-default
+ - compiz, compiz-core, compiz-gnome, compiz-kde now depends on
+ compiz-plugins-default and recommends compiz-plugins-main-default
+ - compiz-dev still depends on compiz-plugins as shipping the compiztoolbox
+ and cube headers
+ - reshuffle the replaces to handle transitions
+ * move /usr/share/compiz/kde.xml wrongly set in compiz-plugins to compiz-kde
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 07 Jun 2011 14:01:18 +0200
+
+compiz (1:0.9.4+bzr20110606-0ubuntu2) oneiric; urgency=low
+
+ * debian/rules, debian/compiz-gnome.install:
+ - generate g-c-c keybindings from new metacity package
+ - don't generate schema for gconf bindings, not sure we will ship them or
+ should switch to gsettings
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 06 Jun 2011 17:58:54 +0200
+
+compiz (1:0.9.4+bzr20110606-0ubuntu1) oneiric; urgency=low
+
+ * New bug fix release:
+ - Switcher window borders are not properly unmapped with
+ (unity|gtk)-window-decorator (LP: #789580)
+ - maximized window is displaced (LP: #772612)
+ - Unity launcher gets visible while screensaver is active (LP: #771391)
+ - 1 pixel icons in notification-area-applet when compiz is the windows
+ manager (LP: #767095)
+ * debian/patches/00_bzr_fix_apps_without_startupid.patch:
+ - removed: upstream
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 06 Jun 2011 16:18:08 +0200
+
+compiz (1:0.9.4+bzr20110415-0ubuntu2) natty; urgency=low
+
+ * debian/patches/00_bzr_fix_apps_without_startupid.patch:
+ - from upstream trunk, fix crash on applications removing _NET_STARTUP_ID
+ (LP: #759363)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 19 Apr 2011 11:40:43 +0200
+
+compiz (1:0.9.4+bzr20110415-0ubuntu1) natty; urgency=low
+
+ * New upstream snapshot
+ - Focus problem with Thunderbird (LP: #753951)
+ - Chromium fullscreen + Alt-TAB confuses the launcher (LP: #757434)
+ - compiz hangs randomly several times per day (LP: #740126)
+ * debian/patches/00_*:
+ - removed as part of upstream tarball
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Fri, 15 Apr 2011 17:08:40 +0200
+
+compiz (1:0.9.4+bzr20110411-0ubuntu2) natty; urgency=low
+
+ * 00_bzr_fix_crash_with_some_apps.patch
+ - Fix inkscape/unison and other applications crashes (LP: #758307)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 14 Apr 2011 14:37:39 +0200
+
+compiz (1:0.9.4+bzr20110411-0ubuntu1) natty; urgency=low
+
+ * New upstream snapshot, including all 01_bzr* patch:
+ - compiz crashed with SIGSEGV in PluginClassHandler<DecorWindow, CompWindow,
+ 0>::get() (LP: #743807)
+ - Animation for Grid Previews is broken (LP: #754088)
+ - Grid plugin: Maximizing a window from left or right edge loses original
+ size (LP: #753051)
+ * add 00_remove_printf.patch: remove debug printf
+ * 02_add_debug_spewer_for_apport.patch:
+ - refreshed
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 11 Apr 2011 13:25:14 +0200
+
+compiz (1:0.9.4+bzr20110407-0ubuntu2) natty; urgency=low
+
+ * New upstream snapshot:
+ - fix unity-window-decorator crashed with SIGSEGV in event_filter_funct
+ (LP: #711561)
+ * debian/patches/086_new_grid_defaults.patch:
+ - change threshold to 15 on sides and 20 on top to work well with the new
+ animtion
+ * debian/patches/01_bzr_fix_grid_on_multimonitor.patch,
+ 01_bzr_fix_resize.patch, 01_bzr_fix_grid_premultiply.patch:
+ - from upstream bzr, fix grid on multimonitor and colors handling
+ * debian/patches/086_new_grid_defaults.patch,
+ debian/patches/029_default_options.patch:
+ - set the resize grid shadow to orange (LP: #752711)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 07 Apr 2011 18:06:44 +0200
+
+compiz (1:0.9.4+bzr20110406-0ubuntu1) natty; urgency=low
+
+ * new upstream bzr tarball:
+ - display/size problems with xterm (LP: #748137)
+ - fix crashes on tcl/tk applications (LP: #741074, #747439)
+ - fix grab on compose keys (LP: #747323)
+ - resync stack at regular interval to avoid invisible windows
+ (LP: #723014, #743011, #736876, #740465, #684590)
+ - fix weird order in alt + tab (LP: #175874)
+ - fix crash in gitk (LP: #743011, #741074)
+ - avoid compiz detection by fglrx driver (LP: #740298)
+ - Wrong window moves (LP: #741656, #743634)
+ - Unity Grid is broken for multi-monitor setups (LP: #709221)
+ - Feature Freeze Exception: Animation for Grid Plugin Previews (LP: #744104)
+ - unity-window-decorator crashed with SIGSEGV in gdk_window_get_events()
+ (LP: #725284)
+ - fix xterm (LP: #692463)
+ - start the decorator on a secondary screen (LP: #730495)
+ * debian/patches/090_git_fix_new_invisible_windows.patch,
+ debian/patches/100_bump_core.h.patch:
+ - upstreamed
+ * debian/patches/01_unity_window_decorator.patch
+ debian/patches/085_add_grid_plugin.patch:
+ - in bzr upstream tarball
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 06 Apr 2011 19:37:45 +0200
+
+compiz (1:0.9.4git20110322-0ubuntu5) natty; urgency=low
+
+ * debian/patches/080_fix_session_handling.patch:
+ reverted, seems to break more people that it fixes it. Not commited to
+ compiz trunk as well
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 24 Mar 2011 12:03:47 +0100
+
+compiz (1:0.9.4git20110322-0ubuntu4) natty; urgency=low
+
+ * 080_fix_session_handling.patch:
+ - fix respawn on crash (LP: #716462)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 23 Mar 2011 23:38:35 +0100
+
+compiz (1:0.9.4git20110322-0ubuntu3) natty; urgency=low
+
+ * 90_git_fix_new_invisible_windows.patch:
+ from git, fix a case with new invisible windows (LP: #741072)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 23 Mar 2011 17:36:06 +0100
+
+compiz (1:0.9.4git20110322-0ubuntu2) natty; urgency=low
+
+ * debian/patches/01_unity_window_decorator.patch:
+ - fix frequent crash (LP: #740480)
+ * debian/compiz-decorator:
+ - reset the unity window decorator by default
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 23 Mar 2011 08:55:46 +0100
+
+compiz (1:0.9.4git20110322-0ubuntu1) natty; urgency=low
+
+ * New upstream bug fix snapshot:
+ - Application windows can sometimes fail to display and will
+ mask regions of the screen (LP: #709461)
+ - Compiz switcher Alt-Tab order is not predictable - should
+ maintain LIFO ordering in application switcher (LP: #175874)
+ - after compiz crashed, gnome-panel isn't mapped again (LP: #711378)
+ - invisible windows border problem (LP: #710271)
+ - Compiz thinks you are clicking in an edge window when you
+ are not (LP: #734250)
+ - Add test case for invisible window regressions (LP: #736876)
+ - often can't alt-click-dnd to move the focussed dialog (LP: #711911)
+ - When windows open for the first time they should not hide (LP: #723878)
+ - Unity Grid is broken for multi-monitor setups (LP: #709221)
+ - Pixmaps trashed during animations when window is unmapped (LP: #733331)
+ - Windows have blank decorations when rapidly closing and
+ reopening (LP: #733328)
+ - Unity is not restored on unity/compiz crash: compiz doesn't register
+ properly with gnome-session (LP: #716462)
+ * remove the patch taken from upstream
+ * refresh u-w-d patch with latest upstream work
+ * debian/compiz-core.install:
+ - image move to the final destination
+ * debian/patches/100_bump_core.h.patch:
+ - bump for ABI breakage
+ * debian/compiz-decorator:
+ - use gtk-window-decorator and not unity-window-decorator as it's really
+ crashy for now (will probably redo an upload tomorrow with a fixed
+ decorator)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 22 Mar 2011 21:45:34 +0100
+
+compiz (1:0.9.4-0ubuntu7) natty; urgency=low
+
+ * debian/control:
+ - breaks on old simple-ccsm until a new one for 0.9 is available
+ * debian/patches/029_default_options.patch:
+ - don't enable showing desktop while scale is triggered (LP: #736947)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 17 Mar 2011 17:13:32 +0100
+
+compiz (1:0.9.4-0ubuntu5) natty; urgency=low
+
+ * debian/patches/029_default_options.patch: (LP: #723273)
+ - remove Super W change for the "Initiate Window Picker for current
+ workspace". The default is now compiz default: Shift + Alt + Up
+ - transforming the Super A change to Super W for "Initiate Window Picker
+ For All Windows"
+ * debian/compiz-gnome.gconf-defaults:
+ - disable Alt + F1/F2 in the gnome-compat plugin for the unity profile only
+ (those keys are handled by unity itself now)
+ * debian/source_compiz.py:
+ - add xorg info in case of crash
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 16 Mar 2011 19:28:01 +0100
+
+compiz (1:0.9.4-0ubuntu4) natty; urgency=low
+
+ * Fix crashes in unity-window-decorator
+ (LP: #724874, #728563, #728383)
+ * Fix grid plugin not working with snap (LP: #716313)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 07 Mar 2011 16:31:04 +0100
+
+compiz (1:0.9.4-0ubuntu3) natty; urgency=low
+
+ * debian/rules:
+ - don't run unitymtgrabhandles and unityshell by default
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 01 Mar 2011 13:31:32 +0100
+
+compiz (1:0.9.4-0ubuntu2) natty; urgency=low
+
+ * Force libdecoration0 to have the same version than compiz-plugins
+ * debian/patches/01_unity_window_decorator.patch
+ - fix a crash in unity-window-decorator (LP: #726063, #725284, #726101)
+ * Backport some patches from upstream to fix other crashes and bring
+ support to the unity plugin (LP: #726702)
+ * debian/compiz-core.install:
+ png are now installed in /usr/share/compiz
+ * add the future unity mt plugin by default
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 28 Feb 2011 20:51:00 +0100
+
+compiz (1:0.9.4-0ubuntu1) natty; urgency=low
+
+ * New upstream release:
+ - Fix no windows receiving the focus if someone got the focus then was
+ destroyed
+ - Fix crash when resizing using keybindings
+ - Fix unresponsive inactive decorations (LP: #703755)
+ - Fix the long awaited gconf crash (LP: #691561)
+ - gtk-window-decorator doesn't respect special decoration styles
+ (LP: #290835)
+ * debian/compiz-core.links,
+ debian/source_compiz.py,
+ debian/compiz-core.install:
+ - install again a richer apport hook to redirect nux/libunity/unityshell
+ crash. It also asks the user to redirect unity issues against unity (still
+ incuding xorg info when needed)
+ * Removed a bunch of patches either cherry-picked or pushed upstream. With the
+ other fixes, the gconf workaround is hopefully not needed anymore.
+ * refresh existing patches to still apply
+ * debian/control:
+ - rename dep on compiz-fusion* to compiz*
+ * debian/patches/085_add_grid_plugin.patch:
+ - refresh the grid plugin from new release
+ * debian/patches/086_new_grid_defaults.patch
+ - separate tweaking the default settings to only have the effect that were
+ specified:
+ top -> maximize, left (top or bottom left) -> window half left of the
+ screen, right (top or bottom right) -> window half right of the screen,
+ bottom -> do nothing
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 24 Feb 2011 17:31:29 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu11) natty; urgency=low
+
+ * debian/patches/18_really_fix_stacking_issues.patch:
+ - hopefully, this time, the invisible window is dead (LP: #709461)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Fri, 11 Feb 2011 13:00:01 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu10) natty; urgency=low
+
+ * debian/patches/080_migrate_gconf_from_alpha1.patch
+ debian/reset-compiz-gconf, debian/compiz-gnome.install:
+ - remove the additional python wrapper now that people who installed
+ alpha1 are considerated to be transitionned to the new schema.
+ * debian/patches/17_fix_stacking_issue.patch:
+ - backport from upstream. This seems to fix the random invisible window
+ (LP: #709461)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 08 Feb 2011 10:31:06 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu9) natty; urgency=low
+
+ * debian/patches/086_fix_unreachable_options_crash.patch:
+ getOptions is broken at start as some initialized options aren't map when
+ calling from the core. Use direct call instead (LP: #708812).
+ Fixes crashes at start.
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 02 Feb 2011 15:17:02 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu8) natty; urgency=low
+
+ * debian/patches/14_fix_empathy_list_vanish.patch:
+ - fix the buddy list disappearing (LP: #682781)
+ * debian/patchs/15_hidden_maximized_decoration.patch:
+ - fix sometimes invisible decoration on maximized window still decorated
+ * 16_display_unfocused_state.patch:
+ - fix unfocused state not being displayed properly in the decoration
+ (LP: #704413)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 31 Jan 2011 15:50:17 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu7) natty; urgency=low
+
+ * debian/patches/000_workaround_gconfbackend_init_hang.patch:
+ - readd the workaround. Seems that slow machines really have a problem with
+ the new init order
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Fri, 28 Jan 2011 19:07:35 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu6) natty; urgency=low
+
+ * debian/control:
+ - compiz-gnome replaces compiz-fusion-plugins-extra (grid gconf schema file
+ is hosted there) (LP: #708835)
+ * debian/patches/029_default_options.patch:
+ - set the spacing to 68 temporary as a workaround to avoid the spread mode
+ to overlap the launcher (LP: #702822)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Fri, 28 Jan 2011 15:46:20 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu5) natty; urgency=low
+
+ * debian/patches/000_workaround_gconfbackend_init_hang.patch:
+ - remove the workaround (commented in debian/patches/series). It seems to
+ work for others without it, I still have it hanging there, but maybe
+ that's a system issue, let's see if people reports hangs at start.
+ * debian/patches/060_move_checks_to_compiz.patch:
+ - adapt to new version
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 27 Jan 2011 17:42:04 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu4) natty; urgency=low
+
+ * debian/patches/000_fix_stacking.patch:
+ - so awaited patch to fix menu stacking issue
+ (LP: #693073, #695638, #690461) (congrats smspillaz)
+ * debian/patches/065_add_bailer_and_detection_plugins.patch:
+ - remove zenity message, now handled in the session level
+ * debian/patches/029_default_options.patch:
+ - set back to opacity to 100 when dragging windows, seems to have a lot of
+ perf issues on some graphic card. (LP: #703458)
+ * debian/patches/03_git_fix_maprequest.patch
+ debian/patches/04_git_fix_override_redirect_window.patch
+ debian/patches/06_git_fix_unmapped_then_remapped_window.patch
+ debian/patches/07_git_fix_click_to_focus_issue.patch
+ debian/patches/08_make_qt_wine_appearing.patch
+ debian/patches/09_git_valgrind_cleanage.patch
+ debian/patches/10_git_set_vp_before_window_initialization.patch:
+ - misc fixes backported from upstream git head. Fixing flash and gnome-panel
+ crash (LP: #683100, #690461)
+ * debian/patches/000_workaround_gconfbackend_init_hang.patch:
+ - adapt to new version
+ * debian/patches/029_default_options.patch:
+ - disable ligthning by default on the opengl plugin as it's not really used
+ and conflict with unity (LP: #703140)
+ * debian/patches/11_git_fix_windows_jumping.patch
+ debian/patches/12_fix_warning.patch
+ debian/patches/13_fix_window_geometries_and_properties.patch:
+ - last minute fix due to regression introduced by the patch above, fix wrong
+ geometry and wrong startup position (LP: #707853, #707852)
+ * debian/patches/085_add_grid_plugin.patch,
+ debian/rules, debian/control, debian/unity.ini,
+ debian/compiz-gnome.gconf-defaults
+ - add to main (as upstream is doing in the git repository) the grid plugin
+ and activate it by default. Replaces the -extra package with a previous
+ version
+ - tweak the default settings to only have the effect that were specified:
+ top -> maximize, left (top or bottom left) -> window half left of the
+ screen, right (top or bottom right) -> window half right of the screen
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 27 Jan 2011 13:05:18 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu3) natty; urgency=low
+
+ * debian/patches/01_unity_window_decorator.patch:
+ - dont dep on system libdecoration but on built one
+ * debian/control:
+ - remove circular build-dep on libdecoration0-dev
+ - build against new libmetacity ABI
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 19 Jan 2011 17:52:09 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu2) natty; urgency=low
+
+ * debian/control:
+ - temporary depends on libdecoration0-dev as the unity-window-decorator
+ needs it. The correct fix will need to shuffle the order of build around
+ and take the current library.
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Fri, 14 Jan 2011 03:17:38 +0100
+
+compiz (1:0.9.2.1+glibmainloop4-0ubuntu1) natty; urgency=low
+
+ [ Didier Roche ]
+ * New upstream release:
+ - Fixed a high number of wakeups (LP: #681696)
+ - Fixed links not working in some gtk windows
+ - Raise the window when it is moved if raise on click is enabled
+ - Fix crash when loading plugins on the command line
+ - Fix focus issues on window close and reopen rapidly
+ - Fix focus issues with multiple X screens
+ - Glib plugin removed
+ - Fix bug where not moving the mouse and clicking button 2 or 3 in
+ scale addon would close the current active window, not the window the
+ mouse hovers over
+ - Add unity-window-decorator
+ - Move window doesn't raise window (LP: #695570)
+ - gtk.Label <a href> link-activate signal broken with compiz in natty
+ (LP: #687732)
+ * debian/patches/060_move_checks_to_compiz.patch:
+ - remove GNOME failsafe detection as now handled as a session type in
+ gnome-session
+ * Remove deprecated or now merge upstream patches:
+ - 01_backport_trunk_fix.patch
+ - 002_ship_splited_gconf_cmakeext_files.patch
+ - 004_packagemode_is_release_debug_for_plugins.patch
+ - 005_no_glib_plugin.patch
+ - 017_always_unredirect_screensaver_on_nvidia.patch
+ - 080_migrate_gconf_from_alpha1.patch
+ * debian/compiz-gnome.gconf-defaults,
+ debian/patches/029_default_options.patch:
+ - new settings for natty. Also set the 2x2 layout by default
+ * unity-decorator:
+ - debian/compiz-decorator:
+ launch unity-compiz-decorator in gnome sessions
+ - debian/compiz-gnome.install:
+ install it
+ - debian/control:
+ depends on latest metacity having the right extension
+ - debian/patches/01_unity_window_decorator.patch:
+ add unity-window-decorator
+ * debian/patches/02_add_debug_spewer_for_apport.patch:
+ - new plugin (not activated for now) to get additional info for apport
+
+ [ Bryce Harrington ]
+ * compiz-core.install, compiz-core.links, source_compiz.py:
+ Replace the compiz apport hook with a link to xorg's apport script.
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 13 Jan 2011 21:50:27 +0100
+
+compiz (1:0.9.2.1+glibmainloop3-0ubuntu5) natty; urgency=low
+
+ * Restore the workaround to avoid crashes (lp: #691561)
+
+ -- Sebastien Bacher <seb128@xxxxxxxxxx> Fri, 17 Dec 2010 21:08:43 +0100
+
+compiz (1:0.9.2.1+glibmainloop3-0ubuntu4) natty; urgency=low
+
+ * debian/patches/000_workaround_gconfbackend_init_hang.patch:
+ - drop the workaround, the issue has not been confirmed but the update
+ broke the menus in unity (lp: #690461)
+ * debian/patches/060_move_checks_to_compiz.patch:
+ - adapted regarding previous patch
+
+ -- Sebastien Bacher <seb128@xxxxxxxxxx> Thu, 16 Dec 2010 22:19:50 +0100
+
+compiz (1:0.9.2.1+glibmainloop3-0ubuntu3) natty; urgency=low
+
+ * debian/patches/080_migrate_gconf_from_alpha1.patch,
+ debian/reset-compiz-gconf,
+ debian/compiz-gnome.install:
+ - temporary wrapper from new gconf path not transitionned from alpha1
+ (allscreens became screen0). This will reset the current compiz profiles
+ (LP: #690011)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 14 Dec 2010 19:25:03 +0100
+
+compiz (1:0.9.2.1+glibmainloop3-0ubuntu2) natty; urgency=low
+
+ * debian/patches/000_workaround_gconfbackend_init_hang.patch:
+ - workaround in delaying the plugin init as the gconf backend hangs when
+ trying to contact/launch the gconf daemon. This only happens when you
+ don't change your current profile, at session start.
+ * debian/patches/060_move_checks_to_compiz.patch:
+ - adapted regarding previous patch
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 14 Dec 2010 02:57:50 +0100
+
+compiz (1:0.9.2.1+glibmainloop3-0ubuntu1) natty; urgency=low
+
+ * new glibmainloop branch snapshot:
+ - fix launching an application set it to the wrong place (LP: #683273)
+ - Can't resize windows to be displayed on several monitors (LP: #455378)
+ - Scale All Windows gets its suffixes wrong for a 3x3 layout (LP: #683063)
+ - Compiz sometimes loses focus when closing some windows (LP: #671459)
+ - Fix hanging when session exit (LP: #683121)
+ * debian/patches/000_fix_OOo_crash1.patch
+ debian/patches/000_fix_OOo_crash2.patch
+ debian/patches/001_fix_gconf_path.patch
+ debian/patches/003_more_gconf_parser_fix.patch:
+ - remove, upstreamed.
+ * debian/patches/060_move_checks_to_compiz.patch:
+ - adapt to new version
+ * debian/patches/01_backport_trunk_fix.patch:
+ - backport some additional fixes from trunk, otherwise compiz crash at start
+ * debian/source_compiz.py:
+ - fix gconf path
+ * debian/compiz-gnome.gconf-defaults, debian/rules, debian/unity.ini,
+ debian/patches/030_no_fade_in_staticswicher.patch:
+ - change order to load fade before staticswichter to avoid the fade effect
+ when alt + tabbing (LP: #683635)
+ - add snap and workarounds by default as well
+ * debian/compiz-gnome.gconf-defaults,
+ debian/compiz-keybindings.sed,
+ debian/patches/021_hide_tooltip_on_decorator.patch,
+ debian/patches/057_update_gnome_bindings.patch:
+ - update the gconf path from allscreens to screen0 as new gconf path in the
+ gconf backend
+ * debian/control:
+ - handle the ABI breakage with other compiz components
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 13 Dec 2010 16:38:10 +0100
+
+compiz (1:0.9.2.1+glibmainloop2-0ubuntu4) natty; urgency=low
+
+ * debian/patches/065_add_bailer_and_detection_plugins.patch:
+ - fix the fallback not launching gnome-panel when no 3D support
+ (LP: #683356, #683531)
+ * debian/patches/000_fix_OOo_crash{1,2].patch:
+ - cherry-pick fix crashes with random applications (LP: #675506)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 01 Dec 2010 13:10:41 +0100
+
+compiz (1:0.9.2.1+glibmainloop2-0ubuntu3) natty; urgency=low
+
+ * debian/rules:
+ - use our own keybindings with new Compiz wm_name
+ (note, upstream one faily try to install them ignoring DESTDIR, keep in
+ mind when fixed to keep ours)
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 29 Nov 2010 19:37:41 +0100
+
+compiz (1:0.9.2.1+glibmainloop2-0ubuntu2) natty; urgency=low
+
+ * debian/rules:
+ - build with RelWithDebInfo cmake flag to get debug info and release
+ optimisation
+ * debian/patches/004_packagemode_is_release_debug_for_plugins.patch:
+ - when compiz plugin built in "Package" mode, add optimization + debug
+ symbols for stripping in dbgsym. Thanks RAOF for pointing at it
+ (LP: #682574)
+ * debian/patches/005_no_glib_plugin.patch:
+ - remove glib plugin as conflicting with the glibmainloop branch
+ * debian/source_compiz.py:
+ - grab new gconf path in apport bug report
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Mon, 29 Nov 2010 12:23:15 +0100
+
+compiz (1:0.9.2.1+glibmainloop2-0ubuntu1) natty; urgency=low
+
+ * new upstream snapshot with glibmm experimental branch:
+ - Compiz crashes when scrolling in Openoffice (LP: #675506)
+ - Compiz sometimes loses focus when closing some windows (LP: #671459)
+ - Fix --replace hang (LP: #680165)
+ * debian/65compiz_profile-on-session:
+ - add unity profile to default session
+ * debian/rules:
+ - add bailer, detection, regex and animation and fade plugin to both
+ profiles
+ - get an optimized plugin default order
+ * debian/patches/060_move_checks_to_compiz.patch:
+ - start stripping it down as now we have a detection and bailer plugins
+ for that. The failsafe session should be moved in the detection plugin.
+ * debian/patches/055_fix_COMPIZ_DEFAULT_PLUGINS.patch,
+ debian/patches/056_Preserve-DESTDIR-if-no-override-in-COMPIZ_DESTDIR.patch
+ debian/patches/057_update_gnome_bindings.patch:
+ - removed, upstreamed
+ * debian/patches/065_add_bailer_and_detection_plugins.patch:
+ - add bailer and detection plugins to fallback to 2D session or run in
+ degraded mode.
+ * debian/compiz-gnome.install, debian/unity.ini,
+ debian/compiz-gnome.gconf-defaults:
+ - add the unity profile to ini and gconf backend
+ * debian/patches/001_fix_gconf_path.patch:
+ - fix the path when generating the gconf keys (compiz-1)
+ * debian/patches/002_ship_splited_gconf_cmakeext_files.patch:
+ - ship and link the splited gconf extension schema builder
+ * debian/control:
+ - add libglibmm-2.4-dev build-dep and to -dev dep
+ * debian/patches/003_more_gconf_parser_fix.patch:
+ - fix parser breakage with some plugins
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Fri, 26 Nov 2010 20:30:56 +0100
+
+compiz (1:0.9.2.1+glibmainloop-0ubuntu3) natty; urgency=low
+
+ * debian/rules:
+ - add gnomecompat as a default plugin (LP: #675774)
+ - add vpswitch too
+ * debian/libdecoration0.symbols:
+ - add a symbol file
+ * debian/patches/057_update_gnome_bindings.patch:
+ - update wmname to get the keybindings shown in GNOME capplet
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 18 Nov 2010 14:35:04 +0100
+
+compiz (1:0.9.2.1+glibmainloop-0ubuntu2) natty; urgency=low
+
+ * debian/patches/065_glib_mainloop.patch:
+ - removed as part of make dist
+ * debian/control:
+ - make compiz-dev dep on libglib2.0-dev
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 11 Nov 2010 21:52:26 +0100
+
+compiz (1:0.9.2.1+glibmainloop-0ubuntu1) natty; urgency=low
+
+ * New upstream snapshot with glib mainloop support needed for unity compiz
+ * debian/rules:
+ - use the ezoom plugin rather than the zoom one
+ * debian/patches/055_fix_COMPIZ_DEFAULT_PLUGINS.patch,
+ debian/patches/056_Preserve-DESTDIR-if-no-override-in-COMPIZ_DESTDIR.patch:
+ - refresh to new upstream snapshot
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Thu, 11 Nov 2010 18:20:59 +0100
+
+compiz (1:0.9.2.1-0ubuntu2) natty; urgency=low
+
+ * debian/control:
+ - add missing replaces with latest natty version
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Wed, 10 Nov 2010 10:40:29 +0100
+
+compiz (1:0.9.2.1-0ubuntu1) natty; urgency=low
+
+ [ Travis Watkins ]
+ * debian/patches/010-disable-child-window-clipping.patch,
+ debian/patches/013-add-cursor-theme-support.patch,
+ debian/patches/016_call_glxwaitx_before_drawing.patch,
+ debian/patches/035_ignore_workspaces,
+ debian/patches/037_fullscreen_stacking_fixes.patch,
+ debian/patches/061_KWD_stubs.patch,
+ debian/patches/090_profiling,
+ - removed as they are applied upstream or obsolete
+ * debian/patches/017_always_unredirect_screensaver_on_nvidia.patch
+ debian/patches/018_use_metacity_settings.patch
+ debian/patches/021_hide_tooltip_on_decorator.patch
+ debian/patches/029_default_options
+ debian/patches/060_move_checks_to_compiz.patch
+ - updated for 0.9 and added DEP-3 comments
+ * comment debian/patches/014_fix-no-border-window-shadow.patch
+ * debian/kde4-window-decorator.1:
+ - renamed kde-window-decorator.1 with name fixups
+ * debian/compiz-decorator.1,
+ debian/compiz-core.manpages:
+ - add compiz-decorator manpage
+ * debian/compiz.1,
+ debian/kde4-window-decorator.1:
+ - refreshed
+ * debian/compiz-decorator:
+ - remove support for kde-window-decorator as it no longer exists
+ * debian/compiz-gnome.gconf-defaults:
+ - strip down to just gtk-window-decorator defaults, we set the rest in
+ other places already
+ * debian/rules:
+ - switch to debhelper 7 style rules, much easier to understand
+ * debian/control:
+ - add cmake and boost build-depends, remove automake
+
+ [ Didier Roche ]
+ * new upstream release
+ * remerge and adapt travis' work to latest release in natty
+ * debian/patches/029_default_options.patch:
+ - retake latest patch and refresh to new version
+ * debian/patches/060_move_checks_to_compiz.patch:
+ - remove all plugins and not use the DEFAULT plugin list (just load cpp)
+ * debian/compiz-gnome.gconf-defaults:
+ - keep some needed value. With gsetting port, we should only push default,
+ don't be evil and avoid patching the schema
+ * debian/control:
+ - bump all dep to 0.9 for compiz components
+ - add libboost-serialization1.42-dev build-dep
+ - add some sanity check as well (lintian warnings)
+ - additional dependency on compiz-plugins from compiz-dev
+ * debian/patches/015_optional-fbo.patch:
+ - removed as the new version doesn't seem to handle that natively
+ * debian/patches/014-fix-gtk-window-decorator-no-argb-crash.patch:
+ - removed as seems to be upstreamed
+ * debian/patches/015_draw_dock_shadows_on_desktop.patch:
+ - removed from now, let's revert to upstream behavior
+ * debian/patches/020_disable_gdk_gtk_disable_deprecated:
+ - removed, upstream
+ * disable debian/patches/021_hide_tooltip_on_decorator.patch for now
+ * debian/compiz-core.install,debian/compiz-dev.install,
+ debian/compiz-gnome.install:
+ - changed the path according to new upstream layout and remove some
+ libraries and re-ad /usr/share/gnome/wm-properties/compiz.desktop to
+ make the gnome-window-properties work again (LP: #269805)
+ - compiz-gnome install gconf schemas, not compiz-plugins
+ - also some cleanage to make things easier to read
+ * debian/compiz-kde.manpages:
+ - adapt to kde4 new manpage
+ * convert to quilt format
+ * remove debian/patches/562027-fix-gconf-ftbfs.patch,
+ debian/patches/635258-fix-pixmap-size-calculations.patch,
+ debian/patches/111_link-kde-window-decorator-with-x11:
+ - not relevant in the context
+ * debian/compiz-kde.install, debian/compiz-plugins.install:
+ - put likde in compiz-kde package
+ * debian/rules:
+ - a lot of cleanage, try to make the rule easy to read
+ - force to build in release mode
+ - compile the default plugins list
+ - force copying to cmake install dir. Don't use findcompiz_install which is
+ broken upstream when using DESTDIR and COMPIZ_DESTDIR
+ - add some switch to ensure we build in package mode not in debug one
+ * add debian/patches/055_fix_COMPIZ_DEFAULT_PLUGINS.patch:
+ - use COMPIZ_DEFAULT_PLUGINS from debian/rules
+ * debian/patches/056_Preserve-DESTDIR-if-no-override-in-COMPIZ_DESTDIR.patch:
+ - make compiz respect env variable
+ * debian/patches/065_glib_mainloop.patch:
+ - added but not activated yet: need some work with tip of compiz 0.9.2.1
+
+ -- Didier Roche <didrocks@xxxxxxxxxx> Tue, 19 Oct 2010 12:23:51 +0200
+
+compiz (1:0.8.6-0ubuntu12) natty; urgency=low
+
+ * Merge patch 110_link-gtk-windows-decorator-with-xcursor into
+ 013-add-cursor-theme-support as that's where the bug was introduced.
+ * Remove bogus dh_install -pcompiz-wrapper call in rules leaving a
+ debhelper.log over; presumably left over from the removal of this package.
+
+ -- Loïc Minier <loic.minier@xxxxxxxxxx> Mon, 18 Oct 2010 00:13:28 +0200
+
+compiz (1:0.8.6-0ubuntu11) natty; urgency=low
+
+ * New patch, 110_link-gtk-windows-decorator-with-xcursor, fix configure.ac
+ to require the xcursor pkg-config file/libs etc. for gtk/window-decorator
+ which calls XcursorSetTheme(); fixes FTBFS.
+ * New patch, 111_link-kde-window-decorator-with-x11, fix configure.ac to
+ require the x11 pkg-config file/libs etc. for kde/window-decorator which
+ calls XGetWMProtocols(); fixes FTBFS.
+
+ -- Loïc Minier <loic.minier@xxxxxxxxxx> Sun, 17 Oct 2010 23:19:57 +0200
+
+compiz (1:0.8.6-0ubuntu10) natty; urgency=low
+
+ * New patch, 635258-fix-pixmap-size-calculations, from commit
+ 0f95c41a0aa175ddf7947ba18b01f746c95594a9 in the 0.8 branch; thanks
+ Paul Donohue; LP: #635258.
+
+ -- Loïc Minier <loic.minier@xxxxxxxxxx> Sun, 17 Oct 2010 22:02:58 +0200
+
+compiz (1:0.8.6-0ubuntu9) maverick; urgency=low
+
+ * debian/compiz-gnome.gconf-defaults: /apps/gwd/metacity_theme_opacity
+ is a float (1.0), not int (1).
+
+ -- Anders Kaseorg <andersk@xxxxxxx> Fri, 24 Sep 2010 21:09:32 -0400
+
+compiz (1:0.8.6-0ubuntu8) maverick; urgency=low
+
+ * debian/compiz-gnome.gconf-defaults
+ - move the shadow 4 pixels down, in order to reduce the shadow between
+ menubaritems and the menu frame (LP: #634417)
+
+ * debian/patches/029_default_options.patch
+ - get rid of the transparency on the unfocused window frame. (LP: #634417)
+
+ -- Ken VanDine <ken.vandine@xxxxxxxxxxxxx> Tue, 21 Sep 2010 16:59:27 -0400
+
+compiz (1:0.8.6-0ubuntu7) maverick; urgency=low
+
+ * 060_move_checks_to_compiz.patch: Remove Sandybridge bridge devices from
+ the blacklist, they were preventing compiz from loading on machines
+ with discreet GPU's as well. (LP: #644372)
+
+ -- Robert Hooker <robert.hooker@xxxxxxxxxxxxx> Tue, 21 Sep 2010 09:46:36 -0400
+
+compiz (1:0.8.6-0ubuntu6) maverick; urgency=low
+
+ * Update 060_move_checks_to_compiz.patch to add Intel Sandybridge pci id's
+ to the blacklist, the mesa dri driver claims it instead of swrast so
+ compiz tries to use it but does not work currently. (LP: #633376)
+
+ -- Robert Hooker <robert.hooker@xxxxxxxxxxxxx> Wed, 08 Sep 2010 13:10:11 -0400
+
+compiz (1:0.8.6-0ubuntu5) maverick; urgency=low
+
+ * Fix LP: #622195 - dh_install can't rename files. In trying to do so,
+ compiz-wm.desktop is installed one folder too deep, breaking
+ gnome-{appearance,window}-properties
+ - update debian/compiz-gnome.install
+
+ -- Chris Coulson <chris.coulson@xxxxxxxxxxxxx> Thu, 26 Aug 2010 21:33:53 +0100
+
+compiz (1:0.8.6-0ubuntu4) maverick; urgency=low
+
+ * debian/control: Argh, also reduce the libcompizconfig0 dependency to the
+ version that actually rebuilt against 0.8.6.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 03 Aug 2010 10:40:30 +0200
+
+compiz (1:0.8.6-0ubuntu3) maverick; urgency=low
+
+ * debian/control: Reduce libcompizconfig0 breaks to << the version that
+ actually rebuilt against 0.8.6.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 03 Aug 2010 00:13:46 +0200
+
+compiz (1:0.8.6-0ubuntu2) maverick; urgency=low
+
+ * control: Don't build-depends on libdbus-qt-1-dev, it's deprecated
+
+ -- Sebastien Bacher <seb128@xxxxxxxxxx> Mon, 02 Aug 2010 17:49:08 +0200
+
+compiz (1:0.8.6-0ubuntu1) maverick; urgency=low
+
+ * New upstream release:
+ - Maintenance release.
+ - Various focus and window placement fixes.
+ - Fixed handling of windows that have a (server-drawn) border.
+ - Fixed handling of window icons that have a colour depth of 1 bit.
+ - Added KDE 4.4 support to KDE4 window decorator.
+ * debian/control:
+ - Build-depend on libx11-dev, libxext-dev
+ * debian/patches/020_fix_focus.patch:
+ * debian/patches/030_from_git_crash_fix_multiscreen.patch:
+ * debian/patches/031_from_git_fix_gnome_keybindings.patch:
+ * debian/patches/070_remove_deprecated_gtk_symbol.patch:
+ - Applied upstream
+
+ -- Robert Ancell <robert.ancell@xxxxxxxxxxxxx> Tue, 27 Jul 2010 17:23:05 +0200
+
+compiz (1:0.8.4-4ubuntu1) maverick; urgency=low
+
+ * Merge with Debian unstable, remaining Ubuntu changes:
+ * debian/control:
+ - Build-depend on cdbs for strip-schemas
+ - Add version on libmetacity-dev build-depend
+ - Add KDE build-depends
+ - Add metacity-common build-depends (for getting keybindings)
+ - Add gnome-control-center-dev build-depends (may not be required)
+ - Add libx11-xcb-dev build-depend
+ - Add Vcs-Bzr link
+ - compiz provides x-window-manager
+ - compiz-core does not provide mesa-utils
+ - compiz-core breaks old version of compiz-fusion-plugins-main and
+ compiz-fusion-plugins-extra
+ - compiz-core replaces old compiz-wrapper
+ - compiz-dev depends on libx11-xcb-dev
+ - compiz-gnome and compiz-kde depend on compiz-plugins and their backends
+ * debian/rules:
+ - Compile a subset of the plugins
+ - Do not build the kconfig plugin (in favior of libcompizconfig)
+ - Build with --enable-gconf
+ - Build translations/language packs
+ - Install compiz-decorator wrapper
+ - Install apport hook
+ - Copy keybindings from metacity
+ - Exclude some files from compiz-plugins
+ * debian/compiz-core.install:
+ - Don't install plugin files
+ - Install apport hooks
+ * debian/compiz-decorator:
+ - Script to run the appropriate decorator for the current session
+ * debian/compiz-dev.install:
+ - Install XSLT file
+ * debian/compiz-gtk.*:
+ - Not required, merged into compiz-gnome
+ * debian/compiz-gnome.gconf-defaults:
+ - Set Ubuntu defaults
+ * debian/compiz-gnome.install:
+ - Rename wm-properties desktop file, don't know why
+ - Install gnome-control-center keybindings files
+ - Add files from compiz-gtk
+ * debian/compiz-gnome.manpages:
+ - Add files from compiz-gtk
+ * debian/compiz-keybindings.sed:
+ - Script to add keybindings
+ * debian/compiz-plugins.install:
+ - Install XML files for the plugins
+ * debian/source_compiz.py:
+ - Apport hook
+ * debian/patches/012_snap-by-default.patch:
+ - Not enabled, not sure if we want this in Ubuntu
+ * debian/patches/021_hide_tooltip_on_decorator.patch:
+ - Make decorator tooltips optional
+ * debian/patches/029_default_options.patch:
+ - Updated with additional changes over Debian
+ * debian/patches/090_profiling.patch:
+ - Timing profiling patch (disabled)
+ * debian/watch:
+ - Update download location
+
+ -- Robert Ancell <robert.ancell@xxxxxxxxxxxxx> Thu, 17 Jun 2010 10:12:18 +1000
+
+compiz (0.8.4-4) unstable; urgency=low
+
+ * Drop libdbus-qt-1-dev from Build-Depends, as kindly requested by
+ Michael Biebl (Closes: #581788). Qt3 is going away, we already use
+ --disable-kde and --enable-kde4 to that effect, so libdbus-qt-1-dev
+ can be kicked away.
+ * Add libglu1-mesa-dev, needed for <GL/glu.h>.
+
+ -- Cyril Brulebois <kibi@xxxxxxxxxx> Sun, 16 May 2010 20:44:51 +0200
+
+compiz (0.8.4-3) unstable; urgency=high
+
+ [ Brice Goglin ]
+ * Remove Thierry Reding from Uploaders, closes: #572540.
+
+ [ Cyril Brulebois ]
+ * Add patch to prevent FTBFS due to deprecated GDK/GTK stuff:
+ * 020_disable_gdk_gtk_disable_deprecated (Closes: #577352).
+ * Add myself to Uploaders.
+ * Set urgency to high due to RC bugfix.
+
+ -- Cyril Brulebois <kibi@xxxxxxxxxx> Thu, 15 Apr 2010 03:29:29 +0200
+
+compiz (0.8.4-2) unstable; urgency=low
+
+ * Bump the dh_makeshlibs call to (>= 0.8.4)
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Thu, 11 Feb 2010 23:08:16 +0100
+
+compiz (0.8.4-1) unstable; urgency=low
+
+ * New upstream release.
+
+ [ Sean Finney ]
+ * Fix FTBFS: "gconf/gconf-client.h: No such file or directory"
+ - thanks to Sebastian Harl <tokkee@xxxxxxxxxx> (Closes: #562027, #562438)
+ * Add compiz-decorator symlink for compatibility with ubuntu systems.
+ * Make all patches DEP-3 formatted.
+ * No longer keep the ubuntu patches logically separated from ours
+ * Enable 010-disable-child-window-clipping.patch, as there's an ABI bump.
+ Also, massage the patch a little so that it applies cleanly.
+ * Synchronize ubuntu patches from 0.8.4-0ubuntu10
+ * 015_draw_dock_shadows_on_desktop.patch:
+ - change decoration plugin to draw dock shadows only on the
+ desktop window instead of on top of all other windows
+ * 016_call_glxwaitx_before_drawing.patch:
+ - Call glXWaitX before we start drawing to make sure X is done
+ handling rendering calls. Suggested by Michel Dänzer to ensure
+ we don't have any rendering glitches.
+ * 017_always_unredirect_screensaver_on_nvidia.patch:
+ - always unredirect gnome-screensaver when using nvidia, workaround
+ for LP #160264 while still disabling unredirect fullscreen
+ windows for nvidia users
+ * 020_fix_focus.patch:
+ - give back the focus to the previous focused window (LP: #455900)
+ * 030_from_git_crash_fix_multiscreen.patch:
+ - merge commit 24dea72a395071b533dcf66b2eef37b20522cbba to fix
+ crash with wobbly windows in a multi screen setup
+ * 031_from_git_fix_gnome_keybindings.patch:
+ - fix gnome keybindings (terminal key)
+ * 060_move_checks_to_compiz.patch:
+ - add all relevant checks from compiz-manager to compiz itself
+ Compiz already checks for almost everything it needs so there is no
+ need to check twice.
+ * 061_KWD_stubs.patch (updated locally to remove fuzz):
+ - Horrible hack to define empty stubs for some new pure virtual
+ functions in KWD::Window, to fix FTBFS.
+ * The following patches have been updated to cleanly apply:
+ * 014-fix-gtk-window-decorator-no-argb-crash.patch
+ * 015_optional-fbo.patch
+ * ubuntu/010-disable-child-window-clipping.patch
+ * ubuntu/013-add-cursor-theme-support.patch
+ * ubuntu/018_use_metacity_settings.patch
+ * ubuntu/029_default_options
+ * ubuntu/035_ignore_workspaces
+ * ubuntu/037_fullscreen_stacking_fixes.patch
+ * ubuntu/049-damage-report-non-empty.patch
+ * ubuntu/050_stacking.patch
+ * Transition from compiz-manager to compiz binary for /usr/bin/compiz
+ * Remove all patches to the embedded compiz-manager script
+ * 028_compiz_manager_blacklist
+ * 029_compiz_manager_decoration.patch
+ * 029_compiz_manager_nvidia_settings.patch
+ * 030_compiz_manager_multi_display
+ * 031_compiz_manager_extra_blacklist_support
+ * 032_compiz_manager_add_gnomecompat
+ * 033_compiz_manager_xdg_dirs
+ * 042-compiz-manager-default-plugin
+ * 046_compiz_manager_second_screen.patch
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Thu, 11 Feb 2010 20:17:39 +0100
+
+compiz (0.8.2-6) unstable; urgency=low
+
+ * Add libxcursor-dev build-dep as required by patch
+ ubuntu/013-add-cursor-theme-support; also let compiz-dev pull it as it's
+ referenced in the .pc file; closes: #525240, #524943.
+ * Add a virtual compiz-core-abiversion-2009xxyy provides to compiz-core to
+ allow for strict dependencies of plugins on the compiz-core
+ CORE_ABIVERSION they were built with, as read from include/compiz-core.h.
+ * Use the new Breaks feature for the compiz-core -> libcompizconfig0 dep.
+ This makes upgrades smoother than Conflicts.
+ * Bump the compiz-core Breaks on libcompizconfig0 to 0.8.0 as the last
+ CORE_ABIVERSION bump happened between 0.7.8 and 0.8.0; closes: #523514.
+ * Add a missing libxml2-dev build-dep and update the compiz-dev deps to
+ match what compiz.pc requires and use the same versions as the build-deps.
+ * Build-dep on libcairo2-dev instead of libcairo-dev.
+ * Add missing libstartup-notification0-dev (>= 0.7) bdep and version the
+ compiz-dev dep to match.
+ * Use the same version in the libdecoration0-dev dep on libxrender-dev as
+ in the libxrender-dev bdep.
+
+ -- Loic Minier <lool@xxxxxxxx> Fri, 24 Apr 2009 15:15:24 +0200
+
+compiz (0.8.2-5) unstable; urgency=low
+
+ * remove obsolete --enable-gconf-dump configure option
+ * add build-dependency on libgnomeui-dev to fix new FTBFS (Closes: #524446)
+ * add Vcs-Git and Vcs-Browser headers to debian/control
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sun, 19 Apr 2009 18:45:39 +0200
+
+compiz (0.8.2-4) unstable; urgency=low
+
+ * disable child window clipping patch: it breaks the abi
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sat, 11 Apr 2009 18:55:35 +0200
+
+compiz (0.8.2-3) unstable; urgency=low
+
+ * import of some ubuntu patches for 0.8.2 with some modifications
+ - see debian/patches/ubuntu for patches
+ - see debian/patches/series for which patches are used and which
+ are not.
+ - includes patch to copy gnome/metacity keyboard shortcuts
+ (Closes: #503442, #454922).
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sat, 11 Apr 2009 14:26:06 +0200
+
+compiz (0.8.2-2) unstable; urgency=low
+
+ * upgrading compiz-manager backed out some locally modified but not
+ quilt-using changes in paths. so, new patch compiz-debian-paths.patch
+ should fix this (closes: #522985).
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Wed, 08 Apr 2009 23:13:19 +0200
+
+compiz (0.8.2-1) unstable; urgency=low
+
+ * new upstream release.
+ * update location of compiz-gnome desktop file
+ * add new app desktop file for compiz to compiz-core
+ * update build-deps to use kdebase-workspace-dev
+ * add build-dep on libxslt1-dev
+ * disable kde3 decorator and enable kde4 decorator
+ * include a gbp.conf for use with git-buildpackage
+ * bump the libdecoration0 shlibs version to 0.8.2
+ * update compiz-manager to upstream's 223180bf
+ * Obsolete patches now removed:
+ - disable-libx11-xcb-support.patch
+ - xscreensaver-damage-fix.patch
+ - compiz-manager-posixly-correct.patch
+ * Lintian fixes:
+ - update Standards-Version to 3.8.1
+ - add misc:Depends to compiz
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Wed, 01 Apr 2009 00:00:10 +0200
+
+compiz (0.7.6-8) unstable; urgency=low
+
+ * Don't run glib-gettextize, to fix FTBFS caused by intltoolize changes
+ (closes: #518909).
+ * Rebuild against new metacity (closes: #518910).
+
+ -- Julien Cristau <jcristau@xxxxxxxxxx> Mon, 09 Mar 2009 18:44:13 +0100
+
+compiz (0.7.6-7) unstable; urgency=medium
+
+ * refresh quilt patches to apply with no fuzz/offsets.
+ * add fglrx driver to compiz-manager whitelist (closes: #495539).
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Mon, 01 Sep 2008 08:00:56 +0200
+
+compiz (0.7.6-6) unstable; urgency=high
+
+ * backport commit aed97c441881d9c382c7865d0305fc8f884c10ac to fix the
+ problems that seem to come up with certain xscreensavers the Right Way.
+ (closes: #483170).
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sat, 30 Aug 2008 11:39:17 +0200
+
+compiz (0.7.6-5) unstable; urgency=high
+
+ * Brown paper bag: remove shlibs.local and libdecoration0.shlibs, call
+ dh_makeshlibs with the proper flags to actually fix dependencies on
+ libdecoration0.
+
+ -- Julien Cristau <jcristau@xxxxxxxxxx> Fri, 01 Aug 2008 18:57:30 +0200
+
+compiz (0.7.6-4) unstable; urgency=low
+
+ [ Julien Cristau ]
+ * Bump libdecoration0 shlibs to >= 0.7.6 (closes: #485775).
+
+ [ Sean Finney ]
+ * Include fix for posixly-incorrect usage of ENV (closes: #484225).
+
+ -- Julien Cristau <jcristau@xxxxxxxxxx> Sat, 26 Jul 2008 21:44:51 +0200
+
+compiz (0.7.6-3) unstable; urgency=high
+
+ * Add a versioned Replaces on older compiz-plugins to compiz-gtk, to prevent
+ file conflicts. Thanks to Daniel Burrows for the report (closes: #485436).
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Mon, 09 Jun 2008 18:39:57 +0200
+
+compiz (0.7.6-2) unstable; urgency=low
+
+ * Add Conflicts against xscreensaver-data-extra as an unfortunately
+ heavy handed workaround to prevent graphical lockups with an as-of-yet
+ unknown bug somewhere in the screensaver-compiz-driver-xserver chain.
+ (See: #483170, and other bugs/urls referenced in that report)
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sat, 07 Jun 2008 14:22:15 +0200
+
+compiz (0.7.6-1) unstable; urgency=low
+
+ * New upstream release
+
+ [ Sean Finney ]
+ * Special-case the gconf and kconfig plugins to go into the -gtk and -kde
+ packages respectively, as they are semi-obsoleted by the ccp plugin anyway
+ and cause potentially problematic dependencies. Thanks to Fabiano
+ Manoel de Andrade for the report (closes: #482150).
+ * Add versioned Conflicts on libcompizconfig0 to compiz-core, to reflect
+ ABI breakage without introducing a circular dependency. Thanks
+ to Mike Hommey for the report (closes: #482646).
+ * Make debian/rules stricter about catching uninstalled files.
+ * Make debian/rules able to build/clean/build again.
+ * Misc cleanups in debian/rules.
+ * Lintian fixes:
+ - Spelling correction in debian/control
+ - Fix for build-depends-on-1-revision for x11proto-gl-dev
+
+ [ Julien Cristau ]
+ * Add Depends: libxslt1-dev, libxml2-dev to compiz-dev, as they are required
+ by compiz.pc (closes: #482192).
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Mon, 26 May 2008 23:04:24 +0200
+
+compiz (0.7.4-1) unstable; urgency=low
+
+ * New upstream release
+ * Incorporate xcb-disabling patch from
+ http://gitweb.opencompositing.org/?p=users/3v1n0/compiz-patches
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sun, 18 May 2008 19:15:13 +0200
+
+compiz (0.6.3~git20080115.0ea58487-1) unstable; urgency=low
+
+ * New upstream (git snapshot) release. Refreshed quilt patches.
+ * Contains upstream fix for kde-window-decorator problems with not properly
+ mapping/rendering titlebars. closes: #458464, #460186.
+ * Remove timestamps from quilt patches (package maintainers, you
+ should put QUILT_NO_DIFF_TIMESTAMPS=1 in your ~/.quiltrc).
+ * add compizconfig-settings-manager to Suggests field for compiz.
+ * don't blindly assume that the nvidia-settings program is present.
+ patch: compiz-manager-nvidia-settings-optional.patch. closes: #463645.
+
+ -- sean finney <seanius@xxxxxxxxxx> Tue, 26 Feb 2008 20:08:31 +0100
+
+compiz (0.6.3~git20071222.061ff159-1) unstable; urgency=low
+
+ * New upstream (git snapshot) release. Refreshed quilt patches.
+ * Remove build-dependency on libfuse-dev, since we explicitly disable the
+ fuse plugin and it causes FTBFS on non-linux arches. It should also make
+ backporting easier (closes: #451149, #455516).
+ * compiz-manager-posixly-correct.patch: fix from Brian Carlson to get
+ compiz-manager to run when POSIXLY_CORRECT is set (always pass
+ options before arguments closes: #456628).
+ * Remove libmetacity entry from shlibs override (closes: #455515) Thanks to
+ Rober Millan for noticing this.
+ * Remove outdated info in README.Debian for compiz-core (closes: #454340).
+ * lintian:
+ - Standards-Version to 3.7.3
+ - libdecoration0-dev to section libdevel
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sat, 22 Dec 2007 12:01:54 +0100
+
+compiz (0.6.3~git20071208.25941d14-1) unstable; urgency=low
+
+ [Sean Finney]
+ * New upstream (git snapshot) release.
+ * Remove autofoo generated content and create/remove it as part of the
+ standard build process instead.
+ * Similarly, add Build-Deps on autoconf and similar stuff.
+ * Remove the old/buggy compiz.wrapper script and now use Kristian Lyngstol's
+ compiz-manager script as a drop-in replacement for it. This should fix
+ numerous problems with plugin settings and window decorators not behaving
+ properly. specifically, it closes: #449389, #390929, #400583, #440095.
+ it also closes: #446901, #447345 closes: #393501, #445026.
+ * Update copyright file accordingly.
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sun, 16 Dec 2007 17:29:03 +0100
+
+compiz (0.6.3~git20071104.c9009efd-1) unstable; urgency=low
+
+ [Sean Finney]
+ * New upstream (git snapshot) release.
+ * Disable the (unused?) fuse plugin, explicitly enable the gconf plugin
+ * lintian: update FSF address
+
+ [Brice Goglin]
+ * Make compiz dependencies on compiz-* packages versioned,
+ closes: #440494.
+ * Make the build-dependency on libfuse-dev require >= 2.7.0.
+
+ -- Sean Finney <seanius@xxxxxxxxxx> Sun, 04 Nov 2007 21:20:17 +0100
+
+compiz (0.5.2-2) unstable; urgency=low
+
+ * oops, shipping copies of a few .h and .pc files in both compiz-dev
+ and libdecoration0-dev. fixed.
+
+ -- sean finney <seanius@xxxxxxxxxx> Wed, 29 Aug 2007 21:06:29 +0200
+
+compiz (0.5.2-1) unstable; urgency=low
+
+ * New upstream release.
+ * updated/massaged various quilt patches
+ * make sure configure is executable at build time. seems that this
+ causes problems in a pbuilder environment
+ * new build-dependencies on libxml-parser-perl and xsltproc
+ * modify compiz-dev.install to install all the extra .h/.pc files
+ being generated in this new version.
+
+ -- sean finney <seanius@xxxxxxxxxx> Wed, 22 Aug 2007 22:58:09 -0700
+
+compiz (0.5.0.dfsg-3) UNRELEASED; urgency=low
+
+ * Restore all ${misc:Depends} in debian/control so that for instance
+ compiz-gtk and compiz-plugins gets the required dependency on gconf2
+ (for gconf-schemas in postinst), closes: #436432.
+
+ -- Brice Goglin <bgoglin@xxxxxxxxxx> Tue, 07 Aug 2007 15:10:49 +0200
+
+compiz (0.5.0.dfsg-2) unstable; urgency=low
+
+ * Drop the now obsolete Source-Version in favour of binary:Version in
+ debian/control.
+ * Replace --strict-binding and --use-cow documentation by --loose-binding
+ and --use-root-window respectively in the compiz.real manpage. Thanks
+ Michael Gilbert. (Closes: 432920)
+ * Rearrange and add missing command-line options in the compiz.real manpage.
+ * compiz-gtk needs to conflict with libmetacity0 (<< 1:2.15.21) because of
+ an incompatible ABI change. This should really be fixed in libmetacity. A
+ shlibs bump should do the trick. (Closes: 425631)
+ * Add upstream patch that fixes non-tfp textures (icons, cube top image
+ etc.) on big endian platforms. Thanks Michel Dänzer.
+ * Run dh_makeshlibs with -V. (Closes: 425463)
+ * Use package-local shlibs override file to depend on libmetacity0 (>=
+ 1:2.15.21) and libdecoration0 (>= 0.5.0). Thanks Sune Vuorela.
+
+ -- Thierry Reding <thierry@xxxxxxxx> Fri, 13 Jul 2007 11:25:13 +0200
+
+compiz (0.5.0.dfsg-1) unstable; urgency=low
+
+ [ Thierry Reding ]
+ * New upstream development release:
+ - Remove stencil buffer requirement.
+ - Focus stealing prevention support.
+ - Better occlusion detection and more efficient rendering.
+ - Added plugins:
+ + blur: blur windows and contents behind translucent windows
+ + fuse: map compiz options to a file-system
+ + ini: flat file configuration backend
+ + inotify: file change notification
+ + video: composited video interface for efficient playback
+ * Forward-port patches:
+ - Dropped 012_debian-kde-includes-dir.patch, no longer needed.
+ - Dropped 013_set-qtdir-fallback.patch, no longer needed.
+ - Refresh other patches.
+ * Use compiz' default set of plugins.
+ * Add build-dependency on libfuse-dev needed by the fuse plugin.
+ * No longer conflict with metacity >= 2.15.21, now that metacity 2.18 is in
+ unstable. (Closes: #411012)
+ * Add symlink to the compiz-core README to the compiz package.
+ (Closes: #408605)
+ * Drop po/*.gmo and kde/window-decorator/*.moc.cpp from the original
+ tarball. Add a note to debian/copyright.
+ * Pass QTDIR=/usr to the configure script so that the moc can be found.
+ * shlibs bump for libdecoration because it contains added symbols.
+ Thanks Julien Cristau.
+
+ [ Julien Cristau ]
+ * Don't remove .cvsignore files and autogen.sh in clean.
+
+ -- Thierry Reding <thierry@xxxxxxxx> Sat, 19 May 2007 17:34:51 +0200
+
+compiz (0.3.6-1) experimental; urgency=low
+
+ [ Thierry Reding ]
+ * New upstream release:
+ + Drop 002_tfp-server-extension.patch, obsolete.
+ + Drop 005_glfinish.patch, fixed upstream.
+ + Refresh 011_snap-by-default.patch.
+ * Replace build-dependency on libdbus-1-dev by libdbus-glib-1-dev.
+ * Add build-dependency on kdebase-dev and libdbus-qt-1-dev for the KDE
+ window decorator.
+ * Add patch 012_debian-kde-includes-dir to correctly detect the KDE include
+ directory on Debian systems.
+ * Add patch 013_set-qtdir-fallback to set the QTDIR variable to /usr if it
+ has not explicitly been set before. This allows the configure script to
+ correctly detect the moc compiler.
+ * Add the compiz-kde package which provides a window decorator for KDE.
+ Closes: #390338.
+ * Add the libdecoration0 and libdecoration0-dev packages. libdecoration0 is
+ needed by both Gtk and KDE window decorators while libdecoration0-dev can
+ be used to write additional decorators.
+ * Add patch 015_optional-fbo which adds a command-line option for disabling
+ the use of FBOs (work around buggy drivers). Add the --no-fbo option to
+ command-line in the compiz wrapper.
+ * Remove the --strict-binding and --use-cow options from the command-line in
+ the compiz wrapper. These are now the defaults.
+ * Add png and svg to the list of default plugins. They are needed to load
+ PNG and SVG images (e.g. for the cube's top face).
+ * Check whether the GLX_EXT_texture_from_pixmap extension is available in
+ direct or indirect rendering contexts. If it is available only in indirect
+ rendering contexts, force compiz to use indirect rendering.
+
+ -- David Nusinow <dnusinow@xxxxxxxxxx> Wed, 17 Jan 2007 23:46:34 -0500
+
+compiz (0.3.4-1) experimental; urgency=low
+
+ * New upstream release:
+ + Drop 012_metacity-theme-support.patch, fixed upstream.
+ + Drop 013_fix-default-plugins.patch, fixed upstream.
+ + Refresh all other patches.
+ * Don't use xsfbs anymore until there's an easy way to keep it up-to-date
+ in git repositories. For now using quilt works just fine.
+ * Drop build-dependencies on automake1.9 and libtool because we don't run
+ the complete autotools stack anymore.
+ * Add missing dependencies to the compiz-dev package. It needs to pull in
+ all packages required by its pkgconfig file.
+ * Add a dependency on libgl1-mesa-dev | libgl-dev to compiz-dev because
+ compiz.h includes files provided in that package.
+
+ -- Thierry Reding <thierry@xxxxxxxx> Sun, 26 Nov 2006 00:36:39 +0100
+
+
+compiz (0.3.2-1) experimental; urgency=low
+
+ * New upstream release. Closes: #396770.
+ + Remove 010_snap-inverted.patch, applied upstream.
+ + Refreshed other patches to apply cleanly again.
+ + Remove gtk-window-decorator.schemas and use the one provided by
+ upstream (gtk/window-decorator/gwd.schemas).
+ * Targetted at experimental until the release of etch.
+
+ -- Thierry Reding <thierry@xxxxxxxx> Tue, 14 Nov 2006 02:36:40 +0100
+
+compiz (0.2.2-1) unstable; urgency=low
+
+ [ Thierry Reding ]
+ * New upstream release:
+ + Drop 013_dont-fail-if-theme-not-found.patch, applied upstream.
+ * Make 012_metacity-theme-support also patch the configure script, not only
+ configure.ac.
+ * Add 013_fix-default-plugins.patch which fixes upstream's handling of the
+ default plugins configuration variable.
+ * Make all plugins that were enabled in previous versions default plugins so
+ compiz' behaviour doesn't change. Drop the 'water' plugin because our X
+ server does not support it yet.
+ * Drop --disable-kde from the configure flags because it is now disabled by
+ default.
+ * Add a dependency on mesa-utils to compiz-core to provide glxinfo that is
+ needed by the compiz wrapper. Thanks Per Bojsen.
+ Closes: #393113.
+ * Conflict with libmetacity0 (>= 1:2.15.21) because it would currently make
+ gtk-window-decorator segfault.
+
+ [ David Nusinow ]
+ * Add myself to uploaders. Thierry is still the primary maintainer.
+
+ -- David Nusinow <dnusinow@xxxxxxxxxx> Mon, 6 Nov 2006 23:13:41 -0500
+
+compiz (0.2.0-1) unstable; urgency=low
+
+ [ Thierry Reding ]
+ * New upstream release.
+ + Drop 011_plane-plugin-schema.patch, applied upstream.
+ + Drop 012_freedesktop-schema.patch, applied upstream.
+ * Replace 010_snap-by-default by the upstream patch 010_snap-inverted and
+ add 011_snap-by-default to enable snapping by default.
+ * Add 012_metacity-theme-support.patch which uses an older version of the
+ metacity library for theme support so that compiz can be built for Debian
+ unstable.
+ * Install a schemas file for the Gtk window decorator which is used to
+ enable the use of metacity themes.
+ * Suggest nvidia-glx (>= 1.0.9625-1). (Closes: #390326).
+ * Add code to the compiz wrapper to handle the NVIDIA GLX implementation
+ Closes: #390814.
+ * No longer build static versions of the plugins.
+ * Remove .la files manually because they are not needed.
+ * Clean up build-dependencies:
+ + Remove unnecessarily versioned build-dependencies.
+ + Tighten the build-dependency on libxcomposite-dev to (>= 1:0.3-2).
+ Closes: 390304, 390416.
+ * Add a manpage documenting the compiz wrapper.
+ * Check if the gconf plugin is installed before trying to load it in the
+ wrapper.
+ * Enable building the gconf-dump plugin.
+ * Add a README file to the compiz-core package.
+ * List copyright holders and contributors in the copyright file.
+ Closes: #392422.
+ * Add 013_dont-fail-if-theme-not-found.patch which will make compiz use its
+ default theme if the metacity theme cannot be found.
+ * Make compiz-gtk suggest gnome-themes so people can take advantage of the
+ metacity theme support.
+
+ [ David Nusinow ]
+ * Tighten up all the X library build-depends by explicitly using current
+ versions. Thanks aj.
+
+ -- David Nusinow <dnusinow@xxxxxxxxxx> Fri, 13 Oct 2006 16:22:17 -0400
+
+compiz (0.0.13+git20060928-2) unstable; urgency=low
+
+ * Change the maintainer field to the Debian X Strike Force.
+ * Add myself to the uploaders field.
+ * Move compiz.{docs,install,manpages} to compiz-core.{docs,install,manpages}
+ so the installed files end up in the correct package.
+ * Rename compiz.1 to compiz.real.1, because it's actually documenting the
+ real compiz binary.
+
+ -- Thierry Reding <thierry@xxxxxxxx> Fri, 29 Sep 2006 09:24:30 +0200
+
+compiz (0.0.13+git20060928-1) unstable; urgency=low
+
+ * Initial release. (Closes: #352151)
+ * Install the compiz schema during postinst and removes it during prerm
+ (using dh_gconf).
+ * Add patches by Kristian Høgsberg to make compiz work on AIGLX:
+ + 002_tfp-server-extension.patch
+ + 005_glfinish.patch
+ * No longer build the compiz-kde package, because it is unusable.
+ * Add gtk-window-decorator.1 manpage.
+ * Install the window settings configuration plugin into the right location
+ (/usr/lib/libgnome-window-settings1/libcompiz.so).
+ * Bump build-dependency on libxcomposite-dev (>= 0.3) because it provides
+ the XComposite{Get,Release}OverlayWindow functions.
+ * Install a compiz wrapper as /usr/bin/compiz to call compiz.real with
+ required arguments (load gconf plugin).
+ * Add 010_snap-by-default.patch to turn snapping on by default.
+ * Add a versioned build-dependency on x11proto-gl-dev (>= 1.4.8-1) to make
+ sure compiz gets built with the correct opcodes for the GLX_EXT_tfp
+ extension.
+ * Add build-dependency on libmetacity-dev, which is needed for metacity
+ theme support.
+ * Add the compiz-gtk package containing the former gnome-window-decorator.
+ The compiz-gnome package provides the files necessary to integrate compiz
+ and compiz-gtk with the GNOME desktop environment.
+ * Add a build-dependency on libxinerama-dev, needed to build compiz with
+ support for the xinerama extension.
+ * Revise the compiz.1 manpage.
+ * Rename the compiz package to compiz-core and make compiz a meta-package
+ pulling in everything necessary to run compiz from within GNOME.
+ * Add 011_plane-plugin-schema.patch by Eugene Konev gconf settings
+ for the plane plugin.
+ * Add 012_freedesktop-schema.patch that fixes a typo in compiz.schema.in.
+
+ -- Thierry Reding <thierry@xxxxxxxx> Fri, 29 Sep 2006 07:56:05 +0200
+
=== added file 'debian/compat'
--- debian/compat 1970-01-01 00:00:00 +0000
+++ debian/compat 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1 @@
+5
=== added file 'debian/compiz-core.README.Debian'
--- debian/compiz-core.README.Debian 1970-01-01 00:00:00 +0000
+++ debian/compiz-core.README.Debian 2011-08-14 15:11:23 +0000
@@ -0,0 +1,36 @@
+Xorg Server Configuration
+=========================
+
+In order for compiz to work you need to add the following to you server
+configuration file (/etc/X11/xorg.conf):
+
+ + Enable the composite extension: locate the section named "Extensions" and
+ add the following line:
+
+ Option "Composite" "enable"
+
+ If there is no section "Extensions" yet, you should add one that looks
+ like this:
+
+ Section "Extensions"
+ Option "Composite" "enable"
+ EndSection
+
+ + Make XAA not hold any pixmaps in offscreen memory. This slows down compiz
+ in many configurations. You can disable this by adding the following line
+ to your "Device" section:
+
+ Option "XAANoOffscreenPixmaps" "true"
+
+Now restart your X server and login to your favorite session. After the
+session has loaded completely, open a terminal window and type the following
+command:
+
+ $ compiz --replace &
+
+Which will start compiz, make it replace the current window manager and
+background the process so you can safely close the terminal again. If all went
+well, compiz should start up and enable a whole bunch of desktop effects.
+
+ -- Thierry Reding <thierry@xxxxxxxx> Tue, 3 Oct 2006 14:12:26 +0200
+
=== added file 'debian/compiz-core.docs'
--- debian/compiz-core.docs 1970-01-01 00:00:00 +0000
+++ debian/compiz-core.docs 2011-08-14 15:11:23 +0000
@@ -0,0 +1,4 @@
+AUTHORS
+NEWS
+README
+TODO
=== added file 'debian/compiz-core.install'
--- debian/compiz-core.install 1970-01-01 00:00:00 +0000
+++ debian/compiz-core.install 2011-08-14 15:11:23 +0000
@@ -0,0 +1,8 @@
+debian/tmp/usr/bin/compiz*
+debian/compiz-decorator usr/bin/
+debian/tmp/usr/share/compiz/cube/images/*.png
+debian/tmp/usr/share/compiz/*.png
+debian/tmp/usr/share/compiz/core.xml
+debian/tmp/usr/share/locale
+debian/tmp/usr/share/applications/compiz.desktop
+debian/source_compiz.py usr/share/apport/package-hooks
=== added file 'debian/compiz-core.manpages'
--- debian/compiz-core.manpages 1970-01-01 00:00:00 +0000
+++ debian/compiz-core.manpages 2011-08-14 15:11:23 +0000
@@ -0,0 +1,2 @@
+debian/compiz.1
+debian/compiz-decorator.1
=== added file 'debian/compiz-decorator'
--- debian/compiz-decorator 1970-01-01 00:00:00 +0000
+++ debian/compiz-decorator 2011-08-14 15:11:23 +0000
@@ -0,0 +1,97 @@
+#!/bin/sh
+# Starts Compiz Decorator depending on the DE
+#
+# Copyright (c) 2007 CyberOrg <cyberorg@xxxxxxxxxxxxx>
+# Based on compiz-manager script by Kristian Lyngstøl <kristian@xxxxxxxxxxxxx>
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributions by: crdlb
+#
+COMPIZ_BIN_PATH=/usr/bin/
+KWIN=`which kwin`
+METACITY="/usr/bin/metacity"
+
+#
+# Default to gtk/kde4-window-decorator
+#
+USE_EMERALD="no"
+DECORATOR=""
+
+#Do not leave users without decoration if decorator fails
+if [ "$DESKTOP_SESSION" = "kde" ]; then
+ FALLBACKWM="${KWIN}"
+else
+ FALLBACKWM="${METACITY}"
+fi
+FALLBACKWM_OPTIONS=" --replace"
+
+#
+# Set to yes to enable verbose
+#
+VERBOSE="yes"
+
+#
+# Echos the arguments if verbose
+#
+verbose()
+{
+ if [ "x$VERBOSE" = "xyes" ]; then
+ printf "$*"
+ fi
+}
+
+# Read configuration from XDG paths
+if [ -z "$XDG_CONFIG_DIRS" ]; then
+ test -f /etc/xdg/compiz/compiz-manager && . /etc/xdg/compiz/compiz-manager
+else
+ test -f $XDG_CONFIG_DIRS/compiz/compiz-manager && . $XDG_CONFIG_DIRS/compiz/compiz-manager
+fi
+
+if [ -z "$XDG_CONFIG_HOME" ]; then
+ test -f $HOME/.config/compiz/compiz-manager && . $HOME/.config/compiz/compiz-manager
+else
+ test -f $XDG_CONFIG_HOME/compiz/compiz-manager && . $XDG_CONFIG_HOME/compiz/compiz-manager
+fi
+
+# start a decorator
+if [ -x ${COMPIZ_BIN_PATH}emerald ] && [ "$USE_EMERALD" = "yes" ]; then
+ DECORATOR=emerald
+elif [ -x ${COMPIZ_BIN_PATH}gtk-window-decorator ] && [ -n "$GNOME_DESKTOP_SESSION_ID" ]; then
+ DECORATOR=gtk-window-decorator
+elif [ -x ${COMPIZ_BIN_PATH}kde4-window-decorator ] && [ x$KDE_SESSION_VERSION = x"4" ]; then
+ DECORATOR=kde4-window-decorator
+fi
+
+# fall back to any decorator that is installed
+if [ -z "$DECORATOR" ]; then
+ verbose "Couldn't find a perfect decorator match; trying all decorators\n"
+ if [ -x ${COMPIZ_BIN_PATH}emerald ]; then
+ DECORATOR=emerald
+ elif [ -x ${COMPIZ_BIN_PATH}gtk-window-decorator ]; then
+ DECORATOR=gtk-window-decorator
+ elif [ -x ${COMPIZ_BIN_PATH}kde4-window-decorator ]; then
+ DECORATOR=kde4-window-decorator
+ fi
+fi
+
+if [ -n "$DECORATOR" ]; then
+ verbose "Starting ${DECORATOR}\n"
+ exec ${COMPIZ_BIN_PATH}$DECORATOR "$@"
+else
+ verbose "Found no decorator to start\n"
+ exec $FALLBACKWM $FALLBACKWM_OPTIONS
+fi
+
=== added file 'debian/compiz-decorator.1'
--- debian/compiz-decorator.1 1970-01-01 00:00:00 +0000
+++ debian/compiz-decorator.1 2011-08-14 15:11:23 +0000
@@ -0,0 +1,15 @@
+.TH COMPIZ-DECORATOR 1 "May 18, 2010"
+.SH NAME
+compiz-decorator \- Automatic decorator loader
+.SH SYNOPSIS
+.B compiz-decorator
+.SH DESCRIPTION
+.B compiz-decorator
+is a program that automatically launches the best decorator based on your
+environment and what decorators are available.
+.SH AUTHOR
+compiz-decorator was written by CyberOrg <cyberorg@xxxxxxxxxxxxx> and
+others.
+.PP
+This manual page was written by Travis Watkins <amaranth@xxxxxxxxxx>,
+for the Ubuntu project (but may be used by others).
=== added file 'debian/compiz-dev.docs'
--- debian/compiz-dev.docs 1970-01-01 00:00:00 +0000
+++ debian/compiz-dev.docs 2011-08-14 15:11:23 +0000
@@ -0,0 +1,4 @@
+AUTHORS
+NEWS
+README
+TODO
=== added file 'debian/compiz-dev.install'
--- debian/compiz-dev.install 1970-01-01 00:00:00 +0000
+++ debian/compiz-dev.install 2011-08-14 15:11:23 +0000
@@ -0,0 +1,5 @@
+debian/tmp/usr/include/compiz/[!d]*
+debian/tmp/usr/lib/pkgconfig/[!l]*
+debian/tmp/usr/share/compiz/xslt
+debian/tmp/usr/share/cmake*
+debian/tmp/usr/share/compiz/cmake
=== added file 'debian/compiz-gnome.docs'
--- debian/compiz-gnome.docs 1970-01-01 00:00:00 +0000
+++ debian/compiz-gnome.docs 2011-08-14 15:11:23 +0000
@@ -0,0 +1,4 @@
+AUTHORS
+NEWS
+README
+TODO
=== added file 'debian/compiz-gnome.gconf-defaults'
--- debian/compiz-gnome.gconf-defaults 1970-01-01 00:00:00 +0000
+++ debian/compiz-gnome.gconf-defaults 2011-08-14 15:11:23 +0000
@@ -0,0 +1,9 @@
+/apps/compiz-1/plugins/move/screen0/options/constrain_y true
+/apps/compiz-1/general/screen0/options/hsize 2
+/apps/compiz-1/general/screen0/options/vsize 2
+/apps/gwd/blur_type all
+/apps/gwd/metacity_theme_opacity 1.0
+/apps/gwd/metacity_theme_shade_opacity true
+/apps/compizconfig-1/profiles/unity/general/screen0/options/active_plugins [core,bailer,detection,composite,opengl,decor,mousepoll,vpswitch,regex,animation,snap,expo,move,compiztoolbox,place,grid,imgpng,gnomecompat,wall,ezoom,workarounds,resize,fade,unitymtgrabhandles,scale,session,unityshell]
+/apps/compizconfig-1/profiles/unity/plugins/gnomecompat/screen0/options/main_menu_key ""
+/apps/compizconfig-1/profiles/unity/plugins/gnomecompat/screen0/options/run_key ""
=== added file 'debian/compiz-gnome.install'
--- debian/compiz-gnome.install 1970-01-01 00:00:00 +0000
+++ debian/compiz-gnome.install 2011-08-14 15:11:23 +0000
@@ -0,0 +1,5 @@
+debian/tmp/usr/share/gconf/schemas/*.schemas
+debian/tmp/usr/bin/gtk-window-decorator
+debian/tmp/usr/bin/unity-window-decorator
+debian/65compiz_profile-on-session /etc/X11/Xsession.d
+debian/unity.ini /etc/compizconfig/
=== added file 'debian/compiz-gnome.manpages'
--- debian/compiz-gnome.manpages 1970-01-01 00:00:00 +0000
+++ debian/compiz-gnome.manpages 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1 @@
+debian/gtk-window-decorator.1
=== added file 'debian/compiz-kde.docs'
--- debian/compiz-kde.docs 1970-01-01 00:00:00 +0000
+++ debian/compiz-kde.docs 2011-08-14 15:11:23 +0000
@@ -0,0 +1,4 @@
+AUTHORS
+NEWS
+README
+TODO
=== added file 'debian/compiz-kde.install'
--- debian/compiz-kde.install 1970-01-01 00:00:00 +0000
+++ debian/compiz-kde.install 2011-08-14 15:11:23 +0000
@@ -0,0 +1,3 @@
+debian/tmp/usr/bin/kde4-window-decorator
+debian/tmp/usr/lib/compiz/libkde.so
+debian/tmp/usr/share/compiz/kde.xml
=== added file 'debian/compiz-kde.manpages'
--- debian/compiz-kde.manpages 1970-01-01 00:00:00 +0000
+++ debian/compiz-kde.manpages 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1 @@
+debian/kde4-window-decorator.1
=== added file 'debian/compiz-keybindings.sed'
--- debian/compiz-keybindings.sed 1970-01-01 00:00:00 +0000
+++ debian/compiz-keybindings.sed 2011-08-14 15:11:23 +0000
@@ -0,0 +1,4 @@
+s/<\/KeyListEntries>/ <KeyListEntry name="\/apps\/compiz\/plugins\/scale\/screen0\/options\/initiate_key"\/>\n\n<\/KeyListEntries>/
+s/<\/KeyListEntries>/ <KeyListEntry name="\/apps\/compiz\/plugins\/ezoom\/screen0\/options\/zoom_in_key"\/>\n\n<\/KeyListEntries>/
+s/<\/KeyListEntries>/ <KeyListEntry name="\/apps\/compiz\/plugins\/ezoom\/screen0\/options\/zoom_out_key"\/>\n\n<\/KeyListEntries>/
+s/<\/KeyListEntries>/ <KeyListEntry name="\/apps\/compiz\/plugins\/expo\/screen0\/options\/expo_key"\/>\n\n<\/KeyListEntries>/
=== added file 'debian/compiz-plugins-default.install'
--- debian/compiz-plugins-default.install 1970-01-01 00:00:00 +0000
+++ debian/compiz-plugins-default.install 2011-08-14 15:11:23 +0000
@@ -0,0 +1,15 @@
+debian/tmp/usr/*/compiz/*bailer.*
+debian/tmp/usr/*/compiz/*compiztoolbox.*
+debian/tmp/usr/*/compiz/*composite.*
+debian/tmp/usr/*/compiz/*decor.*
+debian/tmp/usr/*/compiz/*detection.*
+debian/tmp/usr/*/compiz/*fade.*
+debian/tmp/usr/*/compiz/*gnomecompat.*
+debian/tmp/usr/*/compiz/*imgpng.*
+debian/tmp/usr/*/compiz/*ini.*
+debian/tmp/usr/*/compiz/*move.*
+debian/tmp/usr/*/compiz/*opengl.*
+debian/tmp/usr/*/compiz/*place.*
+debian/tmp/usr/*/compiz/*regex.*
+debian/tmp/usr/*/compiz/*resize.*
+debian/tmp/usr/*/compiz/*scale.*
=== added file 'debian/compiz-plugins.docs'
--- debian/compiz-plugins.docs 1970-01-01 00:00:00 +0000
+++ debian/compiz-plugins.docs 2011-08-14 15:11:23 +0000
@@ -0,0 +1,4 @@
+AUTHORS
+NEWS
+README
+TODO
=== added file 'debian/compiz-plugins.install'
--- debian/compiz-plugins.install 1970-01-01 00:00:00 +0000
+++ debian/compiz-plugins.install 2011-08-14 15:11:23 +0000
@@ -0,0 +1,17 @@
+debian/tmp/usr/*/compiz/*annotate.*
+debian/tmp/usr/*/compiz/*blur.*
+debian/tmp/usr/*/compiz/*clone.*
+debian/tmp/usr/*/compiz/*commands.*
+debian/tmp/usr/*/compiz/*copytex.*
+debian/tmp/usr/*/compiz/*cube.*
+debian/tmp/usr/*/compiz/*dbus.*
+debian/tmp/usr/*/compiz/*debugspew.*
+debian/tmp/usr/*/compiz/*imgsvg.*
+debian/tmp/usr/*/compiz/*inotify.*
+debian/tmp/usr/*/compiz/*obs.*
+debian/tmp/usr/*/compiz/*rotate.*
+debian/tmp/usr/*/compiz/*screenshot.*
+debian/tmp/usr/*/compiz/*switcher.*
+debian/tmp/usr/*/compiz/*water.*
+debian/tmp/usr/*/compiz/*wobbly.*
+debian/tmp/usr/*/compiz/*zoom.*
=== added file 'debian/compiz.1'
--- debian/compiz.1 1970-01-01 00:00:00 +0000
+++ debian/compiz.1 2011-08-14 15:11:23 +0000
@@ -0,0 +1,64 @@
+.TH COMPIZ 1 "September 29, 2006"
+
+.SH NAME
+compiz \- OpenGL window and compositing manager
+
+.SH SYNOPSIS
+.B compiz
+.RI [ options ]
+.RI [ plugins ]
+.SH DESCRIPTION
+.B compiz
+is a compositing window-manager using OpenGL for rendering.
+
+.SH OPTIONS
+.TP
+.B \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.TP
+.BI "\-\-display " DISPLAY
+Manage the display called
+.I DISPLAY
+instead of the name obtained from the
+.I $DISPLAY
+environment variable.
+.TP
+.BI "\-\-refresh\-rate " RATE
+Set the default refresh rate.
+.TP
+.BI \-\-fast\-filter
+Use a fast texture filter.
+.TP
+.BI \-\-indirect\-rendering
+Force an indirect rendering context. Use this when running compiz on AIGLX.
+.TP
+.BI \-\-strict\-binding
+Enable strict binding of textures. Use this when running compiz on AIGLX.
+.TP
+.BI \-\-use\-cow
+Make use of the composite overlay window.
+.TP
+.BI \-\-replace
+Replace any existing window managers on the given X display.
+.TP
+.BI \-\-sm\-disable
+Disable the session management.
+.TP
+.BI "\-\-sm\-client\-id " ID
+Use the given
+.I ID
+as the client ID for session management.
+.TP
+.BI "\-\-bg\-image " IMAGE
+Use
+.I IMAGE
+as background image.
+
+.SH AUTHOR
+compiz was written by David Reveman <davidr@xxxxxxxxxx> and others.
+.PP
+This manual page was written by Thierry Reding <thierry@xxxxxxxx>,
+for the Debian project (but may be used by others).
=== added file 'debian/control'
--- debian/control 1970-01-01 00:00:00 +0000
+++ debian/control 2011-08-14 15:11:23 +0000
@@ -0,0 +1,168 @@
+Source: compiz
+Section: x11
+Priority: optional
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
+XSBC-Original-Maintainer: Debian X Strike Force <debian-x@xxxxxxxxxxxxxxxx>
+Uploaders: David Nusinow <dnusinow@xxxxxxxxxx>, Sean Finney <seanius@xxxxxxxxxx>, Cyril Brulebois <kibi@xxxxxxxxxx>
+Build-Depends: cmake (>= 2.6),
+ cdbs,
+ debhelper (>= 7.0.50~), intltool,
+ libcairo2-dev,
+ libdbus-glib-1-dev, libgconf2-dev,
+ libgl1-mesa-dev (>= 6.5.1) | libgl-dev, libglib2.0-dev, libboost-serialization1.46-dev,
+ libgtk2.0-dev, libgtk-3-dev, libice-dev (>= 1:1.0.1),
+ libmetacity-dev (>= 1:2.30.3-0ubuntu3), libpango1.0-dev, libpng12-dev | libpng-dev, librsvg2-dev,
+ libsm-dev (>= 1:1.0.1), libtool, libwnck-dev, libx11-dev, libxcomposite-dev (>= 1:0.3-2), libxext-dev,
+ libxdamage-dev (>=1:1.0.3), libxfixes-dev (>= 1:4.0.1), libxinerama-dev,
+ libxml-parser-perl, libxrandr-dev (>= 2:1.1.0.2), libxrender-dev (>= 1:0.9.1),
+ libxcursor-dev,
+ libxml2-dev, libxslt1-dev,
+ libstartup-notification0-dev (>= 0.7),
+ quilt (>= 0.40), x11proto-gl-dev (>= 1.4.8), xsltproc,
+ libglu1-mesa-dev,
+ libglib2.0-dev,
+ libglibmm-2.4-dev,
+ kde-workspace-dev, kdelibs5-dev (>= 4:4.2.2),
+ metacity-common, libx11-xcb-dev,
+ libdecoration0-dev,
+ gnome-control-center-dev,
+Standards-Version: 3.9.2
+Vcs-Bzr: https://code.launchpad.net/~compiz/compiz/ubuntu
+
+Package: compiz
+Architecture: all
+Provides: x-window-manager
+Depends: compiz-core (>= ${source:Version}),
+ compiz-plugins-default (>= ${source:Version}),
+ compiz-gnome | compiz-kde,
+ compiz-plugins-main-default (>= 0.9),
+ libcompizconfig0 (>= 0.9), ${misc:Depends}
+Suggests: compizconfig-settings-manager
+Description: OpenGL window and compositing manager
+ Compiz brings to life a variety of visual effects that make the Linux desktop
+ easier to use, more powerful and intuitive, and more accessible for users
+ with special needs.
+ .
+ This metapackage provides the components necessary for running compiz. It
+ provides the compiz core, a set of standard plugins, a window decorator using
+ the Gtk toolkit and the files necessary to integrate compiz with the GNOME
+ desktop environment.
+
+Package: compiz-core
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libcompizconfig0 (<< 0.9.2.1git101125-0ubuntu3),
+ compiz-fusion-plugins-main (<< 0.9.2.1-0ubuntu6),
+ unity (<< 4.2.0),
+ compiz-fusion-plugins-extra (<< 0.9),
+ simple-ccsm (<< 0.9)
+Recommends: compiz-plugins-default (= ${binary:Version})
+Suggests: nvidia-glx (>= 1.0.9625-1)
+Provides: compiz-core-abiversion-${coreabiversion}
+Conflicts: compiz-wrapper (<< 1:0.8.4-0ubuntu4)
+Replaces: compiz-wrapper (<< 1:0.8.4-0ubuntu4),
+ compiz-gnome (<< 1:0.8.4-4ubuntu1)
+Description: OpenGL window and compositing manager
+ Compiz brings to life a variety of visual effects that make the Linux desktop
+ easier to use, more powerful and intuitive, and more accessible for users
+ with special needs.
+ .
+ Compiz combines together a window manager and a composite manager using
+ OpenGL for rendering. A "window manager" allows the manipulation of the
+ multiple applications and dialog windows that are presented on the screen. A
+ "composite manager" allows windows and other graphics to be combined together
+ to create composite images. Compiz achieves its stunning effects by doing
+ both of these functions.
+
+Package: compiz-dev
+Architecture: any
+Depends: compiz-core (= ${binary:Version}), ${misc:Depends}, libgl1-mesa-dev | libgl-dev, libpng-dev, libgtk-3-dev, libxcomposite-dev (>= 1:0.3-2), libxfixes-dev (>=1:4.0.1), libxdamage-dev (>= 1:1.0.3), libxinerama-dev, libxrandr-dev (>=2:1.1.0.2), libxcursor-dev, libice-dev (>= 1:1.0.1), libsm-dev (>= 1:1.0.1), libstartup-notification0-dev (>= 0.7), libxslt1-dev, libxml2-dev, libx11-xcb-dev, libglib2.0-dev, libglibmm-2.4-dev, compiz-plugins (= ${binary:Version}), libdecoration0-dev
+Description: OpenGL window and compositing manager - development files
+ Compiz brings to life a variety of visual effects that make the Linux desktop
+ easier to use, more powerful and intuitive, and more accessible for users
+ with special needs.
+ .
+ This package contains the headers and libraries needed to compile compiz
+ plugins.
+
+Package: compiz-kde
+Architecture: any
+Depends: compiz-core (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends},
+ compiz-plugins-default (= ${binary:Version}),
+ compizconfig-backend-kconfig
+Replaces: compiz-plugins (<< 1:0.9.4+bzr20110606-0ubuntu3)
+Description: OpenGL window and compositing manager - KDE window decorator
+ Compiz brings to life a variety of visual effects that make the Linux desktop
+ easier to use, more powerful and intuitive, and more accessible for users
+ with special needs.
+ .
+ This package contains a window decorator that uses KDE to provide a look and
+ feel similar to that of the default KDE window manager.
+
+Package: compiz-gnome
+Architecture: any
+Suggests: gnome-themes
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ compiz-plugins-default (= ${binary:Version}),
+ compizconfig-backend-gconf (>= 0.9.2.1git101213)
+Replaces: compiz-plugins (<= 1:0.8.6-0ubuntu12),
+ compiz-fusion-plugins-extra (<< 0.9.2.1-0ubuntu3),
+Description: OpenGL window and compositing manager - GNOME window decorator
+ Compiz brings to life a variety of visual effects that make the Linux desktop
+ easier to use, more powerful and intuitive, and more accessible for users
+ with special needs.
+ .
+ This package contains files needed to integrate compiz with the GNOME desktop
+ environment.
+
+Package: compiz-plugins-default
+Architecture: any
+Depends: compiz-core (= ${binary:Version}),
+ libdecoration0 (= ${binary:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends}
+Replaces: compiz-plugins (<< 1:0.9.4+bzr20110606-0ubuntu3),
+ compiz-gnome (<< 1:0.8.4-4ubuntu1),
+ compiz-fusion-plugins-extra (<< 0.9.2.1-0ubuntu3)
+Description: OpenGL window and compositing manager - default plugins
+ Compiz brings to life a variety of visual effects that make the Linux desktop
+ easier to use, more powerful and intuitive, and more accessible for users
+ with special needs.
+ .
+ This package contains the default compiz plugins we activate in ubuntu coming
+ with core compiz.
+
+Package: compiz-plugins
+Architecture: any
+Depends: compiz-core (= ${binary:Version}),
+ compiz-plugins-default (= ${binary:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends}
+Replaces: compiz-gnome (<< 1:0.8.4-4ubuntu1)
+Description: OpenGL window and compositing manager - plugins
+ Compiz brings to life a variety of visual effects that make the Linux desktop
+ easier to use, more powerful and intuitive, and more accessible for users
+ with special needs.
+ .
+ This package contains the standard plugins that come with compiz.
+
+Package: libdecoration0
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Compiz window decoration library
+ The window decoration library is responsible for drawing the window borders
+ and title bar of windows managed by Compiz. It is used by window decorators
+ like gtk-window-decorator and kde-window-decorator.
+
+Package: libdecoration0-dev
+Section: libdevel
+Architecture: any
+Depends: libdecoration0 (= ${binary:Version}), ${misc:Depends}, libx11-dev, libxrender-dev (>= 1:0.9.1)
+Description: Compiz window decoration library - development files
+ The window decoration library is responsible for drawing the window borders
+ and title bar of windows managed by Compiz. It is used by window decorators
+ like gtk-window-decorator and kde-window-decorator.
+ .
+ This package contains files required for developing window decorators
+ compatible with Compiz.
+
=== added file 'debian/copyright'
--- debian/copyright 1970-01-01 00:00:00 +0000
+++ debian/copyright 2011-08-14 15:11:23 +0000
@@ -0,0 +1,131 @@
+This package was debianized by Thierry Reding <thierry@xxxxxxxx> on
+Fri, 18 Aug 2006 09:46:24 +0200.
+
+It was downloaded from http://xorg.freedesktop.org/releases/individual/app.
+
+Upstream author: David Reveman <davidr@xxxxxxxxxx>
+Contributors:
+ Radek Doulik <rodo@xxxxxxxxxx>
+ Jeremy C. Reed <reed@xxxxxxxxxxxxx>
+ Dan Winship <danw@xxxxxxxxxx>
+ Kristian Høgsberg <krh@xxxxxxxxxx>
+
+------------------------------------------------------------------------------
+
+The original source tarball was repackaged to remove the following generated
+and/or unused files:
+
+ kde/window-decorator/*.moc.cpp
+ kde/window-decorator/KWinInterface_skel.cpp
+ po/*.gmo
+
+------------------------------------------------------------------------------
+
+Copyright:
+
+This software is copyright © 2005, 2006 Novell, Inc.
+
+You can redistribute this software and/or modify it under the terms of the GNU
+General Public License as published by the Free Software Foundation; version 2
+dated June, 1991.
+
+This program is distributed in the hope that it will be useful, but-
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU-
+General Public License for more details.
+
+------------------------------------------------------------------------------
+
+The convertProperty / convert_property and handleSelectionRequest /
+handle_selection_request functions in 'src/display.c' and
+'gtk/window-decorator/gtk-window-decorator.c' are taken from the source code
+of fvwm2 and copyright © Matthias Clasen and Dominik Vogt.
+
+Parts of the code in 'src/window.c':
+
+ /* Ater gdk_window_constrain_size(), which is partially borrowed from fvwm.
+ *
+ * Copyright 1993, Robert Nation
+ * You may use this code for any purpose, as long as the original
+ * copyright remains in the source code and all documentation
+ *
+ * which in turn borrows parts of the algorithm from uwm
+ */
+
+------------------------------------------------------------------------------
+-- Plugins: --
+--------------
+
+Skydome support for the 'cube' plugin was written by Mirco Müller
+<macslow@xxxxxxxxxx>.
+
+For the 'place' plugin:
+
+ /*
+ * Copyright (C) 2001 Havoc Pennington
+ * Copyright (C) 2002, 2003 Red Hat, Inc.
+ * Copyright (C) 2003 Rob Adams
+ * Copyright (C) 2005 Novell, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+The 'plane' plugin was written by Søren Sandmann <sandmann@xxxxxxxxxx>:
+
+ /*
+ * Copyright © 2006 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Red Hat, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Red Hat, Inc. makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Søren Sandmann <sandmann@xxxxxxxxxx>
+ */
+
+------------------------------------------------------------------------------
+-- Translations: --
+-------------------
+
+The Finnish translation in 'po/fi.po' is copyright © 2003 SuSE Linux AG and ©
+2005 SUSE Linux Products GmbH.
+
+The Polish translation in 'po/pl.po' are copyright © 2005 SUSE Linux Products
+GmbH.
+
+The makefile 'po/Makefile.in.in' is copyright © 1995, 1996, 1997 by Ulrich
+Drepper <drepper@xxxxxxxxxxxxxx>.
+
+------------------------------------------------------------------------------
+
+The Debian packaging is copyright © 2006, 2007 by Thierry Reding
+<thierry@xxxxxxxx> and is licensed under the GPL, see
+`/usr/share/common-licenses/GPL'.
+
=== added file 'debian/gbp.conf'
--- debian/gbp.conf 1970-01-01 00:00:00 +0000
+++ debian/gbp.conf 2011-08-14 15:11:23 +0000
@@ -0,0 +1,8 @@
+[DEFAULT]
+debian-branch = debian-unstable
+debian-tag = compiz-%(version)s
+upstream-branch = upstream-unstable
+upstream-tag = compiz-%(version)s
+
+[git-dch]
+meta = 1
=== added file 'debian/gtk-window-decorator.1'
--- debian/gtk-window-decorator.1 1970-01-01 00:00:00 +0000
+++ debian/gtk-window-decorator.1 2011-08-14 15:11:23 +0000
@@ -0,0 +1,30 @@
+.TH GTK-WINDOW-DECORATOR 1 "September 25, 2006"
+.SH NAME
+gtk-window-decorator \- Compiz window decorator using the Gtk toolkit
+.SH SYNOPSIS
+.B gtk-window-decorator
+.RI [ options ]
+.SH DESCRIPTION
+.B gtk-window-decorator
+is a window decorator for
+.B compiz
+that uses the Gtk toolkit to provide a look and feel similar to that of the
+metacity window manager.
+.SH OPTIONS
+.B gtk-window-decorator
+accepts the following options:
+.TP
+.BI \-\-minimal
+Runs only with minimal window decorations.
+.TP
+.BI \-\-replace
+Replaces any running window decorator.
+.TP
+.BI \-\-help
+Prints the list of accepted options.
+.SH AUTHOR
+gtk-window-decorator was written by David Reveman <davidr@xxxxxxxxxx> and
+others.
+.PP
+This manual page was written by Thierry Reding <thierry@xxxxxxxx>,
+for the Debian project (but may be used by others).
=== added file 'debian/kde4-window-decorator.1'
--- debian/kde4-window-decorator.1 1970-01-01 00:00:00 +0000
+++ debian/kde4-window-decorator.1 2011-08-14 15:11:23 +0000
@@ -0,0 +1,40 @@
+.TH KDE4-WINDOW-DECORATOR 1 "January 3, 2007"
+.SH NAME
+kde4-window-decorator \- Compiz window decorator for the KDE desktop
+environment
+.SH SYNOPSIS
+.B kde4-window-decorator
+.RI [ options ]
+.SH DESCRIPTION
+.B kde4-window-decorator
+is a window decorator for
+.B compiz
+that provides a look and feel similar to that of the default KDE window
+manager.
+.SH OPTIONS
+.B kde4-window-decorator
+accepts the following options:
+.TP
+.BI \-\-replace
+Replaces any running window decorator.
+.TP
+.BI \-\-opacity " float"
+Sets the decoration opacity (range: 0.0\-1.0, default: 0.75).
+.TP
+.BI \-\-no-opacity-shade
+Disables opacity shading for decorations.
+.TP
+.BI \-\-active-opacity " float"
+Sets the opacity for active decorations (range: 0.0\-1.0, default: 1.0).
+.TP
+.BI \-\-no-active-opacity-shade
+Disables opacity shading for active decorations.
+.TP
+.BI \-\-help
+Prints the list of accepted options.
+.SH AUTHOR
+kde4-window-decorator was written by David Reveman <davidr@xxxxxxxxxx> and
+others.
+.PP
+This manual page was written by Thierry Reding <thierry@xxxxxxxx>,
+for the Debian project (but may be used by others).
=== added file 'debian/libdecoration0-dev.docs'
--- debian/libdecoration0-dev.docs 1970-01-01 00:00:00 +0000
+++ debian/libdecoration0-dev.docs 2011-08-14 15:11:23 +0000
@@ -0,0 +1,4 @@
+AUTHORS
+NEWS
+README
+TODO
=== added file 'debian/libdecoration0-dev.install'
--- debian/libdecoration0-dev.install 1970-01-01 00:00:00 +0000
+++ debian/libdecoration0-dev.install 2011-08-14 15:11:23 +0000
@@ -0,0 +1,3 @@
+debian/tmp/usr/include/compiz/decoration.h
+debian/tmp/usr/lib/libdecoration.so
+debian/tmp/usr/lib/pkgconfig/libdecoration.pc
=== added file 'debian/libdecoration0.docs'
--- debian/libdecoration0.docs 1970-01-01 00:00:00 +0000
+++ debian/libdecoration0.docs 2011-08-14 15:11:23 +0000
@@ -0,0 +1,4 @@
+AUTHORS
+NEWS
+README
+TODO
=== added file 'debian/libdecoration0.install'
--- debian/libdecoration0.install 1970-01-01 00:00:00 +0000
+++ debian/libdecoration0.install 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1 @@
+debian/tmp/usr/lib/libdecoration*.so.*
=== added file 'debian/libdecoration0.symbols'
--- debian/libdecoration0.symbols 1970-01-01 00:00:00 +0000
+++ debian/libdecoration0.symbols 2011-08-14 15:11:23 +0000
@@ -0,0 +1,31 @@
+libdecoration.so.0 libdecoration0 #MINVER#
+ decor_acquire_dm_session@Base 1:0.9.2.1
+ decor_alloc_property@Base 1:0.9.5.0
+ decor_apply_gravity@Base 1:0.9.2.1
+ decor_blend_border_picture@Base 1:0.9.2.1
+ decor_draw_simple@Base 1:0.9.2.1
+ decor_fill_picture_extents_with_shadow@Base 1:0.9.2.1
+ decor_gen_window_property@Base 1:0.9.2.1
+ decor_get_best_layout@Base 1:0.9.2.1
+ decor_get_default_layout@Base 1:0.9.2.1
+ decor_handle_selection_clear@Base 1:0.9.2.1
+ decor_handle_selection_request@Base 1:0.9.2.1
+ decor_pixmap_property_to_quads@Base 1:0.9.2.1
+ decor_property_get_num@Base 1:0.9.5.0
+ decor_property_get_type@Base 1:0.9.2.1
+ decor_property_get_version@Base 1:0.9.2.1
+ decor_quads_to_property@Base 1:0.9.2.1
+ decor_region_to_blur_property@Base 1:0.9.2.1
+ decor_set_dm_check_hint@Base 1:0.9.2.1
+ decor_set_horz_quad_line@Base 1:0.9.2.1
+ decor_set_lSrS_window_quads@Base 1:0.9.2.1
+ decor_set_lSrStSbS_window_quads@Base 1:0.9.2.1
+ decor_set_lSrStSbX_window_quads@Base 1:0.9.2.1
+ decor_set_lSrStXbS_window_quads@Base 1:0.9.2.1
+ decor_set_lXrXtXbX_window_quads@Base 1:0.9.2.1
+ decor_set_vert_quad_row@Base 1:0.9.2.1
+ decor_shadow_create@Base 1:0.9.2.1
+ decor_shadow_destroy@Base 1:0.9.2.1
+ decor_shadow_reference@Base 1:0.9.2.1
+ decor_version@Base 1:0.9.2.1
+ decor_window_property@Base 1:0.9.2.1
=== added directory 'debian/patches'
=== added file 'debian/patches/01_don_t_init_a11y.patch'
--- debian/patches/01_don_t_init_a11y.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/01_don_t_init_a11y.patch 2011-08-14 15:11:23 +0000
@@ -0,0 +1,17 @@
+Index: compiz-0.9.5.0/src/main.cpp
+===================================================================
+--- compiz-0.9.5.0.orig/src/main.cpp 2011-07-19 07:14:41.235099187 +0200
++++ compiz-0.9.5.0/src/main.cpp 2011-07-19 07:15:32.811354937 +0200
+@@ -278,6 +278,12 @@
+ signal (SIGINT, signalHandler);
+ signal (SIGTERM, signalHandler);
+
++ // In order to avoid the atk-bridge loading and the GAIL
++ // initialization during the gtk_init, it is required to set some
++ // environment vars.
++ g_setenv ("NO_AT_BRIDGE", "1", TRUE);
++ g_setenv ("NO_GAIL", "1", TRUE);
++
+ gtk_init_check (&argc, &argv);
+
+ if (!manager.parseArguments (argc, argv))
=== added file 'debian/patches/debian-changes-1:0.9.5.0-0ubuntu3'
--- debian/patches/debian-changes-1:0.9.5.0-0ubuntu3 1970-01-01 00:00:00 +0000
+++ debian/patches/debian-changes-1:0.9.5.0-0ubuntu3 2011-08-14 15:11:23 +0000
@@ -0,0 +1,2418 @@
+Description: Upstream changes introduced in version 1:0.9.5.0-0ubuntu3
+ This patch has been created by dpkg-source during the package build.
+ Here's the last changelog entry, hopefully it gives details on why
+ those changes were made:
+ .
+ compiz (1:0.9.5.0-0ubuntu3) oneiric; urgency=low
+ .
+ * debian/control:
+ - build-dep on boost 46
+ * debian/65compiz_profile-on-session:
+ - set ubuntu as the default unity session
+ .
+ The person named in the Author field signed this changelog entry.
+Author: Didier Roche <didrocks@xxxxxxxxxx>
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: http://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: <YYYY-MM-DD>
+
+--- /dev/null
++++ compiz-0.9.5.0/po/compiz.pot
+@@ -0,0 +1,2387 @@
++# SOME DESCRIPTIVE TITLE.
++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
++# This file is distributed under the same license as the PACKAGE package.
++# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2011-08-10 10:24+0200\n"
++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
++"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
++"Language-Team: LANGUAGE <LL@xxxxxx>\n"
++"Language: \n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=CHARSET\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#: ../gtk/gnome/50-compiz-desktop-key.xml.in.h:1
++msgid "Desktop"
++msgstr ""
++
++#: ../gtk/gnome/50-compiz-key.xml.in.h:1
++msgid "Window Management"
++msgstr ""
++
++#: ../gtk/gnome/compiz.desktop.in.h:1 ../gtk/gnome/compiz-wm.desktop.in.h:1
++msgid "Compiz"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:1
++msgid "Action to take when scrolling the mouse wheel on a window title bar."
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:2
++msgid "Blur type"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:3
++msgid "Metacity theme active window opacity"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:4
++msgid "Metacity theme active window opacity shade"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:5
++msgid "Metacity theme opacity"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:6
++msgid "Metacity theme opacity shade"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:7
++msgid "Opacity to use for active windows with metacity theme decorations"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:8
++msgid "Opacity to use for metacity theme decorations"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:9
++msgid ""
++"Shade active windows with metacity theme decorations from opaque to "
++"translucent"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:10
++msgid ""
++"Shade windows with metacity theme decorations from opaque to translucent"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:11
++msgid "Title bar mouse wheel action"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:12
++msgid "Type of blur used for window decorations"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:13
++msgid "Use metacity theme"
++msgstr ""
++
++#: ../gtk/window-decorator/gwd.schemas.in.h:14
++msgid "Use metacity theme when drawing window decorations"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:1
++msgid "Active Plugins"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:2
++msgid "Audible Bell"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:3
++msgid "Audible system beep"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:4
++msgid "Auto-Raise"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:5
++msgid "Auto-Raise Delay"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:6
++msgid "Automatic detection of output devices"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:7
++msgid "Click To Focus"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:8
++msgid "Click on window moves input focus to it"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:9
++msgid "Close Window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:10
++msgid "Close active window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:11
++msgid "Default Icon"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:12
++msgid "Default window icon image"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:13
++msgid "Desktop Size"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:14
++msgid "Detect Outputs"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:15
++msgid "Display Settings"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:16
++msgid ""
++"Duration the pointer must rest in a screen edge before an edge action is "
++"taken."
++msgstr ""
++
++#: ../metadata/core.xml.in.h:17
++msgid "Edge Trigger Delay"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:18
++msgid "Focus & Raise Behaviour"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:19
++msgid "Focus Prevention Level"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:20
++msgid "Focus Prevention Windows"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:21
++msgid "Focus prevention windows"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:22
++msgid "General Options"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:23
++msgid "General compiz options"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:24
++msgid "Hide Skip Taskbar Windows"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:25
++msgid "Hide all windows and focus desktop"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:26
++msgid "Hide windows not in taskbar when entering show desktop mode"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:27
++msgid "High"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:28
++msgid "Horizontal Virtual Size"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:29
++msgid "Ignore Hints When Maximized"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:30
++msgid "Ignore size increment and aspect hints when window is maximized"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:31
++msgid "Interval before raising selected windows"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:32
++msgid "Interval between ping messages"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:33
++msgid "Key bindings"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:34
++msgid "Level of focus stealing prevention"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:35
++msgid "List of currently active plugins"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:36
++msgid "List of strings describing output devices"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:37
++msgid "Low"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:38
++msgid "Lower Window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:39
++msgid "Lower window beneath other windows"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:40
++msgid "Maximize Window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:41
++msgid "Maximize Window Horizontally"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:42
++msgid "Maximize Window Vertically"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:43
++msgid "Maximize active window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:44
++msgid "Maximize active window horizontally"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:45
++msgid "Maximize active window vertically"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:46
++msgid "Minimize Window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:47
++msgid "Minimize active window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:48 ../plugins/resize/resize.xml.in.h:14
++msgid "Normal"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:49
++msgid "Number of Desktops"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:50
++msgid "Number of virtual desktops"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:51
++msgid "Off"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:52
++msgid "Outputs"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:53
++msgid "Overlapping Output Handling"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:54
++msgid "Ping Delay"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:55
++msgid "Prefer larger output"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:56
++msgid "Prefer smaller output"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:57
++msgid "Raise On Click"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:58
++msgid "Raise Window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:59
++msgid "Raise selected windows after interval"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:60
++msgid "Raise window above other windows"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:61
++msgid "Raise windows when clicked"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:62
++msgid "Save plugin states on unload"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:63
++msgid ""
++"Save the state of plugins when they are unloaded such they will resume their "
++"past internal state when reloaded"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:64
++msgid "Screen size multiplier for horizontal virtual size"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:65
++msgid "Screen size multiplier for vertical virtual size"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:66
++msgid "Show Desktop"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:67
++msgid "Smart mode"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:68
++msgid "Toggle Window Maximized"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:69
++msgid "Toggle Window Maximized Horizontally"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:70
++msgid "Toggle Window Maximized Vertically"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:71
++msgid "Toggle Window Shaded"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:72
++msgid "Toggle active window maximized"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:73
++msgid "Toggle active window maximized horizontally"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:74
++msgid "Toggle active window maximized vertically"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:75
++msgid "Toggle active window shaded"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:76
++msgid "Unmaximize Window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:77
++msgid "Unmaximize active window"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:78
++msgid "Vertical Virtual Size"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:79
++msgid "Very High"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:80
++msgid "Which one of overlapping output devices should be preferred"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:81
++msgid "Window Menu"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:82
++msgid "Window menu button binding"
++msgstr ""
++
++#: ../metadata/core.xml.in.h:83
++msgid "Window menu key binding"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:1
++msgid "4xBilinear"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:2
++msgid "Alpha Blur"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:3
++msgid "Alpha blur windows"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:4
++msgid "Blur Filter"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:5
++msgid "Blur Occlusion"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:6
++msgid "Blur Saturation"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:7
++msgid "Blur Speed"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:8
++msgid "Blur Windows"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:9
++msgid "Blur behind translucent parts of windows"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:10
++msgid "Blur saturation"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:11
++msgid "Blur windows"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:12
++msgid "Blur windows that doesn't have focus"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:13
++msgid "Disable blurring of screen regions obscured by other windows."
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:14
++msgid "Filter method used for blurring"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:15
++msgid "Focus Blur"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:16
++msgid "Focus blur windows"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:17
++msgid "Gaussian"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:18
++msgid "Gaussian Radius"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:19
++msgid "Gaussian Strength"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:20
++msgid "Gaussian radius"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:21
++msgid "Gaussian strength"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:22
++msgid "Independent texture fetch"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:23 ../plugins/decor/decor.xml.in.h:10
++#: ../plugins/switcher/switcher.xml.in.h:16
++msgid "Mipmap"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:24
++msgid "Mipmap LOD"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:25
++msgid "Mipmap level-of-detail"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:26
++msgid "Pulse"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:27
++msgid "Pulse effect"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:28
++msgid ""
++"Use the available texture units to do as many as possible independent "
++"texture fetches."
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:29
++msgid "Window blur speed"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:30
++msgid "Windows that should be affected by focus blur"
++msgstr ""
++
++#: ../plugins/blur/blur.xml.in.h:31
++msgid "Windows that should be use alpha blur by default"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:1
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command0"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:2
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command1"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:3
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command10"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:4
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command11"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:5
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command12"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:6
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command13"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:7
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command14"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:8
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command2"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:9
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command3"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:10
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command4"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:11
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command5"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:12
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command6"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:13
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command7"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:14
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command8"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:15
++msgid ""
++"A button binding that when invoked, will run the shell command identified by "
++"command9"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:16
++msgid ""
++"A button bunding that when invoked, will run the shell command identified by "
++"command15"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:17
++msgid ""
++"A button bunding that when invoked, will run the shell command identified by "
++"command16"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:18
++msgid ""
++"A button bunding that when invoked, will run the shell command identified by "
++"command17"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:19
++msgid ""
++"A button bunding that when invoked, will run the shell command identified by "
++"command18"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:20
++msgid ""
++"A button bunding that when invoked, will run the shell command identified by "
++"command19"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:21
++msgid ""
++"A button bunding that when invoked, will run the shell command identified by "
++"command20"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:22
++msgid ""
++"A edge binding that when invoked, will run the shell command identified by "
++"command12"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:23
++msgid ""
++"A edge binding that when invoked, will run the shell command identified by "
++"command13"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:24
++msgid ""
++"A edge binding that when invoked, will run the shell command identified by "
++"command14"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:25
++msgid ""
++"A edge bunding that when invoked, will run the shell command identified by "
++"command15"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:26
++msgid ""
++"A edge bunding that when invoked, will run the shell command identified by "
++"command16"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:27
++msgid ""
++"A edge bunding that when invoked, will run the shell command identified by "
++"command17"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:28
++msgid ""
++"A edge bunding that when invoked, will run the shell command identified by "
++"command18"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:29
++msgid ""
++"A edge bunding that when invoked, will run the shell command identified by "
++"command19"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:30
++msgid ""
++"A edge bunding that when invoked, will run the shell command identified by "
++"command20"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:31
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command0"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:32
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command1"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:33
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command10"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:34
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command11"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:35
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command12"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:36
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command13"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:37
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command14"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:38
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command15"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:39
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command16"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:40
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command17"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:41
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command18"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:42
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command19"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:43
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command2"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:44
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command20"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:45
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command3"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:46
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command4"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:47
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command5"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:48
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command6"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:49
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command7"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:50
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command8"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:51
++msgid ""
++"A keybinding that when invoked, will run the shell command identified by "
++"command9"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:52
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command0"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:53
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command1"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:54
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command10"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:55
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command11"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:56
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command2"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:57
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command3"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:58
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command4"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:59
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command5"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:60
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command6"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:61
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command7"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:62
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command8"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:63
++msgid ""
++"An edge binding that when invoked, will run the shell command identified by "
++"command9"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:64
++msgid "Assigns bindings to arbitrary commands"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:65
++msgid "Button Bindings"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:66
++msgid "Command line 0"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:67
++msgid "Command line 1"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:68
++msgid "Command line 10"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:69
++msgid "Command line 11"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:70
++msgid "Command line 12"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:71
++msgid "Command line 13"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:72
++msgid "Command line 14"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:73
++msgid "Command line 15"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:74
++msgid "Command line 16"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:75
++msgid "Command line 17"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:76
++msgid "Command line 18"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:77
++msgid "Command line 19"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:78
++msgid "Command line 2"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:79
++msgid "Command line 20"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:80
++msgid "Command line 3"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:81
++msgid "Command line 4"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:82
++msgid "Command line 5"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:83
++msgid "Command line 6"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:84
++msgid "Command line 7"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:85
++msgid "Command line 8"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:86
++msgid "Command line 9"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:87
++msgid "Command line to be executed in shell when run_command0 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:88
++msgid "Command line to be executed in shell when run_command1 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:89
++msgid "Command line to be executed in shell when run_command10 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:90
++msgid "Command line to be executed in shell when run_command11 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:91
++msgid "Command line to be executed in shell when run_command12 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:92
++msgid "Command line to be executed in shell when run_command13 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:93
++msgid "Command line to be executed in shell when run_command14 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:94
++msgid "Command line to be executed in shell when run_command15 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:95
++msgid "Command line to be executed in shell when run_command16 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:96
++msgid "Command line to be executed in shell when run_command17 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:97
++msgid "Command line to be executed in shell when run_command18 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:98
++msgid "Command line to be executed in shell when run_command19 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:99
++msgid "Command line to be executed in shell when run_command2 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:100
++msgid "Command line to be executed in shell when run_command20 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:101
++msgid "Command line to be executed in shell when run_command3 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:102
++msgid "Command line to be executed in shell when run_command4 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:103
++msgid "Command line to be executed in shell when run_command5 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:104
++msgid "Command line to be executed in shell when run_command6 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:105
++msgid "Command line to be executed in shell when run_command7 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:106
++msgid "Command line to be executed in shell when run_command8 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:107
++msgid "Command line to be executed in shell when run_command9 is invoked"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:108
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:1
++msgid "Commands"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:109
++msgid "Edge Bindings"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:110
++msgid "Key Bindings"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:111
++msgid "Run command 0"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:112
++msgid "Run command 1"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:113
++msgid "Run command 10"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:114
++msgid "Run command 11"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:115
++msgid "Run command 12"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:116
++msgid "Run command 13"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:117
++msgid "Run command 14"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:118
++msgid "Run command 15"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:119
++msgid "Run command 16"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:120
++msgid "Run command 17"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:121
++msgid "Run command 18"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:122
++msgid "Run command 19"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:123
++msgid "Run command 2"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:124
++msgid "Run command 20"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:125
++msgid "Run command 3"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:126
++msgid "Run command 4"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:127
++msgid "Run command 5"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:128
++msgid "Run command 6"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:129
++msgid "Run command 7"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:130
++msgid "Run command 8"
++msgstr ""
++
++#: ../plugins/commands/commands.xml.in.h:131
++msgid "Run command 9"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:1
++msgid ""
++"Allow drawing of fullscreen windows to not be redirected to offscreen pixmaps"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:2
++msgid "Automatic detection of refresh rate"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:3
++msgid "Composite"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:4
++msgid "Composite plugin"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:5
++msgid "Detect Refresh Rate"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:6
++msgid "Force independent output painting."
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:7
++msgid "Paint each output device independly, even if the output devices overlap"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:8
++msgid "Refresh Rate"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:9
++msgid "Slow Animations"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:10
++msgid "The rate at which the screen is redrawn (times/second)"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:11
++msgid "Toggle use of slow animations"
++msgstr ""
++
++#: ../plugins/composite/composite.xml.in.h:12
++msgid "Unredirect Fullscreen Windows"
++msgstr ""
++
++#: ../plugins/copytex/copytex.xml.in.h:1
++msgid "Copy pixmap content to texture"
++msgstr ""
++
++#: ../plugins/copytex/copytex.xml.in.h:2
++msgid "Copy to texture"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:1
++msgid "Allow mipmaps to be generated for decoration textures"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:2
++msgid "Command"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:3
++msgid "Decoration windows"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:4
++msgid ""
++"Decorator command line that is executed if no decorator is already running"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:5
++msgid "Drop shadow X offset"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:6
++msgid "Drop shadow Y offset"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:7
++msgid "Drop shadow color"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:8
++msgid "Drop shadow opacity"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:9
++msgid "Drop shadow radius"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:11
++msgid "Shadow Color"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:12
++msgid "Shadow Offset X"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:13
++msgid "Shadow Offset Y"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:14
++msgid "Shadow Opacity"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:15
++msgid "Shadow Radius"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:16
++msgid "Shadow windows"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:17
++msgid "Window Decoration"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:18
++msgid "Window decorations"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:19
++msgid "Windows that should be decorated"
++msgstr ""
++
++#: ../plugins/decor/decor.xml.in.h:20
++msgid "Windows that should have a shadow"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:2
++#, no-c-format
++msgid "Brightness (in %) of unresponsive windows"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:3
++msgid "Constant speed"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:4
++msgid "Constant time"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:5
++msgid "Dim Unresponsive Windows"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:6
++msgid "Dim windows that are not responding to window manager requests"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:7
++msgid "Fade Mode"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:8
++msgid "Fade Speed"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:9
++msgid "Fade Time"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:10
++msgid "Fade effect on system beep"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:11
++msgid "Fade in windows when mapped and fade out windows when unmapped"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:12
++msgid "Fade windows"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:13
++msgid "Fading Windows"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:14
++msgid "Fullscreen Visual Bell"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:15
++msgid "Fullscreen fade effect on system beep"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:17
++#, no-c-format
++msgid "Saturation (in %) of unresponsive windows"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:18
++msgid "Unresponsive Window Brightness"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:19
++msgid "Unresponsive Window Saturation"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:20
++msgid "Visual Bell"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:21
++msgid "Window fade mode"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:22
++msgid "Window fade speed"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:23
++msgid "Window fade time (in ms) in \"Constant time\" mode"
++msgstr ""
++
++#: ../plugins/fade/fade.xml.in.h:24
++msgid "Windows that should be fading"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:2
++msgid "Gnome Compatibility"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:3
++msgid "Open a terminal"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:4
++msgid "Options that keep Compiz compatible to the Gnome desktop environment"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:5
++msgid "Run Dialog"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:6
++msgid "Run terminal command"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:7
++msgid "Screenshot command line"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:8
++msgid "Show Main Menu"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:9
++msgid "Show Run Application dialog"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:10
++msgid "Show the main menu"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:11
++msgid "Take a screenshot"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:12
++msgid "Take a screenshot of a window"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:13
++msgid "Terminal command line"
++msgstr ""
++
++#: ../plugins/gnomecompat/gnomecompat.xml.in.h:14
++msgid "Window screenshot command line"
++msgstr ""
++
++#: ../plugins/imgpng/imgpng.xml.in.h:1
++msgid "Png"
++msgstr ""
++
++#: ../plugins/imgpng/imgpng.xml.in.h:2
++msgid "Png image loader"
++msgstr ""
++
++#: ../plugins/imgsvg/imgsvg.xml.in.h:1
++msgid "Set overlay"
++msgstr ""
++
++#: ../plugins/imgsvg/imgsvg.xml.in.h:2
++msgid "Set window overlay"
++msgstr ""
++
++#: ../plugins/imgsvg/imgsvg.xml.in.h:3
++msgid "Svg"
++msgstr ""
++
++#: ../plugins/imgsvg/imgsvg.xml.in.h:4
++msgid "Svg image loader"
++msgstr ""
++
++#: ../plugins/ini/ini.xml.in.h:1
++msgid "Ini"
++msgstr ""
++
++#: ../plugins/ini/ini.xml.in.h:2
++msgid "Ini Flat File Backend"
++msgstr ""
++
++#: ../plugins/inotify/inotify.xml.in.h:1
++msgid "File Watcher"
++msgstr ""
++
++#: ../plugins/inotify/inotify.xml.in.h:2
++msgid "File change notification plugin"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:1
++msgid "Constrain Y"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:2
++msgid "Constrain Y coordinate to workspace area"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:3
++msgid "Do not update the server-side position of windows until finished moving"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:4
++msgid "Initiate Window Move"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:5
++msgid "Lazy Positioning"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:6
++msgid "Move Window"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:7
++msgid "Move window"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:8 ../plugins/scale/scale.xml.in.h:28
++#: ../plugins/switcher/switcher.xml.in.h:23
++msgid "Opacity"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:9
++msgid "Opacity level of moving windows"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:10
++msgid "Snapoff and auto unmaximized maximized windows when dragging"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:11
++msgid "Snapoff maximized windows"
++msgstr ""
++
++#: ../plugins/move/move.xml.in.h:12
++msgid "Start moving window"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:1
++msgid "Best"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:2
++msgid "Fast"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:3
++msgid "Good"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:4
++msgid "If available use compression for textures converted from images"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:5
++msgid "Lighting"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:6
++msgid "Only perform screen updates during vertical blanking period"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:7
++msgid "OpenGL"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:8
++msgid "OpenGL Plugin"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:9
++msgid "Sync To VBlank"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:10
++msgid "Texture Compression"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:11
++msgid "Texture Filter"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:12
++msgid "Texture filtering"
++msgstr ""
++
++#: ../plugins/opengl/opengl.xml.in.h:13
++msgid "Use diffuse light when screen is transformed"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:1
++msgid "Algorithm to use for window placement"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:2
++msgid "Cascade"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:3
++msgid "Centered"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:4
++msgid "Fixed Window Placement"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:5
++msgid "Force Placement Windows"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:6
++msgid "Horizontal viewport positions"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:7
++msgid "Keep In Workarea"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:8
++msgid ""
++"Keep placed window in work area, even if that means that the position might "
++"differ from the specified position"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:9
++msgid "Maximize"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:10
++msgid "Mode"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:11 ../plugins/scale/scale.xml.in.h:24
++msgid "Multi Output Mode"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:12
++msgid "Place Windows"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:13
++msgid "Place across all outputs"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:14
++msgid "Place windows at appropriate positions when mapped"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:15
++msgid "Placement Mode"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:16
++msgid "Pointer"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:17
++msgid "Positioned windows"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:18
++msgid "Positioning modes"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:19
++msgid "Random"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:20
++msgid ""
++"Selects how window placement should behave if multiple outputs are selected"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:21
++msgid "Smart"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:22
++msgid "Use active output device"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:23
++msgid "Use output device of focussed window"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:24
++msgid "Use output device with pointer"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:25
++msgid "Vertical viewport positions"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:26
++msgid "Viewport positioned windows"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:27
++msgid "Window placement workarounds"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:28
++msgid "Windows"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:29
++msgid "Windows that should be positioned by default"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:30
++msgid "Windows that should be positioned in specific viewports by default"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:31
++msgid ""
++"Windows that should forcedly be placed, even if they indicate the window "
++"manager should avoid placing them."
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:32
++msgid "Windows that should have a certain positioning mo+de"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:33
++msgid "Windows with fixed placement mode"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:34
++msgid "Windows with fixed positions"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:35
++msgid "Windows with fixed viewport"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:36
++msgid "Workarounds"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:37
++msgid "X Positions"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:38
++msgid "X Viewport Positions"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:39
++msgid "X position values"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:40
++msgid "Y Positions"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:41
++msgid "Y Viewport Positions"
++msgstr ""
++
++#: ../plugins/place/place.xml.in.h:42
++msgid "Y position values"
++msgstr ""
++
++#: ../plugins/regex/regex.xml.in.h:1
++msgid "Regex Matching"
++msgstr ""
++
++#: ../plugins/regex/regex.xml.in.h:2
++msgid "Regex window matching"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:1
++msgid "Additional Modifier Keys"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:2
++msgid "Alt"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:3 ../plugins/scale/scale.xml.in.h:5
++#: ../plugins/switcher/switcher.xml.in.h:6
++msgid "Bindings"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:4
++msgid "Border Color"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:5
++msgid "Border color used for outline and rectangle resize modes"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:6
++msgid "Centered Modifier"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:7
++msgid "Control"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:8
++msgid "Default Resize Mode"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:9
++msgid "Default mode used for window resizing"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:10
++msgid "Fill Color"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:11
++msgid "Fill color used for rectangle resize mode"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:12
++msgid "Initiate Window Resize"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:13
++msgid "Meta"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:15
++msgid "Normal Resize Windows"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:16
++msgid "Outline"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:17
++msgid "Outline Modifier"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:18
++msgid "Outline Resize Windows"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:19
++msgid "Rectangle"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:20
++msgid "Rectangle Modifier"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:21
++msgid "Rectangle Resize Windows"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:22
++msgid "Resize Window"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:23
++msgid "Resize window"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:24
++msgid "Shift"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:25
++msgid "Specific Window Matches"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:26
++msgid "Start resizing window"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:27
++msgid "Stretch"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:28
++msgid "Stretch Modifier"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:29
++msgid "Stretch Resize Windows"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:30
++msgid "Use these bindings to resize by stretching."
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:31
++msgid "Use these bindings to resize from the center."
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:32
++msgid "Use these bindings to resize with an outline."
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:33
++msgid "Use these bindings to resize with an rectangle."
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:34
++msgid "Windows that normal resize should be used for"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:35
++msgid "Windows that outline resize should be used for"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:36
++msgid "Windows that rectangle resize should be used for"
++msgstr ""
++
++#: ../plugins/resize/resize.xml.in.h:37
++msgid "Windows that stretch resize should be used for"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:1 ../plugins/switcher/switcher.xml.in.h:2
++msgid "Amount of opacity in percent"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:2
++msgid "Appearance"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:3
++msgid "Behaviour"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:4
++msgid "Big"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:6
++msgid "Button Bindings Toggle Scale Mode"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:7
++msgid ""
++"Button bindings toggle scale mode instead of enabling it when pressed and "
++"disabling it when released."
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:8
++msgid "Click Desktop to Show Desktop"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:9
++msgid "Darken Background"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:10
++msgid "Darken background when scaling windows"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:11
++msgid "Drag and Drop Hover Timeout"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:12
++msgid "Emblem"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:13
++msgid "Enter Show Desktop mode when Desktop is clicked during Scale"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:14
++msgid "Initiate Window Picker"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:15
++msgid "Initiate Window Picker For All Windows"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:16
++msgid "Initiate Window Picker For Window Group"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:17
++msgid "Initiate Window Picker For Windows on Current Output"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:18
++msgid "Key Bindings Toggle Scale Mode"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:19
++msgid ""
++"Key bindings toggle scale mode instead of enabling it when pressed and "
++"disabling it when released."
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:20
++msgid "Layout and start transforming all windows"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:21
++msgid "Layout and start transforming window group"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:22
++msgid "Layout and start transforming windows"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:23
++msgid "Layout and start transforming windows on current output"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:25
++msgid "None"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:26
++msgid "On all output devices"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:27
++msgid "On current output device"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:29
++msgid "Overlay Icon"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:30
++msgid "Overlay an icon on windows once they are scaled"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:31
++msgid "Scale"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:32
++msgid "Scale Windows"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:33
++msgid "Scale speed"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:34
++msgid "Scale timestep"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:35
++msgid "Scale windows"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:36
++msgid "Selects where windows are scaled if multiple output devices are used."
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:37
++msgid "Space between windows"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:38
++msgid "Spacing"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:39 ../plugins/switcher/switcher.xml.in.h:40
++#: ../plugins/zoom/zoom.xml.in.h:3
++msgid "Speed"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:40
++msgid ""
++"Time (in ms) before scale mode is terminated when hovering over a window "
++"dragging and dropping an item"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:41 ../plugins/switcher/switcher.xml.in.h:44
++#: ../plugins/zoom/zoom.xml.in.h:4
++msgid "Timestep"
++msgstr ""
++
++#: ../plugins/scale/scale.xml.in.h:42
++msgid "Windows that should be scaled in scale mode"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:1
++msgid "Amount of brightness in percent"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:3
++msgid "Amount of saturation in percent"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:4
++msgid "Application Switcher"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:5
++msgid "Auto Rotate"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:7
++msgid "Brightness"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:8
++msgid "Bring To Front"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:9
++msgid "Bring selected window to front"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:10
++msgid "Distance desktop should be zoom out while switching windows"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:11
++msgid "Focus on Switch"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:12
++msgid "Focus windows when they are visible during the switch"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:13
++msgid "Generate mipmaps when possible for higher quality scaling"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:14
++msgid "Icon"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:15
++msgid "Minimized"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:17
++msgid "Next Panel"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:18
++msgid "Next window"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:19
++msgid "Next window (All windows)"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:20
++msgid "Next window (No popup)"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:21
++msgid "Only show icon"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:22
++msgid "Only show the window icon and do not display a thumbnail at all"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:24
++msgid "Popup switcher if not visible and select next window"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:25
++msgid "Popup switcher if not visible and select next window out of all windows"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:26
++msgid "Popup switcher if not visible and select previous window"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:27
++msgid ""
++"Popup switcher if not visible and select previous window out of all windows"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:28
++msgid "Prev Panel"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:29
++msgid "Prev window"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:30
++msgid "Prev window (All windows)"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:31
++msgid "Prev window (No popup)"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:32
++msgid "Rotate to the selected window while switching"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:33
++msgid "Saturation"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:34
++msgid "Select next panel type window."
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:35
++msgid "Select next window without showing the popup window."
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:36
++msgid "Select previous panel type window."
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:37
++msgid "Select previous window without showing the popup window."
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:38
++msgid "Show icon next to thumbnail"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:39
++msgid "Show minimized windows"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:41
++msgid "Switcher speed"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:42
++msgid "Switcher timestep"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:43
++msgid "Switcher windows"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:45
++msgid "Windows that should be shown in switcher"
++msgstr ""
++
++#: ../plugins/switcher/switcher.xml.in.h:46
++msgid "Zoom"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:1
++msgid "Add line"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:2
++msgid "Add point"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:3
++msgid "Adds water effects to different desktop actions"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:4
++msgid "Delay (in ms) between each rain-drop"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:5
++msgid "Enable pointer water effects"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:6 ../plugins/zoom/zoom.xml.in.h:2
++msgid "Initiate"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:7
++msgid "Line"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:8
++msgid "Offset Scale"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:9
++msgid "Point"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:10
++msgid "Rain Delay"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:11
++msgid "Title wave"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:12
++msgid "Toggle rain"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:13
++msgid "Toggle rain effect"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:14
++msgid "Toggle wiper"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:15
++msgid "Toggle wiper effect"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:16
++msgid "Water Effect"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:17
++msgid "Water offset scale"
++msgstr ""
++
++#: ../plugins/water/water.xml.in.h:18
++msgid "Wave effect from window title"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:1
++msgid "Filter Linear"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:5
++msgid "Use linear filter when zoomed in"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:6
++msgid "Zoom Desktop"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:7
++msgid "Zoom In"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:8
++msgid "Zoom Out"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:9
++msgid "Zoom Pan"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:10
++msgid "Zoom Speed"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:11
++msgid "Zoom Timestep"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:12
++msgid "Zoom and pan desktop cube"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:13
++msgid "Zoom factor"
++msgstr ""
++
++#: ../plugins/zoom/zoom.xml.in.h:14
++msgid "Zoom pan"
++msgstr ""
=== added file 'debian/patches/series'
--- debian/patches/series 1970-01-01 00:00:00 +0000
+++ debian/patches/series 2011-08-14 15:11:23 +0000
@@ -0,0 +1,2 @@
+01_don_t_init_a11y.patch
+debian-changes-1:0.9.5.0-0ubuntu3
=== added file 'debian/rules'
--- debian/rules 1970-01-01 00:00:00 +0000
+++ debian/rules 2011-08-14 15:11:23 +0000
@@ -0,0 +1,42 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+CORE_ABIVERSION := $(shell sed -rn 's/^\#define[[:space:]]+CORE_ABIVERSION[[:space:]]+//p' include/core/core.h )
+
+# generated via:
+# python -c "import compizconfig; print ','.join(compizconfig.Context().Plugins['core'].Display['active_plugins'].Value)"
+DEFAULT_PLUGINS = "core bailer detection composite opengl decor mousepoll vpswitch regex animation snap expo move compiztoolbox place grid imgpng gnomecompat wall ezoom workarounds staticswitcher resize fade scale session"
+
+override_dh_auto_configure:
+ # currently, segfault if CMAKE_BUILD_TYPE=Release
+ dh_auto_configure -- -DCOMPIZ_BUILD_WITH_RPATH=FALSE -DCOMPIZ_DEFAULT_PLUGINS=\"$(DEFAULT_PLUGINS)\" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCOMPIZ_PACKAGING_ENABLED=TRUE
+
+override_dh_install:
+ # Language packs
+ for d in $$(find debian/tmp -type f \( -name "*.desktop" -o -name "*.directory" \) ); do \
+ sed -ri '/^(Name|GenericName|Comment|X-GNOME-FullName)\[/d' $$d; \
+ echo "X-Ubuntu-Gettext-Domain=compiz" >> $$d; \
+ done;
+ #for d in $$(find debian/tmp -type f -name "*.schemas" ); do \
+ # GETTEXT_DOMAIN="compiz" perl /usr/lib/cdbs/strip-schema.pl $$d > $$d.new; mv $$d.new $$d; \
+ # done;
+
+ # cmake findcompiz_install use COMPIZ_DESTDIR and using COMPIZ_DESTDIR and
+ # DESTDIR together is completely broken upstream
+ # So, doing the same in debian/rules to find a way to install things in the
+ # right place, sorry for the kittens
+ cmake_dir=`cmake --system-information 2> /dev/null | grep "^CMAKE_ROOT " | sed -e 's/.*"\(.*\)"/\1/'` && \
+ mkdir -p debian/tmp$${cmake_dir}/Modules && cp cmake/FindCompiz.cmake debian/tmp$${cmake_dir}/Modules
+
+ dh_install --fail-missing
+
+override_dh_gencontrol:
+ dh_gencontrol -- -Vcoreabiversion=$(CORE_ABIVERSION)
+
+
+%:
+ dh $@
+
=== added directory 'debian/source'
=== added file 'debian/source/format'
--- debian/source/format 1970-01-01 00:00:00 +0000
+++ debian/source/format 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1 @@
+3.0 (quilt)
=== added file 'debian/source_compiz.py'
--- debian/source_compiz.py 1970-01-01 00:00:00 +0000
+++ debian/source_compiz.py 2011-08-14 15:11:23 +0000
@@ -0,0 +1,34 @@
+import apport.packaging
+
+def add_info(report, ui):
+
+ # if it's a stacktrace, report it directly against the right component
+ if report.has_key("Stacktrace"):
+ for external_component in ("/usr/lib/libnux", "/usr/lib/compiz/libunityshell", "/usr/lib/libunity"):
+ for words in report["Stacktrace"].split():
+ if words.startswith(external_component):
+ report.add_package_info(apport.packaging.get_file_package(words))
+ return
+ report.add_hooks_info(ui, srcpackage='xorg')
+ return
+
+
+ # ok, add maximum interesting info without too much spam
+ report['CompizPlugins'] = command_output(['gconftool-2',
+ '--get', '/apps/compiz-1/general/screen0/options/active_plugins'])
+ # User configuration
+ report['GconfCompiz'] = command_output(['gconftool-2', '-R', '/apps/compiz-1'])
+
+ unity_bug = False
+ if ui and "unity" in report['CompizPlugins'] and report['SourcePackage'] != "unity":
+ if ui.yesno("Thanks for reporting this bug. It seems you have unity running. Is the issue you are reporting is related to unity itself rather than compiz?"):
+ unity_bug = True
+
+ if unity_bug:
+ report.add_package_info('unity')
+ report.add_hooks_info(ui, srcpackage='unity')
+ return
+
+ # add all relevant info like xorg ones
+ report.add_hooks_info(ui, srcpackage='xorg')
+
=== added directory 'debian/sources'
=== added file 'debian/unity.ini'
--- debian/unity.ini 1970-01-01 00:00:00 +0000
+++ debian/unity.ini 2011-08-14 15:11:23 +0000
@@ -0,0 +1,3 @@
+[core]
+s0_active_plugins = core;bailer;detection;composite;opengl;decor;mousepoll;vpswitch;regex;animation;snap;expo;move;compiztoolbox;place;grid;imgpng;gnomecompat;wall;ezoom;workarounds;resize;fade;unitymtgrabhandles;scale;session;unityshell
+
=== added file 'debian/watch'
--- debian/watch 1970-01-01 00:00:00 +0000
+++ debian/watch 2011-08-14 15:11:23 +0000
@@ -0,0 +1,3 @@
+version=3
+http://releases.compiz.org/([\d\.]+)[02468]/ compiz-(\d.*)\.tar\.gz
+
=== added directory 'gtk'
=== added file 'gtk/CMakeLists.txt'
--- gtk/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ gtk/CMakeLists.txt 2011-08-14 15:11:23 +0000
@@ -0,0 +1,93 @@
+option (BUILD_GTK "Build gtk-window-decorator and Gnome related toold" 1)
+option (BUILD_METACITY "Gtk-window-decorator metacity theme support" 1)
+option (BUILD_GNOME "Gnome settings module" 1)
+option (BUILD_GNOME_KEYBINDINGS "Gnome keybindings" 1)
+
+compiz_set (USE_GTK ${BUILD_GTK})
+compiz_set (USE_METACITY ${BUILD_METACITY})
+compiz_set (USE_GNOME ${BUILD_GNOME})
+compiz_set (USE_GNOME_KEYBINDINGS ${BUILD_GNOME_KEYBINDINGS})
+
+if (USE_GTK)
+ pkg_check_modules (GTK_WINDOW_DECORATOR
+ xrender>=0.8.4
+ gtk+-2.0>=2.18.0
+ libwnck-1.0
+ pangocairo
+ )
+ if (GTK_WINDOW_DECORATOR_FOUND)
+ set (CMAKE_REQUIRED_FLAGS ${GTK_WINDOW_DECORATOR_CFLAGS})
+ set (CMAKE_REQUIRED_LIBRARIES ${GTK_WINDOW_DECORATOR_LIBRARIES})
+ list (FIND CMAKE_REQUIRED_FLAGS "-D_REENTRANT" REENTRANT_INDEX)
+ if (REENTRANT_INDEX)
+ list (REMOVE_AT CMAKE_REQUIRED_FLAGS REENTRANT_INDEX)
+ list (APPEND CMAKE_REQUIRED_FLAGS "-D_REENTRANT=1")
+ endif (REENTRANT_INDEX)
+ check_function_exists (wnck_window_has_name HAVE_WNCK_WINDOW_HAS_NAME)
+ set (CMAKE_REQUIRED_FLAGS "")
+ set (CMAKE_REQUIRED_LIBRARIES "")
+
+ compiz_pkg_check_modules (HAVE_LIBWNCK_2_18_1 libwnck-1.0>=2.18.1)
+ compiz_pkg_check_modules (HAVE_LIBWNCK_2_19_4 libwnck-1.0>=2.19.4)
+
+ if (USE_METACITY)
+ pkg_check_modules (METACITY libmetacity-private)
+ if (METACITY_FOUND)
+ compiz_pkg_check_modules (HAVE_METACITY_2_15_21 libmetacity-private>=2.15.21)
+ compiz_pkg_check_modules (HAVE_METACITY_2_17_0 libmetacity-private>=2.17.0)
+ compiz_pkg_check_modules (HAVE_METACITY_2_23_2 libmetacity-private>=2.23.2)
+ else (METACITY_FOUND)
+ compiz_set (USE_METACITY 0)
+ endif (METACITY_FOUND)
+ endif (USE_METACITY)
+
+ if (USE_GNOME)
+ compiz_pkg_check_modules (GNOME_WINDOW_SETTINGS
+ gnome-window-settings-2.0
+ gnome-desktop-2.0
+ )
+
+ if (GNOME_WINDOW_SETTINGS_FOUND)
+ exec_program (${PKG_CONFIG_EXECUTABLE}
+ ARGS "--variable=prefix gnome-window-settings-2.0"
+ OUTPUT_VARIABLE windowsettingsdatadir
+ )
+ set (windowsettingsdatadir ${windowsettingsdatadir}/share)
+ exec_program (${PKG_CONFIG_EXECUTABLE}
+ ARGS "--variable=libdir gnome-window-settings-2.0"
+ OUTPUT_VARIABLE windowsettingslibdir
+ )
+ else (GNOME_WINDOW_SETTINGS_FOUND)
+ compiz_set (USE_GNOME 0)
+ endif (GNOME_WINDOW_SETTINGS_FOUND)
+ endif (USE_GNOME)
+
+ if (USE_GNOME_KEYBINDINGS)
+ compiz_pkg_check_modules (GNOME_KEY_BINDINGS gnome-keybindings)
+ if (GNOME_KEY_BINDINGS_FOUND)
+ exec_program (${PKG_CONFIG_EXECUTABLE}
+ ARGS "--variable=keysdir gnome-keybindings"
+ OUTPUT_VARIABLE keybindingsdir
+ )
+ else (GNOME_KEY_BINDINGS_FOUND)
+ compiz_set (USE_GNOME_KEYBINDINGS 0)
+ endif (GNOME_KEY_BINDINGS_FOUND)
+ endif (USE_GNOME_KEYBINDINGS)
+ else (GTK_WINDOW_DECORATOR_FOUND)
+ compiz_set (USE_GTK 0)
+ endif (GTK_WINDOW_DECORATOR_FOUND)
+endif (USE_GTK)
+
+if (NOT USE_GTK)
+ compiz_set (USE_METACITY 0)
+ compiz_set (USE_GNOME 0)
+ compiz_set (USE_GNOME_KEYBINDINGS 0)
+endif (NOT USE_GTK)
+
+configure_file (
+ ${CMAKE_CURRENT_SOURCE_DIR}/config.h.gtk.in
+ ${CMAKE_CURRENT_BINARY_DIR}/config.h
+)
+
+add_subdirectory (window-decorator)
+add_subdirectory (gnome)
=== added file 'gtk/config.h.gtk.in'
--- gtk/config.h.gtk.in 1970-01-01 00:00:00 +0000
+++ gtk/config.h.gtk.in 2011-08-14 15:11:23 +0000
@@ -0,0 +1,25 @@
+/* Define to 1 if Metacity support is enabled */
+#cmakedefine USE_METACITY 1
+
+/* Define to 1 if Gconf support is enabled */
+#cmakedefine USE_GCONF 1
+
+/* Define to 1 if you have the `wnck_window_has_name' function. */
+#cmakedefine HAVE_WNCK_WINDOW_HAS_NAME 1
+
+/* Define to 1 if libwnck version >= 2_18_1 */
+#cmakedefine HAVE_LIBWNCK_2_18_1 1
+
+/* Define to 1 if libwnck version >= 2_19_4 */
+#cmakedefine HAVE_LIBWNCK_2_19_4 1
+
+/* Define to 1 if metacity version >= 2.15.21 */
+#cmakedefine HAVE_METACITY_2_15_21 1
+
+/* Define to 1 if metacity version >= 2.17.0 */
+#cmakedefine HAVE_METACITY_2_17_0 1
+
+/* Define to 1 if metacity version >= 2.23.2 */
+#cmakedefine HAVE_METACITY_2_23_2 1
+
+#define GETTEXT_PACKAGE "${GETTEXT_PACKAGE}"
=== added directory 'gtk/gnome'
=== added file 'gtk/gnome/50-compiz-desktop-key.xml.in'
--- gtk/gnome/50-compiz-desktop-key.xml.in 1970-01-01 00:00:00 +0000
+++ gtk/gnome/50-compiz-desktop-key.xml.in 2011-08-14 15:11:23 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<KeyListEntries _name="Desktop" wm_name="Compiz" package="compiz">
+
+ <KeyListEntry name="/apps/compiz-1/plugins/gnomecompat/screen0/options/run_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/plugins/gnomecompat/screen0/options/main_menu_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/plugins/gnomecompat/screen0/options/run_command_screenshot_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/plugins/gnomecompat/screen0/options/run_command_window_screenshot_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/show_desktop_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/plugins/gnomecompat/screen0/options/run_command_terminal_key"/>
+
+</KeyListEntries>
=== added file 'gtk/gnome/50-compiz-key.xml.in'
--- gtk/gnome/50-compiz-key.xml.in 1970-01-01 00:00:00 +0000
+++ gtk/gnome/50-compiz-key.xml.in 2011-08-14 15:11:23 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<KeyListEntries _name="Window Management" wm_name="compiz-1" package="compiz-1">
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/close_window_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/raise_window_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/lower_window_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/maximize_window_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/unmaximize_window_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/minimize_window_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/toggle_window_maximized_horizontally_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/toggle_window_maximized_vertically_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/toggle_window_shaded_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/unmaximize_window_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/window_menu_key"/>
+
+ <KeyListEntry name="/apps/compiz-1/general/screen0/options/initiate_key"/>
+
+</KeyListEntries>
=== added file 'gtk/gnome/CMakeLists.txt'
--- gtk/gnome/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ gtk/gnome/CMakeLists.txt 2011-08-14 15:11:23 +0000
@@ -0,0 +1,91 @@
+if (USE_GNOME)
+
+ include_directories (
+ ${CMAKE_BINARY_DIR}/gtk
+ ${GNOME_WINDOW_SETTINGS_INCLUDE_DIRS}
+ ${GCONF_INCLUDE_DIRS}
+ )
+
+ add_definitions (
+ -DHAVE_CONFIG_H
+ -DMETACITY_THEME_DIR=\\\"${windowsettingsdatadir}/themes\\\"
+ )
+
+ link_directories (
+ ${COMPIZ_LINK_DIRS}
+ )
+
+ set (wmproperties_file ${CMAKE_CURRENT_BINARY_DIR}/compiz-wm.desktop)
+ compiz_translate_desktop_file (
+ ${CMAKE_CURRENT_SOURCE_DIR}/compiz-wm.desktop.in
+ ${wmproperties_file}
+ )
+ compiz_opt_install_file (
+ ${wmproperties_file}
+ ${windowsettingsdatadir}/gnome/wm-properties/compiz-wm.desktop
+ )
+
+
+ if (USE_GNOME_KEYBINDINGS)
+ compiz_translate_xml (
+ ${CMAKE_CURRENT_SOURCE_DIR}/50-compiz-desktop-key.xml.in
+ ${CMAKE_CURRENT_BINARY_DIR}/50-compiz-desktop-key.xml
+ )
+ compiz_translate_xml (
+ ${CMAKE_CURRENT_SOURCE_DIR}/50-compiz-key.xml.in
+ ${CMAKE_CURRENT_BINARY_DIR}/50-compiz-key.xml
+ )
+ set (key_xml
+ ${CMAKE_CURRENT_BINARY_DIR}/50-compiz-desktop-key.xml
+ ${CMAKE_CURRENT_BINARY_DIR}/50-compiz-key.xml
+ )
+ compiz_opt_install_file (
+ ${CMAKE_CURRENT_BINARY_DIR}/50-compiz-desktop-key.xml
+ ${keybindingsdir}/50-compiz-desktop-key.xml
+ )
+ compiz_opt_install_file (
+ ${CMAKE_CURRENT_BINARY_DIR}/50-compiz-key.xml
+ ${keybindingsdir}/50-compiz-key.xml
+ )
+ endif (USE_GNOME_KEYBINDINGS)
+
+ add_library (gnome-compiz MODULE
+ compiz-window-manager.c
+ compiz-window-manager.h
+ ${key_xml}
+ ${desktop_file}
+ ${wmproperties_file}
+ )
+
+
+ set_target_properties (gnome-compiz
+ PROPERTIES OUTPUT_NAME compiz
+ SKIP_BUILD_RPATH 1
+ )
+
+ target_link_libraries (
+ gnome-compiz ${GNOME_WINDOW_SETTINGS_LIBRARIES}
+ )
+
+ compiz_opt_install_file (
+ ${CMAKE_CURRENT_BINARY_DIR}/libcompiz.so
+ ${windowsettingslibdir}/window-manager-settings/libcompiz.so
+ )
+else (USE_GNOME)
+
+ set (desktop_file ${CMAKE_CURRENT_BINARY_DIR}/compiz.desktop)
+ compiz_translate_desktop_file (
+ ${CMAKE_CURRENT_SOURCE_DIR}/compiz.desktop.in
+ ${desktop_file}
+ )
+
+ install (
+ FILES ${desktop_file}
+ DESTINATION ${COMPIZ_DESTDIR}${datadir}/applications
+ )
+
+ add_custom_target (gnome-compiz ALL
+ DEPENDS ${desktop_file}
+ )
+
+endif (USE_GNOME)
=== added file 'gtk/gnome/compiz-window-manager.c'
--- gtk/gnome/compiz-window-manager.c 1970-01-01 00:00:00 +0000
+++ gtk/gnome/compiz-window-manager.c 2011-08-14 15:11:23 +0000
@@ -0,0 +1,505 @@
+/*
+ * Copyright © 2005 Novell, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Novell, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Novell, Inc. makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: David Reveman <davidr@xxxxxxxxxx>
+ */
+
+#include <config.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <string.h>
+#include <gconf/gconf-client.h>
+
+#include "compiz-window-manager.h"
+
+#define COMPIZ_CLICK_TO_FOCUS_KEY \
+ "/apps/compiz/general/allscreens/options/click_to_focus"
+
+#define COMPIZ_AUTORAISE_KEY \
+ "/apps/compiz/general/allscreens/options/autoraise"
+
+#define COMPIZ_AUTORAISE_DELAY_KEY \
+ "/apps/compiz/general/allscreens/options/autoraise_delay"
+
+#define COMPIZ_MOUSE_MOVE_KEY \
+ "/apps/compiz/plugins/move/allscreens/options/initiate_button"
+
+#define GCONF_DIR "/apps/metacity/general"
+
+#define COMPIZ_DOUBLE_CLICK_TITLEBAR_KEY \
+ GCONF_DIR "/action_double_click_titlebar"
+
+#define COMPIZ_USE_SYSTEM_FONT_KEY \
+ GCONF_DIR "/titlebar_uses_system_font"
+
+#define COMPIZ_TITLEBAR_FONT_KEY \
+ GCONF_DIR "/titlebar_font"
+
+#define COMPIZ_THEME_KEY \
+ GCONF_DIR "/theme"
+
+enum {
+ DOUBLE_CLICK_SHADE,
+ DOUBLE_CLICK_MAXIMIZE
+};
+
+static GnomeWindowManagerClass *parent_class;
+
+struct _CompizWindowManagerPrivate {
+ GConfClient *gconf;
+ gchar *font;
+ gchar *theme;
+ gchar *mouse_modifier;
+};
+
+static void
+value_changed (GConfClient *client,
+ const gchar *key,
+ GConfValue *value,
+ void *data)
+{
+ CompizWindowManager *wm;
+
+ wm = COMPIZ_WINDOW_MANAGER (data);
+
+ gnome_window_manager_settings_changed (GNOME_WINDOW_MANAGER (wm));
+}
+
+/* this function is called when the shared lib is loaded */
+GObject *
+window_manager_new (int expected_interface_version)
+{
+ GObject *wm;
+
+ if (expected_interface_version != GNOME_WINDOW_MANAGER_INTERFACE_VERSION)
+ {
+ g_warning ("Compiz window manager module wasn't compiled with the "
+ "current version of gnome-control-center");
+ return NULL;
+ }
+
+ wm = g_object_new (compiz_window_manager_get_type (), NULL);
+
+ return wm;
+}
+
+static void
+compiz_change_settings (GnomeWindowManager *wm,
+ const GnomeWMSettings *settings)
+{
+ CompizWindowManager *cwm;
+
+ cwm = COMPIZ_WINDOW_MANAGER (wm);
+
+ if (settings->flags & GNOME_WM_SETTING_FONT)
+ gconf_client_set_string (cwm->p->gconf,
+ COMPIZ_TITLEBAR_FONT_KEY,
+ settings->font, NULL);
+
+ if (settings->flags & GNOME_WM_SETTING_MOUSE_FOCUS)
+ gconf_client_set_bool (cwm->p->gconf,
+ COMPIZ_CLICK_TO_FOCUS_KEY,
+ settings->focus_follows_mouse == FALSE,
+ NULL);
+
+ if (settings->flags & GNOME_WM_SETTING_AUTORAISE)
+ gconf_client_set_bool (cwm->p->gconf,
+ COMPIZ_AUTORAISE_KEY,
+ settings->autoraise, NULL);
+
+ if (settings->flags & GNOME_WM_SETTING_AUTORAISE_DELAY)
+ gconf_client_set_int (cwm->p->gconf,
+ COMPIZ_AUTORAISE_DELAY_KEY,
+ settings->autoraise_delay, NULL);
+
+ if (settings->flags & GNOME_WM_SETTING_MOUSE_MOVE_MODIFIER)
+ {
+ char *value;
+
+ value = g_strdup_printf ("<%s>Button1", settings->mouse_move_modifier);
+ gconf_client_set_string (cwm->p->gconf,
+ COMPIZ_MOUSE_MOVE_KEY,
+ value, NULL);
+ g_free (value);
+ }
+
+ if (settings->flags & GNOME_WM_SETTING_THEME)
+ gconf_client_set_string (cwm->p->gconf,
+ COMPIZ_THEME_KEY,
+ settings->theme, NULL);
+
+ if (settings->flags & GNOME_WM_SETTING_DOUBLE_CLICK_ACTION)
+ {
+ const char *action = NULL;
+
+ switch (settings->double_click_action) {
+ case DOUBLE_CLICK_SHADE:
+ action = "toggle_shade";
+ break;
+ case DOUBLE_CLICK_MAXIMIZE:
+ action = "toggle_maximize";
+ break;
+ }
+
+ if (action)
+ gconf_client_set_string (cwm->p->gconf,
+ COMPIZ_DOUBLE_CLICK_TITLEBAR_KEY,
+ action, NULL);
+ }
+}
+
+static void
+compiz_get_settings (GnomeWindowManager *wm,
+ GnomeWMSettings *settings)
+{
+ CompizWindowManager *cwm;
+ int to_get;
+
+ cwm = COMPIZ_WINDOW_MANAGER (wm);
+
+ to_get = settings->flags;
+ settings->flags = 0;
+
+ if (to_get & GNOME_WM_SETTING_FONT)
+ {
+ char *str;
+
+ str = gconf_client_get_string (cwm->p->gconf,
+ COMPIZ_TITLEBAR_FONT_KEY,
+ NULL);
+
+ if (!str)
+ str = g_strdup ("Sans Bold 12");
+
+ if (cwm->p->font)
+ g_free (cwm->p->font);
+
+ cwm->p->font = str;
+
+ settings->font = cwm->p->font;
+
+ settings->flags |= GNOME_WM_SETTING_FONT;
+ }
+
+ if (to_get & GNOME_WM_SETTING_MOUSE_FOCUS)
+ {
+ settings->focus_follows_mouse =
+ gconf_client_get_bool (cwm->p->gconf,
+ COMPIZ_CLICK_TO_FOCUS_KEY, NULL) == FALSE;
+
+ settings->flags |= GNOME_WM_SETTING_MOUSE_FOCUS;
+ }
+
+ if (to_get & GNOME_WM_SETTING_AUTORAISE)
+ {
+ settings->autoraise = gconf_client_get_bool (cwm->p->gconf,
+ COMPIZ_AUTORAISE_KEY,
+ NULL);
+
+ settings->flags |= GNOME_WM_SETTING_AUTORAISE;
+ }
+
+ if (to_get & GNOME_WM_SETTING_AUTORAISE_DELAY)
+ {
+ settings->autoraise_delay =
+ gconf_client_get_int (cwm->p->gconf,
+ COMPIZ_AUTORAISE_DELAY_KEY,
+ NULL);
+
+ settings->flags |= GNOME_WM_SETTING_AUTORAISE_DELAY;
+ }
+
+ if (to_get & GNOME_WM_SETTING_MOUSE_MOVE_MODIFIER)
+ {
+ const char *new;
+ char *str;
+
+ str = gconf_client_get_string (cwm->p->gconf,
+ COMPIZ_MOUSE_MOVE_KEY,
+ NULL);
+
+ if (str == NULL)
+ str = g_strdup ("<Super>");
+
+ if (strncmp (str, "<Super>", 7) == 0)
+ new = "Super";
+ else if (strncmp (str, "<Alt>", 5) == 0)
+ new = "Alt";
+ else if (strncmp (str, "<Meta>", 6) == 0)
+ new = "Meta";
+ else if (strncmp (str, "<Hyper>", 7) == 0)
+ new = "Hyper";
+ else if (strncmp (str, "<Control>", 9) == 0)
+ new = "Control";
+ else
+ new = NULL;
+
+ if (cwm->p->mouse_modifier)
+ g_free (cwm->p->mouse_modifier);
+
+ cwm->p->mouse_modifier = g_strdup (new ? new : "");
+
+ g_free (str);
+
+ settings->mouse_move_modifier = cwm->p->mouse_modifier;
+
+ settings->flags |= GNOME_WM_SETTING_MOUSE_MOVE_MODIFIER;
+ }
+
+ if (to_get & GNOME_WM_SETTING_THEME)
+ {
+ char *str;
+
+ str = gconf_client_get_string (cwm->p->gconf,
+ COMPIZ_THEME_KEY,
+ NULL);
+
+ if (str == NULL)
+ str = g_strdup ("Atlanta");
+
+ g_free (cwm->p->theme);
+ cwm->p->theme = str;
+ settings->theme = cwm->p->theme;
+
+ settings->flags |= GNOME_WM_SETTING_THEME;
+ }
+
+ if (to_get & GNOME_WM_SETTING_DOUBLE_CLICK_ACTION)
+ {
+ char *str;
+
+ settings->double_click_action = DOUBLE_CLICK_MAXIMIZE;
+
+ str = gconf_client_get_string (cwm->p->gconf,
+ COMPIZ_DOUBLE_CLICK_TITLEBAR_KEY,
+ NULL);
+
+ if (str)
+ {
+ if (strcmp (str, "toggle_shade") == 0)
+ settings->double_click_action = DOUBLE_CLICK_SHADE;
+ else if (strcmp (str, "toggle_maximize") == 0)
+ settings->double_click_action = DOUBLE_CLICK_MAXIMIZE;
+ }
+
+ settings->flags |= GNOME_WM_SETTING_DOUBLE_CLICK_ACTION;
+ }
+}
+
+static int
+compiz_get_settings_mask (GnomeWindowManager *wm)
+{
+ return GNOME_WM_SETTING_MASK;
+}
+
+static GList *
+add_themes_from_dir (GList *current_list,
+ const char *path)
+{
+ DIR *theme_dir;
+ struct dirent *entry;
+ char *theme_file_path;
+ GList *node;
+ gboolean found = FALSE;
+
+ if (!(g_file_test (path, G_FILE_TEST_EXISTS) &&
+ g_file_test (path, G_FILE_TEST_IS_DIR)))
+ {
+ return current_list;
+ }
+
+ theme_dir = opendir (path);
+
+ /* If this is NULL, then we couldn't open ~/.themes. The test above
+ * only checks existence, not wether we can really read it.*/
+ if (theme_dir == NULL)
+ return current_list;
+
+ for (entry = readdir (theme_dir); entry; entry = readdir (theme_dir))
+ {
+ theme_file_path =
+ g_build_filename (path, entry->d_name,
+ "metacity-1/metacity-theme-1.xml", NULL);
+
+ if (g_file_test (theme_file_path, G_FILE_TEST_EXISTS))
+ {
+
+ for (node = current_list; node && !found; node = node->next)
+ found = strcmp (node->data, entry->d_name) == 0;
+
+ if (!found)
+ current_list = g_list_prepend (current_list,
+ g_strdup (entry->d_name));
+ }
+
+ found = FALSE;
+
+ g_free (theme_file_path);
+ }
+
+ closedir (theme_dir);
+
+ return current_list;
+}
+
+static GList *
+compiz_get_theme_list (GnomeWindowManager *wm)
+{
+ GList *themes = NULL;
+ char *home_dir_themes;
+
+ home_dir_themes = g_build_filename (g_get_home_dir (), ".themes", NULL);
+
+ themes = add_themes_from_dir (themes, METACITY_THEME_DIR);
+ themes = add_themes_from_dir (themes, "/usr/share/themes");
+ themes = add_themes_from_dir (themes, home_dir_themes);
+
+ g_free (home_dir_themes);
+
+ return themes;
+}
+
+static char *
+compiz_get_user_theme_folder (GnomeWindowManager *wm)
+{
+ return g_build_filename (g_get_home_dir (), ".themes", NULL);
+}
+
+static void
+compiz_get_double_click_actions (GnomeWindowManager *wm,
+ const GnomeWMDoubleClickAction **actions_p,
+ int *n_actions_p)
+{
+ static GnomeWMDoubleClickAction actions[] = {
+ { DOUBLE_CLICK_SHADE, "Shade" },
+ { DOUBLE_CLICK_MAXIMIZE, "Maximize" }
+ };
+
+ *actions_p = actions;
+ *n_actions_p = (int) G_N_ELEMENTS (actions);
+}
+
+static void
+compiz_window_manager_init (CompizWindowManager *cwm,
+ CompizWindowManagerClass *class)
+{
+ cwm->p = g_new0 (CompizWindowManagerPrivate, 1);
+ cwm->p->gconf = gconf_client_get_default ();
+ cwm->p->mouse_modifier = NULL;
+ cwm->p->font = NULL;
+ cwm->p->theme = NULL;
+
+ gconf_client_add_dir (cwm->p->gconf,
+ "/apps/compiz",
+ GCONF_CLIENT_PRELOAD_ONELEVEL,
+ NULL);
+
+ gconf_client_add_dir (cwm->p->gconf,
+ GCONF_DIR,
+ GCONF_CLIENT_PRELOAD_ONELEVEL,
+ NULL);
+
+
+ g_signal_connect (G_OBJECT (cwm->p->gconf),
+ "value_changed",
+ G_CALLBACK (value_changed),
+ cwm);
+}
+
+static void
+compiz_window_manager_finalize (GObject *object)
+{
+ CompizWindowManager *cwm;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_COMPIZ_WINDOW_MANAGER (object));
+
+ cwm = COMPIZ_WINDOW_MANAGER (object);
+
+ g_signal_handlers_disconnect_by_func (G_OBJECT (cwm->p->gconf),
+ G_CALLBACK (value_changed),
+ cwm);
+
+ if (cwm->p->mouse_modifier)
+ g_free (cwm->p->mouse_modifier);
+
+ if (cwm->p->font)
+ g_free (cwm->p->font);
+
+ if (cwm->p->theme)
+ g_free (cwm->p->theme);
+
+ g_object_unref (G_OBJECT (cwm->p->gconf));
+ g_free (cwm->p);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+compiz_window_manager_class_init (CompizWindowManagerClass *class)
+{
+ GObjectClass *object_class;
+ GnomeWindowManagerClass *wm_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ wm_class = GNOME_WINDOW_MANAGER_CLASS (class);
+
+ object_class->finalize = compiz_window_manager_finalize;
+
+ wm_class->change_settings = compiz_change_settings;
+ wm_class->get_settings = compiz_get_settings;
+ wm_class->get_settings_mask = compiz_get_settings_mask;
+ wm_class->get_user_theme_folder = compiz_get_user_theme_folder;
+ wm_class->get_theme_list = compiz_get_theme_list;
+ wm_class->get_double_click_actions = compiz_get_double_click_actions;
+
+ parent_class = g_type_class_peek_parent (class);
+}
+
+GType
+compiz_window_manager_get_type (void)
+{
+ static GType compiz_window_manager_type = 0;
+
+ if (!compiz_window_manager_type)
+ {
+ static GTypeInfo compiz_window_manager_info = {
+ sizeof (CompizWindowManagerClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) compiz_window_manager_class_init,
+ NULL,
+ NULL,
+ sizeof (CompizWindowManager),
+ 0,
+ (GInstanceInitFunc) compiz_window_manager_init,
+ NULL
+ };
+
+ compiz_window_manager_type =
+ g_type_register_static (gnome_window_manager_get_type (),
+ "CompizWindowManager",
+ &compiz_window_manager_info, 0);
+ }
+
+ return compiz_window_manager_type;
+}
=== added file 'gtk/gnome/compiz-window-manager.h'
--- gtk/gnome/compiz-window-manager.h 1970-01-01 00:00:00 +0000
+++ gtk/gnome/compiz-window-manager.h 2011-08-14 15:11:23 +0000
@@ -0,0 +1,39 @@
+#ifndef COMPIZ_WINDOW_MANAGER_H
+#define COMPIZ_WINDOW_MANAGER_H
+
+#include <glib-object.h>
+
+#include "gnome-window-manager.h"
+
+#define COMPIZ_WINDOW_MANAGER(obj) \
+ G_TYPE_CHECK_INSTANCE_CAST (obj, compiz_window_manager_get_type (), \
+ CompizWindowManager)
+
+#define COMPIZ_WINDOW_MANAGER_CLASS(klass) \
+ G_TYPE_CHECK_CLASS_CAST (klass, compiz_window_manager_get_type (), \
+ MetacityWindowManagerClass)
+
+#define IS_COMPIZ_WINDOW_MANAGER(obj) \
+ G_TYPE_CHECK_INSTANCE_TYPE (obj, compiz_window_manager_get_type ())
+
+
+typedef struct _CompizWindowManager CompizWindowManager;
+typedef struct _CompizWindowManagerClass CompizWindowManagerClass;
+typedef struct _CompizWindowManagerPrivate CompizWindowManagerPrivate;
+
+struct _CompizWindowManager {
+ GnomeWindowManager parent;
+ CompizWindowManagerPrivate *p;
+};
+
+struct _CompizWindowManagerClass {
+ GnomeWindowManagerClass klass;
+};
+
+GType
+compiz_window_manager_get_type (void);
+
+GObject *
+window_manager_new (int expected_interface_version);
+
+#endif
=== added file 'gtk/gnome/compiz-wm.desktop.in'
--- gtk/gnome/compiz-wm.desktop.in 1970-01-01 00:00:00 +0000
+++ gtk/gnome/compiz-wm.desktop.in 2011-08-14 15:11:23 +0000
@@ -0,0 +1,17 @@
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+_Name=Compiz
+Exec=compiz
+# name of loadable control center module
+X-GNOME-WMSettingsModule=compiz
+# autostart phase
+X-GNOME-Autostart-Phase=WindowManager
+X-GNOME-Provides=windowmanager
+# name we put on the WM spec check window
+X-GNOME-WMName=compiz
+# back compat only
+X-GnomeWMSettingsLibrary=compiz
+
+[Window Manager]
+SessionManaged=false
=== added file 'gtk/gnome/compiz.desktop.in'
--- gtk/gnome/compiz.desktop.in 1970-01-01 00:00:00 +0000
+++ gtk/gnome/compiz.desktop.in 2011-08-14 15:11:23 +0000
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+_Name=Compiz
+Exec=compiz
+NoDisplay=true
+# name of loadable control center module
+X-GNOME-WMSettingsModule=metacity
+# autostart phase
+X-GNOME-Autostart-Phase=WindowManager
+X-GNOME-Provides=windowmanager
+# name we put on the WM spec check window
+X-GNOME-WMName=compiz
+# back compat only
+X-GnomeWMSettingsLibrary=compiz
=== added directory 'gtk/window-decorator'
=== added file 'gtk/window-decorator/CMakeLists.txt'
--- gtk/window-decorator/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ gtk/window-decorator/CMakeLists.txt 2011-08-14 15:11:23 +0000
@@ -0,0 +1,81 @@
+if (USE_GTK)
+
+ if (COMPIZ_BUILD_WITH_RPATH)
+ set (CMAKE_INSTALL_RPATH ${libdir})
+ endif (COMPIZ_BUILD_WITH_RPATH)
+
+ include_directories (
+ ${compiz_SOURCE_DIR}/include
+ ${CMAKE_BINARY_DIR}/gtk
+ ${GTK_WINDOW_DECORATOR_INCLUDE_DIRS}
+ ${METACITY_INCLUDE_DIRS}
+ ${GCONF_INCLUDE_DIRS}
+ ${DBUS_GLIB_INCLUDE_DIRS}
+ )
+
+ add_definitions (
+ -DHAVE_CONFIG_H
+ -DALL_LINGUAS=\"${ALL_LINGUAS}\"
+ -DLOCALEDIR=\\\"${datadir}/locale\\\"
+ )
+
+ link_directories (
+ ${COMPIZ_LINK_DIRS}
+ )
+
+ if (USE_GCONF)
+ set (gwd_schema ${CMAKE_CURRENT_BINARY_DIR}/gwd.schemas)
+ compiz_translate_xml (
+ ${CMAKE_CURRENT_SOURCE_DIR}/gwd.schemas.in
+ ${gwd_schema}
+ )
+ compiz_install_gconf_schema (${CMAKE_CURRENT_BINARY_DIR}/gwd.schemas ${SCHEMADIR})
+ endif (USE_GCONF)
+
+ add_executable (gtk-window-decorator
+ gtk-window-decorator.c
+ blurprops.c
+ decorprops.c
+ cairo.c
+ frames.c
+ gdk.c
+ switcher.c
+ metacity.c
+ events.c
+ forcequit.c
+ tooltip.c
+ actionmenu.c
+ settings.c
+ util.c
+ style.c
+ wnck.c
+ decorator.c
+ ${gwd_schema}
+ )
+
+ add_dependencies (gtk-window-decorator decoration)
+
+ if (USE_METACITY)
+ set (metacitylibs ${METACITY_LIBRARIES})
+ endif (USE_METACITY)
+
+
+ target_link_libraries (
+ gtk-window-decorator
+ decoration
+ ${GTK_WINDOW_DECORATOR_LIBRARIES}
+ ${GCONF_LIBRARIES}
+ ${DBUS_GLIB_LIBRARIES}
+ ${metacitylibs}
+ )
+
+ install (
+ TARGETS gtk-window-decorator
+ DESTINATION ${COMPIZ_DESTDIR}${exec_prefix}
+ )
+
+
+endif (USE_GTK)
+
+
+
=== added file 'gtk/window-decorator/TODO'
--- gtk/window-decorator/TODO 1970-01-01 00:00:00 +0000
+++ gtk/window-decorator/TODO 2011-08-14 15:11:23 +0000
@@ -0,0 +1,18 @@
+
+* Plugin interface
+
+* Plugin with SVG-based theme support
+
+* Plugin that supports old metacity themes
+
+----- Cleanup TODO:
+ * Allow frame keying types for frame types, so
+ /2d/window_type/state/id , this way we can have
+ different shadows per-frame and much more granular
+ memory control (decor_t just becomes a handle to some
+ decoration specific stuff, decor_frame_t becomes a
+ table of shared resources held by all decor_t's
+ * Completely seal off the values of structs and use
+ only getter and setter functions to control API
+ * Start implementing a system in GObject
+ * Put all the globals into their own structs or namespaces
=== added file 'gtk/window-decorator/actionmenu.c'
--- gtk/window-decorator/actionmenu.c 1970-01-01 00:00:00 +0000
+++ gtk/window-decorator/actionmenu.c 2011-08-14 15:11:23 +0000
@@ -0,0 +1,133 @@
+/*
+ * Copyright © 2006 Novell, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: David Reveman <davidr@xxxxxxxxxx>
+ */
+
+#include "gtk-window-decorator.h"
+
+static void
+action_menu_unmap (GObject *object)
+{
+ action_menu_mapped = FALSE;
+}
+
+static void
+position_action_menu (GtkMenu *menu,
+ gint *x,
+ gint *y,
+ gboolean *push_in,
+ gpointer user_data)
+{
+ WnckWindow *win = (WnckWindow *) user_data;
+ decor_frame_t *frame = gwd_get_decor_frame (get_frame_type (win));
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+ gint bx, by, width, height;
+
+ wnck_window_get_client_window_geometry (win, x, y, &width, &height);
+
+ if ((*theme_get_button_position) (d, BUTTON_MENU, width, height,
+ &bx, &by, &width, &height))
+ *x = *x - frame->win_extents.left + bx;
+
+ gwd_decor_frame_unref (frame);
+
+ if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL)
+ {
+ GtkRequisition req;
+
+ gtk_widget_size_request (GTK_WIDGET (menu), &req);
+ *x = MAX (0, *x - req.width + width);
+ }
+
+ *push_in = TRUE;
+}
+
+void
+action_menu_map (WnckWindow *win,
+ long button,
+ Time time)
+{
+ GdkDisplay *gdkdisplay;
+ GdkScreen *screen;
+
+ gdkdisplay = gdk_display_get_default ();
+ screen = gdk_display_get_default_screen (gdkdisplay);
+
+ if (action_menu)
+ {
+ if (action_menu_mapped)
+ {
+ gtk_widget_destroy (action_menu);
+ action_menu_mapped = FALSE;
+ action_menu = NULL;
+ return;
+ }
+ else
+ gtk_widget_destroy (action_menu);
+ }
+
+ switch (wnck_window_get_window_type (win)) {
+ case WNCK_WINDOW_DESKTOP:
+ case WNCK_WINDOW_DOCK:
+ /* don't allow window action */
+ return;
+ case WNCK_WINDOW_NORMAL:
+ case WNCK_WINDOW_DIALOG:
+
+#ifndef HAVE_LIBWNCK_2_19_4
+ case WNCK_WINDOW_MODAL_DIALOG:
+#endif
+
+ case WNCK_WINDOW_TOOLBAR:
+ case WNCK_WINDOW_MENU:
+ case WNCK_WINDOW_UTILITY:
+ case WNCK_WINDOW_SPLASHSCREEN:
+ /* allow window action menu */
+ break;
+ }
+
+ action_menu = wnck_create_window_action_menu (win);
+
+ gtk_menu_set_screen (GTK_MENU (action_menu), screen);
+
+ g_signal_connect_object (G_OBJECT (action_menu), "unmap",
+ G_CALLBACK (action_menu_unmap),
+ 0, 0);
+
+ gtk_widget_show (action_menu);
+
+ if (!button || button == 1)
+ {
+ gtk_menu_popup (GTK_MENU (action_menu),
+ NULL, NULL,
+ position_action_menu, (gpointer) win,
+ button,
+ time);
+ }
+ else
+ {
+ gtk_menu_popup (GTK_MENU (action_menu),
+ NULL, NULL,
+ NULL, NULL,
+ button,
+ time);
+ }
+
+ action_menu_mapped = TRUE;
+}
=== added file 'gtk/window-decorator/blurprops.c'
--- gtk/window-decorator/blurprops.c 1970-01-01 00:00:00 +0000
+++ gtk/window-decorator/blurprops.c 2011-08-14 15:11:23 +0000
@@ -0,0 +1,89 @@
+/*
+ * Copyright © 2006 Novell, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: David Reveman <davidr@xxxxxxxxxx>
+ */
+
+#include "gtk-window-decorator.h"
+
+void
+decor_update_blur_property (decor_t *d,
+ int width,
+ int height,
+ Region top_region,
+ int top_offset,
+ Region bottom_region,
+ int bottom_offset,
+ Region left_region,
+ int left_offset,
+ Region right_region,
+ int right_offset)
+{
+ Display *xdisplay = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+ long *data = NULL;
+ int size = 0;
+
+ if (settings->blur_type != BLUR_TYPE_ALL)
+ {
+ bottom_region = NULL;
+ left_region = NULL;
+ right_region = NULL;
+
+ if (settings->blur_type != BLUR_TYPE_TITLEBAR)
+ top_region = NULL;
+ }
+
+ if (top_region)
+ size += top_region->numRects;
+ if (bottom_region)
+ size += bottom_region->numRects;
+ if (left_region)
+ size += left_region->numRects;
+ if (right_region)
+ size += right_region->numRects;
+
+ if (size)
+ data = (long *) malloc (sizeof (long) * (2 + size * 6));
+
+ if (data)
+ {
+ decor_region_to_blur_property (data, 4, 0, width, height,
+ top_region, top_offset,
+ bottom_region, bottom_offset,
+ left_region, left_offset,
+ right_region, right_offset);
+
+ gdk_error_trap_push ();
+ XChangeProperty (xdisplay, d->prop_xid,
+ win_blur_decor_atom,
+ XA_INTEGER,
+ 32, PropModeReplace, (guchar *) data,
+ 2 + size * 6);
+ gdk_display_sync (gdk_display_get_default ());
+ gdk_error_trap_pop ();
+
+ free (data);
+ }
+ else
+ {
+ gdk_error_trap_push ();
+ XDeleteProperty (xdisplay, d->prop_xid, win_blur_decor_atom);
+ gdk_display_sync (gdk_display_get_default ());
+ gdk_error_trap_pop ();
+ }
+}
=== added file 'gtk/window-decorator/cairo.c'
--- gtk/window-decorator/cairo.c 1970-01-01 00:00:00 +0000
+++ gtk/window-decorator/cairo.c 2011-08-14 15:11:23 +0000
@@ -0,0 +1,912 @@
+/*
+ * Copyright © 2006 Novell, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: David Reveman <davidr@xxxxxxxxxx>
+ *
+ * 2D Mode: Copyright © 2010 Sam Spilsbury <smspillaz@xxxxxxxxx>
+ * Frames Management: Copright © 2011 Canonical Ltd.
+ * Authored By: Sam Spilsbury <sam.spilsbury@xxxxxxxxxxxxx>
+ */
+
+#include "gtk-window-decorator.h"
+
+void
+rounded_rectangle (cairo_t *cr,
+ double x,
+ double y,
+ double w,
+ double h,
+ double radius,
+ int corner)
+{
+ if (corner & CORNER_TOPLEFT)
+ cairo_move_to (cr, x + radius, y);
+ else
+ cairo_move_to (cr, x, y);
+
+ if (corner & CORNER_TOPRIGHT)
+ cairo_arc (cr, x + w - radius, y + radius, radius,
+ M_PI * 1.5, M_PI * 2.0);
+ else
+ cairo_line_to (cr, x + w, y);
+
+ if (corner & CORNER_BOTTOMRIGHT)
+ cairo_arc (cr, x + w - radius, y + h - radius, radius,
+ 0.0, M_PI * 0.5);
+ else
+ cairo_line_to (cr, x + w, y + h);
+
+ if (corner & CORNER_BOTTOMLEFT)
+ cairo_arc (cr, x + radius, y + h - radius, radius,
+ M_PI * 0.5, M_PI);
+ else
+ cairo_line_to (cr, x, y + h);
+
+ if (corner & CORNER_TOPLEFT)
+ cairo_arc (cr, x + radius, y + radius, radius, M_PI, M_PI * 1.5);
+ else
+ cairo_line_to (cr, x, y);
+}
+
+void
+fill_rounded_rectangle (cairo_t *cr,
+ double x,
+ double y,
+ double w,
+ double h,
+ double radius,
+ int corner,
+ decor_color_t *c0,
+ double alpha0,
+ decor_color_t *c1,
+ double alpha1,
+ int gravity)
+{
+ cairo_pattern_t *pattern;
+
+ rounded_rectangle (cr, x, y, w, h, radius, corner);
+
+ if (gravity & SHADE_RIGHT)
+ {
+ x = x + w;
+ w = -w;
+ }
+ else if (!(gravity & SHADE_LEFT))
+ {
+ x = w = 0;
+ }
+
+ if (gravity & SHADE_BOTTOM)
+ {
+ y = y + h;
+ h = -h;
+ }
+ else if (!(gravity & SHADE_TOP))
+ {
+ y = h = 0;
+ }
+
+ if (w && h)
+ {
+ cairo_matrix_t matrix;
+
+ pattern = cairo_pattern_create_radial (0.0, 0.0, 0.0, 0.0, 0.0, w);
+
+ cairo_matrix_init_scale (&matrix, 1.0, w / h);
+ cairo_matrix_translate (&matrix, -(x + w), -(y + h));
+
+ cairo_pattern_set_matrix (pattern, &matrix);
+ }
+ else
+ {
+ pattern = cairo_pattern_create_linear (x + w, y + h, x, y);
+ }
+
+ cairo_pattern_add_color_stop_rgba (pattern, 0.0, c0->r, c0->g, c0->b,
+ alpha0);
+
+ cairo_pattern_add_color_stop_rgba (pattern, 1.0, c1->r, c1->g, c1->b,
+ alpha1);
+
+ cairo_pattern_set_extend (pattern, CAIRO_EXTEND_PAD);
+
+ cairo_set_source (cr, pattern);
+ cairo_fill (cr);
+ cairo_pattern_destroy (pattern);
+}
+
+void
+draw_shadow_background (decor_t *d,
+ cairo_t *cr,
+ decor_shadow_t *s,
+ decor_context_t *c)
+{
+ Display *xdisplay = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+
+ if (!s || !s->picture ||!d->picture)
+ {
+ cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.0);
+ cairo_paint (cr);
+ }
+ else
+ {
+ decor_fill_picture_extents_with_shadow (xdisplay,
+ s, c,
+ d->picture,
+ &d->border_layout);
+ }
+}
+
+static void
+draw_close_button (decor_t *d,
+ cairo_t *cr,
+ double s)
+{
+ cairo_rel_move_to (cr, 0.0, s);
+
+ cairo_rel_line_to (cr, s, -s);
+ cairo_rel_line_to (cr, s, s);
+ cairo_rel_line_to (cr, s, -s);
+ cairo_rel_line_to (cr, s, s);
+
+ cairo_rel_line_to (cr, -s, s);
+ cairo_rel_line_to (cr, s, s);
+ cairo_rel_line_to (cr, -s, s);
+ cairo_rel_line_to (cr, -s, -s);
+
+ cairo_rel_line_to (cr, -s, s);
+ cairo_rel_line_to (cr, -s, -s);
+ cairo_rel_line_to (cr, s, -s);
+
+ cairo_close_path (cr);
+}
+
+static void
+draw_max_button (decor_t *d,
+ cairo_t *cr,
+ double s)
+{
+ cairo_rel_line_to (cr, 12.0, 0.0);
+ cairo_rel_line_to (cr, 0.0, 12.0);
+ cairo_rel_line_to (cr, -12.0, 0.0);
+
+ cairo_close_path (cr);
+
+ cairo_rel_move_to (cr, 2.0, s);
+
+ cairo_rel_line_to (cr, 12.0 - 4.0, 0.0);
+ cairo_rel_line_to (cr, 0.0, 12.0 - s - 2.0);
+ cairo_rel_line_to (cr, -(12.0 - 4.0), 0.0);
+
+ cairo_close_path (cr);
+}
+
+static void
+draw_unmax_button (decor_t *d,
+ cairo_t *cr,
+ double s)
+{
+ cairo_rel_move_to (cr, 1.0, 1.0);
+
+ cairo_rel_line_to (cr, 10.0, 0.0);
+ cairo_rel_line_to (cr, 0.0, 10.0);
+ cairo_rel_line_to (cr, -10.0, 0.0);
+
+ cairo_close_path (cr);
+
+ cairo_rel_move_to (cr, 2.0, s);
+
+ cairo_rel_line_to (cr, 10.0 - 4.0, 0.0);
+ cairo_rel_line_to (cr, 0.0, 10.0 - s - 2.0);
+ cairo_rel_line_to (cr, -(10.0 - 4.0), 0.0);
+
+ cairo_close_path (cr);
+}
+
+static void
+draw_min_button (decor_t *d,
+ cairo_t *cr,
+ double s)
+{
+ cairo_rel_move_to (cr, 0.0, 8.0);
+
+ cairo_rel_line_to (cr, 12.0, 0.0);
+ cairo_rel_line_to (cr, 0.0, s);
+ cairo_rel_line_to (cr, -12.0, 0.0);
+
+ cairo_close_path (cr);
+}
+
+typedef void (*draw_proc) (cairo_t *cr);
+
+static void
+button_state_offsets (gdouble x,
+ gdouble y,
+ guint state,
+ gdouble *return_x,
+ gdouble *return_y)
+{
+ static double off[] = { 0.0, 0.0, 0.0, 0.5 };
+
+ *return_x = x + off[state];
+ *return_y = y + off[state];
+}
+
+static void
+button_state_paint (cairo_t *cr,
+ GtkStyle *style,
+ decor_color_t *color,
+ guint state)
+{
+
+#define IN_STATE (PRESSED_EVENT_WINDOW | IN_EVENT_WINDOW)
+
+ if ((state & IN_STATE) == IN_STATE)
+ {
+ if (state & IN_EVENT_WINDOW)
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ else
+ cairo_set_source_rgba (cr, color->r, color->g, color->b, 0.95);
+
+ cairo_fill_preserve (cr);
+
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ STROKE_ALPHA);
+
+ cairo_set_line_width (cr, 1.0);
+ cairo_stroke (cr);
+ cairo_set_line_width (cr, 2.0);
+ }
+ else
+ {
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ STROKE_ALPHA);
+ cairo_stroke_preserve (cr);
+
+ if (state & IN_EVENT_WINDOW)
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ else
+ cairo_set_source_rgba (cr, color->r, color->g, color->b, 0.95);
+
+ cairo_fill (cr);
+ }
+}
+
+void
+draw_window_decoration (decor_t *d)
+{
+ cairo_t *cr;
+ GtkStyle *style;
+ GdkDrawable *drawable;
+ decor_color_t color;
+ double alpha;
+ double x1, y1, x2, y2, x, y, h;
+ int corners = SHADE_LEFT | SHADE_RIGHT | SHADE_TOP | SHADE_BOTTOM;
+ int top;
+ int button_x;
+
+ if (!d->pixmap)
+ return;
+
+
+ style = gtk_widget_get_style (d->frame->style_window_rgba);
+
+ if (d->state & (WNCK_WINDOW_STATE_MAXIMIZED_HORIZONTALLY |
+ WNCK_WINDOW_STATE_MAXIMIZED_VERTICALLY))
+ corners = 0;
+
+ color.r = style->bg[GTK_STATE_NORMAL].red / 65535.0;
+ color.g = style->bg[GTK_STATE_NORMAL].green / 65535.0;
+ color.b = style->bg[GTK_STATE_NORMAL].blue / 65535.0;
+
+ if (d->frame_window)
+ {
+ GdkColormap *cmap;
+
+ cmap = get_colormap_for_drawable (GDK_DRAWABLE (d->pixmap));
+ gdk_drawable_set_colormap (GDK_DRAWABLE (d->pixmap), cmap);
+ gdk_drawable_set_colormap (GDK_DRAWABLE (d->buffer_pixmap), cmap);
+ drawable = GDK_DRAWABLE (d->buffer_pixmap);
+ }
+ else if (d->buffer_pixmap)
+ drawable = GDK_DRAWABLE (d->buffer_pixmap);
+ else
+ drawable = GDK_DRAWABLE (d->pixmap);
+
+ cr = gdk_cairo_create (GDK_DRAWABLE (drawable));
+ if (!cr)
+ return;
+
+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+
+ top = d->frame->win_extents.top + d->frame->titlebar_height;
+
+ x1 = d->context->left_space - d->frame->win_extents.left;
+ y1 = d->context->top_space - d->frame->win_extents.top - d->frame->titlebar_height;
+ x2 = d->width - d->context->right_space + d->frame->win_extents.right;
+ y2 = d->height - d->context->bottom_space + d->frame->win_extents.bottom;
+
+ h = d->height - d->context->top_space - d->context->bottom_space;
+
+ cairo_set_line_width (cr, 1.0);
+
+ if (!d->frame_window)
+ draw_shadow_background (d, cr, d->shadow, d->context);
+
+ if (d->active)
+ {
+ decor_color_t *title_color = _title_color;
+
+ alpha = settings->decoration_alpha + 0.3;
+
+ fill_rounded_rectangle (cr,
+ x1 + 0.5,
+ y1 + 0.5,
+ d->frame->win_extents.left - 0.5,
+ top - 0.5,
+ 5.0, CORNER_TOPLEFT & corners,
+ &title_color[0], 1.0, &title_color[1], alpha,
+ SHADE_TOP | SHADE_LEFT);
+
+ fill_rounded_rectangle (cr,
+ x1 + d->frame->win_extents.left,
+ y1 + 0.5,
+ x2 - x1 - d->frame->win_extents.left -
+ d->frame->win_extents.right,
+ top - 0.5,
+ 5.0, 0,
+ &title_color[0], 1.0, &title_color[1], alpha,
+ SHADE_TOP);
+
+ fill_rounded_rectangle (cr,
+ x2 - d->frame->win_extents.right,
+ y1 + 0.5,
+ d->frame->win_extents.right - 0.5,
+ top - 0.5,
+ 5.0, CORNER_TOPRIGHT & corners,
+ &title_color[0], 1.0, &title_color[1], alpha,
+ SHADE_TOP | SHADE_RIGHT);
+ }
+ else
+ {
+ alpha = settings->decoration_alpha;
+
+ fill_rounded_rectangle (cr,
+ x1 + 0.5,
+ y1 + 0.5,
+ d->frame->win_extents.left - 0.5,
+ top - 0.5,
+ 5.0, CORNER_TOPLEFT & corners,
+ &color, 1.0, &color, alpha,
+ SHADE_TOP | SHADE_LEFT);
+
+ fill_rounded_rectangle (cr,
+ x1 + d->frame->win_extents.left,
+ y1 + 0.5,
+ x2 - x1 - d->frame->win_extents.left -
+ d->frame->win_extents.right,
+ top - 0.5,
+ 5.0, 0,
+ &color, 1.0, &color, alpha,
+ SHADE_TOP);
+
+ fill_rounded_rectangle (cr,
+ x2 - d->frame->win_extents.right,
+ y1 + 0.5,
+ d->frame->win_extents.right - 0.5,
+ top - 0.5,
+ 5.0, CORNER_TOPRIGHT & corners,
+ &color, 1.0, &color, alpha,
+ SHADE_TOP | SHADE_RIGHT);
+ }
+
+ fill_rounded_rectangle (cr,
+ x1 + 0.5,
+ y1 + top,
+ d->frame->win_extents.left - 0.5,
+ h,
+ 5.0, 0,
+ &color, 1.0, &color, alpha,
+ SHADE_LEFT);
+
+ fill_rounded_rectangle (cr,
+ x2 - d->frame->win_extents.right,
+ y1 + top,
+ d->frame->win_extents.right - 0.5,
+ h,
+ 5.0, 0,
+ &color, 1.0, &color, alpha,
+ SHADE_RIGHT);
+
+
+ fill_rounded_rectangle (cr,
+ x1 + 0.5,
+ y2 - d->frame->win_extents.bottom,
+ d->frame->win_extents.left - 0.5,
+ d->frame->win_extents.bottom - 0.5,
+ 5.0, CORNER_BOTTOMLEFT & corners,
+ &color, 1.0, &color, alpha,
+ SHADE_BOTTOM | SHADE_LEFT);
+
+ fill_rounded_rectangle (cr,
+ x1 + d->frame->win_extents.left,
+ y2 - d->frame->win_extents.bottom,
+ x2 - x1 - d->frame->win_extents.left -
+ d->frame->win_extents.right,
+ d->frame->win_extents.bottom - 0.5,
+ 5.0, 0,
+ &color, 1.0, &color, alpha,
+ SHADE_BOTTOM);
+
+ fill_rounded_rectangle (cr,
+ x2 - d->frame->win_extents.right,
+ y2 - d->frame->win_extents.bottom,
+ d->frame->win_extents.right - 0.5,
+ d->frame->win_extents.bottom - 0.5,
+ 5.0, CORNER_BOTTOMRIGHT & corners,
+ &color, 1.0, &color, alpha,
+ SHADE_BOTTOM | SHADE_RIGHT);
+
+ cairo_rectangle (cr,
+ d->context->left_space,
+ d->context->top_space,
+ d->width - d->context->left_space -
+ d->context->right_space,
+ h);
+ gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_NORMAL]);
+ cairo_fill (cr);
+
+ cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
+
+ if (d->active)
+ {
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ 0.7);
+
+ cairo_move_to (cr, x1 + 0.5, y1 + top - 0.5);
+ cairo_rel_line_to (cr, x2 - x1 - 1.0, 0.0);
+
+ cairo_stroke (cr);
+ }
+
+ rounded_rectangle (cr,
+ x1 + 0.5, y1 + 0.5,
+ x2 - x1 - 1.0, y2 - y1 - 1.0,
+ 5.0,
+ (CORNER_TOPLEFT | CORNER_TOPRIGHT | CORNER_BOTTOMLEFT |
+ CORNER_BOTTOMRIGHT) & corners);
+
+ cairo_clip (cr);
+
+ cairo_translate (cr, 1.0, 1.0);
+
+ rounded_rectangle (cr,
+ x1 + 0.5, y1 + 0.5,
+ x2 - x1 - 1.0, y2 - y1 - 1.0,
+ 5.0,
+ (CORNER_TOPLEFT | CORNER_TOPRIGHT | CORNER_BOTTOMLEFT |
+ CORNER_BOTTOMRIGHT) & corners);
+
+ cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.4);
+
+ cairo_stroke (cr);
+
+ cairo_translate (cr, -2.0, -2.0);
+
+ rounded_rectangle (cr,
+ x1 + 0.5, y1 + 0.5,
+ x2 - x1 - 1.0, y2 - y1 - 1.0,
+ 5.0,
+ (CORNER_TOPLEFT | CORNER_TOPRIGHT | CORNER_BOTTOMLEFT |
+ CORNER_BOTTOMRIGHT) & corners);
+
+ cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.1);
+
+ cairo_stroke (cr);
+
+ cairo_translate (cr, 1.0, 1.0);
+
+ cairo_reset_clip (cr);
+
+ rounded_rectangle (cr,
+ x1 + 0.5, y1 + 0.5,
+ x2 - x1 - 1.0, y2 - y1 - 1.0,
+ 5.0,
+ (CORNER_TOPLEFT | CORNER_TOPRIGHT | CORNER_BOTTOMLEFT |
+ CORNER_BOTTOMRIGHT) & corners);
+
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ alpha);
+
+ cairo_stroke (cr);
+
+ cairo_set_line_width (cr, 2.0);
+
+ button_x = d->width - d->context->right_space - 13;
+
+ if (d->actions & WNCK_WINDOW_ACTION_CLOSE)
+ {
+ button_state_offsets (button_x,
+ y1 - 3.0 + d->frame->titlebar_height / 2,
+ d->button_states[BUTTON_CLOSE], &x, &y);
+
+ button_x -= 17;
+
+ if (d->active)
+ {
+ cairo_move_to (cr, x, y);
+ draw_close_button (d, cr, 3.0);
+ button_state_paint (cr, style, &color,
+ d->button_states[BUTTON_CLOSE]);
+ }
+ else
+ {
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ alpha * 0.75);
+
+ cairo_move_to (cr, x, y);
+ draw_close_button (d, cr, 3.0);
+ cairo_fill (cr);
+ }
+ }
+
+ if (d->actions & WNCK_WINDOW_ACTION_MAXIMIZE)
+ {
+ button_state_offsets (button_x,
+ y1 - 3.0 + d->frame->titlebar_height / 2,
+ d->button_states[BUTTON_MAX], &x, &y);
+
+ button_x -= 17;
+
+ cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
+
+ if (d->active)
+ {
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ STROKE_ALPHA);
+
+ cairo_move_to (cr, x, y);
+
+ if (d->state & (WNCK_WINDOW_STATE_MAXIMIZED_HORIZONTALLY |
+ WNCK_WINDOW_STATE_MAXIMIZED_VERTICALLY))
+ draw_unmax_button (d, cr, 4.0);
+ else
+ draw_max_button (d, cr, 4.0);
+
+ button_state_paint (cr, style, &color,
+ d->button_states[BUTTON_MAX]);
+ }
+ else
+ {
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ alpha * 0.75);
+
+ cairo_move_to (cr, x, y);
+
+ if (d->state & (WNCK_WINDOW_STATE_MAXIMIZED_HORIZONTALLY |
+ WNCK_WINDOW_STATE_MAXIMIZED_VERTICALLY))
+ draw_unmax_button (d, cr, 4.0);
+ else
+ draw_max_button (d, cr, 4.0);
+
+ cairo_fill (cr);
+ }
+ }
+
+ if (d->actions & WNCK_WINDOW_ACTION_MINIMIZE)
+ {
+ button_state_offsets (button_x,
+ y1 - 3.0 + d->frame->titlebar_height / 2,
+ d->button_states[BUTTON_MIN], &x, &y);
+
+ button_x -= 17;
+
+ if (d->active)
+ {
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ STROKE_ALPHA);
+
+
+ cairo_move_to (cr, x, y);
+ draw_min_button (d, cr, 4.0);
+ button_state_paint (cr, style, &color,
+ d->button_states[BUTTON_MIN]);
+ }
+ else
+ {
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ alpha * 0.75);
+
+ cairo_move_to (cr, x, y);
+ draw_min_button (d, cr, 4.0);
+ cairo_fill (cr);
+ }
+ }
+
+ if (d->layout)
+ {
+ if (d->active)
+ {
+ cairo_move_to (cr,
+ d->context->left_space + 21.0,
+ y1 + 2.0 + (d->frame->titlebar_height - d->frame->text_height) / 2.0);
+
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ STROKE_ALPHA);
+
+ pango_cairo_layout_path (cr, d->layout);
+ cairo_stroke (cr);
+
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ }
+ else
+ {
+ gdk_cairo_set_source_color_alpha (cr,
+ &style->fg[GTK_STATE_NORMAL],
+ alpha);
+ }
+
+ cairo_move_to (cr,
+ d->context->left_space + 21.0,
+ y1 + 2.0 + (d->frame->titlebar_height - d->frame->text_height) / 2.0);
+
+ pango_cairo_show_layout (cr, d->layout);
+ }
+
+ if (d->icon)
+ {
+ cairo_translate (cr, d->context->left_space + 1,
+ y1 - 5.0 + d->frame->titlebar_height / 2);
+ cairo_set_source (cr, d->icon);
+ cairo_rectangle (cr, 0.0, 0.0, 16.0, 16.0);
+ cairo_clip (cr);
+
+ if (d->active)
+ cairo_paint (cr);
+ else
+ cairo_paint_with_alpha (cr, alpha);
+ }
+
+ cairo_destroy (cr);
+
+ copy_to_front_buffer (d);
+
+ if (d->frame_window)
+ {
+ GdkWindow *gdk_frame_window = gtk_widget_get_window (d->decor_window);
+
+ gtk_image_set_from_pixmap (GTK_IMAGE (d->decor_image), d->pixmap, NULL);
+ gtk_window_resize (GTK_WINDOW (d->decor_window), d->width, d->height);
+ gdk_window_move (gdk_frame_window, 0, 0);
+ gdk_window_lower (gdk_frame_window);
+ }
+
+ if (d->prop_xid)
+ {
+ decor_update_window_property (d);
+ d->prop_xid = 0;
+ }
+}
+
+static void
+calc_button_size (decor_t *d)
+{
+ gint button_width;
+
+ button_width = 0;
+
+ if (d->actions & WNCK_WINDOW_ACTION_CLOSE)
+ button_width += 17;
+
+ if (d->actions & (WNCK_WINDOW_ACTION_MAXIMIZE_HORIZONTALLY |
+ WNCK_WINDOW_ACTION_MAXIMIZE_VERTICALLY |
+ WNCK_WINDOW_ACTION_UNMAXIMIZE_HORIZONTALLY |
+ WNCK_WINDOW_ACTION_UNMAXIMIZE_VERTICALLY))
+ button_width += 17;
+
+ if (d->actions & (WNCK_WINDOW_ACTION_MINIMIZE |
+ WNCK_WINDOW_ACTION_MINIMIZE))
+ button_width += 17;
+
+ if (button_width)
+ button_width++;
+
+ d->button_width = button_width;
+}
+
+gboolean
+calc_decoration_size (decor_t *d,
+ gint w,
+ gint h,
+ gint name_width,
+ gint *width,
+ gint *height)
+{
+ decor_layout_t layout;
+ int top_width;
+
+ /* To avoid wasting texture memory, we only calculate the minimal
+ * required decoration size then clip and stretch the texture where
+ * appropriate
+ */
+
+ if (!d->frame_window)
+ {
+ calc_button_size (d);
+
+ if (w < ICON_SPACE + d->button_width)
+ return FALSE;
+
+ top_width = name_width + d->button_width + ICON_SPACE;
+ if (w < top_width)
+ top_width = MAX (ICON_SPACE + d->button_width, w);
+
+ decor_get_default_layout (&d->frame->window_context, top_width, 1, &layout);
+
+ if (!d->context || memcmp (&layout, &d->border_layout, sizeof (layout)))
+ {
+ *width = layout.width;
+ *height = layout.height;
+
+ d->border_layout = layout;
+ d->context = &d->frame->window_context;
+ d->shadow = d->frame->border_shadow;
+
+ return TRUE;
+ }
+ }
+ else
+ {
+ calc_button_size (d);
+
+ /* _default_win_extents + top height */
+
+ top_width = name_width + d->button_width + ICON_SPACE;
+ if (w < top_width)
+ top_width = MAX (ICON_SPACE + d->button_width, w);
+
+ decor_get_default_layout (&d->frame->window_context_no_shadow,
+ d->client_width, d->client_height, &layout);
+
+ *width = layout.width;
+ *height = layout.height;
+
+ d->border_layout = layout;
+ d->context = &d->frame->window_context_no_shadow;
+ d->shadow = d->frame->border_no_shadow;
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+gboolean
+get_button_position (decor_t *d,
+ gint i,
+ gint width,
+ gint height,
+ gint *x,
+ gint *y,
+ gint *w,
+ gint *h)
+{
+ if (i > BUTTON_MENU)
+ return FALSE;
+
+ if (d->frame_window)
+ {
+ *x = bpos[i].x + bpos[i].xw * width + d->frame->win_extents.left + 4;
+ *y = bpos[i].y + bpos[i].yh * height + bpos[i].yth *
+ (d->frame->titlebar_height - 17) + d->frame->win_extents.top + 2;
+ }
+ else
+ {
+ *x = bpos[i].x + bpos[i].xw * width;
+ *y = bpos[i].y + bpos[i].yh * height + bpos[i].yth *
+ (d->frame->titlebar_height - 17);
+ }
+
+ *w = bpos[i].w + bpos[i].ww * width;
+ *h = bpos[i].h + bpos[i].hh * height + bpos[i].hth +
+ (d->frame->titlebar_height - 17);
+
+ /* hack to position multiple buttons on the right */
+ if (i != BUTTON_MENU)
+ *x -= 10 + 16 * i;
+
+ return TRUE;
+}
+
+void
+get_event_window_position (decor_t *d,
+ gint i,
+ gint j,
+ gint width,
+ gint height,
+ gint *x,
+ gint *y,
+ gint *w,
+ gint *h)
+{
+ if (d->frame_window)
+ {
+ *x = pos[i][j].x + pos[i][j].xw * width + d->frame->win_extents.left;
+ *y = pos[i][j].y + d->frame->win_extents.top +
+ pos[i][j].yh * height + pos[i][j].yth * (d->frame->titlebar_height - 17);
+
+ if (i == 0 && (j == 0 || j == 2))
+ *y -= d->frame->titlebar_height;
+ }
+ else
+ {
+ *x = pos[i][j].x + pos[i][j].xw * width;
+ *y = pos[i][j].y +
+ pos[i][j].yh * height + pos[i][j].yth * (d->frame->titlebar_height - 17);
+ }
+
+ if ((d->state & WNCK_WINDOW_STATE_MAXIMIZED_HORIZONTALLY) &&
+ (j == 0 || j == 2))
+ {
+ *w = 0;
+ }
+ else
+ {
+ *w = pos[i][j].w + pos[i][j].ww * width;
+ }
+
+ if ((d->state & WNCK_WINDOW_STATE_MAXIMIZED_VERTICALLY) &&
+ (i == 0 || i == 2))
+ {
+ *h = 0;
+ }
+ else
+ {
+ *h = pos[i][j].h +
+ pos[i][j].hh * height + pos[i][j].hth * (d->frame->titlebar_height - 17);
+ }
+}
+
+gfloat
+get_title_scale (decor_frame_t *frame)
+{
+ return 1.0f;
+}
+
+void
+update_border_extents (decor_frame_t *frame)
+{
+ frame = gwd_decor_frame_ref (frame);
+
+ frame->win_extents = frame->win_extents;
+ frame->max_win_extents = frame->win_extents;
+ frame->titlebar_height = frame->max_titlebar_height =
+ (frame->text_height < 17) ? 17 : frame->text_height;
+
+ gwd_decor_frame_unref (frame);
+}
=== added file 'gtk/window-decorator/decorator.c'
--- gtk/window-decorator/decorator.c 1970-01-01 00:00:00 +0000
+++ gtk/window-decorator/decorator.c 2011-08-14 15:11:23 +0000
@@ -0,0 +1,1436 @@
+/*
+ * Copyright © 2006 Novell, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: David Reveman <davidr@xxxxxxxxxx>
+ *
+ * 2D Mode: Copyright © 2010 Sam Spilsbury <smspillaz@xxxxxxxxx>
+ * Frames Management: Copright © 2011 Canonical Ltd.
+ * Authored By: Sam Spilsbury <sam.spilsbury@xxxxxxxxxxxxx>
+ */
+
+#include "gtk-window-decorator.h"
+
+decor_frame_t *
+create_normal_frame (const gchar *type)
+{
+ decor_frame_t *frame = decor_frame_new (type);
+
+ decor_context_t _window_context = {
+ { 0, 0, 0, 0 },
+ 6, 6, 4, 6,
+ 0, 0, 0, 0
+ };
+
+ decor_context_t _max_window_context = {
+ { 0, 0, 0, 0 },
+ 6, 6, 4, 6,
+ 0, 0, 0, 0
+ };
+
+ decor_context_t _window_context_no_shadow = {
+ { 0, 0, 0, 0 },
+ 6, 6, 4, 6,
+ 0, 0, 0, 0
+ };
+
+ decor_context_t _max_window_context_no_shadow = {
+ { 0, 0, 0, 0 },
+ 6, 6, 4, 6,
+ 0, 0, 0, 0
+ };
+
+ decor_extents_t _win_extents = { 6, 6, 6, 6 };
+ decor_extents_t _max_win_extents = { 6, 6, 4, 6 };
+
+ frame->win_extents = _win_extents;
+ frame->max_win_extents = _max_win_extents;
+ frame->update_shadow = decor_frame_update_shadow;
+ frame->window_context = _window_context;
+ frame->window_context_no_shadow = _window_context_no_shadow;
+ frame->max_window_context = _max_window_context;
+ frame->max_window_context_no_shadow = _max_window_context_no_shadow;
+
+ return frame;
+}
+
+void
+destroy_normal_frame (decor_frame_t *frame)
+{
+ decor_frame_destroy (frame);
+}
+
+decor_frame_t *
+create_bare_frame (const gchar *type)
+{
+ decor_frame_t *frame = decor_frame_new (type);
+ decor_context_t _shadow_context = {
+ { 0, 0, 0, 0 },
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ };
+
+ decor_extents_t _shadow_extents = { 0, 0, 0, 0 };
+
+ frame->win_extents = _shadow_extents;
+ frame->max_win_extents = _shadow_extents;
+ frame->win_extents = _shadow_extents;
+ frame->window_context = _shadow_context;
+ frame->window_context_no_shadow = _shadow_context;
+ frame->max_window_context = _shadow_context;
+ frame->max_window_context_no_shadow = _shadow_context;
+ frame->update_shadow = bare_frame_update_shadow;
+
+ return frame;
+}
+
+void
+destroy_bare_frame (decor_frame_t *frame)
+{
+ decor_frame_destroy (frame);
+}
+
+
+/*
+ * get_titlebar_font
+ *
+ * Returns: PangoFontDescription * or NULL if using system font
+ * Description: Helper function to get the font for the titlebar
+ */
+static const PangoFontDescription *
+get_titlebar_font (decor_frame_t *frame)
+{
+ if (settings->use_system_font)
+ return NULL;
+ else
+ return frame->titlebar_font;
+}
+
+/*
+ * frame_update_titlebar_font
+ *
+ * Returns: void
+ * Description: updates the titlebar font from the pango context, should
+ * be called whenever the gtk style or font has changed
+ */
+void
+frame_update_titlebar_font (decor_frame_t *frame)
+{
+ const PangoFontDescription *font_desc;
+ PangoFontMetrics *metrics;
+ PangoLanguage *lang;
+
+ frame = gwd_decor_frame_ref (frame);
+
+ font_desc = get_titlebar_font (frame);
+ if (!font_desc)
+ {
+ GtkStyle *default_style;
+
+ default_style = gtk_widget_get_default_style ();
+ font_desc = default_style->font_desc;
+ }
+
+ pango_context_set_font_description (frame->pango_context, font_desc);
+
+ lang = pango_context_get_language (frame->pango_context);
+ metrics = pango_context_get_metrics (frame->pango_context, font_desc, lang);
+
+ frame->text_height = PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) +
+ pango_font_metrics_get_descent (metrics));
+
+ gwd_decor_frame_unref (frame);
+
+ pango_font_metrics_unref (metrics);
+}
+
+void
+update_frames_titlebar_fonts (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ frame_update_titlebar_font ((decor_frame_t *) value);
+}
+
+void
+update_titlebar_font ()
+{
+ gwd_frames_foreach (update_frames_titlebar_fonts, NULL);
+}
+
+
+/*
+ * update_event_windows
+ *
+ * Returns: void
+ * Description: creates small "event windows" for the buttons specified to be
+ * on the titlebar by wnck. Note here that for the pixmap mode we create actual
+ * X windows but in the reparenting mode this is not possible so we create event
+ * capture boxes on the window instead. The geometry of the decoration is retrieved
+ * with window_get_client_window_geometry and adjusted for shade. Also we
+ * need to query the theme for what window positions are appropriate here.
+ *
+ * This function works on the buttons and also the small event regions that we need
+ * in order to toggle certain actions on the window decoration (eg resize, move)
+ *
+ * So your window decoration might look something like this (not to scale):
+ *
+ * -----------------------------------------------------------
+ * | rtl | rt | rtr |
+ * | --- |---------------------------------------------| --- |
+ * | | [i][s][m] mv [_][M][X] | |
+ * | |---------------------------------------------| |
+ * | | | |
+ * | rl | window contents | rr |
+ * | | | |
+ * | | | |
+ * | --- |---------------------------------------------| --- |
+ * | rbl | rb | rbr |
+ * -----------------------------------------------------------
+ *
+ * Where:
+ * - rtl = resize top left
+ * - rtr = resize top right
+ * - rbl = resize bottom left
+ * - rbr = resize bottom right
+ * - rt = resize top
+ * - rb = resize bottom
+ * - rl = resize left
+ * - rr = resize right
+ * - mv = "grab move" area (eg titlebar)
+ * - i = icon
+ * - s = shade
+ * - m = menu
+ * - _ = minimize
+ * - M = maximize
+ * - X = close
+ *
+ * For the reparenting mode we use button_windows[i].pos and for the pixmap mode
+ * we use buttons_windows[i].window
+ *
+ */
+void
+update_event_windows (WnckWindow *win)
+{
+ Display *xdisplay;
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+ gint x0, y0, width, height, x, y, w, h;
+ gint i, j, k, l;
+ gint actions = d->actions;
+
+ xdisplay = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+
+ /* Get the geometry of the client */
+ wnck_window_get_client_window_geometry (win, &x0, &y0, &width, &height);
+
+ /* Shaded windows have no height - also skip some event windows */
+ if (d->state & WNCK_WINDOW_STATE_SHADED)
+ {
+ height = 0;
+ k = l = 1;
+ }
+ else
+ {
+ k = 0;
+ l = 2;
+ }
+
+ gdk_error_trap_push ();
+
+ /* [rtl, ru, rtr], [rl, mv, rr], [rbl, rb, rbr] */
+ for (i = 0; i < 3; i++)
+ {
+ static guint event_window_actions[3][3] = {
+ {
+ WNCK_WINDOW_ACTION_RESIZE,
+ WNCK_WINDOW_ACTION_RESIZE,
+ WNCK_WINDOW_ACTION_RESIZE
+ }, {
+ WNCK_WINDOW_ACTION_RESIZE,
+ WNCK_WINDOW_ACTION_MOVE,
+ WNCK_WINDOW_ACTION_RESIZE
+ }, {
+ WNCK_WINDOW_ACTION_RESIZE,
+ WNCK_WINDOW_ACTION_RESIZE,
+ WNCK_WINDOW_ACTION_RESIZE
+ }
+ };
+
+ for (j = 0; j < 3; j++)
+ {
+ w = 0;
+ h = 0;
+
+ if (actions & event_window_actions[i][j] && i >= k && i <= l)
+ (*theme_get_event_window_position) (d, i, j, width, height,
+ &x, &y, &w, &h);
+
+ /* Reparenting mode - create boxes which we monitor motionnotify on */
+ if (d->frame_window)
+ {
+ BoxPtr box = &d->event_windows[i][j].pos;
+ box->x1 = x;
+ box->x2 = x + w;
+ box->y1 = y;
+ box->y2 = y + h;
+ }
+ /* Pixmap mode with window geometry - create small event windows */
+ else if (!d->frame_window && w != 0 && h != 0)
+ {
+ XMapWindow (xdisplay, d->event_windows[i][j].window);
+ XMoveResizeWindow (xdisplay, d->event_windows[i][j].window,
+ x, y, w, h);
+ }
+ /* No parent and no geometry - unmap all event windows */
+ else if (!d->frame_window)
+ {
+ XUnmapWindow (xdisplay, d->event_windows[i][j].window);
+ }
+ }
+ }
+
+ /* no button event windows if width is less than minimum width */
+ if (width < ICON_SPACE + d->button_width)
+ actions = 0;
+
+ /* Above, stick, unshade and unstick are only available in wnck => 2.18.1 */
+ for (i = 0; i < BUTTON_NUM; i++)
+ {
+ static guint button_actions[BUTTON_NUM] = {
+ WNCK_WINDOW_ACTION_CLOSE,
+ WNCK_WINDOW_ACTION_MAXIMIZE,
+ WNCK_WINDOW_ACTION_MINIMIZE,
+ 0,
+ WNCK_WINDOW_ACTION_SHADE,
+
+#ifdef HAVE_LIBWNCK_2_18_1
+ WNCK_WINDOW_ACTION_ABOVE,
+ WNCK_WINDOW_ACTION_STICK,
+ WNCK_WINDOW_ACTION_UNSHADE,
+ WNCK_WINDOW_ACTION_ABOVE,
+ WNCK_WINDOW_ACTION_UNSTICK
+#else
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+#endif
+
+ };
+
+ /* Reparenting mode - if a box was set and we no longer need it reset its geometry */
+ if (d->frame_window &&
+ button_actions[i] && !(actions & button_actions[i]))
+ {
+ memset (&d->button_windows[i].pos, 0, sizeof (Box));
+ }
+ /* Pixmap mode - if a box was set and we no longer need it unmap its window */
+ else if (!d->frame_window &&
+ button_actions[i] && !(actions & button_actions[i]))
+ {
+ XUnmapWindow (xdisplay, d->button_windows[i].window);
+ continue;
+ }
+
+ /* Reparenting mode - if there is a button position for this
+ * button then set the geometry */
+ if (d->frame_window &&
+ (*theme_get_button_position) (d, i, width, height, &x, &y, &w, &h))
+ {
+ BoxPtr box = &d->button_windows[i].pos;
+ box->x1 = x;
+ box->y1 = y;
+ box->x2 = x + w;
+ box->y2 = y + h;
+ }
+ /* Pixmap mode - if there is a button position for this button then map the window
+ * and resize it to this position */
+ else if (!d->frame_window &&
+ (*theme_get_button_position) (d, i, width, height,
+ &x, &y, &w, &h))
+ {
+ Window win = d->button_windows[i].window;
+ XMapWindow (xdisplay, win);
+ XMoveResizeWindow (xdisplay, win, x, y, w, h);
+ }
+ else if (!d->frame_window)
+ {
+ XUnmapWindow (xdisplay, d->button_windows[i].window);
+ }
+ }
+
+ gdk_display_sync (gdk_display_get_default ());
+ gdk_error_trap_pop ();
+}
+
+/*
+ * wnck_window_get_real_name
+ *
+ * Returns: const char * or NULL
+ * Description: Wrapper function to either get the name of the window or
+ * return NULL
+ */
+
+#ifdef HAVE_WNCK_WINDOW_HAS_NAME
+static const char *
+wnck_window_get_real_name (WnckWindow *win)
+{
+ return wnck_window_has_name (win) ? wnck_window_get_name (win) : NULL;
+}
+#define wnck_window_get_name wnck_window_get_real_name
+#endif
+
+/*
+ * max_window_name_width
+ *
+ * Returns: gint
+ * Description: Calculate the width of the decoration required to display
+ * the window name using pango (with 6px padding)
+ * Returns zero if window has no name.
+ */
+gint
+max_window_name_width (WnckWindow *win)
+{
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+ const gchar *name;
+ gint w;
+
+ /* Ensure that a layout is created */
+ if (!d->layout)
+ {
+ d->layout = pango_layout_new (d->frame->pango_context);
+ if (!d->layout)
+ return 0;
+
+ pango_layout_set_wrap (d->layout, PANGO_WRAP_CHAR);
+ }
+
+ /* Return zero if window has no name */
+ name = wnck_window_get_name (win);
+ if (!name)
+ return 0;
+
+ /* Reset the width, set hte text and get the size required */
+ pango_layout_set_auto_dir (d->layout, FALSE);
+ pango_layout_set_width (d->layout, -1);
+ pango_layout_set_text (d->layout, name, strlen (name));
+ pango_layout_get_pixel_size (d->layout, &w, NULL);
+
+ if (d->name)
+ pango_layout_set_text (d->layout, d->name, strlen (d->name));
+
+ return w + 6;
+}
+
+/*
+ * update_window_decoration_name
+ *
+ * Returns: void
+ * Description: frees the last window name and gets the new one from
+ * wnck. Also checks to see if the name has a length (slight optimization)
+ * and re-creates the pango context to re-render the name
+ */
+void
+update_window_decoration_name (WnckWindow *win)
+{
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+ const gchar *name;
+ glong name_length;
+ PangoLayoutLine *line;
+
+ if (d->name)
+ {
+ g_free (d->name);
+ d->name = NULL;
+ }
+
+ /* Only operate if the window name has a length */
+ name = wnck_window_get_name (win);
+ if (name && (name_length = strlen (name)))
+ {
+ gint w;
+
+ /* Cairo mode: w = SHRT_MAX */
+ if (theme_draw_window_decoration != draw_window_decoration)
+ {
+ w = SHRT_MAX;
+ }
+ /* Need to get a minimum width for the name */
+ else
+ {
+ gint width;
+
+ wnck_window_get_client_window_geometry (win, NULL, NULL,
+ &width, NULL);
+
+ w = width - ICON_SPACE - 2 - d->button_width;
+ if (w < 1)
+ w = 1;
+ }
+
+ /* Set the maximum width for the layout (in case
+ * decoration size < text width) since we
+ * still need to show the buttons and the window name */
+ pango_layout_set_auto_dir (d->layout, FALSE);
+ pango_layout_set_width (d->layout, w * PANGO_SCALE);
+ pango_layout_set_text (d->layout, name, name_length);
+
+ line = pango_layout_get_line (d->layout, 0);
+
+ name_length = line->length;
+ if (pango_layout_get_line_count (d->layout) > 1)
+ {
+ if (name_length < 4)
+ {
+ pango_layout_set_text (d->layout, NULL, 0);
+ return;
+ }
+
+ d->name = g_strndup (name, name_length);
+ strcpy (d->name + name_length - 3, "...");
+ }
+ else
+ d->name = g_strndup (name, name_length);
+
+ /* Truncate the text */
+ pango_layout_set_text (d->layout, d->name, name_length);
+ }
+}
+
+/*
+ * update_window_decoration_icon
+ *
+ * Updates the window icon (destroys the existing cairo pattern
+ * and creates a new one for the pixmap)
+ */
+void
+update_window_decoration_icon (WnckWindow *win)
+{
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+
+ /* Destroy old stuff */
+ if (d->icon)
+ {
+ cairo_pattern_destroy (d->icon);
+ d->icon = NULL;
+ }
+
+ if (d->icon_pixmap)
+ {
+ g_object_unref (G_OBJECT (d->icon_pixmap));
+ d->icon_pixmap = NULL;
+ }
+
+ if (d->icon_pixbuf)
+ g_object_unref (G_OBJECT (d->icon_pixbuf));
+
+ /* Get the mini icon pixbuf from libwnck */
+ d->icon_pixbuf = wnck_window_get_mini_icon (win);
+ if (d->icon_pixbuf)
+ {
+ cairo_t *cr;
+
+ g_object_ref (G_OBJECT (d->icon_pixbuf));
+
+ /* 32 bit pixmap on pixmap mode, 24 for reparenting */
+ if (d->frame_window)
+ d->icon_pixmap = pixmap_new_from_pixbuf (d->icon_pixbuf,
+ d->frame->style_window_rgba);
+ else
+ d->icon_pixmap = pixmap_new_from_pixbuf (d->icon_pixbuf,
+ d->frame->style_window_rgb);
+ cr = gdk_cairo_create (GDK_DRAWABLE (d->icon_pixmap));
+ d->icon = cairo_pattern_create_for_surface (cairo_get_target (cr));
+ cairo_destroy (cr);
+ }
+}
+
+
+/*
+ * update_window_decoration_size
+ * Returns: FALSE for failure, TRUE for success
+ * Description: Calculates the minimum size of the decoration that we need
+ * to render. This is mostly done by the theme but there is some work that
+ * we need to do here first, such as getting the client geometry, setting
+ * drawable depths, creating pixmaps, creating XRenderPictures and
+ * updating the window decoration name
+ */
+
+gboolean
+update_window_decoration_size (WnckWindow *win)
+{
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+ GdkPixmap *pixmap, *buffer_pixmap = NULL;
+ Picture picture;
+ gint width, height;
+ gint x, y, w, h, name_width;
+ Display *xdisplay;
+ XRenderPictFormat *format;
+
+ xdisplay = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+
+ /* Get the geometry of the window, we'll need it later */
+ wnck_window_get_client_window_geometry (win, &x, &y, &w, &h);
+
+ /* Get the width of the name */
+ name_width = max_window_name_width (win);
+
+ /* Ask the theme to tell us how much space it needs. If this is not successful
+ * update the decoration name and return false */
+ if (!(*theme_calc_decoration_size) (d, w, h, name_width, &width, &height))
+ {
+ update_window_decoration_name (win);
+ return FALSE;
+ }
+
+ gdk_error_trap_push ();
+
+ /* Get the correct depth for the frame window in reparenting mode, otherwise
+ * enforce 32 */
+ if (d->frame_window)
+ pixmap = create_pixmap (width, height, d->frame->style_window_rgb);
+ else
+ pixmap = create_pixmap (width, height, d->frame->style_window_rgba);
+
+ gdk_flush ();
+
+ /* Handle failure */
+ if (!pixmap || gdk_error_trap_pop ())
+ {
+ memset (pixmap, 0, sizeof (pixmap));
+ return FALSE;
+ }
+
+ gdk_error_trap_push ();
+
+ if (d->frame_window)
+ buffer_pixmap = create_pixmap (width, height, d->frame->style_window_rgb);
+ else
+ buffer_pixmap = create_pixmap (width, height, d->frame->style_window_rgba);
+
+ gdk_flush ();
+
+ /* Handle failure */
+ if (!buffer_pixmap || gdk_error_trap_pop ())
+ {
+ memset (buffer_pixmap, 0, sizeof (buffer_pixmap));
+ g_object_unref (G_OBJECT (pixmap));
+ return FALSE;
+ }
+
+ /* Create XRender context */
+ format = get_format_for_drawable (d, GDK_DRAWABLE (buffer_pixmap));
+ picture = XRenderCreatePicture (xdisplay, GDK_PIXMAP_XID (buffer_pixmap),
+ format, 0, NULL);
+
+ /* Destroy the old pixmaps and pictures */
+ if (d->pixmap)
+ g_object_unref (G_OBJECT (d->pixmap));
+
+ if (d->buffer_pixmap)
+ g_object_unref (G_OBJECT (d->buffer_pixmap));
+
+ if (d->picture)
+ XRenderFreePicture (xdisplay, d->picture);
+
+ if (d->cr)
+ cairo_destroy (d->cr);
+
+ /* Assign new pixmaps and pictures */
+ d->pixmap = pixmap;
+ d->buffer_pixmap = buffer_pixmap;
+ d->cr = gdk_cairo_create (pixmap);
+
+ d->picture = picture;
+
+ d->width = width;
+ d->height = height;
+
+ d->prop_xid = wnck_window_get_xid (win);
+
+ update_window_decoration_name (win);
+
+ /* Redraw decoration on idle */
+ queue_decor_draw (d);
+
+ return TRUE;
+}
+
+/* to save some memory, value is specific to current decorations */
+#define TRANSLUCENT_CORNER_SIZE 3
+
+/*
+ * draw_border_shape
+ * Returns: void
+ * Description: Draws a slight border around the decoration
+ */
+static void
+draw_border_shape (Display *xdisplay,
+ Pixmap pixmap,
+ Picture picture,
+ int width,
+ int height,
+ decor_context_t *c,
+ void *closure)
+{
+ static XRenderColor white = { 0xffff, 0xffff, 0xffff, 0xffff };
+ GdkColormap *colormap;
+ decor_t d;
+ decor_shadow_info_t *info = (decor_shadow_info_t *) closure;
+ double save_decoration_alpha;
+
+ memset (&d, 0, sizeof (d));
+
+ d.frame = info->frame;
+
+ d.pixmap = gdk_pixmap_foreign_new_for_display (gdk_display_get_default (),
+ pixmap);
+ d.width = width;
+ d.height = height;
+ d.active = TRUE;
+ d.draw = theme_draw_window_decoration;
+ d.picture = picture;
+ d.context = c;
+
+ /* we use closure argument if maximized */
+ if (info)
+ d.state = info->state;
+ else
+ d.state = 0;
+
+ decor_get_default_layout (c, 1, 1, &d.border_layout);
+
+ colormap = get_colormap_for_drawable (GDK_DRAWABLE (d.pixmap));
+ gdk_drawable_set_colormap (d.pixmap, colormap);
+
+ /* create shadow from opaque decoration
+ * FIXME: Should not modify settings value
+ * like this */
+ save_decoration_alpha = settings->decoration_alpha;
+ settings->decoration_alpha = 1.0;
+
+ (*d.draw) (&d);
+
+ settings->decoration_alpha = save_decoration_alpha;
+
+ XRenderFillRectangle (xdisplay, PictOpSrc, picture, &white,
+ c->left_space,
+ c->top_space,
+ width - c->left_space - c->right_space,
+ height - c->top_space - c->bottom_space);
+
+ if (!info)
+ gwd_decor_frame_unref (d.frame);
+
+ g_object_unref (G_OBJECT (d.pixmap));
+}
+
+
+/*
+ * update_shadow
+ * Returns: 1 for success, 0 for failure
+ * Description: creates a libdecoration shadow context and updates
+ * the decoration context for the shadow for the properties that we
+ * have already read from the root window.
+ *
+ * For the pixmap mode we have opt_shadow which is passed to
+ * decor_shadow_create (which contains the shadow settings from
+ * the root window)
+ *
+ * For the reparenting mode we always enforce a zero-shadow in
+ * the opt_no_shadow passed to decor_shadow_create.
+ *
+ * We do something similar for the maximimzed mode as well
+ */
+void
+bare_frame_update_shadow (Display *xdisplay,
+ Screen *screen,
+ decor_frame_t *frame,
+ decor_shadow_info_t *info,
+ decor_shadow_options_t *opt_shadow,
+ decor_shadow_options_t *opt_no_shadow)
+{
+ if (frame->border_shadow)
+ {
+ decor_shadow_destroy (xdisplay, frame->border_shadow);
+ frame->border_shadow = NULL;
+ }
+
+ frame->border_shadow = decor_shadow_create (xdisplay,
+ screen,
+ 1, 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0, 0, 0, 0,
+ opt_shadow,
+ &frame->window_context,
+ decor_draw_simple,
+ NULL);
+}
+
+void
+switcher_frame_update_shadow (Display *xdisplay,
+ Screen *screen,
+ decor_frame_t *frame,
+ decor_shadow_info_t *info,
+ decor_shadow_options_t *opt_shadow,
+ decor_shadow_options_t *opt_no_shadow)
+{
+ if (frame->border_shadow)
+ {
+ decor_shadow_destroy (xdisplay, frame->border_shadow);
+ frame->border_shadow = NULL;
+ }
+
+ frame->border_shadow = decor_shadow_create (xdisplay,
+ screen,
+ 1, 1,
+ frame->win_extents.left,
+ frame->win_extents.right,
+ frame->win_extents.top,
+ frame->win_extents.bottom,
+ frame->win_extents.left -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.right -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.top -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.bottom -
+ TRANSLUCENT_CORNER_SIZE,
+ opt_shadow,
+ &frame->window_context,
+ decor_draw_simple,
+ NULL);
+}
+
+void
+decor_frame_update_shadow (Display *xdisplay,
+ Screen *screen,
+ decor_frame_t *frame,
+ decor_shadow_info_t *info,
+ decor_shadow_options_t *opt_shadow,
+ decor_shadow_options_t *opt_no_shadow)
+{
+ if (frame->border_shadow)
+ {
+ decor_shadow_destroy (xdisplay, frame->border_shadow);
+ frame->border_shadow = NULL;
+ }
+
+ frame->border_shadow = decor_shadow_create (xdisplay,
+ screen,
+ 1, 1,
+ frame->win_extents.left,
+ frame->win_extents.right,
+ frame->win_extents.top + frame->titlebar_height,
+ frame->win_extents.bottom,
+ frame->win_extents.left -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.right -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.top + frame->titlebar_height -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.bottom -
+ TRANSLUCENT_CORNER_SIZE,
+ opt_shadow,
+ &frame->window_context,
+ draw_border_shape,
+ (void *) info);
+ if (frame->border_no_shadow)
+ {
+ decor_shadow_destroy (xdisplay, frame->border_no_shadow);
+ frame->border_no_shadow = NULL;
+ }
+
+ frame->border_no_shadow = decor_shadow_create (xdisplay,
+ screen,
+ 1, 1,
+ frame->win_extents.left,
+ frame->win_extents.right,
+ frame->win_extents.top + frame->titlebar_height,
+ frame->win_extents.bottom,
+ frame->win_extents.left -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.right -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.top + frame->titlebar_height -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->win_extents.bottom -
+ TRANSLUCENT_CORNER_SIZE,
+ opt_no_shadow,
+ &frame->window_context_no_shadow,
+ draw_border_shape,
+ 0);
+
+ /* Maximized border shadow pixmap mode */
+ if (frame->max_border_shadow)
+ {
+ decor_shadow_destroy (xdisplay, frame->max_border_shadow);
+ frame->max_border_shadow = NULL;
+ }
+
+ info->state = (WNCK_WINDOW_STATE_MAXIMIZED_HORIZONTALLY |
+ WNCK_WINDOW_STATE_MAXIMIZED_VERTICALLY);
+
+ frame->max_border_shadow =
+ decor_shadow_create (xdisplay,
+ screen,
+ 1, 1,
+ frame->max_win_extents.left,
+ frame->max_win_extents.right,
+ frame->max_win_extents.top + frame->max_titlebar_height,
+ frame->max_win_extents.bottom,
+ frame->max_win_extents.left - TRANSLUCENT_CORNER_SIZE,
+ frame->max_win_extents.right - TRANSLUCENT_CORNER_SIZE,
+ frame->max_win_extents.top + frame->max_titlebar_height -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->max_win_extents.bottom - TRANSLUCENT_CORNER_SIZE,
+ opt_shadow,
+ &frame->max_window_context,
+ draw_border_shape,
+ (void *) info);
+
+ /* Enforced maximize zero shadow reparenting mode */
+ if (frame->max_border_no_shadow)
+ {
+ decor_shadow_destroy (xdisplay, frame->max_border_shadow);
+ frame->max_border_shadow = NULL;
+ }
+
+ frame->max_border_no_shadow =
+ decor_shadow_create (xdisplay,
+ screen,
+ 1, 1,
+ frame->max_win_extents.left,
+ frame->max_win_extents.right,
+ frame->max_win_extents.top + frame->max_titlebar_height,
+ frame->max_win_extents.bottom,
+ frame->max_win_extents.left - TRANSLUCENT_CORNER_SIZE,
+ frame->max_win_extents.right - TRANSLUCENT_CORNER_SIZE,
+ frame->max_win_extents.top + frame->max_titlebar_height -
+ TRANSLUCENT_CORNER_SIZE,
+ frame->max_win_extents.bottom - TRANSLUCENT_CORNER_SIZE,
+ opt_no_shadow,
+ &frame->max_window_context_no_shadow,
+ draw_border_shape,
+ (void *) info);
+}
+
+
+typedef struct _tdtd_shadow_options
+{
+ decor_shadow_options_t *shadow;
+ decor_shadow_options_t *no_shadow;
+} tdtd_shadow_options_t;
+
+void
+frame_update_shadow (decor_frame_t *frame,
+ decor_shadow_info_t *info,
+ decor_shadow_options_t *opt_shadow,
+ decor_shadow_options_t *opt_no_shadow)
+{
+ gwd_decor_frame_ref (frame);
+
+ (*frame->update_shadow) (gdk_x11_get_default_xdisplay (),
+ gdk_x11_screen_get_xscreen (gdk_screen_get_default ()),
+ frame, info, opt_shadow, opt_no_shadow);
+
+ gwd_decor_frame_unref (frame);
+}
+
+void
+update_frames_shadows (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ decor_frame_t *frame = (decor_frame_t *) value;
+ tdtd_shadow_options_t *opts = (tdtd_shadow_options_t *) user_data;
+
+ gwd_decor_frame_ref (frame);
+
+ decor_shadow_info_t *info = malloc (sizeof (decor_shadow_info_t));
+
+ if (!info)
+ return;
+
+ info->frame = frame;
+ info->state = 0;
+
+ frame_update_shadow (frame, info, opts->shadow, opts->no_shadow);
+
+ gwd_decor_frame_unref (frame);
+
+ free (info);
+ info = NULL;
+
+}
+
+int
+update_shadow (void)
+{
+ decor_shadow_options_t opt_shadow;
+ decor_shadow_options_t opt_no_shadow;
+ tdtd_shadow_options_t *opts;
+
+ opts = malloc (sizeof (tdtd_shadow_options_t));
+
+ if (!opts)
+ return 0;
+
+ opt_shadow.shadow_radius = settings->shadow_radius;
+ opt_shadow.shadow_opacity = settings->shadow_opacity;
+
+ memcpy (opt_shadow.shadow_color, settings->shadow_color, sizeof (settings->shadow_color));
+
+ opt_shadow.shadow_offset_x = settings->shadow_offset_x;
+ opt_shadow.shadow_offset_y = settings->shadow_offset_y;
+
+ opt_no_shadow.shadow_radius = 0;
+ opt_no_shadow.shadow_opacity = 0;
+
+ opt_no_shadow.shadow_offset_x = 0;
+ opt_no_shadow.shadow_offset_y = 0;
+
+ opts->shadow = &opt_shadow;
+ opts->no_shadow = &opt_no_shadow;
+
+ gwd_frames_foreach (update_frames_shadows, (gpointer ) opts);
+
+ if (opts)
+ free (opts);
+
+ return 1;
+}
+
+/*
+ * populate_type
+ *
+ * Returns: void
+ * Description: Sets the window type flags for compiz to know what window type
+ * this decoration is for
+ *
+ */
+unsigned int
+populate_frame_type (decor_t *d)
+{
+ /* FIXME: This would be nicer if Wnck actually worked here,
+ * but for now we need to use that frame string since that's
+ * the only way we can get the modal_dialog type */
+
+ const unsigned int n_type_strings = 5;
+ unsigned int frame_type = 0;
+ unsigned int i;
+ struct typestrings {
+ const char *type;
+ unsigned int flag;
+ } type_strings[] =
+ {
+ {"normal", DECOR_WINDOW_TYPE_NORMAL },
+ {"dialog", DECOR_WINDOW_TYPE_DIALOG },
+ {"modal_dialog", DECOR_WINDOW_TYPE_MODAL_DIALOG },
+ {"menu", DECOR_WINDOW_TYPE_MENU },
+ {"utility", DECOR_WINDOW_TYPE_UTILITY}
+ };
+
+ for (i = 0; i < n_type_strings; i++)
+ {
+ if (strcmp (d->frame->type, type_strings[i].type) == 0)
+ frame_type |= type_strings[i].flag;
+ }
+
+ return frame_type;
+}
+
+/*
+ * populate_state
+ *
+ * Returns void
+ * Description: Sets the window state flags for compiz to know what state of
+ * window this decoration is for
+ */
+unsigned int
+populate_frame_state (decor_t *d)
+{
+ unsigned int frame_state = 0;
+
+ WnckWindowState win_state;
+ const unsigned int n_state_bits = 3;
+ unsigned int i;
+
+ if (d->active)
+ frame_state |= DECOR_WINDOW_STATE_FOCUS;
+
+ struct typestrings {
+ unsigned int wnck_flag;
+ unsigned int decor_flag;
+ } state_bits[] =
+ {
+ { WNCK_WINDOW_STATE_MAXIMIZED_VERTICALLY, DECOR_WINDOW_STATE_MAXIMIZED_VERT },
+ { WNCK_WINDOW_STATE_MAXIMIZED_HORIZONTALLY, DECOR_WINDOW_STATE_MAXIMIZED_HORZ },
+ { WNCK_WINDOW_STATE_SHADED, DECOR_WINDOW_STATE_SHADED }
+ };
+
+ /* Not possible to match further than active or not if there is
+ * no window but FIXME we might want to do that later down the line */
+ if (!d->win)
+ return frame_state == 0;
+
+ win_state = wnck_window_get_state (d->win);
+
+ for (i = 0; i < n_state_bits; i++)
+ {
+ if (win_state & state_bits[i].wnck_flag)
+ frame_state |= state_bits[i].decor_flag;
+ }
+
+ return frame_state;
+}
+
+/*
+ * populate_actions
+ *
+ * Returns void
+ * Description: Sets the window actions flags for compiz to know what state of
+ * window this decoration is for
+ */
+unsigned int
+populate_frame_actions (decor_t *d)
+{
+ unsigned int frame_actions = 0;
+
+ if (!d->win)
+ return frame_actions;
+
+ WnckWindowActions win_actions = wnck_window_get_actions (d->win);
+ const unsigned int n_action_bits = 16;
+ unsigned int i;
+ struct typestrings {
+ unsigned int decor_flag;
+ unsigned int wnck_flag;
+ } action_bits[] =
+ {
+ { DECOR_WINDOW_ACTION_RESIZE_HORZ, WNCK_WINDOW_ACTION_RESIZE },
+ { DECOR_WINDOW_ACTION_RESIZE_VERT, WNCK_WINDOW_ACTION_RESIZE },
+ { DECOR_WINDOW_ACTION_CLOSE, WNCK_WINDOW_ACTION_CLOSE },
+ { DECOR_WINDOW_ACTION_MINIMIZE, WNCK_WINDOW_ACTION_MINIMIZE },
+ { DECOR_WINDOW_ACTION_UNMINIMIZE, WNCK_WINDOW_ACTION_UNMINIMIZE },
+ { DECOR_WINDOW_ACTION_MAXIMIZE_HORZ, WNCK_WINDOW_ACTION_MAXIMIZE_HORIZONTALLY },
+ { DECOR_WINDOW_ACTION_MAXIMIZE_VERT, WNCK_WINDOW_ACTION_MAXIMIZE_VERTICALLY },
+ { DECOR_WINDOW_ACTION_UNMAXIMIZE_HORZ, WNCK_WINDOW_ACTION_UNMAXIMIZE_HORIZONTALLY },
+ { DECOR_WINDOW_ACTION_UNMAXIMIZE_VERT, WNCK_WINDOW_ACTION_UNMAXIMIZE_VERTICALLY },
+ { DECOR_WINDOW_ACTION_SHADE, WNCK_WINDOW_ACTION_SHADE },
+ { DECOR_WINDOW_ACTION_UNSHADE, WNCK_WINDOW_ACTION_UNSHADE },
+ { DECOR_WINDOW_ACTION_STICK, WNCK_WINDOW_ACTION_STICK },
+ { DECOR_WINDOW_ACTION_UNSTICK, WNCK_WINDOW_ACTION_UNSTICK },
+ { DECOR_WINDOW_ACTION_FULLSCREEN, WNCK_WINDOW_ACTION_FULLSCREEN },
+ { DECOR_WINDOW_ACTION_ABOVE, WNCK_WINDOW_ACTION_ABOVE },
+ { DECOR_WINDOW_ACTION_BELOW, WNCK_WINDOW_ACTION_BELOW },
+ };
+
+ for (i = 0; i < n_action_bits; i++)
+ {
+ if (win_actions & action_bits[i].wnck_flag)
+ frame_actions |= action_bits[i].decor_flag;
+ }
+
+ return frame_actions;
+}
+
+/*
+ * update_window_decoration
+ *
+ * Returns: void
+ * Description: The master function to update the window decoration
+ * if the pixmap needs to be redrawn
+ */
+void
+update_window_decoration (WnckWindow *win)
+{
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+
+ if (d->decorated)
+ {
+ /* force size update */
+ d->context = NULL;
+ d->width = d->height = 0;
+
+ update_window_decoration_size (win);
+ update_event_windows (win);
+ }
+}
+
+/*
+ * update_window_decoration_state
+ *
+ * Returns: void
+ * Description: helper function to update the state of the decor_t
+ */
+void
+update_window_decoration_state (WnckWindow *win)
+{
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+
+ d->state = wnck_window_get_state (win);
+}
+
+/*
+ * update_window_decoration_actions
+ *
+ * Returns: void
+ * Description: helper function to update the actions of the decor_t
+ */
+void
+update_window_decoration_actions (WnckWindow *win)
+{
+ decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
+
+ d->actions = wnck_window_get_actions (win);
+}
+
+
+/*
+ * draw_decor_list
+ *
+ * Returns: bool
+ * Description: function to be called on g_idle_add to draw window
+ * decorations when we are not doing anything
+ */
+static gboolean
+draw_decor_list (void *data)
+{
+ GSList *list;
+ decor_t *d;
+
+ draw_idle_id = 0;
+
+ for (list = draw_list; list; list = list->next)
+ {
+ d = (decor_t *) list->data;
+ (*d->draw) (d);
+ }
+
+ g_slist_free (draw_list);
+ draw_list = NULL;
+
+ return FALSE;
+}
+
+/*
+ * queue_decor_draw
+ *
+ * Description :queue a redraw request for this decoration. Since this function
+ * only gets called on idle, don't redraw window decorations multiple
+ * times if they are already waiting to be drawn (since the drawn copy
+ * will always be the most updated one)
+ */
+void
+queue_decor_draw (decor_t *d)
+{
+ if (g_slist_find (draw_list, d))
+ return;
+
+ draw_list = g_slist_append (draw_list, d);
+
+ if (!draw_idle_id)
+ draw_idle_id = g_idle_add (draw_decor_list, NU
Follow ups