summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoromega <omega@omg-lin.(none)>2010-10-27 16:05:43 +0200
committeromega <omega@omg-lin.(none)>2010-10-27 16:05:43 +0200
commitc9379f4e60f73d9a70459aff21577aeab6f85f93 (patch)
treeaa8b0762be432a51e8b35a2288f0427c354a818b
parent5c06ccd2fd2c19cce02b321d73a2f45053846e0b (diff)
downloadscripts-c9379f4e60f73d9a70459aff21577aeab6f85f93.tar.gz
scripts-c9379f4e60f73d9a70459aff21577aeab6f85f93.tar.bz2
Split script (stable/dev)
-rwxr-xr-xdev/README (renamed from README)0
-rw-r--r--dev/branches/compiz-0.6 (renamed from branches/compiz-0.6)0
-rw-r--r--dev/branches/compiz-0.8 (renamed from branches/compiz-0.8)0
-rw-r--r--dev/branches/compiz-0.9 (renamed from branches/compiz-0.9)0
-rw-r--r--dev/extras/fusion-icon.desktop (renamed from extras/fusion-icon.desktop)0
-rw-r--r--dev/extras/gnome-wm.replacement (renamed from extras/gnome-wm.replacement)0
-rwxr-xr-xdev/git-compiz903
-rw-r--r--dev/git-compiz.def (renamed from git-compiz.def)4
-rw-r--r--dev/git-compiz.dep (renamed from git-compiz.dep)0
-rw-r--r--dev/patches/animation-genie-fix.patch (renamed from patches/animation-genie-fix.patch)0
-rwxr-xr-xdev/patches/ccsm-rgba.patch (renamed from patches/ccsm-rgba.patch)0
-rwxr-xr-xdev/patches/compiz-disable-libx11-xcb-support.patch (renamed from patches/compiz-disable-libx11-xcb-support.patch)0
-rwxr-xr-xdev/patches/simple-ccsm-opensuse-enable-desktop-effects.patch (renamed from patches/simple-ccsm-opensuse-enable-desktop-effects.patch)0
-rw-r--r--dev/patches/suse-11-1-fix.patch (renamed from patches/suse-11-1-fix.patch)0
-rw-r--r--dev/patches/vmware-workstation-6.5-workaround.patch (renamed from patches/vmware-workstation-6.5-workaround.patch)0
-rwxr-xr-xdev/patches/window-wave.patch (renamed from patches/window-wave.patch)0
-rw-r--r--dev/po/de.po93
-rw-r--r--dev/po/en.po96
-rw-r--r--dev/po/es.po97
-rw-r--r--dev/po/it.po92
-rwxr-xr-xdev/scripts/compiz-check (renamed from scripts/compiz-check)0
-rwxr-xr-xdev/scripts/convert-patch (renamed from scripts/convert-patch)0
-rwxr-xr-xstable/README107
-rw-r--r--stable/branches/compiz-0.610
-rw-r--r--stable/branches/compiz-0.811
-rw-r--r--stable/branches/compiz-0.94
-rw-r--r--stable/extras/fusion-icon.desktop6
-rw-r--r--stable/extras/gnome-wm.replacement459
-rw-r--r--stable/extras/omega_ccsm.profile (renamed from extras/omega_ccsm.profile)0
-rw-r--r--stable/extras/tango_dark.emerald (renamed from extras/tango_dark.emerald)bin216668 -> 216668 bytes
-rwxr-xr-xstable/git-compiz (renamed from git-compiz)0
-rw-r--r--stable/git-compiz.def (renamed from extras/git-compiz.local.compiz-0.8)0
-rw-r--r--stable/git-compiz.dep42
-rw-r--r--stable/patches/animation-genie-fix.patch29
-rwxr-xr-xstable/patches/ccsm-rgba.patch36
-rwxr-xr-xstable/patches/compiz-disable-libx11-xcb-support.patch52
-rwxr-xr-xstable/patches/simple-ccsm-opensuse-enable-desktop-effects.patch295
-rw-r--r--stable/patches/suse-11-1-fix.patch16
-rw-r--r--stable/patches/vmware-workstation-6.5-workaround.patch22
-rwxr-xr-xstable/patches/window-wave.patch360
-rw-r--r--stable/po/de.po (renamed from po/de.po)0
-rw-r--r--stable/po/en.po (renamed from po/en.po)0
-rw-r--r--stable/po/es.po (renamed from po/es.po)0
-rw-r--r--stable/po/it.po (renamed from po/it.po)0
-rwxr-xr-xstable/scripts/compiz-check963
-rwxr-xr-xstable/scripts/convert-patch19
46 files changed, 3715 insertions, 1 deletions
diff --git a/README b/dev/README
index c78191c..c78191c 100755
--- a/README
+++ b/dev/README
diff --git a/branches/compiz-0.6 b/dev/branches/compiz-0.6
index 52ab2ac..52ab2ac 100644
--- a/branches/compiz-0.6
+++ b/dev/branches/compiz-0.6
diff --git a/branches/compiz-0.8 b/dev/branches/compiz-0.8
index 1eafe82..1eafe82 100644
--- a/branches/compiz-0.8
+++ b/dev/branches/compiz-0.8
diff --git a/branches/compiz-0.9 b/dev/branches/compiz-0.9
index 295fb02..295fb02 100644
--- a/branches/compiz-0.9
+++ b/dev/branches/compiz-0.9
diff --git a/extras/fusion-icon.desktop b/dev/extras/fusion-icon.desktop
index da10025..da10025 100644
--- a/extras/fusion-icon.desktop
+++ b/dev/extras/fusion-icon.desktop
diff --git a/extras/gnome-wm.replacement b/dev/extras/gnome-wm.replacement
index fac8cb0..fac8cb0 100644
--- a/extras/gnome-wm.replacement
+++ b/dev/extras/gnome-wm.replacement
diff --git a/dev/git-compiz b/dev/git-compiz
new file mode 100755
index 0000000..57a386e
--- /dev/null
+++ b/dev/git-compiz
@@ -0,0 +1,903 @@
+#!/bin/bash
+########################################################################################################################################
+# GiT-CoMpIz #
+########################################################################################################################################
+# Copyright (C) 2009 omega
+#
+# 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 3 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.
+#########################################################################################################################################
+####### DO NOT EDIT THIS FILE ! #########################################################################################################
+#########################################################################################################################################
+SPPID=0
+
+trap "kill $SPPID" EXIT
+
+## Locales
+# check if locale file to import exist, then import them, else set default locale (english)
+LC_USER=`echo $LANG | cut -d _ -f1`
+if [ ! -f po/$LC_USER.po ]; then
+ source po/en.po
+else
+ source po/$LC_USER.po
+fi
+
+## Data files
+# check if files to import exist, then import them
+if [ ! -f $0.def ]; then
+ echo $ERROR_DEF_FILE
+ echo $ERROR_EXIT
+ exit 4
+else
+ source $0.def
+fi
+if [ ! -f $0.dep ]; then
+ echo $ERROR_DEP_FILE
+ echo $ERROR_EXIT
+ exit 4
+else
+ source $0.dep
+fi
+
+test -f $0.local && source $0.local
+
+#LOG_FILE=/tmp/`echo $0 | sed -e s,./,,`-$$.log
+LOGDIR=$(mktemp -d /tmp/git-compiz.XXXXXXXX)
+
+## Check arch for libdir
+ARCH=`uname -m`
+if [ -f /etc/SuSE-release -o -f /etc/fedora-release ] && [ $ARCH == "x86_64" ]; then
+ LIBDIR=lib64
+else
+ LIBDIR=lib
+fi
+
+## Help menu'
+help_me()
+{
+echo -e $HELP
+exit 0
+}
+
+# Log any command to $LOG_FILE, or to there and stdin
+logcmd()
+{
+if [ $1 == "echo" -o $DEBUG != "false" -o $1 == "git clone" ]; then
+ $@ 2>&1 | tee -a $LOG_FILE
+else
+ $@ >>$LOG_FILE 2>&1
+fi
+}
+
+root()
+{
+case $ROOT in
+ sudo)
+ if [ $DEBUG == "false" ]; then
+ sudo "$@" >>$LOG_FILE 2>&1
+ else
+ sudo "$@" 2>&1 | tee -a $LOG_FILE
+ fi
+ ;;
+ user)
+ if [ $DEBUG == "false" ]; then
+ $@ >>$LOG_FILE 2>&1
+ else
+ $@ 2>&1 | tee -a $LOG_FILE
+ fi
+ ;;
+ *)
+ if [ $DEBUG == "false" ]; then
+ su -c "$@" root >>$LOG_FILE 2>&1
+ else
+ su -c "$@" root 2>&1 | tee -a $LOG_FILE
+ fi
+ ;;
+esac
+}
+
+## Add Fusion-Icon to startup
+fix_startup()
+{
+echo -n $INFO_FIX_STARTUP
+if [ ! -f $HOME/.config/autostart/fusion-icon.desktop ]; then
+ cp extras/fusion-icon.desktop $HOME/.config/autostart &>/dev/null
+ ln -s /usr/bin/fusion-icon $HOME/.kde/Autostart/fusion-icon &>/dev/null
+fi
+echo $INFO_OK
+exit 1
+}
+
+## Fix Python path
+fix_python()
+{
+echo -n $INFO_FIX_PYTHON
+if [ -d $DESTDIR$PREFIX/$LIBDIR/python2.6/dist-packages -a ! -f $DESTDIR$PREFIX/$LIBDIR/python2.6/dist-packages/compiz_path.pth ]; then
+ sudo bash -c "echo $DESTDIR$PREFIX/$LIBDIR/python2.6/site-packages >> $DESTDIR$PREFIX/$LIBDIR/python2.6/dist-packages/compiz_path.pth"
+fi
+echo $INFO_OK
+exit 1
+}
+
+## Check and install dependencies for your distro (if it's supported)
+check_distro_dependencies()
+{
+case `lsb_release -cs` in
+ sid) sudo aptitude update ; sudo aptitude -y install $sid_check_dep
+ ;;
+ lenny) sudo aptitude update ; sudo aptitude -y install $lenny_check_dep
+ ;;
+ gutsy) sudo aptitude update ; sudo aptitude -y install $gutsy_check_dep
+ ;;
+ hardy) sudo aptitude update ; sudo aptitude -y install $hardy_check_dep
+ ;;
+ intrepid) sudo aptitude update ; sudo aptitude -y install $intrepid_check_dep
+ ;;
+ jaunty) sudo aptitude update ; sudo aptitude -y install $jaunty_check_dep
+ ;;
+ karmic) sudo aptitude update ; sudo aptitude -y install $karmic_check_dep
+ ;;
+ lucid) sudo aptitude update ; sudo aptitude -y install $lucid_check_dep
+ ;;
+ maverick) sudo aptitude update ; sudo aptitude -y install $maverick_check_dep
+ ;;
+ *)
+ if [ -f /etc/SuSE-release ]; then
+ su -c "zypper ref ; zypper in $suse_check_dep"
+ elif [ -f /etc/fedora-release ]; then
+ su -c "yum update ; yum -y install $fedora_check_dep"
+ elif [ -f /etc/slackware-version ]; then
+ su -c "slapt-get update ; slapt-get install $slackware_check_dep"
+ elif [ -f /etc/arch-release ]; then
+ su -c "pacman -Sy $arch_check_dep"
+ elif [ -f /etc/mandriva-release ]; then
+ su -c "urpmi.update -a ; urpmi $mandriva_check_dep"
+ else
+ echo $ERROR_CHECK_DEP_1
+ fi
+ ;;
+esac
+ exit 1;
+}
+
+## Purge all data/packages installed by this script/distro
+purge_compiz()
+{
+case `lsb_release -cs` in
+ hardy|intrepid|jaunty|karmic) sudo aptitude purge $ubuntu_purge
+ ;;
+ *)
+ ;;
+esac
+
+if [ x$ROOT == x"sudo" ]; then
+ sudo rm -rvf $data_to_purge
+else
+ su -c "rm -rvf $data_to_purge"
+fi
+exit 0
+}
+
+## Fix Gnome-WM
+gwm_fix()
+{
+LOG_FILE=/dev/null
+if [ -f /etc/SuSE-release ]; then
+ echo $ERROR_GWM_SUSE
+ exit 2
+else
+ GNOME_WM=`which gnome-wm`
+ if [ -f $GNOME_WM ]; then
+ echo $ERROR_GWM
+ exit 1
+ fi
+ root bash -c "mv $GNOME_WM $GNOME_WM.real && install -g root -o root -m 755 extras/gnome-wm.replacement $GNOME_WM"
+ echo $INFO_GWM
+fi
+}
+
+## Get the parameter of --x= type arg
+ARGS_SCRIPT=$@
+get_arg()
+{
+(for myarg in $ARGS_SCRIPT; do echo $myarg; done) | grep -e $1 | sed -e s,$1,, -e s,\",,
+}
+
+for singlearg in $ARGS_SCRIPT; do
+ case $singlearg in
+ --branch=*)
+ BRANCH=`get_arg --branch=`
+ ;;
+ --check)
+ wget http://blogage.de/files/9124/download -O scripts/compiz-check
+ chmod +x scripts/compiz-check
+ ./scripts/compiz-check
+ exit 0;
+ ;;
+ --check-dep)
+ check_distro_dependencies;
+ ;;
+ --destdir=*)
+ DESTDIR=`get_arg --destdir=`
+ ;;
+ --disable-icons)
+ UNOFFICIAL_ICONS="no"
+ ;;
+ --disable-protobuf)
+ ARGS="$ARGS --disable-protobuf"
+ ;;
+ --enable-gwm-compiz)
+ gwm_fix
+ exit 0
+ ;;
+ --enable-headtracking)
+ OPENCV="yes"
+ PLUGINS="
+ $PLUGINS
+ users/klange/headtracking
+ "
+ ;;
+ --fix-python)
+ fix_python;
+ ;;
+ --fix-startup)
+ fix_startup;
+ ;;
+ --force-switch)
+ SWITCH_BRANCH="force"
+ ;;
+ --help)
+ help_me
+ ;;
+ --jobs=*)
+ JOBS=`get_arg --jobs=`
+ ;;
+ --purge)
+ purge_compiz
+ ;;
+ --prefix=*)
+ PREFIX=`get_arg --prefix=`
+ ;;
+ --rebuild=*)
+ FORCE_REBUILT=`get_arg --rebuild=`
+ ;;
+ --root=*)
+ ROOT=`get_arg --root=`
+ ;;
+ --skip-build)
+ NOBUILD="yes"
+ ;;
+ --skip-install)
+ SKIP_INSTALL="true"
+ ;;
+ --skip-update)
+ SKIP_UPDATE="true"
+ ;;
+ --undo=*)
+ FORCE_REBUILT=`get_arg --undo=`
+ UNDO_LAST_UPDATE="yes"
+ ;;
+ --verbose)
+ DEBUG="true"
+ ;;
+ --with-desktop=all)
+ ARGS="--enable-gconf --enable-kconfig --enable-kde4"
+ DE="
+ fusion/compizconfig/compizconfig-backend-gconf
+ fusion/compizconfig/compizconfig-backend-kconfig4
+ fusion/compizconfig/simple-ccsm
+ users/seli/simple-ccsm-kde
+ "
+ ;;
+ --with-desktop=gnome)
+ ARGS="--enable-gconf --disable-kconfig --disable-kde --disable-kde4"
+ DE="
+ fusion/compizconfig/compizconfig-backend-gconf
+ fusion/compizconfig/simple-ccsm
+ "
+ UNOFFICIAL_ICONS_THEME="tango"
+ ;;
+ --with-desktop=kde)
+ ARGS="--disable-gconf --disable-gtk --disable-metacity --disable-gnome --disable-gnome-keybindings --disable-kde4"
+ DE="
+ fusion/compizconfig/compizconfig-backend-kconfig
+ "
+ UNOFFICIAL_ICONS_THEME="oxygen"
+ ;;
+ --with-desktop=kde4)
+ ARGS="--disable-gconf --disable-gtk --disable-metacity --disable-gnome --disable-gnome-keybindings --disable-kde"
+ DE="
+ fusion/compizconfig/compizconfig-backend-kconfig4
+ users/seli/simple-ccsm-kde
+ "
+ ;;
+ *)
+ echo "$ERROR_INVALID_OPTION $singlearg";
+ exit 1
+ ;;
+ esac
+done
+
+# Prints updates
+# $1 == Type
+# $2+ == What to print (depends on output type)
+# TODO: Perhaps add colors to info and error (green and red?)
+printinfo()
+{
+OTHER_ARGS="`echo $@ | sed -e s:$1\ :: `"
+case $1 in
+ space)
+ echo "_____________________________________________________"
+ echo
+ ;;
+ info)
+ echo -n " * $OTHER_ARGS"
+ ;;
+ trail)
+ echo "...........$OTHER_ARGS"
+ ;;
+ error)
+ echo " -> $OTHER_ARGS"
+ ;;
+ warning)
+ echo " WARNING: $OTHER_ARGS"
+ ;;
+esac
+}
+
+## Check minimal dependencies to use this script
+check_minimal_dependencies()
+{
+printinfo info $INFO_CHECK_DEP;
+printinfo echo
+
+# If any dependencies fail, alert the user
+if (for onedep in tee svn git make python cmake; do (which $onedep &>/dev/null) || break ; done ); then
+ printinfo trail $INFO_OK
+ printinfo space
+else
+ printinfo trail $INFO_ERROR
+ printinfo error $ERROR_CHECK_DEP_2
+ printinfo space
+ exit 1;
+fi
+}
+
+## Check internet status
+check_internet_status()
+{
+if [ "$SKIP_UPDATE" != "true" ]; then
+printinfo info $INFO_INTERNET_STATUS;
+ if ! ping -c 2 google.com &>/dev/null; then
+ printinfo trail $INFO_ERROR
+ return 1;
+ fi
+ printinfo trail $INFO_OK
+ printinfo space
+fi
+}
+
+## Asks if we want to bail out.
+bail_ask()
+{
+echo "$1"
+echo -n $INFO_ABORT
+read -p " [Y/n]: " -n1 continue;
+if [ "$(echo $continue | tr [:upper:] [:lower:])" = "y" -o "$continue" = "" ]; then
+ echo
+ exit 3;
+fi
+echo
+printinfo space
+}
+
+# Our Nice little spinner
+spinner()
+{
+MESSAGE=$@
+if [ x$DEBUG == x"false" ]; then
+ until test -f $LOGDIR/stop; do
+ echo -en "\r | $MESSAGE"
+ sleep 0.1
+ echo -en "\r / $MESSAGE"
+ sleep 0.1
+ echo -en "\r - $MESSAGE"
+ sleep 0.1
+ echo -en "\r \\ $MESSAGE"
+ sleep 0.1
+ done
+ echo -e "\r * $MESSAGE"
+ rm $LOGDIR/stop
+else
+ echo " * $MESSAGE"
+fi
+}
+
+## Checks if a local directory for $1 exist (last part of it),
+## if it does; attempts to git pull, otherwise git clone.
+# TODO: Extend this to support svn, bzr, hg or any others (should be flexible)
+# TODO: put the downloaded files from this function into a separate folder (git/ or something similar)
+get_repo()
+{
+if (echo $1 | grep -q '%writeto%'); then
+ b=`echo $1 | sed 's|.*%writeto%||'`
+else
+ b=`echo $1 | sed 's/.*\///g'`
+fi
+echo ">> $b <<"
+echo
+
+test -f branches/$BRANCH || echo "${ERROR_BRANCH//%s/branches/$BRANCH}"
+
+# Get the branch
+CURRENT_ITEM=$b source branches/$BRANCH
+
+here=$PWD
+if [ -d $b -o -d $b-http ]; then
+ ([ -d $b-http ] && cd $b-http) || cd $b
+ # Revert any patched files
+ if (find . 2>/dev/null | grep -q '\.orig'); then
+ printinfo info $INFO_REVERT_PATCH;
+ echo
+ for orig in `find . -name '*.orig'`; do
+ mv $orig `echo $orig | sed 's,.orig,,'` >/dev/null
+ done
+ fi
+ if [ "$SKIP_UPDATE" != "true" -a "$UNDO_LAST_UPDATE" != "yes" -a -z "`echo $b | grep -e tar.bz2 -e tar.gz -e zip`" ]; then
+ spinner "${INFO_UPDATE//%s/$b}" &
+ SPPID=$!
+ git pull | grep -q "Already up-to-date."
+ test=`echo $?`
+ touch $LOGDIR/stop
+ sleep 0.4
+ if (! (echo $GIT_BRANCH | grep -qie HEAD -qie master)) && \
+ (git show-branch $GIT_BRANCH &>/dev/null) && \
+ [ x$SWITCH_BRANCH == x"force" ]; then
+ printinfo info "${INFO_SWITCH//%s/'$(echo $GIT_BRANCH | sed 's|.*/||g')'}";
+ echo
+ git checkout -b $(echo $GIT_BRANCH | sed 's|.*/||g') --track $GIT_BRANCH
+ fi
+ cd $here
+ elif [ "$UNDO_LAST_UPDATE" == "yes" -a -z "`echo $b | grep -e tar.bz2 -e tar.gz -e zip`" ]; then
+ printinfo info "${INFO_UNDO//%s/$b}";
+ echo
+ git reset --hard HEAD^ &>/dev/null
+ test=1
+ else test=0
+ fi
+ cd $here
+else
+ if ! (echo $b | grep -qe zip -qe tar.gz -qe tar.bz2); then
+ printinfo info "${INFO_CLONE//%s/$b}";
+ echo
+ git clone $2$1
+ cd $b
+ if (! (echo $GIT_BRANCH | grep -qie HEAD -qie master)) && \
+ (git show-branch $GIT_BRANCH &>/dev/null); then
+ printinfo info "${INFO_SWITCH//%s/'$(echo $GIT_BRANCH | sed 's|.*/||g')'}";
+ echo
+ git checkout -b $(echo $GIT_BRANCH | sed 's|.*/||g') --track $GIT_BRANCH
+ fi
+ cd $here
+ test=1
+ else
+ # download via wget
+ printinfo info "${INFO_DOWNLOAD//%s/$b}";
+ echo
+ if (echo $1 | grep -q '%writeto%'); then
+ wget -O $b -nv `echo $1 | sed 's|%writeto%.*||'`
+ else
+ wget -nv $1
+ fi
+ # extract
+ printinfo info "${INFO_EXTRACT//%s/$b}";
+ echo
+
+ (echo $b | grep -qe tar.bz2 -qe tar.gz -qe zip) && \
+ mkdir $b-http && cd $b-http && \
+ (if (echo $b | grep -q tar.bz2); then
+ tar -xjf $OLDPWD/$b
+ elif (echo $b | grep -q tar.gz); then
+ tar -xzf $OLDPWD/$b
+ elif (echo $b | grep -q zip); then
+ unzip $OLDPWD/$b
+ fi) && \
+ [ -d "$(ls)" ] && export USELESSDIR=$(ls) && mv $USELESSDIR/* ./ && rmdir $USELESSDIR
+
+ cd $here
+ test=1
+ fi
+fi
+
+return $test
+
+printinfo space
+}
+
+#### git-compiz now has a build system that handles more types of builds
+### Start build functions
+
+## Start prebuild functions
+
+# Apply patches
+# $1 == Git object currently being handled
+build_patch()
+{
+LOG_FILE="$LOGDIR/patch-$1.log"
+# CPWD is taken from build_wrapper
+for mypatch in $PATCHES; do
+ # If it exists in a format we can use, apply it
+ if [ -f $mypatch -a x`cat $mypatch | grep GIT_OBJECT | sed 's,GIT_OBJECT=,,'` == x"$1" ]; then
+ printinfo info "${INFO_APPLY//%s/`basename $mypatch`}";
+ echo
+ cd $1
+ # Use --backup here so they can be reverted later on
+ logcmd patch --backup -p1 <$CPWD/$mypatch
+ cd $CPWD
+ fi
+done
+}
+
+# (make) Clean
+# $1 == Git object currently being handled
+build_clean()
+{
+LOG_FILE="$LOGDIR/clean-$1.log"
+# CPWD is taken from build_wrapper
+cd $1
+spinner $INFO_CLEAN &
+SPPID=$!
+if [ -d build -a -f CMakeLists.txt ]; then
+ root rm -rf build
+fi
+logcmd make clean
+EXST=$?
+touch $LOGDIR/stop
+sleep 0.4
+if [ $EXST -ne 0 ]; then
+ printinfo warning $WARNING_CLEAN;
+ cd $CPWD
+ return 1
+fi
+cd $CPWD
+}
+## End prebuild functions
+
+## Start configure functions
+# autoconf/automake build function
+# $1 == Git object currently being handled
+# $2 == autogen arguments
+build_autoconf()
+{
+LOG_FILE="$LOGDIR/conf-$1.log"
+# CPWD is taken from build_wrapper
+cd $1
+spinner $INFO_CONFIGURE &
+SPPID=$!
+logcmd env PKG_CONFIG_PATH=$DESTDIR$PREFIX/$LIBDIR/pkgconfig:$DESTDIR$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH ./autogen.sh $2
+EXST=$?
+touch $LOGDIR/stop
+sleep 0.4
+if [ $EXST -ne 0 ]; then
+ printinfo error $ERROR_AUTOGEN;
+ printinfo space
+ cd $CPWD
+ return 1
+fi
+cd $CPWD
+}
+
+# cmake build function
+# $1 == Git object currently being handled
+# $2 == cmake arguments
+build_cmake()
+{
+LOG_FILE="$LOGDIR/conf-$1.log"
+# CPWD is taken from build_wrapper
+cd $1
+spinner $INFO_CONFIGURE &
+SPPID=$!
+test -d build || mkdir build
+cd build
+if [ $LIBDIR == "lib64" ]; then
+ logcmd env PKG_CONFIG_PATH=$DESTDIR$PREFIX/$LIBDIR/pkgconfig:$DESTDIR$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH \
+ cmake -D CMAKE_INSTALL_PREFIX=$PREFIX -D LIB_SUFFIX=64 $2 $CPWD/$1
+else
+ logcmd env PKG_CONFIG_PATH=$DESTDIR$PREFIX/$LIBDIR/pkgconfig:$DESTDIR$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH \
+ cmake -D CMAKE_INSTALL_PREFIX=$PREFIX $2 $CPWD/$1
+fi
+EXST=$?
+touch $LOGDIR/stop
+sleep 0.4
+if [ $EXST -ne 0 ]; then
+ printinfo error $ERROR_CMAKE;
+ printinfo space
+ cd $CPWD
+ return 1
+fi
+cd $CPWD
+}
+## End configure functions
+
+# make build function
+# $1 == Git object currently being handled
+# $2 == autoconf/cmake
+build_make()
+{
+LOG_FILE="$LOGDIR/make-$1.log"
+# CPWD is taken from build_wrapper
+cd $1
+if [ x$2 == x"cmake" ]; then
+ test -d build || mkdir build
+ # If this is cmake, move to and STAY in build/
+ cd build
+fi
+if [ x$NOBUILD != x"yes" ]; then
+ spinner $INFO_COMPILE &
+ SPPID=$!
+ logcmd env PKG_CONFIG_PATH=$DESTDIR$PREFIX/$LIBDIR/pkgconfig:$DESTDIR$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH make -j$JOBS
+ EXST=$?
+ touch $LOGDIR/stop
+ sleep 0.4
+ if [ $EXST -ne 0 ]; then
+ printinfo error $ERROR_MAKE;
+ printinfo space
+ cd $CPWD
+ return 1
+ fi
+fi
+
+LOG_FILE="$LOGDIR/install-$1.log"
+spinner $INFO_INSTALL &
+SPPID=$!
+if [ -f autogen.sh ] || [ x$2 == x"cmake" ]; then
+ root env BUILD_GLOBAL=true \
+ PKG_CONFIG_PATH=$DESTDIR$PREFIX/$LIBDIR/pkgconfig:$DESTDIR$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH \
+ make ${DESTDIR:+ DESTDIR=\"$DESTDIR\"} install
+else
+ #Workaround:
+ #If you use the DESTDIR parameter with "make install" to install the extra plugins (like vigo, mousegestures or wizard),
+ #then DESTDIR points to the directory, where the lib*.so files are copied to (usually /usr/lib/compiz, i think).
+ #So if you change DESTDIR to "/mypath" then the extra plugins are copied to "/mypath" and not to "/mypath/usr/lib/compiz".
+ #But all other stuff (like core, plugins-main etc.) is copied correctly.
+ root env PKG_CONFIG_PATH=$DESTDIR$PREFIX/$LIBDIR/pkgconfig:$DESTDIR$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH \
+ BUILD_GLOBAL=true make ${DESTDIR:+ \
+ PREFIX=\"$DESTDIR$PREFIX\" \
+ CLIBDIR=\"$DESTDIR$PREFIX/$LIBDIR\" \
+ DESTDIR=\"$DESTDIR$PREFIX/$LIBDIR/compiz\" \
+ XMLDIR=\"$DESTDIR$PREFIX/share/compiz\" \
+ IMAGEDIR=\"$DESTDIR$PREFIX/share/compiz\" \
+ DATADIR=\"$DESTDIR$PREFIX/share/compiz\" \
+ } install
+fi
+EXST=$?
+touch $LOGDIR/stop
+sleep 0.4
+if [ $EXST -ne 0 ]; then
+ printinfo error $ERROR_SUDO_MAKE;
+ printinfo space
+ cd $CPWD
+ return 1
+fi
+cd $CPWD
+printinfo space
+}
+
+# Build wrapper function
+# $1 == Git object currently being handled
+# $2 == autogen/cmake arguments
+# $3 == Custom command to build
+build_wrapper()
+{
+CPWD=$PWD
+# Check if we are going to skip this...
+if [ "$SKIP_INSTALL" == "true" -o $test -ne 1 ] && [ "$FORCE_REBUILT" != "true" \
+ -a -z "`(for dir in $FORCE_REBUILT; do [ $dir != $1 ] || echo "yes"; done) | grep yes`" ]; then
+ printinfo info "${INFO_SKIP//%s/$1}";
+ echo
+ printinfo space
+ return;
+fi
+# Check if the directory exists
+if [ ! -d $1 ]; then
+ printinfo error "$1 $ERROR_DIRECTORY";
+ printinfo space
+ return 1;
+fi
+# Apply patches
+if [ x$NOBUILD != x"yes" ]; then
+ build_patch "$1"
+fi
+# Export pkgconfig variables
+export PKG_CONFIG_PATH=$DESTDIR$PREFIX/$LIBDIR/pkgconfig:$DESTDIR$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH
+# Search for build type in the following order
+# python
+# autoconf/automake
+# cmake
+# makefile
+# compiz-manager
+# other
+if [ -f $1/setup.py ]; then
+ cd $1
+ printinfo info $INFO_INSTALL;
+ echo
+ root python setup.py install ${DESTDIR:+ --root=$DESTDIR} --prefix=$PREFIX
+ printinfo space
+ cd $CPWD
+elif [ -f $1/autogen.sh ] && [ x$1 != x"opencv" ]; then
+ if [ x$NOBUILD != x"yes" ]; then
+ build_clean "$1"
+ build_autoconf "$1" "$2"
+ fi
+ build_make "$1"
+elif [ -f $1/CMakeLists.txt ] && ! (cat $1/Makefile 2>/dev/null | grep -q 'Compiz plugin Makefile'); then
+ if [ x$NOBUILD != x"yes" ]; then
+ build_clean "$1"
+ build_cmake "$1" "$2"
+ fi
+ build_make "$1" cmake
+elif [ -f $1/Makefile ]; then
+ if [ x$NOBUILD != x"yes" ]; then
+ build_clean "$1"
+ fi
+ build_make "$1"
+elif [ -f $1/compiz-manager ]; then
+ printinfo info $INFO_INSTALL;
+ echo
+ sed -e s:COMPIZ_BIN_PATH=\"/usr/local/bin/\":COMPIZ_BIN_PATH=\"$PREFIX/bin/\": -e s:PLUGIN_PATH=\"/usr/local/lib/compiz/\":PLUGIN_PATH=\"$PREFIX/$LIBDIR/compiz/\": -e s:/lib/:/$LIBDIR/:g $1/compiz-manager >$1/compiz-manager.temp
+ root install -m 755 $1/compiz-manager.temp $DESTDIR$PREFIX/bin/compiz-manager
+ rm $1/compiz-manager.temp
+ printinfo space
+elif [ "$3" != "" ]; then
+ printinfo info $INFO_INSTALL;
+ echo
+ cd $1
+ $3 $2
+ cd $CPWD
+ printinfo space
+else
+ printinfo error $ERROR_BUILD_1;
+ printinfo space
+ return;
+fi
+}
+### End build functions
+
+unofficial_icons()
+{
+b="unofficial-compiz-fusion-icons"
+CPWD=$PWD
+echo ">> $b <<"
+
+if [ ! -d $b ]; then
+ spinner "${INFO_CHECK_OUT//%s/$b}" &
+ SPPID=$!
+ svn co http://compiz-fusion-icons.googlecode.com/svn/trunk $b >/dev/null
+ touch $LOGDIR/stop
+else
+ if [ "$SKIP_UPDATE" != "true" -a -d $b ]; then
+ spinner "${INFO_UPDATE//%s/$b}" &
+ SPPID=$!
+ cd $b
+ svn update | grep -q "At revision"
+ test=$?
+ touch $LOGDIR/stop
+ cd $CPWD
+ fi
+fi
+sleep 0.4
+
+build_wrapper $b none "root ./install.sh --prefix=$DESTDIR$PREFIX --$UNOFFICIAL_ICONS_THEME"
+}
+
+opencv()
+{
+b="opencv"
+CPWD=$PWD
+echo ">> $b <<"
+
+if [ ! -d $b ]; then
+ spinner "${INFO_CHECK_OUT//%s/$b}" &
+ SPPID=$!
+ svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/trunk . >/dev/null
+ touch $LOGDIR/stop
+else
+ if [ "$SKIP_UPDATE" != "true" -a -d $b ]; then
+ spinner "${INFO_UPDATE//%s/$b}" &
+ SPPID=$!
+ cd $b
+ svn update | grep -q "At revision"
+ test=$?
+ touch $LOGDIR/stop
+ cd $CPWD
+ fi
+fi
+
+build_wrapper $b "-D CMAKE_BUILD_TYPE=RELEASE -D BUILD_PYTHON_SUPPORT=ON"
+}
+
+echo
+echo ">>> G I T - C O M P I Z <<<"
+printinfo space
+
+printinfo info "${INFO_LOG_FILE//%s/$LOGDIR}";
+echo
+printinfo space
+
+## Check dependencies and internet status
+check_minimal_dependencies
+
+if ! check_internet_status; then
+ bail_ask $ERROR_INTERNET_STATUS
+fi
+
+## Auto-Update git-compiz script
+if [ "$SKIP_UPDATE" != "true" ]; then
+ b=`echo "users/omega/scripts" | sed 's/.*\///g'`
+ printinfo info "${INFO_UPDATE//%s/git-compiz}";
+ echo
+ git pull | grep -q "Already up-to-date."
+ test=`echo $?`
+
+ if [ $test -ne 1 ]; then
+ printinfo error $INFO_AUTOUPDATE_1;
+ printinfo space
+ else
+ printinfo error $INFO_AUTOUPDATE_2;
+ printinfo space
+ exit 3;
+ fi
+fi
+
+## Get compiz core
+get_repo $CORE $REPO
+
+## Build compiz core first, and no need to continue if it fails.
+if ! build_wrapper core "$ARGS --prefix=$PREFIX --libdir=$PREFIX/$LIBDIR"; then
+ echo $ERROR_CORE;
+ exit 2;
+else
+ sudo make findcompiz_install
+fi
+
+## Get libcompiz
+get_repo $LIBCOMPIZ $REPO
+
+## Build libcompiz second, and no need to continue if it fails.
+if ! build_wrapper libcompizconfig "$ARGS --prefix=$PREFIX --libdir=$PREFIX/$LIBDIR"; then
+ echo $ERROR_LIBCOMPIZ;
+ exit 2;
+else
+ sudo make findcompizconfig_install
+fi
+
+
+## Install OpenCV (required by headtracking plugin)
+if [ x$OPENCV == x"yes" ]; then
+ opencv
+fi
+
+## Build everything else now.
+for a in $BASE $EMERALD $I18N $DE $PLUGINS; do
+ if (echo $a | grep -q '%writeto%'); then
+ b=`echo $a | sed 's|.*%writeto%||'`
+ else
+ b=`echo $a | sed 's/.*\///g'`
+ fi
+ get_repo $a $REPO
+ if ! build_wrapper `([ -d $b ] && echo $b) || ([ -d $b-http ] && echo $b-http)` "$ARGS --prefix=$PREFIX --libdir=$PREFIX/$LIBDIR"; then
+ bail_ask "${ERROR_BUILD_2//%s/$b} !"
+ fi
+done
+
+## Install icons
+if [ x$UNOFFICIAL_ICONS != x"no" ]; then
+ unofficial_icons
+fi
diff --git a/git-compiz.def b/dev/git-compiz.def
index 0d0f42e..f0cf4f0 100644
--- a/git-compiz.def
+++ b/dev/git-compiz.def
@@ -42,9 +42,11 @@ ROOT="sudo"
## Compiz Core
CORE="compiz/core"
+## LibCompiz
+LIBCOMPIZ="compiz/compizconfig/libcompizconfig"
+
## Packages to Install
BASE="
-compiz/compizconfig/libcompizconfig
compiz/plugins-main
compiz/plugins-extra
compiz/plugins-unsupported
diff --git a/git-compiz.dep b/dev/git-compiz.dep
index a61cc7e..a61cc7e 100644
--- a/git-compiz.dep
+++ b/dev/git-compiz.dep
diff --git a/patches/animation-genie-fix.patch b/dev/patches/animation-genie-fix.patch
index 966ca1f..966ca1f 100644
--- a/patches/animation-genie-fix.patch
+++ b/dev/patches/animation-genie-fix.patch
diff --git a/patches/ccsm-rgba.patch b/dev/patches/ccsm-rgba.patch
index 28bd321..28bd321 100755
--- a/patches/ccsm-rgba.patch
+++ b/dev/patches/ccsm-rgba.patch
diff --git a/patches/compiz-disable-libx11-xcb-support.patch b/dev/patches/compiz-disable-libx11-xcb-support.patch
index e013462..e013462 100755
--- a/patches/compiz-disable-libx11-xcb-support.patch
+++ b/dev/patches/compiz-disable-libx11-xcb-support.patch
diff --git a/patches/simple-ccsm-opensuse-enable-desktop-effects.patch b/dev/patches/simple-ccsm-opensuse-enable-desktop-effects.patch
index 517341d..517341d 100755
--- a/patches/simple-ccsm-opensuse-enable-desktop-effects.patch
+++ b/dev/patches/simple-ccsm-opensuse-enable-desktop-effects.patch
diff --git a/patches/suse-11-1-fix.patch b/dev/patches/suse-11-1-fix.patch
index 9733a50..9733a50 100644
--- a/patches/suse-11-1-fix.patch
+++ b/dev/patches/suse-11-1-fix.patch
diff --git a/patches/vmware-workstation-6.5-workaround.patch b/dev/patches/vmware-workstation-6.5-workaround.patch
index 9cb3cba..9cb3cba 100644
--- a/patches/vmware-workstation-6.5-workaround.patch
+++ b/dev/patches/vmware-workstation-6.5-workaround.patch
diff --git a/patches/window-wave.patch b/dev/patches/window-wave.patch
index 2748251..2748251 100755
--- a/patches/window-wave.patch
+++ b/dev/patches/window-wave.patch
diff --git a/dev/po/de.po b/dev/po/de.po
new file mode 100644
index 0000000..5e4b628
--- /dev/null
+++ b/dev/po/de.po
@@ -0,0 +1,93 @@
+##################################################################################
+# Git-Compiz German Translation #
+# This file is distributed under the same license as the Git-Compiz script. #
+##################################################################################
+## HELP MENU' ####################################################################
+##################################################################################
+HELP="
+Aufruf: ./git-compiz [OPTIONEN] ...\n
+Die Standardwerte stehen in Klammern.\n
+Konfiguration:\n
+ --help \t\t\t\t Zeigt diesen Hilfetext an\n
+ --root=sudo|su \t\t\t Gibt die Methode an, mit der man root-Rechte bekommt [sudo]\n
+ --verbose \t\t\t\t Debug Informationen anzeigen\n
+ --branch=BRANCH \t\t\t BRANCH auschecken [HEAD]\n
+Installationsoptionen:\n
+ --prefix=PREFIX \t\t\t Installiert alle Dateien nach PREFIX [/usr]\n
+ --destdir=DESTDIR \t\t\t Installiert alle Dateien nach DESTDIR [/]\n
+ --jobs=N \t\t\t\t Baue Compiz mit N parallelen Jobs,\n
+ \t\t\t\t\t ein guter Wert ist normalerweise die Anzahl der CPU-Kerne plus Eins [3]\n
+Optionale Funktionen:\n
+ --check \t\t\t\t Überprüft, ob Compiz Fusion auf diesem System/Setup läuft\n
+ --check-dep \t\t\t\t Überprüft, ob alle Abhängigkeiten zum Kompilieren erfüllt sind\n
+ --fix-python \t\t\t\t Update python dateien\n
+ --fix-startup \t\t\t\t Füge Fusion-Icon zum Autostart hinzu\n
+ --skip-build \t\t\t\t Nur installieren - kein kompilieren\n
+ --skip-install \t\t\t Nur updaten - keine Installation\n
+ --skip-update \t\t\t\t Nur installieren - kein Update\n
+ --purge \t\t\t\t Entferne alle Dateien von Compiz Fusion\n
+ --rebuild=true|false|item \t\t Baut Alles / Nichts / nur das Objekt (bspw. core) neu [false]\n
+ --force-switch \t\t\t Wechsel zu Branch nach dem Update [no]\n
+ --undo=item \t\t\t\t Stellt die vorletzte Version von 'item' wieder her\n
+Optionale Pakete:\n
+ --with-desktop=all|gnome|kde|kde4 \t Gibt die Desktopumgebungen an, für die Backends kompiliert werden sollen [gnome]\n
+ --disable-protobuf \t\t\t Deaktiviert Protocol Buffers [false]\n
+ --disable-icons \t\t\t Keine Installation der inoffiziellen Icons [false]\n
+ --enable-headtracking \t\t\t Installiert das headtracking plugin\n
+ --enable-gwm-compiz \t\t\t Installiert den SUSE Patch zur Aktivierung von Compiz über Simple-CCSM\n
+"
+##################################################################################
+## ERROR #########################################################################
+##################################################################################
+ERROR_AUTOGEN="autogen.sh meldet Fehler. Abbruch."
+ERROR_BRANCH="WARNING: %s konnte nicht gefunden werden."
+ERROR_BUILD_1="Keine Ahnung wie der Quellcode kompiliert werden soll (keine autogen.sh, Makefile oder cmake vorhanden). Überspringe."
+ERROR_BUILD_2="Konnte %s nicht bauen"
+ERROR_CHECK_DEP_1="Diese Distribution wird noch nicht unterstützt"
+ERROR_CHECK_DEP_2="Sie müssen alle notwendigen Abhängigkeiten installiert haben um dieses Skript verwenden zu können. Führen Sie das Skript mit dem --check-dep Parameter aus."
+ERROR_CMAKE="cmake meldet Fehler. Abbruch."
+ERROR_CONFIGURE="configure meldet Fehler. Abbruch."
+ERROR_CORE="core konnte nicht gebaut werden. Es gibt keinen Grund fortzufahren."
+ERROR_LIBCOMPIZ="libcompizconfig konnte nicht gebaut werden. Es gibt keinen Grund fortzufahren."
+ERROR_DEF_FILE="Die Datei mit den Standardwerten kann nicht gefunden werden."
+ERROR_DEP_FILE="Die Datei mit dem Abhängigkeiten kann nicht gefunden werden"
+ERROR_DIRECTORY="ist kein Verzeichnis. Abbruch."
+ERROR_EXIT="Beende..."
+ERROR_GWM="gnome-wm nicht gefunden"
+ERROR_GWM_SUSE="DIES IST BEREITS OPENSUSE"
+ERROR_INTERNET_STATUS=" -> Sie brauchen eine aufgebaute Internetverbindung um dieses Skript verwenden zu können."
+ERROR_INVALID_OPTION="Unbekannte Option:"
+ERROR_MAKE="make meldet Fehler. Abbruch."
+ERROR_SUDO_MAKE="sudo make install hat einen Fehler zurückgegeben und funktioniert möglicherweise nicht."
+##################################################################################
+## INFO ##########################################################################
+##################################################################################
+INFO_ABORT=" -> Beenden?"
+INFO_APPLY="Wende %s an"
+INFO_AUTOUPDATE_1="Kein Update!"
+INFO_AUTOUPDATE_2="Aktualisiert! (Neustart erforderlich)"
+INFO_CHECK_DEP="Überprüfe minimale Abhängigkeiten"
+INFO_CHECK_OUT="Checke %s aus"
+INFO_CLEAN="Räume auf"
+INFO_CLONE="Klone %s"
+INFO_COMPILE="Kompiliere neue Version"
+INFO_CONFIGURE="Konfiguriere neue Version"
+INFO_DOWNLOAD="Lade %s"
+INFO_ERROR="Fehler!"
+INFO_EXTRACT="Extrahiere %s"
+INFO_FIX_PYTHON="Update python dateien..."
+INFO_FIX_STARTUP="Passe Autostart an..."
+INFO_GWM="Die Aktivierung von Compiz über Simple-CCSM funktioniert nun"
+INFO_INSTALL="Installiere neue Version"
+INFO_INTERNET_STATUS="Überprüfe Internetverbindung"
+INFO_LOG_FILE="Schreibe Logdatei nach %s"
+INFO_OK="OK"
+INFO_REVERT_PATCH="Mache alle Änderungen an Dateien rückgängig"
+INFO_SKIP="Überspringe %s"
+INFO_SWITCH="Wechsel zum %s branch"
+INFO_UNDO="Mache das letzte Update von %s wieder rückgängig"
+INFO_UPDATE="Update %s"
+##################################################################################
+## WARNING #######################################################################
+##################################################################################
+WARNING_CLEAN="Aufräumen fehlgeschlagen."
diff --git a/dev/po/en.po b/dev/po/en.po
new file mode 100644
index 0000000..cb87e99
--- /dev/null
+++ b/dev/po/en.po
@@ -0,0 +1,96 @@
+##################################################################################
+# Git-Compiz English Translation #
+# This file is distributed under the same license as the Git-Compiz script. #
+##################################################################################
+## HELP MENU' ####################################################################
+##################################################################################
+HELP="
+Usage: ./git-compiz [OPTIONS] ...\n
+Defaults are specified in brackets.\n
+Configuration:\n
+ --help \t\t\t\t Display this help and exit\n
+ --root=sudo|su \t\t\t Method to obtain root powers [sudo]\n
+ --verbose \t\t\t\t Display debug information\n
+ --branch=BRANCH \t\t\t Checkout BRANCH [HEAD]\n
+Installation Options:\n
+ --prefix=PREFIX \t\t\t Install files to PREFIX [/usr]\n
+ --destdir=DESTDIR \t\t\t Install files to DESTDIR [/]\n
+ --jobs=N \t\t\t\t Build compiz using N multiple jobs,\n
+ \t\t\t\t\t usually a good number is cores+1 [3]\n
+Optional Features:\n
+ --check \t\t\t\t Test if Compiz Fusion is able to run on\n
+ \t\t\t\t\t your system/setup\n
+ --check-dep \t\t\t\t Check dependencies required to compile\n
+ \t\t\t\t\t compiz\n
+ --fix-python \t\t\t\t Update python path\n
+ --fix-startup \t\t\t\t Add Fusion-Icon to startup session\n
+ --skip-build \t\t\t\t Install only - do NOT build\n
+ --skip-install \t\t\t Update only - do NOT install\n
+ --skip-update \t\t\t\t Install only - do NOT update\n
+ --purge \t\t\t\t Purge everything\n
+ --rebuild=true|false|item \t\t Rebuild an item/everything [false]\n
+ --force-switch \t\t\t Switch the branch after updating [no]\n
+ --undo=item \t\t\t\t Restore item version before last update\n
+Optional Packages:\n
+ --with-desktop=all|gnome|kde|kde4 \t DE to add flags for [gnome]\n
+ --disable-protobuf \t\t\t Disable Protocol Buffers [false]\n
+ --disable-icons \t\t\t Don't install unofficial icons [false]\n
+ --enable-headtracking \t\t\t Install headtracking plugin\n
+ --enable-gwm-compiz \t\t\t Allow SUSE Simple-CCSM patch to enable\n
+ \t\t\t\t\t compiz\n
+"
+##################################################################################
+## ERROR #########################################################################
+##################################################################################
+ERROR_AUTOGEN="autogen.sh reports errors. Bailing out."
+ERROR_BRANCH="WARNING: CANNOT FIND %s"
+ERROR_BUILD_1="Don't know how to build (no autogen.sh or Makefile or cmake). Skipping."
+ERROR_BUILD_2="Failed to build %s"
+ERROR_CHECK_DEP_1="Distro is not yet supported"
+ERROR_CHECK_DEP_2="You must have the needed dependencies to use this script. Run it with the --check-dep parameter."
+ERROR_CMAKE="cmake reports errors. Bailing out."
+ERROR_CONFIGURE="configure reports errors. Bailing out."
+ERROR_CORE="Failed to build core. No reason to continue."
+ERROR_LIBCOMPIZ="Failed to build libcompizconfig. No reason to continue."
+ERROR_DEF_FILE="Can't find defaults file"
+ERROR_DEP_FILE="Can't find dependencies file"
+ERROR_DIRECTORY="isn't a directory. Bailing out."
+ERROR_EXIT="Exiting..."
+ERROR_GWM="gnome-wm not found"
+ERROR_GWM_SUSE="THIS IS ALREADY ON OPENSUSE"
+ERROR_INTERNET_STATUS=" -> You must have an internet connection running to use this script."
+ERROR_INVALID_OPTION="Invalid option specified:"
+ERROR_MAKE="make reports errors. Bailing out."
+ERROR_SUDO_MAKE="sudo make install returned an error and might not work."
+##################################################################################
+## INFO ##########################################################################
+##################################################################################
+INFO_ABORT=" -> Abort?"
+INFO_APPLY="Applying %s"
+INFO_AUTOUPDATE_1="No update!"
+INFO_AUTOUPDATE_2="Updated! (restart required)"
+INFO_CHECK_DEP="Checking minimal dependencies"
+INFO_CHECK_OUT="Checking out %s"
+INFO_CLEAN="Cleaning old compile"
+INFO_CLONE="Cloning %s"
+INFO_COMPILE="Compiling new version"
+INFO_CONFIGURE="Configuring new version"
+INFO_DOWNLOAD="Downloading %s"
+INFO_ERROR="FAIL!"
+INFO_EXTRACT="Extracting %s"
+INFO_FIX_PYTHON="Updating python path..."
+INFO_FIX_STARTUP="Fixing startup session..."
+INFO_GWM="Enabling Compiz via Simple-CCSM will now work"
+INFO_INSTALL="Installing new version"
+INFO_INTERNET_STATUS="Checking internet connection"
+INFO_LOG_FILE="Writing log files to %s"
+INFO_OK="OK"
+INFO_REVERT_PATCH="Reverting patched files"
+INFO_SKIP="Skipping %s"
+INFO_SWITCH="Switching to the %s branch"
+INFO_UNDO="Undoing last update of %s"
+INFO_UPDATE="Updating %s"
+##################################################################################
+## WARNING #######################################################################
+##################################################################################
+WARNING_CLEAN="Failed to clean"
diff --git a/dev/po/es.po b/dev/po/es.po
new file mode 100644
index 0000000..bb425e8
--- /dev/null
+++ b/dev/po/es.po
@@ -0,0 +1,97 @@
+##################################################################################
+# Git-Compiz Traducido al Español #
+# Traduccion telemako telemako1@gmail.com #
+# This file is distributed under the same license as the Git-Compiz script. #
+##################################################################################
+## HELP MENU' ####################################################################
+##################################################################################
+HELP="
+Usar: ./git-compiz [OPCIONES] ...\n
+Las opciones por defecto se especifican entre los corchetes.\n
+Configuracion:\n
+ --help \t\t\t\t Mostrar opciones de ayuda\n
+ --root=sudo|su \t\t\t Metodo para obtener privilegios de Root [sudo]\n
+ --verbose \t\t\t\t Mostrar informacion debug\n
+ --branch=BRANCH \t\t\t Cambia de rama de fuentes [HEAD]\n
+Opciones de Instalacion:\n
+ --prefix=PREFIX \t\t\t Instalar archivos en PREFIX [/usr]\n
+ --destdir=DESTDIR \t\t\t Instalar archivos en DESTDIR [/]\n
+ --jobs=N \t\t\t\t Compilar compiz usando N multiples tareas,\n
+ \t\t\t\t\t usually a good number is cores+1 [3]\n
+Otras Opciones:\n
+ --check \t\t\t\t Comprueba si su sistema esta preparado\n
+ \t\t\t\t\t para instalar y correr compiz\n
+ --check-dep \t\t\t\t Comprueba dependencias necesarias para instalar\n
+ \t\t\t\t\t compiz\n
+ --fix-python \t\t\t\t Actualizar el PATH de python\n
+ --fix-startup \t\t\t\t Añadir Fusion-Icon en inicio de sesion\n
+ --skip-build \t\t\t\t Solo Instala - SIN Compilar\n
+ --skip-install \t\t\t Solo Actualiza - SIN Instalar\n
+ --skip-update \t\t\t\t Solo Instala - SIN Actualizar\n
+ --purge \t\t\t\t Desinstalar todo\n
+ --rebuild=true|false|item \t\t Recompila un objeto/todos [false]\n
+ --force-switch \t\t\t Cambiar de rama a actualizar [no]\n
+ --undo=item \t\t\t\t Restaura Objeto a la version anterior a la ultima actualizacion\n
+Opcional Packages:\n
+ --with-desktop=all|gnome|kde|kde4 \t DE to add flags for [gnome]\n
+ --disable-protobuf \t\t\t Deshabilitar Protocol Buffers [false]\n
+ --disable-icons \t\t\t NO Instalar iconos no oficiales [false]\n
+ --enable-headtracking \t\t\t Instalar plugin headtracking\n
+ --enable-gwm-compiz \t\t\t Permitir SUSE Simple-CCSM patch to enable\n
+ \t\t\t\t\t compiz\n
+"
+##################################################################################
+## ERROR #########################################################################
+##################################################################################
+ERROR_AUTOGEN="autogen.sh ha reportado errores. Bailing out."
+ERROR_BRANCH="Atencion: No Encuentra %s"
+ERROR_BUILD_1="No se como crear (no autogen.sh or Makefile or cmake). Evitando."
+ERROR_BUILD_2="Fallo la compilacion %s"
+ERROR_CHECK_DEP_1="Distribucion no soportada"
+ERROR_CHECK_DEP_2="Faltan dependencias para usar este script. Ejecutalo con el siguiente parametro. --check-dep "
+ERROR_CMAKE="cmake ha reportado errores. Bailing out."
+ERROR_CONFIGURE="configure ha reportado errores. Bailing out."
+ERROR_CORE="Fallo la compilacion del core. No hay razon para continuar."
+ERROR_LIBCOMPIZ="Fallo la compilacion del libcompizconfig. No hay razon para continuar."
+ERROR_DEF_FILE="No se encuentra el archivo por defecto"
+ERROR_DEP_FILE="No se encuentra el archivo de dependencias"
+ERROR_DIRECTORY="No es un directorio."
+ERROR_EXIT="Saliendo..."
+ERROR_GWM="gnome-wm no encontrado"
+ERROR_GWM_SUSE="Esto ya esta en OPENSUSE"
+ERROR_INTERNET_STATUS=" -> Es necesario tener una conexion a internet para utilizar este script."
+ERROR_INVALID_OPTION="Opcion Invalida:"
+ERROR_MAKE="make ha reportado errores. Bailing out."
+ERROR_SUDO_MAKE="sudo make install ha debuelto errores y puede que no funcione."
+##################################################################################
+## INFO ##########################################################################
+##################################################################################
+INFO_ABORT=" -> Abortar?"
+INFO_APPLY="Aplicando %s"
+INFO_AUTOUPDATE_1="Esta Actualizado!"
+INFO_AUTOUPDATE_2="Actualizacion Realizada! (Necesita Reiniciar)"
+INFO_CHECK_DEP="Comprobando Dependencias Minimas"
+INFO_CHECK_OUT="Comprobando %s"
+INFO_CLEAN="Borrar Compilacion Anterior"
+INFO_CLONE="Copiando %s"
+INFO_COMPILE="Compilando nueva version"
+INFO_CONFIGURE="Configurando nueva version"
+INFO_DOWNLOAD="Descargando %s"
+INFO_ERROR="FALLO!"
+INFO_EXTRACT="Extracting %s"
+INFO_FIX_PYTHON="Actualizando python path..."
+INFO_FIX_STARTUP="Cargar en inicio de sesion"
+INFO_GWM="Habilitar compiz via Simple-CCSM will now work"
+INFO_INSTALL="Instalando nueva version"
+INFO_INTERNET_STATUS="Comprobando conexion a internet.."
+INFO_LOG_FILE="Escribiendo en archivo log %s"
+INFO_OK="OK"
+INFO_REVERT_PATCH="Deshacer parches aplicados"
+INFO_SKIP="Evitando %s"
+INFO_SWITCH="Switching to the %s branch"
+INFO_UNDO="Deshaciendo ultima actualizacion de %s"
+INFO_UPDATE="Actualizando %s"
+##################################################################################
+## WARNING #######################################################################
+##################################################################################
+WARNING_CLEAN="Failed to clean"
diff --git a/dev/po/it.po b/dev/po/it.po
new file mode 100644
index 0000000..18d4614
--- /dev/null
+++ b/dev/po/it.po
@@ -0,0 +1,92 @@
+##################################################################################
+# Git-Compiz Italian Translation #
+# This file is distributed under the same license as the Git-Compiz script. #
+##################################################################################
+## HELP MENU' ####################################################################
+##################################################################################
+HELP="
+Usa: ./git-compiz [opzioni] ...\n
+Le opzioni di default sono specificate tra le parentesi quadrate.\n
+Configurazione:\n
+ --help \t\t\t\t Mostra questo menù ed esce dal programma\n
+ --root=sudo|su \t\t\t Metodo di scelta per ottenere i privilegi di root [sudo]\n
+ --verbose \t\t\t\t Mostra le informazioni di debug\n
+ --branch=BRANCH \t\t\t Cambia il ramo di lavoro [HEAD]\n
+Opzioni di installazione:\n
+ --prefix=PREFIX \t\t\t Installa i files in PREFIX [/usr]\n
+ --destdir=DESTDIR \t\t\t Installa i files in DESTDIR [/]\n
+ --jobs=N \t\t\t\t Compila Compiz usando N processi multipli, di solito un buon compromesso è cores+1 [3]\n
+Opzioni aggiuntive:\n
+ --check \t\t\t\t Verifica se Compiz può essere eseguito sul tuo pc\n
+ --check-dep \t\t\t\t Verifica che siano installate le dipendenze richieste per compilare Compiz\n
+ --fix-python \t\t\t\t Aggiorna il percorso di python\n
+ --fix-startup \t\t\t\t Aggiunge Fusion-Icon alla sessione d'avvio\n
+ --skip-build \t\t\t\t Installa soltanto - non compila\n
+ --skip-install \t\t\t Aggiorna soltanto - non installa\n
+ --skip-update \t\t\t\t Installa soltanto - non aggiorna\n
+ --purge \t\t\t\t Elimina completamente Compiz dal pc\n
+ --rebuild=true|false|item \t\t Ricompila un pacchetto/tutti i pacchetti [falso]\n
+ --force-switch \t\t\t Cambia ramo di lavoro dopo l'aggiornamento [no]\n
+ --undo=item \t\t\t\t Ripristino la versione del pacchetto prima dell'ultimo aggiornamento\n
+Opzioni dei pacchetti:\n
+ --with-desktop=all|gnome|kde|kde4 \t Specifica quale interfaccia grafica da usare [gnome]\n
+ --disable-protobuf \t\t\t Disattiva Protocol Buffers [falso]\n
+ --disable-icons \t\t\t Non installa le icone non ufficiali [falso]\n
+ --enable-headtracking \t\t\t Installa headtracking plugin\n
+ --enable-gwm-compiz \t\t\t Applica SUSE Simple-CCSM patch per poter attivare Compiz\n
+"
+##################################################################################
+## ERROR #########################################################################
+##################################################################################
+ERROR_AUTOGEN="Ci sono stati degli errori mentre configuravo il pacchetto con autogen.sh"
+ERROR_BRANCH="Attenzione: non trovo %s"
+ERROR_BUILD_1="Non so come compilare il pacchetto (manca autogen.sh o Makefile o cmake). Ignoro."
+ERROR_BUILD_2="Non riesco a compilare %s"
+ERROR_CHECK_DEP_1="La distribuzione non è ancora supportata"
+ERROR_CHECK_DEP_2="Devi avere le dipendenze installate per poter usare questo programma. Eseguilo con l'opzione --check-dep ."
+ERROR_CMAKE="Ci sono stati degli errori mentre installavo il pacchetto con cmake"
+ERROR_CONFIGURE="Ci sono stati degli errori mentre configuravo il pacchetto."
+ERROR_CORE="Compilazione del pacchetto "core" fallita. Esco dal programma."
+ERROR_LIBCOMPIZ="Compilazione del pacchetto "libcompizconfig" fallita. Esco dal programma."
+ERROR_DEF_FILE="Non trovo il file di default"
+ERROR_DEP_FILE="Non trovo il file delle dipendenze"
+ERROR_DIRECTORY="non è una cartella"
+ERROR_EXIT="Esco..."
+ERROR_GWM="gnome-wm non trovato"
+ERROR_GWM_SUSE="Questo pacchetto è già installato su OPENSUSE"
+ERROR_INTERNET_STATUS=" -> Devi avere una connessione ad internet attiva per poter sfruttare questo programma."
+ERROR_INVALID_OPTION="Opzione data non valida:"
+ERROR_MAKE="Ci sono stati degli errori mentre compilavo il pacchetto con make"
+ERROR_SUDO_MAKE="Ci sono stati degli errori mentre installavo il pacchetto con sudo"
+##################################################################################
+## INFO ##########################################################################
+##################################################################################
+INFO_ABORT=" -> Termina?"
+INFO_APPLY="Sto applicando la patch %s"
+INFO_AUTOUPDATE_1="Già aggiornato!"
+INFO_AUTOUPDATE_2="Aggiornato! (riesegui il programma)"
+INFO_CHECK_DEP="Sto verificando le dipendenze di base"
+INFO_CHECK_OUT="Sto scaricando %s"
+INFO_CLEAN="Sto eliminando le vecchie compilazioni"
+INFO_CLONE="Sto scaricando %s"
+INFO_COMPILE="Sto compilando la nuova versione"
+INFO_CONFIGURE="Sto configurando la nuova versione"
+INFO_DOWNLOAD="Sto scaricando %s"
+INFO_ERROR="Fallito!"
+INFO_EXTRACT="Sto estraendo %s"
+INFO_FIX_PYTHON="Sto sistemando python..."
+INFO_FIX_STARTUP="Sto sistemando la sessione d'avvio..."
+INFO_GWM="Adesso puoi attivare Compiz utilizzando Simple-CCSM"
+INFO_INSTALL="Sto installando la nuova versione"
+INFO_INTERNET_STATUS="Sto verificando lo stato della connessione ad internet"
+INFO_LOG_FILE="Sto scrivendo il file di log %s"
+INFO_OK="Fatto"
+INFO_REVERT_PATCH="Sto ripristinando il backup originale del pacchetto"
+INFO_SKIP="Sto ignorando %s"
+INFO_SWITCH="Sto cambiando l'area di lavoro in %s"
+INFO_UNDO="Sto annullando l'ultimo aggiornamento di %s"
+INFO_UPDATE="Sto aggiornando %s"
+##################################################################################
+## INFO ##########################################################################
+##################################################################################
+WARNING_CLEAN="Eliminazione fallita"
diff --git a/scripts/compiz-check b/dev/scripts/compiz-check
index 7438c21..7438c21 100755
--- a/scripts/compiz-check
+++ b/dev/scripts/compiz-check
diff --git a/scripts/convert-patch b/dev/scripts/convert-patch
index 724bcf5..724bcf5 100755
--- a/scripts/convert-patch
+++ b/dev/scripts/convert-patch
diff --git a/stable/README b/stable/README
new file mode 100755
index 0000000..c78191c
--- /dev/null
+++ b/stable/README
@@ -0,0 +1,107 @@
+ README for GIT-COMPIZ script
+=================================================================
+
+Copyright (C) 2009 omega
+Authors: see file "AUTHORS".
+License: GPL v3, see file "COPYING".
+
+
+A script that build/purge/install git version of:
+-Compiz
+-Compizconfig Settings Manager
+-Compizconfig backend (Gnome-Kde3/4)
+-Compiz configuration system library
+-Emerald & Themes
+-Translations
+-Compiz option code generator
+-Fusion-Icon
+-Main/Extra/Unsupported/3rd Party Plugins
+-OpenCV
+-Unofficial compiz-fusion icons (tango/oxygen)
+
+Changelog
+=========
+http://cgit.compiz-fusion.org/~omega/scripts/
+
+Dependencies
+============
+
+build-essential libxcomposite-dev libpng12-dev libsm-dev libxrandr-dev libxdamage-dev libxinerama-dev libstartup-notification0-dev libgconf2-dev(gnome-only) libgl1-mesa-dev libglu1-mesa-dev libmetacity-dev librsvg2-dev libdbus-1-dev libdbus-glib-1-dev libgnome-desktop-dev(gnome-only) libgnome-window-settings-dev(gnome-only) gitweb curl autoconf automake automake1.9 libtool intltool libxslt1-dev xsltproc libwnck-dev python-dev libX11-xcb-dev(optional) pyrex-mode python-pyrex x11proto-scrnsaver-dev libxss-dev xorg-dev(kde-only) kde-devel(kde3-only) kde4-devel(kde4-only) protobuf-devel(optional)
+
+
+Installation
+============
+
+Remove follow packages: libgnome-compiz-manager0 compiz-extra libcompizconfig0 compiz-dev compiz-gtk compiz-kde compiz-settings libcompizconfig-backend-gconf compiz-config-ini gcompizthemer compiz-plugins libgnome-compiz-manager-dev compizconfig-backend-kde compizconfig-settings-manager python-compizconfig compiz-config-gnome taskbar-compiz compizconfig-plugin compiz-freedesktop-dev compiz-fusion-plugins-unofficial compiz-bcop compiz-ccs-settings-manager libgnome-compiz-manager libcompizconfig0-dev compiztools compizconfig-settings-legacy compiz-fusion-plugins-extra compiz-compcomm-plugins-main compiz-fusion-plugins-unsupported compiz compiz-extra-plugins compiz-fusion-plugins-main libcompizconfig-backend-kconfig compiz-core compiz-decorator gnome-compiz-manager compiz-fusion-plugins-main compiz-gnome libcompizconfig-dev libgnome-compiz-manager0-dev libcompizconfig0 libcompizconfig-backend-gconf libcompizconfig0-dev libcompizconfig-backend-kconfig libcompizconfig-dev libdecoration0 compiz-wrapper
+
+ git clone git://anongit.compiz-fusion.org/users/omega/scripts
+ cd scripts
+ ./git-compiz --purge
+ ./git-compiz --check-dep (you can ignore this step if you're distro isn't supported but you have installed all dependencies)
+ ./git-compiz
+
+If you want to create custom config file (that remember your personal settings):
+
+ cp git-compiz.def git-compiz.local
+ edit git-compiz.local according to your needs
+
+
+If you want to see all features available with this script:
+
+./git-compiz --help
+
+
+Distro Supported/Tested
+=======================
+
+Arch-Linux,Debian,Fedora,Mandriva,Slackware,Suse,Ubuntu/Kubuntu
+
+
+Note
+====
+
+- STARTUP TIME IMPROVEMENTS
+Ubuntu/Debian users should install the packages libprotobuf0, libprotobuf-dev, and protobuf-compiler.
+For Ubuntu 8.10 (Intrepid) and Debian-unstable, they are available in the official repositories.
+
+For Ubuntu 8.04 (Hardy) can be installed after adding the following lines to /etc/apt/sources.list and doing an apt-get update:
+deb http://ppa.launchpad.net/davidf/ubuntu hardy main
+deb-src http://ppa.launchpad.net/davidf/ubuntu hardy main
+
+OpenSUSE, Fedora, and Mandriva users should install the protobuf and protobuf-devel packages. If not available in the official repositories, they can be found at
+http://download.opensuse.org/repositories/home:/LenzGr
+
+Users who want to install from sources can find the latest Protocol Buffers sources at:
+http://code.google.com/p/protobuf/downloads/list
+
+- PATCHES
+Convert the patches using the provided tool (scripts/convert-patch), then add them to git-compiz.local
+
+- OPENCV (required by headtracking plugin)
+ ./git-compiz --enable-opencv
+
+- EXTRAS
+extras/omega_ccsm.profile -> sample compiz profile
+extras/tango_dark.emerald -> emerald theme (tango style)
+extras/git-compiz.local.compiz-0.9 -> sample conf for compiz-0.9
+
+- COMMON ISSUES
+problem: /usr/bin/ld: cannot find -lGL
+fix: sudo ln -s /usr/lib/libGL.so.xxx /usr/lib/libGL.so where xxx is version driver
+
+problem: /bin/sh: /bin/moc: No such file or directory
+fix: sudo ln -s /usr/bin/moc /bin/moc
+
+problem: launching ccsm/fusion-icon there are errors (example: missing module)
+fix: ./git-compiz --fix-python
+
+problem: NVIDIA: could not open the device file /dev/nvidiactl (Permission denied).
+fix: http://ubuntuforums.org/showpost.php?p=7201482&postcount=3
+
+Help
+====
+
+If you have any questions/bug reports/ideas, you can find help in the following
+locations:
+
+http://forum.compiz-fusion.org/showthread.php?t=7744
diff --git a/stable/branches/compiz-0.6 b/stable/branches/compiz-0.6
new file mode 100644
index 0000000..52ab2ac
--- /dev/null
+++ b/stable/branches/compiz-0.6
@@ -0,0 +1,10 @@
+## COMPIZ 0.6 CONFIG FILE FOR GIT-COMPIZ
+
+CORE="compiz-0.6"
+FUSION="0.6"
+
+if ( echo $CURRENT_ITEM | grep -e compiz -e core &>/dev/null); then
+ GIT_BRANCH=origin/$CORE
+else
+ GIT_BRANCH=origin/$FUSION
+fi
diff --git a/stable/branches/compiz-0.8 b/stable/branches/compiz-0.8
new file mode 100644
index 0000000..1eafe82
--- /dev/null
+++ b/stable/branches/compiz-0.8
@@ -0,0 +1,11 @@
+## COMPIZ 0.8 CONFIG FILE FOR GIT-COMPIZ
+# Uses standard bash syntax
+# This is a highly documented example to be compied for making new branches
+
+# Best to define all branches at the top
+COMP_BRANCH="compiz-0.8"
+
+# Here we have our statements
+# CURRENT_ITEM is a variable provided by git-compiz to show what we are
+# handling
+GIT_BRANCH=origin/$COMP_BRANCH
diff --git a/stable/branches/compiz-0.9 b/stable/branches/compiz-0.9
new file mode 100644
index 0000000..295fb02
--- /dev/null
+++ b/stable/branches/compiz-0.9
@@ -0,0 +1,4 @@
+## COMPIZ-0.9 CONFIG FILE FOR GIT-COMPIZ
+COMP_BRANCH="compiz-0.9"
+
+GIT_BRANCH=origin/$COMP_BRANCH
diff --git a/stable/extras/fusion-icon.desktop b/stable/extras/fusion-icon.desktop
new file mode 100644
index 0000000..da10025
--- /dev/null
+++ b/stable/extras/fusion-icon.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Comment=
+Exec=fusion-icon
+Icon=system-run
+Name=compiz fusion
+Type=Application
diff --git a/stable/extras/gnome-wm.replacement b/stable/extras/gnome-wm.replacement
new file mode 100644
index 0000000..fac8cb0
--- /dev/null
+++ b/stable/extras/gnome-wm.replacement
@@ -0,0 +1,459 @@
+#!/bin/bash
+# Replacement gnome-wm to add support for compiz using openSUSE's method
+# Written by Muhammed `some-guy` Uluyol
+
+# Unset sm-client-id
+SMID=
+# default-wm value
+DEFWM=
+
+#read in the arguments
+GET=
+for n in "$@" ; do
+ case "$GET" in
+ smid)
+ SMID=$n
+ GET=
+ ;;
+ defwm)
+ DEFWM=$n
+ GET=
+ ;;
+ *)
+ case "$n" in
+ --sm-client-id)
+ GET=smid
+ ;;
+ --default-wm)
+ GET=defwm
+ ;;
+ esac
+ ;;
+ esac
+done
+
+if [ "x$XDG_CONFIG_HOME" = "x" ]; then
+ COMPIZ_ENABLED_FILE="$HOME/.config/compiz/enable-compiz"
+else
+ COMPIZ_ENABLED_FILE="$XDG_CONFIG_HOME/compiz/enable-compiz"
+fi
+
+if [ -f "$COMPIZ_ENABLED_FILE" ] ; then
+# Run Compiz
+###############################################################################################################################
+# Compiz Manager wrapper script
+#
+# Copyright (c) 2007 Kristian Lyngstøl <kristian@bohemians.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU 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: Treviño (3v1n0) <trevi55@gmail.com>, Ubuntu Packages
+#
+# Much of this code is based on Beryl code, also licensed under the GPL.
+# This script will detect what options we need to pass to compiz to get it
+# started, and start a default plugin and possibly window decorator.
+#
+ARCH=`arch`
+if [ $ARCH == "x86_64" ]; then
+ LIB=lib64
+else
+ LIB=lib
+fi
+
+BIN_PATH=`which compiz` # For window decorators and compiz
+COMPIZ_BIN_PATH=`which compiz | sed 's|/compiz||'`
+PLUGIN_PATH="`echo $COMPIZ_BIN_PATH | sed -e s:/bin:/$LIB:`/compiz"
+GLXINFO=`which glxinfo`
+KWIN=`which kwin`
+METACITY=`which metacity`
+XFWM=`which xfwm`
+COMPIZ_NAME="compiz" # Final name for compiz (compiz.real)
+
+# For Xgl LD_PRELOAD
+LIBGL_NVIDIA="/usr/lib/nvidia/libGL.so.1.2.xlibmesa"
+LIBGL_FGLRX="/usr/lib/fglrx/libGL.so.1.2.xlibmesa"
+LD_LIBRARY_PATH=/usr/X11R6/$LIB/
+# Minimum amount of memory (in kilo bytes) that nVidia cards need
+# to be allowed to start
+# Set to 262144 to require 256MB
+NVIDIA_MEMORY="65536" # 64MB
+NVIDIA_SETTINGS="nvidia-settings" # Assume it's in the path by default
+
+# For detecting what driver is in use, the + is for one or more /'s
+XORG_DRIVER_PATH="/usr/$LIB/xorg/modules/drivers/+"
+if [ x"$KDE_FULL_SESSION" = x"true" ]; then FALLBACKWM="${KWIN}";
+ elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then FALLBACKWM="${METACITY}";
+ elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then FALLBACKWM="${XFWM}";
+fi
+
+FALLBACKWM_OPTIONS="--replace $@"
+
+# Driver whitelist
+WHITELIST="nvidia intel i810 fglrx radeon ati"
+
+# blacklist based on the pci ids
+# See http://wiki.compiz-fusion.org/Hardware/Blacklist for details
+T=" 1002:5954 1002:5854 1002:5955" # ati rs480
+T="$T 1002:4153" # ATI Rv350
+T="$T 8086:2982 8086:2992 8086:29a2 8086:2a02 8086:2a12" # intel 965
+BLACKLIST_PCIIDS="$T"
+unset T
+
+COMPIZ_OPTIONS="--ignore-desktop-hints --sm-client-id $SMID"
+COMPIZ_PLUGINS=""
+ENV=""
+
+# Use emerald by default if it exist
+USE_EMERALD="yes"
+
+# No indirect by default
+INDIRECT="no"
+
+# Default X.org log if xset q doesn't reveal it
+XORG_DEFAULT_LOG="/var/log/Xorg.0.log"
+
+# Set to yes to enable verbose
+VERBOSE="yes"
+
+# Echos the arguments if verbose
+verbose()
+{
+ if [ "x$VERBOSE" = "xyes" ]; then
+ printf "$*"
+ fi
+}
+
+# abort script and run fallback windowmanager
+abort_with_fallback_wm()
+{
+ if [ "x$SKIP_CHECKS" = "xyes" ]; then
+ verbose "SKIP_CHECKS is yes, so continuing despite problems.\n"
+ return 0;
+ fi
+
+ if [ "x$CM_DRY" = "xyes" ]; then
+ verbose "Dry run failed: Problems detected with 3D support.'n"
+ exit 1;
+ fi
+
+ verbose "aborting and using fallback: $FALLBACKWM \n"
+
+ if [ -x $FALLBACKWM ]; then
+ exec $FALLBACKWM $FALLBACKWM_OPTIONS
+ else
+ printf "no $FALLBACKWM found, exiting\n"
+ exit 1
+ fi
+}
+
+# Check for non power of two texture support
+check_npot_texture()
+{
+ verbose "Checking for non power of two support: "
+ if glxinfo 2> /dev/null | egrep -q '(GL_ARB_texture_non_power_of_two|GL_NV_texture_rectangle|GL_EXT_texture_rectangle|GL_ARB_texture_rectangle)' ; then
+ verbose "present. \n";
+ return 0;
+ else
+ verbose "Not present. \n"
+ return 1;
+ fi
+
+}
+
+# Check for presence of FBConfig
+check_fbconfig()
+{
+ verbose "Checking for FBConfig: "
+ if [ "x$INDIRECT" = "xyes" ]; then
+ $GLXINFO -i | grep -q GLX.*fbconfig
+ FB=$?
+ else
+ $GLXINFO | grep -q GLX.*fbconfig
+ FB=$?
+ fi
+
+ if [ $FB = "0" ]; then
+ unset FB
+ verbose "present. \n"
+ return 0;
+ else
+ unset FB
+ verbose "not present. \n"
+ return 1;
+ fi
+}
+
+
+# Check for TFP
+check_tfp()
+{
+ verbose "Checking for texture_from_pixmap: "
+ if [ $($GLXINFO 2>/dev/null | grep GLX_EXT_texture_from_pixmap -c) -gt 2 ] ; then
+ verbose "present. \n"
+ return 0;
+ else
+ verbose "not present. \n"
+ if [ "$INDIRECT" = "yes" ]; then
+ unset LIBGL_ALWAYS_INDIRECT
+ INDIRECT="no"
+ return 1;
+ else
+ verbose "Trying again with indirect rendering:\n";
+ INDIRECT="yes"
+ export LIBGL_ALWAYS_INDIRECT=1
+ check_tfp;
+ return $?
+ fi
+ fi
+}
+
+# Check wether the composite extension is present
+check_composite()
+{
+ verbose "Checking for Composite extension: "
+ if xdpyinfo -queryExtensions | grep -q Composite ; then
+ verbose "present. \n";
+ return 0;
+ else
+ verbose "not present. \n";
+ return 1;
+ fi
+}
+
+# Detects if Xdmx is running
+check_xdmx()
+{
+ verbose "Checking for Xdmx: "
+ if xdpyinfo | grep -q DMX ; then
+ verbose "present. \n"
+ return 0;
+ else
+ verbose "not present. \n"
+ return 1;
+ fi
+}
+
+# Detects if Xgl is running
+check_xgl()
+{
+ verbose "Checking for Xgl: "
+ if xvinfo | grep -q Xgl ; then
+ verbose "present. \n"
+ return 0;
+ else
+ verbose "not present. \n"
+ return 1;
+ fi
+}
+
+# Check if the nVidia card has enough video ram to make sense
+check_nvidia_memory()
+{
+ MEM=$(${NVIDIA_SETTINGS} -q VideoRam | egrep Attribute\ \'VideoRam\'\ .*: | cut -d: -f3 | sed 's/[^0-9]//g')
+ if [ $MEM -lt $NVIDIA_MEMORY ]; then
+ verbose "Less than ${NVIDIA_MEMORY}kb of memory and nVidia";
+ return 1;
+ fi
+ return 0;
+}
+
+# Check for existence if NV-GLX
+check_nvidia()
+{
+ if [ ! -z $NVIDIA_INTERNAL_TEST ]; then
+ return $NVIDIA_INTERNAL_TEST;
+ fi
+ verbose "Checking for nVidia: "
+ if xdpyinfo | grep -q NV-GLX ; then
+ verbose "present. \n"
+ NVIDIA_INTERNAL_TEST=0
+ return 0;
+ else
+ verbose "not present. \n"
+ NVIDIA_INTERNAL_TEST=1
+ return 1;
+ fi
+}
+
+# Check if the max texture size is large enough compared to the resolution
+check_texture_size()
+{
+ TEXTURE_LIMIT=$(glxinfo -l | grep GL_MAX_TEXTURE_SIZE | sed 's/.*=[^0-9]//g')
+ RESOLUTION=$(xdpyinfo | grep -i dimensions: | sed 's/[^0-9]*pixels.*(.*).*//' | sed 's/[^0-9x]*//')
+ VRES=$(echo $RESOLUTION | sed 's/.*x//')
+ HRES=$(echo $RESOLUTION | sed 's/x.*//')
+ verbose "Comparing resolution ($RESOLUTION) to maximum 3D texture size ($TEXTURE_LIMIT): ";
+ if [ $VRES -gt $TEXTURE_LIMIT ] || [ $HRES -gt $TEXTURE_LIMIT ]; then
+ verbose "Failed.\n"
+ return 1;
+ fi
+ verbose "Passed.\n"
+ return 0
+}
+
+# check driver whitelist
+running_under_whitelisted_driver()
+{
+ LOG=$(xset q|grep "Log file"|awk '{print $3}')
+ if [ "$LOG" = "" ]; then
+ verbose "xset q doesn't reveal the location of the log file. Using fallback $XORG_DEFAULT_LOG \n"
+ LOG=$XORG_DEFAULT_LOG;
+ fi
+ if [ -z "$LOG" ];then
+ verbose "AIEEEEH, no Log file found \n"
+ verbose "$(xset q) \n"
+ return 0
+ fi
+ for DRV in ${WHITELIST}; do
+ if egrep -q "Loading .*${DRV}_drv\.so" $LOG &&
+ ! egrep -q "Unloading .*${DRV}_drv\.so" $LOG;
+ then
+ return 0
+ fi
+ done
+ verbose "No whitelisted driver found\n"
+ return 1
+}
+
+# check pciid blacklist
+have_blacklisted_pciid()
+{
+ OUTPUT=$(/sbin/lspci -n)
+ for ID in ${BLACKLIST_PCIIDS}; do
+ if echo "$OUTPUT" | egrep -q "$ID"; then
+ verbose "Blacklisted PCIID '$ID' found \n"
+ return 0
+ fi
+ done
+ OUTPUT=$(/sbin/lspci -vn | grep -i VGA)
+ verbose "Detected PCI ID for VGA: $OUTPUT\n"
+ return 1
+}
+
+build_env()
+{
+ if check_nvidia; then
+ ENV="__GL_YIELD=NOTHING "
+ fi
+ if [ "$INDIRECT" = "yes" ]; then
+ ENV="$ENV LIBGL_ALWAYS_INDIRECT=1 "
+ fi
+ if check_xgl; then
+ if [ -f ${LIBGL_NVIDIA} ]; then
+ ENV="$ENV LD_PRELOAD=${LIBGL_NVIDIA}"
+ verbose "Enabling Xgl with nVidia drivers...\n"
+ fi
+ if [ -f ${LIBGL_FGLRX} ]; then
+ ENV="$ENV LD_PRELOAD=${LIBGL_FGLRX}"
+ verbose "Enabling Xgl with fglrx ATi drivers...\n"
+ fi
+ fi
+
+ ENV="$ENV FROM_WRAPPER=yes"
+
+ if [ -n "$ENV" ]; then
+ export $ENV
+ fi
+}
+
+build_args()
+{
+ if [ "x$INDIRECT" = "xyes" ]; then
+ COMPIZ_OPTIONS="$COMPIZ_OPTIONS --indirect-rendering "
+ fi
+ if check_nvidia; then
+ if [ "x$INDIRECT" != "xyes" ]; then
+ COMPIZ_OPTIONS="$COMPIZ_OPTIONS --loose-binding"
+ fi
+ fi
+}
+
+####################
+# Execution begins here.
+
+# 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
+
+# Don't use compiz when running the failsafe session
+if [ "x$GNOME_DESKTOP_SESSION_ID" = "xFailsafe" ]; then
+ abort_with_fallback_wm
+fi
+
+if [ "x$LIBGL_ALWAYS_INDIRECT" = "x1" ]; then
+ INDIRECT="yes";
+fi
+
+# if we run under Xdmx
+if check_xdmx; then
+ # check if we have the required bits to run compiz and if not,
+ # fallback
+ if ! check_composite; then
+ abort_with_fallback_wm
+ fi
+
+# if we run under Xgl, we can skip some tests here
+elif ! check_xgl; then
+ # if vesa or vga are in use, do not even try glxinfo (LP#119341)
+ if ! running_under_whitelisted_driver || have_blacklisted_pciid; then
+ abort_with_fallback_wm
+ fi
+ # check if we have the required bits to run compiz and if not,
+ # fallback
+ if ! check_tfp || ! check_npot_texture || ! check_composite || ! check_texture_size; then
+ abort_with_fallback_wm
+ fi
+
+ if check_nvidia && ! check_nvidia_memory; then
+ abort_with_fallback_wm
+ fi
+
+ if ! check_fbconfig; then
+ abort_with_fallback_wm
+ fi
+fi
+
+# load the ccp plugin if present and fallback to plain gconf if not
+if [ -f ${PLUGIN_PATH}libccp.so ]; then
+ COMPIZ_PLUGINS="$COMPIZ_PLUGINS ccp"
+elif [ -f ${PLUGIN_PATH}libgconf.so ]; then
+ COMPIZ_PLUGINS="$COMPIZ_PLUGINS core glib gconf"
+fi
+
+# get environment
+build_env
+build_args
+
+if [ "x$CM_DRY" = "xyes" ]; then
+ verbose "Dry run finished: everything should work with regards to Compiz and 3D.\n"
+ exit 0;
+fi
+
+${COMPIZ_BIN_PATH}${COMPIZ_NAME} $COMPIZ_OPTIONS "$@" $COMPIZ_PLUGINS || exec $FALLBACKWM $FALLBACKWM_OPTIONS
+###############################################################################################################################
+else
+ exec gnome-wm.real $@
+fi
diff --git a/extras/omega_ccsm.profile b/stable/extras/omega_ccsm.profile
index 5e0dcf4..5e0dcf4 100644
--- a/extras/omega_ccsm.profile
+++ b/stable/extras/omega_ccsm.profile
diff --git a/extras/tango_dark.emerald b/stable/extras/tango_dark.emerald
index c654bf3..c654bf3 100644
--- a/extras/tango_dark.emerald
+++ b/stable/extras/tango_dark.emerald
Binary files differ
diff --git a/git-compiz b/stable/git-compiz
index b4e4188..b4e4188 100755
--- a/git-compiz
+++ b/stable/git-compiz
diff --git a/extras/git-compiz.local.compiz-0.8 b/stable/git-compiz.def
index 1572a78..1572a78 100644
--- a/extras/git-compiz.local.compiz-0.8
+++ b/stable/git-compiz.def
diff --git a/stable/git-compiz.dep b/stable/git-compiz.dep
new file mode 100644
index 0000000..a61cc7e
--- /dev/null
+++ b/stable/git-compiz.dep
@@ -0,0 +1,42 @@
+#!/bin/bash
+#########################################################################################################################################
+####### DO NOT EDIT THIS FILE ! #########################################################################################################
+#########################################################################################################################################
+####### CHECK - DEP #####################################################################################################################
+#########################################################################################################################################
+sid_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.1 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcupsys2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo-dev libmetacity-dev libmng-dev libogg-dev libopenexr-dev liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.1-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils mesa-utils librsvg2-common libnotify-dev libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libxtst-dev cmake kdebase-dev python-lxml"
+
+lenny_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.1 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcupsys2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo-dev libmetacity-dev libmng-dev libogg-dev libopenexr-dev liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.1-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils mesa-utils librsvg2-common libnotify-dev libhighgui1 libhighgui-dev libxtst-dev libprotobuf0 libprotobuf-dev protobuf-compiler cmake kdebase-dev python-lxml"
+
+gutsy_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.1 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcupsys2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo-dev libmetacity-dev libmng-dev libogg-dev libopencdk8-dev libopenexr-dev libopenexr2c2a liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.1-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils librsvg2-common libnotify-dev mesa-utils libcv1 libcv-dev libcvaux1 libcvaux-dev libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libxtst-dev cmake python-lxml"
+
+hardy_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.2 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcupsys2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo-dev libmetacity-dev libmng-dev libogg-dev libopencdk10-dev libopenexr-dev liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.2-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils librsvg2-common libnotify1 libnotify-dev libx11-xcb1 libx11-xcb-dev mesa-utils libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libxtst-dev libprotobuf0 libprotobuf-dev protobuf-compiler cmake python-lxml"
+
+intrepid_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.2 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcupsys2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo-dev libmetacity-dev libmng-dev libogg-dev libopenexr-dev liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.2-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils librsvg2-common libnotify1 libnotify-dev libx11-xcb1 libx11-xcb-dev mesa-utils libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libxtst-dev libprotobuf0 libprotobuf-dev protobuf-compiler cmake python-lxml"
+
+jaunty_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.2 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcupsys2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo-dev libmetacity-dev libmng-dev libogg-dev libopenexr-dev liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.2-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils librsvg2-common libnotify1 libnotify-dev libx11-xcb1 libx11-xcb-dev mesa-utils libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libxtst-dev libprotobuf3 libprotobuf-dev protobuf-compiler cmake python-lxml"
+
+karmic_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.2 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcups2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo2-dev libmetacity-dev libmng-dev libogg-dev libopenexr-dev liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.2-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils librsvg2-common libnotify1 libnotify-dev libx11-xcb1 libx11-xcb-dev mesa-utils libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libxtst-dev libprotobuf3 libprotobuf-dev protobuf-compiler cmake python-lxml"
+
+lucid_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.2 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcups2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo2-dev libmetacity-dev libmng-dev libogg-dev libopenexr-dev liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.2-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils librsvg2-common libnotify1 libnotify-dev libx11-xcb1 libx11-xcb-dev mesa-utils libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libxtst-dev libprotobuf3 libprotobuf-dev protobuf-compiler cmake python-lxml libboost-dev libboost-serialization-dev kdelibs5-dev"
+
+maverick_check_dep="subversion git-core automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.2 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcups2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo2-dev libmetacity-dev libmng-dev libogg-dev libopenexr-dev liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.2-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev python-all-dev xsltproc libxss1 libxss-dev x11proto-scrnsaver-dev coreutils librsvg2-common libnotify1 libnotify-dev libx11-xcb1 libx11-xcb-dev mesa-utils libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libxtst-dev libprotobuf3 libprotobuf-dev protobuf-compiler cmake python-lxml libboost-dev libboost-serialization-dev kdelibs5-dev"
+
+
+suse_check_dep="subversion Mesa-devel freeglut-devel fuse-devel gcc-c++ intltool librsvg-devel libwnck-devel pango-devel perl-XML-Parser update-desktop-files xorg-x11-devel pyrex autoconf automake libxslt-devel pkg-config libxslt startup-notification-devel bzip2 mDNSResponder-lib cairo-devel dbus-1-devel libjpeg-devel glibc-devel libnotify-devel cmake glib2-devel gtk2-devel libxml2-devel python-setuptools python-devel python-gtk gconf2-devel metacity metacity-devel gnome-control-center-devel gnome-control-center gnome-desktop-devel libxml2-python kdebase3-devel kdelibs3-devel kde4-kwin kdebase4-workspace-devel libkde4-devel protobuf protobuf-devel python-lxml"
+
+fedora_check_dep="subversion automake intltool libxcb xcb-proto libxcb-devel libX11 git-core libtool python Pyrex python-devel perl gettext desktop-file-utils libX11-devel libdrm-devel libwnck-devel libXfixes-devel libXrandr-devel libXrender-devel gcc-c++ libXres-devel libXtst-devel libXcomposite-devel libXdamage-devel libXext-devel libXt-devel libXmu-devel libICE-devel libSM-devel dbus-devel qt-devel gnome-desktop-devel control-center-devel GConf2-devel librsvg2-devel fuse-devel metacity-devel mesa-libGLU-devel kdebase-workspace-devel dbus-qt-devel libxslt-devel pkgconfig util-linux cairo-devel pango-devel libjpeg-devel gtk2-devel kdebase3-devel protobuf protobuf-devel cmake python-lxml libXScrnSaver libXScrnSaver-devel"
+
+mandriva_check_dep="subversion automake intltool libxcb xcb-proto libxcb-devel libX11 git-core libtool python Pyrex python-devel perl gettext desktop-file-utils libX11-devel libdrm-devel libXt-devel libXmu-devel dbus-devel qt-devel gnome-desktop-devel control-center-devel GConf2-devel librsvg2-devel fuse-devel metacity-devel mesa-libGLU-devel kdebase-workspace-devel dbus-qt-devel libxslt-devel pkgconfig util-linux cairo-devel pango-devel libjpeg-devel gtk2-devel kdebase3-devel protobuf protobuf-devel x11-util-macros libxext-devel libxtst-devel libxcursor-devel libxrender-devel libxcomposite-devel libxdamage-devel libxinerama-devel libxrandr-devel libxfixes-devel freetype2-devel xft2-devel fontconfig-devel mesagl-devel mesaglu-devel libpng-devel zlib-devel dbus-glib-devel libGConf2-devel libgnome-window-settings-devel libwnck-devel libgnome-menu-devel gnome-panel-devel libglade2-devel startup-notification-devel kde3-macros kdebase4-devel kdebase4-workspace-devel bonoboui-devel libxslt-proc librsvg-devel libcairo-devel libsvg-cairo-devel libdbus-qt-1-devel png-devel libice-devel libsm-devel GL-devel glib2-devel cmake python-lxml"
+
+slackware_check_dep="python pygtk pygobject pycairo pyrex"
+
+arch_check_dep="pygtk libxslt libxrandr libxml2 libpng librsvg libxcomposite libxdamage pyrex git libx11"
+
+#########################################################################################################################################
+####### PURGE FUNCTION ##################################################################################################################
+#########################################################################################################################################
+
+ubuntu_purge="compiz compiz-core compiz-dev compiz-fusion-bcop compiz-fusion-plugins-extra compiz-fusion-plugins-main compiz-gnome compiz-plugins compiz-wrapper compizconfig-backend-gconf desktop-effects-kde libcompizconfig0 libcompizconfig0-dev libdecoration0 libdecoration0-dev compiz-fusion-plugins-unsupported compiz-kde compizconfig-backend-kconfig compizconfig-settings-manager emerald fusion-icon libemeraldengine0 python-compizconfig simple-ccsm"
+
+data_to_purge="/etc/compiz* /etc/xdg/compiz* /home/*/.cache/compizconfig /home/*/.config/compiz* /home/*/.compiz* /home/*/.gconf/apps/compiz* /root/.compiz* /usr/*/compiz* /usr/*/bcop /usr/*/ccsm /usr/*/emerald* /usr/bin/fusion-icon /usr/bin/gtk-window-decorator /usr/etc/gconf/schemas/compiz* /usr/lib*/libcompiz* /usr/lib*/libdecoration* /usr/lib*/libemerald* /usr/lib*/pkgconfig/compiz* /usr/lib*/pkgconfig/emerald* /usr/lib*/pkgconfig/libcompiz* /usr/lib*/pkgconfig/libdecoration* /usr/lib*/pkgconfig/libemerald* /usr/lib*/python*/site-packages/ccsm* /usr/lib*/python*/site-packages/compiz* /usr/lib*/window-manager-settings/libcompiz* /usr/share/pkgconfig/bcop.pc /usr/share/locale*/*/*/compiz* /usr/share/locale*/*/*/ccsm* /usr/share/locale*/*/*/emerald* /usr/local/*/compiz* /usr/local/*/bcop /usr/local/*/ccsm /usr/local/*/emerald* /usr/local/bin/fusion-icon /usr/local/bin/gtk-window-decorator /usr/local/etc/gconf/schemas/compiz* /usr/local/include/compiz* /usr/local/lib*/libcompiz* /usr/local/lib*/libdecoration* /usr/local/lib*/libemerald* /usr/local/lib*/pkgconfig/emerald* /usr/local/lib*/pkgconfig/compiz* /usr/local/lib*/pkgconfig/libcompiz* /usr/local/lib*/pkgconfig/libdecoration* /usr/local/lib*/pkgconfig/libemerald* /usr/local/lib*/python*/site-packages/ccsm* /usr/local/lib*/python*/site-packages/compiz* /usr/local/lib*/window-manager-settings/libcompiz* /usr/local/share/pkgconfig/bcop.pc /usr/local/share/locale*/*/*/compiz* /usr/local/share/locale*/*/*/ccsm* /usr/local/share/locale*/*/*/emerald* /usr/share/app-install/desktop/compiz.desktop /usr/share/applications/compiz.desktop /usr/share/dbus-1/services/org.compiz_fusion.deskmenu.service /usr/share/gnome/wm-properties/compiz* /usr/share/app-install/desktop/emerald-theme-manager.desktop /usr/share/app-install/desktop/fusion-icon.desktop /usr/share/app-install/icons/fusion-icon.png /usr/share/applications/fusion-icon.desktop /usr/share/icons/hicolor/*/apps/fusion-icon.png"
diff --git a/stable/patches/animation-genie-fix.patch b/stable/patches/animation-genie-fix.patch
new file mode 100644
index 0000000..966ca1f
--- /dev/null
+++ b/stable/patches/animation-genie-fix.patch
@@ -0,0 +1,29 @@
+GIT_OBJECT=plugins-main
+
+---
+diff --git a/src/animation/animation.c b/src/animation/animation.c
+index fd1311a..58ab4df 100644
+--- a/src/animation/animation.c
++++ b/src/animation/animation.c
+@@ -1250,7 +1250,7 @@ static const CompMetadataOptionInfo animScreenOptionInfo[] = {
+ { "horizontal_folds_zoom_to_taskbar", "bool", 0, 0, 0 },
+ { "magic_lamp_moving_end", "bool", 0, 0, 0 },
+ { "magic_lamp_grid_res", "int", "<min>4</min>", 0, 0 },
+- { "magic_lamp_max_waves", "int", "<min>3</min>", 0, 0 },
++ { "magic_lamp_max_waves", "int", "<min>0</min>", 0, 0 },
+ { "magic_lamp_amp_min", "float", "<min>200</min>", 0, 0 },
+ { "magic_lamp_amp_max", "float", "<min>200</min>", 0, 0 },
+ { "magic_lamp_open_start_width", "int", "<min>0</min>", 0, 0 },
+diff --git a/metadata/animation.xml.in b/metadata/animation.xml.in
+index 670f589..b7525f9 100644
+--- a/metadata/animation.xml.in
++++ b/metadata/animation.xml.in
+@@ -450,7 +450,7 @@
+ <_short>Magic Lamp Max Waves</_short>
+ <_long>The maximum number of waves for Magic Lamp.</_long>
+ <default>3</default>
+- <min>3</min>
++ <min>0</min>
+ <max>20</max>
+ </option>
+ <option name="magic_lamp_amp_min" type="float">
diff --git a/stable/patches/ccsm-rgba.patch b/stable/patches/ccsm-rgba.patch
new file mode 100755
index 0000000..28bd321
--- /dev/null
+++ b/stable/patches/ccsm-rgba.patch
@@ -0,0 +1,36 @@
+GIT_OBJECT=ccsm
+From fb88cb790a08e928c5e6656f8334264c5ae9f93a Mon Sep 17 00:00:00 2001
+From: Kevin Lange <klange@ogunderground.com>
+Date: Wed, 5 Mar 2008 09:26:53 -0500
+Subject: [PATCH] Added RGBA colormap support to the GUI
+
+---
+ ccm/Window.py | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/ccm/Window.py b/ccm/Window.py
+index 09306da..84f1d76 100644
+--- a/ccm/Window.py
++++ b/ccm/Window.py
+@@ -42,6 +42,10 @@ class MainWin(gtk.Window):
+
+ def __init__(self, Context, pluginPage=None, categoryName=None):
+ gtk.Window.__init__(self)
++ self.gtk_screen = self.get_screen()
++ colormap = self.gtk_screen.get_rgba_colormap()
++ if colormap:
++ gtk.widget_set_default_colormap(colormap)
+ self.ShowingPlugin = None
+ self.Context = Context
+ self.connect("destroy", self.Quit)
+@@ -99,6 +103,7 @@ class MainWin(gtk.Window):
+ self.ToggleCategory(None, categoryName)
+
+ def Quit(self, *args):
++ gtk.widget_pop_colormap()
+ gtk.main_quit()
+
+ def ResetMainWidgets(self):
+--
+1.5.2.5
+
diff --git a/stable/patches/compiz-disable-libx11-xcb-support.patch b/stable/patches/compiz-disable-libx11-xcb-support.patch
new file mode 100755
index 0000000..e013462
--- /dev/null
+++ b/stable/patches/compiz-disable-libx11-xcb-support.patch
@@ -0,0 +1,52 @@
+GIT_OBJECT=core
+
+---
+diff --git a/configure.ac b/configure.ac
+index a15bf34..3c3f45f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -113,8 +113,7 @@ AC_SUBST(imagedir)
+ metadatadir=$datadir/compiz
+ AC_SUBST(metadatadir)
+
+-COMPIZ_REQUIRES="x11-xcb \
+- xcomposite \
++COMPIZ_REQUIRES="xcomposite \
+ xfixes \
+ xdamage \
+ xrandr \
+diff --git a/include/compiz-core.h b/include/compiz-core.h
+index ade40c5..47cac9c 100644
+--- a/include/compiz-core.h
++++ b/include/compiz-core.h
+@@ -33,7 +33,7 @@
+ #include <stdio.h>
+ #include <sys/time.h>
+
+-#include <X11/Xlib-xcb.h>
++#include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/extensions/Xdamage.h>
+ #include <X11/extensions/Xcomposite.h>
+@@ -716,8 +716,6 @@ typedef void (*FiniPluginForDisplayProc) (CompPlugin *plugin,
+ struct _CompDisplay {
+ CompObject object;
+
+- xcb_connection_t *connection;
+-
+ Display *display;
+ CompScreen *screens;
+
+diff --git a/src/display.c b/src/display.c
+index 0e660a6..c217adb 100644
+--- a/src/display.c
++++ b/src/display.c
+@@ -2016,8 +2016,6 @@ addDisplay (const char *name)
+ return FALSE;
+ }
+
+- d->connection = XGetXCBConnection (dpy);
+-
+ if (!compInitDisplayOptionsFromMetadata (d,
+ &coreMetadata,
+ coreDisplayOptionInfo,
diff --git a/stable/patches/simple-ccsm-opensuse-enable-desktop-effects.patch b/stable/patches/simple-ccsm-opensuse-enable-desktop-effects.patch
new file mode 100755
index 0000000..517341d
--- /dev/null
+++ b/stable/patches/simple-ccsm-opensuse-enable-desktop-effects.patch
@@ -0,0 +1,295 @@
+GIT_OBJECT=simple-ccsm
+
+---
+From a9248818957ed0cc3e903e016767da7f260cbe1e Mon Sep 17 00:00:00 2001
+From: Patrick Niklaus <marex@opencompositing.org>
+Date: Sun, 11 May 2008 20:00:25 +0200
+Subject: [PATCH] Added enable desktop effects button
+
+Use simple-ccsm to handle enabling compiz and asking the user for overrides, when needed.
+---
+ simple-ccsm.desktop | 5 +-
+ simple-ccsm.glade | 73 +++++++++++++++++++++-----------
+ simple-ccsm.in | 116 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 164 insertions(+), 30 deletions(-)
+
+diff --git a/simple-ccsm.desktop b/simple-ccsm.desktop
+index 76c64e0..7847e8d 100644
+--- a/simple-ccsm.desktop
++++ b/simple-ccsm.desktop
+@@ -1,9 +1,10 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+-Name=Simple CompizConfig Settings Manager
+-Comment=Configure Compiz with CompizConfig
++Name=Desktop Effects
++Comment=Configure Compiz desktop effects
+ Icon=simple-ccsm
+ Exec=simple-ccsm
+ Terminal=false
+ Type=Application
+ Categories=Compiz;Settings;DesktopSettings;
++StartupNotify=true
+diff --git a/simple-ccsm.glade b/simple-ccsm.glade
+index 5916537..19e8315 100644
+--- a/simple-ccsm.glade
++++ b/simple-ccsm.glade
+@@ -13,50 +13,73 @@
+ <property name="border_width">10</property>
+ <property name="spacing">12</property>
+ <child>
+- <widget class="GtkHBox" id="hbox3">
++ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+- <property name="spacing">5</property>
+- <child>
+- <widget class="GtkLabel" id="label11">
+- <property name="visible">True</property>
+- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+- <property name="label" translatable="yes">Profil:</property>
+- </widget>
+- <packing>
+- <property name="expand">False</property>
+- <property name="fill">False</property>
+- </packing>
+- </child>
++ <property name="spacing">12</property>
+ <child>
+- <widget class="GtkComboBox" id="profileChooser">
++ <widget class="GtkCheckButton" id="enableEffects">
+ <property name="visible">True</property>
+- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
++ <property name="label" translatable="yes">_Enable desktop effects</property>
++ <property name="use_underline">True</property>
++ <property name="response_id">0</property>
++ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+- <property name="position">1</property>
++ <property name="padding">3</property>
+ </packing>
+ </child>
+ <child>
+- <widget class="GtkButton" id="applyButton">
++ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+- <property name="can_focus">True</property>
+- <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+- <property name="response_id">0</property>
+- <signal name="clicked" handler="ApplyProfile"/>
++ <property name="spacing">5</property>
+ <child>
+- <widget class="GtkImage" id="image5">
++ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+- <property name="stock">gtk-apply</property>
++ <property name="label" translatable="yes">Profile:</property>
+ </widget>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ </packing>
++ </child>
++ <child>
++ <widget class="GtkComboBox" id="profileChooser">
++ <property name="visible">True</property>
++ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
++ </widget>
++ <packing>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ <child>
++ <widget class="GtkButton" id="applyButton">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">True</property>
++ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
++ <property name="response_id">0</property>
++ <signal name="clicked" handler="ApplyProfile"/>
++ <child>
++ <widget class="GtkImage" id="image1">
++ <property name="visible">True</property>
++ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
++ <property name="stock">gtk-apply</property>
++ </widget>
++ </child>
++ </widget>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ <property name="position">2</property>
++ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+- <property name="position">2</property>
++ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+diff --git a/simple-ccsm.in b/simple-ccsm.in
+index b743a57..c90d13d 100755
+--- a/simple-ccsm.in
++++ b/simple-ccsm.in
+@@ -134,6 +134,12 @@ AnimationSettings = {
+ 'minimizeAnimationBox': "minimize_effects"
+ }
+
++CompizName = "compiz"
++# Change to your default
++CompizStartCommand = "compiz-manager --replace"
++CompizDryRunCommand = "CM_DRY=yes compiz-manager"
++CompizNoChecksCommand = "SKIP_CHECKS=yes compiz-manager"
++
+ # Utility Functions
+ def EnablePlugin(plugin, active):
+ # attempt to resolve conflicts...
+@@ -862,7 +868,7 @@ class MainWin:
+ notebook.set_current_page (Pages[page])
+
+ # Window
+- window = self.GladeXML.get_widget("mainWin")
++ self.Window = self.GladeXML.get_widget("mainWin")
+
+ # Icon
+ theme = gtk.icon_theme_get_default()
+@@ -871,7 +877,12 @@ class MainWin:
+ theme.load_icon("simple-ccsm", 32, 0),
+ theme.load_icon("simple-ccsm", 48, 0),
+ )
+- window.set_icon_list(*iconList)
++ self.Window.set_icon_list(*iconList)
++
++ # Enable effects button
++ self.EnableEffectsButton = self.GladeXML.get_widget("enableEffects")
++ self.EnableEffectsButton.connect ("toggled", self.EnableDesktopEffectsChanged)
++ self.Notebook = self.GladeXML.get_widget("notebook")
+
+ # Profile Chooser
+ self.ProfileChooser = self.GladeXML.get_widget("profileChooser")
+@@ -885,10 +896,28 @@ class MainWin:
+ self.EdgePage = EdgePage(self.Context, self.GladeXML)
+
+ self.Update()
+- window.show_all()
++ self.Window.show_all()
++
++ def CheckForCompiz(self):
++ composited = self.Window.is_composited()
++ if composited:
++ # Now do the dirty work - check if it is really Compiz
++ psCMD = "ps -e".split(" ")
++ ps = subprocess.Popen(psCMD, stdout=subprocess.PIPE)
++ grepCMD = "grep compiz".split(" ")
++ grep = subprocess.Popen(grepCMD, stdin=ps.stdout, stdout=subprocess.PIPE)
++ grep.wait()
++ lines = grep.stdout.readlines()
++ for l in lines:
++ name = l.replace("\n", "").split(" ")[-1]
++ if name == CompizName:
++ return True
++
++ return False
+
+ def Update(self):
+ self.Context.Read()
++ self.Block += 1
+
+ self.AnimationPage.Update()
+ self.EffectPage.Update()
+@@ -898,6 +927,87 @@ class MainWin:
+ self.EdgePage.Update()
+
+ self.SetProfile()
++ self.SetEnableDesktopEffects()
++
++ self.Block -= 1
++
++ def SetEnableDesktopEffects(self):
++ running = self.CheckForCompiz()
++ self.EnableEffectsButton.set_active(running)
++ self.Notebook.set_sensitive(running)
++ self.ProfileChooser.set_sensitive(running)
++
++ def EnableDesktopEffectsChanged(self, widget):
++ if self.Block > 0:
++ return
++
++ enabled = self.EnableEffectsButton.get_active()
++ if enabled:
++ # First try to check if compiz can be run
++ cmd = CompizDryRunCommand.split(" ")
++ proc = subprocess.Popen(cmd, shell=True)
++ proc.wait()
++ if proc.returncode != 0:
++ # Dry run detected problems, warn the user
++ dialog = gtk.Dialog ()
++ dialog.set_title("Error")
++ dialog.set_border_width(6)
++ label = gtk.Label(_("Desktop effects are not supported on your current hardware / configuration. Would you like to cancel enabling of desktop effects or run them anyway?"))
++ label.set_line_wrap(True)
++ dialog.vbox.pack_start(label,
++ gtk.TRUE,
++ gtk.FALSE,
++ 3)
++ dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
++ dialog.add_button("Run anyway", gtk.RESPONSE_OK)
++ dialog.show_all()
++ response = dialog.run()
++ dialog.destroy()
++ if response != gtk.RESPONSE_OK:
++ self.EnableEffectsButton.set_active(False)
++ return
++
++ # Make compiz manager skip further checks
++ path = os.path.expanduser("~/.config/compiz/compiz-manager")
++ hasSkip = False
++ try:
++ config = open(path, "r")
++ for l in config.readlines():
++ if "SKIP_CHECKS" in l:
++ hasSkip = True
++ break
++ config.close()
++ except IOError, e:
++ print "No compiz manager config found!"
++ dir = os.path.expanduser("~/.config/compiz/")
++ if not os.path.exists(dir):
++ os.makedirs(dir)
++ if not hasSkip:
++ config = open(path, "a")
++ config.write("SKIP_CHECKS=yes\n")
++ config.close()
++ # Start compiz
++ cmd = CompizStartCommand.split(" ")
++ subprocess.Popen(cmd)
++ # Enable compiz in kde
++ try:
++ subprocess.call('kwriteconfig --file ksmserverrc --group General --key windowManager compiz'.split())
++ except (IOError, OSError):
++ pass
++ # Create a file that indicates wether compiz is enabled or not
++ path = os.path.expanduser("~/.config/compiz/enable-compiz")
++ open(path, "w+").close() # touch replacement
++ else:
++ cmd = "metacity --replace".split(" ")
++ subprocess.Popen(cmd)
++ # Remove old config
++ files = ("~/.config/compiz/enable-compiz", "~/.config/compiz/compiz-manager")
++ for file in files:
++ path = os.path.expanduser(file)
++ os.remove(path)
++
++ self.Notebook.set_sensitive(enabled)
++ self.ProfileChooser.set_sensitive(enabled)
+
+ def OpenAdvanced(self, widget):
+ notebook = self.GladeXML.get_widget("notebook")
+--
+1.5.4.3
diff --git a/stable/patches/suse-11-1-fix.patch b/stable/patches/suse-11-1-fix.patch
new file mode 100644
index 0000000..9733a50
--- /dev/null
+++ b/stable/patches/suse-11-1-fix.patch
@@ -0,0 +1,16 @@
+GIT_OBJECT=compiz-manager
+
+---
+diff --git a/compiz-manager b/compiz-manager
+index 91605c0..3821859 100755
+--- a/compiz-manager
++++ b/compiz-manager
+@@ -46,7 +46,7 @@ NVIDIA_MEMORY="65536" # 64MB
+ NVIDIA_SETTINGS="nvidia-settings" # Assume it's in the path by default
+
+ # For detecting what driver is in use, the + is for one or more /'s
+-XORG_DRIVER_PATH="/usr/lib/xorg/modules/drivers/+"
++XORG_DRIVER_PATH="/usr/lib/xorg/modules//drivers/+"
+ FALLBACKWM="xterm"
+ if [ x"$KDE_FULL_SESSION" = x"true" ]; then
+ FALLBACKWM="${KWIN}";
diff --git a/stable/patches/vmware-workstation-6.5-workaround.patch b/stable/patches/vmware-workstation-6.5-workaround.patch
new file mode 100644
index 0000000..9cb3cba
--- /dev/null
+++ b/stable/patches/vmware-workstation-6.5-workaround.patch
@@ -0,0 +1,22 @@
+GIT_OBJECT=core
+
+---
+diff --git a/src/screen.c b/src/screen.c
+--- a/src/screen.c 2008-12-28 14:50:05.000000000 +0100
++++ b/src/screen.c 2008-12-28 14:51:55.000000000 +0100
+@@ -1206,7 +1206,13 @@
+ data[i++] = d->moveResizeWindowAtom;
+ data[i++] = d->restackWindowAtom;
+
+- data[i++] = d->wmFullscreenMonitorsAtom;
++ //Quick&Dirty Workaround for VMWare Workstation 6.5:
++ //
++ // The following line was commented out, because the fullscreen mode of VMWare Workstation 6.5 has problems with it.
++ // It is likely that this workaround can be disabled when a new version of VMWare Workstation is published.
++ // Please see here for more information: http://forum.compiz-fusion.org/showthread.php?p=69842
++ //
++ // data[i++] = d->wmFullscreenMonitorsAtom;
+
+ XChangeProperty (d->display, s->root, d->supportedAtom, XA_ATOM, 32,
+ PropModeReplace, (unsigned char *) data, i);
+ }
diff --git a/stable/patches/window-wave.patch b/stable/patches/window-wave.patch
new file mode 100755
index 0000000..2748251
--- /dev/null
+++ b/stable/patches/window-wave.patch
@@ -0,0 +1,360 @@
+GIT_OBJECT=core
+
+---
+diff --git a/metadata/water.xml.in b/metadata/water.xml.in
+index 9d3b9d2..34a7aae 100644
+--- a/metadata/water.xml.in
++++ b/metadata/water.xml.in
+@@ -39,6 +39,13 @@
+ <min>1</min>
+ <max>3600000</max>
+ </option>
++ <option type="int" name="init_vertices">
++ <_short>Initial Vertices</_short>
++ <_long>Initial vertices (controls duration)</_long>
++ <default>250</default>
++ <min>1</min>
++ <max>3600000</max>
++ </option>
+ <option name="title_wave" type="bell">
+ <_short>Title wave</_short>
+ <_long>Wave effect from window title</_long>
+@@ -52,6 +59,14 @@
+ <_short>Line</_short>
+ <_long>Add line</_long>
+ </option>
++ <option name="window" type="key">
++ <_short>Window</_short>
++ <_long>Waves around a window</_long>
++ </option>
++ <option name="ungrab_wave" type="bool">
++ <_short>Ungrab window wave</_short>
++ <_long>Windows land in a pool of water</_long>
++ </option>
+ </display>
+ </plugin>
+ </compiz>
+diff --git a/plugins/water.c b/plugins/water.c
+index fca4df3..932cdd4 100644
+--- a/plugins/water.c
++++ b/plugins/water.c
+@@ -74,7 +74,10 @@ static int waterLastPointerY = 0;
+ #define WATER_DISPLAY_OPTION_TITLE_WAVE 5
+ #define WATER_DISPLAY_OPTION_POINT 6
+ #define WATER_DISPLAY_OPTION_LINE 7
+-#define WATER_DISPLAY_OPTION_NUM 8
++#define WATER_DISPLAY_OPTION_WINDOW 8
++#define WATER_DISPLAY_OPTION_UNGRAB_WAVE 9
++#define WATER_DISPLAY_OPTION_INIT_VERTICES 10
++#define WATER_DISPLAY_OPTION_NUM 11
+
+ typedef struct _WaterDisplay {
+ int screenPrivateIndex;
+@@ -90,6 +93,7 @@ typedef struct _WaterScreen {
+ PreparePaintScreenProc preparePaintScreen;
+ DonePaintScreenProc donePaintScreen;
+ DrawWindowTextureProc drawWindowTexture;
++ WindowUngrabNotifyProc windowUngrabNotify;
+
+ int grabIndex;
+ int width, height;
+@@ -853,6 +857,32 @@ softwareLines (CompScreen *s,
+
+ #undef SET
+
++static void softwareQuads(CompScreen * s, XPoint * p, int n, float v)
++{
++ /* this seemed the most logical way to handle this */
++
++ /* the quad is defined by its four corners
++ * rather than redesign a new algorithm to
++ * handlle this, I just munge the data to work
++ * with softwareLines
++ */
++ XPoint pq[8];
++
++ pq[0] = p[0];
++ pq[1] = p[1];
++
++ pq[2] = p[1];
++ pq[3] = p[2];
++
++ pq[4] = p[2];
++ pq[5] = p[3];
++
++ pq[6] = p[3];
++ pq[7] = p[0];
++
++ softwareLines(s, pq, 8, v);
++}
++
+ static void
+ softwareVertices (CompScreen *s,
+ GLenum type,
+@@ -860,6 +890,7 @@ softwareVertices (CompScreen *s,
+ int n,
+ float v)
+ {
++
+ switch (type) {
+ case GL_POINTS:
+ softwarePoints (s, p, n, v);
+@@ -867,6 +898,9 @@ softwareVertices (CompScreen *s,
+ case GL_LINES:
+ softwareLines (s, p, n, v);
+ break;
++ case GL_QUADS:
++ softwareQuads (s, p, n, v);
++ break;
+ }
+ }
+
+@@ -912,6 +946,7 @@ waterVertices (CompScreen *s,
+ float v)
+ {
+ WATER_SCREEN (s);
++ WATER_DISPLAY(s->display);
+
+ if (!s->fragmentProgram)
+ return;
+@@ -921,8 +956,10 @@ waterVertices (CompScreen *s,
+ if (!fboVertices (s, type, p, n, v))
+ softwareVertices (s, type, p, n, v);
+
+- if (ws->count < 3000)
+- ws->count = 3000;
++
++
++ if (ws->count < wd->opt[WATER_DISPLAY_OPTION_INIT_VERTICES].value.i)
++ ws->count = wd->opt[WATER_DISPLAY_OPTION_INIT_VERTICES].value.i;
+ }
+
+ static Bool
+@@ -944,6 +981,7 @@ waterRainTimeout (void *closure)
+ static Bool
+ waterWiperTimeout (void *closure)
+ {
++
+ CompScreen *s = closure;
+
+ WATER_SCREEN (s);
+@@ -1419,6 +1457,8 @@ waterPoint (CompDisplay *d,
+ CompScreen *s;
+ int xid;
+
++
++
+ xid = getIntOptionNamed (option, nOption, "root", 0);
+
+ s = findScreenAtDisplay (d, xid);
+@@ -1449,7 +1489,7 @@ waterLine (CompDisplay *d,
+ {
+ CompScreen *s;
+ int xid;
+-
++
+ xid = getIntOptionNamed (option, nOption, "root", 0);
+
+ s = findScreenAtDisplay (d, xid);
+@@ -1476,6 +1516,171 @@ waterLine (CompDisplay *d,
+ return FALSE;
+ }
+
++static Bool
++waterQuad(CompDisplay * d,
++ CompAction * action,
++ CompActionState state, CompOption * option, int nOption)
++{
++ CompScreen *s;
++ int xid;
++
++ xid = getIntOptionNamed(option, nOption, "root", 0);
++
++ s = findScreenAtDisplay(d, xid);
++ if (s)
++ {
++ XPoint p[4];
++ float amp;
++
++ /* top left corner */
++ p[0].x = getIntOptionNamed(option, nOption, "x0", s->width / 4);
++ p[0].y = getIntOptionNamed(option, nOption, "y0", s->height / 2);
++
++ /* top right corner */
++ p[1].x = getIntOptionNamed(option, nOption, "x1",
++ s->width - s->width / 4);
++ p[1].y = getIntOptionNamed(option, nOption, "y1", s->height / 2);
++
++ /* bottom right corner */
++ p[2].x = getIntOptionNamed(option, nOption, "x2", s->width / 4);
++ p[2].y = getIntOptionNamed(option, nOption, "y2", s->height / 2);
++
++ /* bottom left corner */
++ p[3].x = getIntOptionNamed(option, nOption, "x3",
++ s->width - s->width / 4);
++ p[3].y = getIntOptionNamed(option, nOption, "y3", s->height / 2);
++
++ amp = getFloatOptionNamed(option, nOption, "amplitude", 0.25f);
++
++ waterVertices(s, GL_QUADS, p, 4, amp);
++
++ damageScreen(s);
++ }
++
++ return FALSE;
++}
++
++
++static Bool
++waterWin(CompDisplay * d,
++ CompAction * action,
++ CompActionState state, CompOption * option, int nOption)
++{
++ CompWindow *w;
++ int xid;
++
++ xid = getIntOptionNamed(option, nOption, "window", d->activeWindow);
++
++ if (!xid)
++ xid = d->activeWindow;
++
++ w = findWindowAtDisplay(d, xid);
++ if (w)
++ {
++
++ CompOption o[10];
++
++ //WATER_DISPLAY(d);
++ //WATER_SCREEN(w->screen);
++
++
++ o[0].type = CompOptionTypeInt;
++ o[0].name = "root";
++ o[0].value.i = w->screen->root;
++
++ /* top left */
++ o[1].type = CompOptionTypeInt;
++ o[1].name = "x0";
++ o[1].value.i = w->attrib.x - w->input.left;
++
++ o[2].type = CompOptionTypeInt;
++ o[2].name = "y0";
++ o[2].value.i = w->attrib.y - w->input.top;
++
++ /* top right */
++ o[3].type = CompOptionTypeInt;
++ o[3].name = "x1";
++ o[3].value.i = w->attrib.x + w->width + w->input.right;
++
++ o[4].type = CompOptionTypeInt;
++ o[4].name = "y1";
++ o[4].value.i = w->attrib.y - w->input.top;
++
++ /* bottom right */
++ o[5].type = CompOptionTypeInt;
++ o[5].name = "x2";
++ o[5].value.i = w->attrib.x + w->width + w->input.right;
++
++ o[6].type = CompOptionTypeInt;
++ o[6].name = "y2";
++ o[6].value.i = w->attrib.y + w->height + w->input.bottom;
++
++ /* bottom left */
++ o[7].type = CompOptionTypeInt;
++ o[7].name = "x3";
++ o[7].value.i = w->attrib.x - w->input.left;
++
++ o[8].type = CompOptionTypeInt;
++ o[8].name = "y3";
++ o[8].value.i = w->attrib.y + w->height + w->input.bottom;
++
++ o[9].type = CompOptionTypeFloat;
++ o[9].name = "amplitude";
++ o[9].value.f =
++ getFloatOptionNamed(option, nOption, "amplitude", 0.25f);
++
++ /*if (wd->opt[WATER_DISPLAY_OPTION_SHIVER_WIN].value.b)
++ {
++ /* Send a client message to wobbly */
++ /* I'm not sure if this is the best way to do this, but it is simple and it works */
++ /*XClientMessageEvent xev;
++
++ xev.type = ClientMessage;
++ xev.window = w->id;
++ xev.message_type =
++ XInternAtom(w->screen->display->display,
++ "_BERYL_WOBBLY_SHIVER", 0);
++ xev.format = 32;
++
++ XSendEvent(w->screen->display->display,
++ w->screen->root, 0, StructureNotifyMask,
++ (XEvent *) & xev);
++ }*/
++
++ waterQuad(d, NULL, 0, o, 10);
++ }
++
++ return FALSE;
++}
++
++static void waterWindowUngrabNotify(CompWindow * w)
++{
++
++ WATER_DISPLAY(w->screen->display);
++ WATER_SCREEN(w->screen);
++
++ if (wd->opt[WATER_DISPLAY_OPTION_UNGRAB_WAVE].value.b)
++ {
++ /* generate a wave from the windows edges */
++ CompOption o[2];
++
++ o[0].type = CompOptionTypeInt;
++ o[0].name = "window";
++ o[0].value.i = w->id;
++
++ o[1].type = CompOptionTypeFloat;
++ o[1].name = "amplitude";
++ o[1].value.f = 0.15f;
++
++ waterWin(w->screen->display, NULL, 0, o, 2);
++ }
++
++ UNWRAP(ws, w->screen, windowUngrabNotify);
++ (*w->screen->windowUngrabNotify) (w);
++ WRAP(ws, w->screen, windowUngrabNotify, waterWindowUngrabNotify);
++}
++
++
+ static void
+ waterHandleEvent (CompDisplay *d,
+ XEvent *event)
+@@ -1584,8 +1789,11 @@ static const CompMetadataOptionInfo waterDisplayOptionInfo[] = {
+ { "offset_scale", "float", "<min>0</min>", 0, 0 },
+ { "rain_delay", "int", "<min>1</min>", 0, 0 },
+ { "title_wave", "bell", 0, waterTitleWave, 0 },
+- { "point", "action", 0, waterPoint, 0 },
+- { "line", "action", 0, waterLine, 0 }
++ { "point", "key", 0, waterPoint, 0 },
++ { "line", "key", 0, waterLine, 0 },
++ { "window", "key", 0, waterWin, 0 },
++ { "ungrab_wave", "bool", 0, 0, 0 },
++ { "init_vertices", "int", "<min>0</min>", 0, 0, }
+ };
+
+ static Bool
+@@ -1660,6 +1868,7 @@ waterInitScreen (CompPlugin *p,
+ WRAP (ws, s, preparePaintScreen, waterPreparePaintScreen);
+ WRAP (ws, s, donePaintScreen, waterDonePaintScreen);
+ WRAP (ws, s, drawWindowTexture, waterDrawWindowTexture);
++ WRAP(ws, s, windowUngrabNotify, waterWindowUngrabNotify);
+
+ s->base.privates[wd->screenPrivateIndex].ptr = ws;
+
+@@ -1711,6 +1920,7 @@ waterFiniScreen (CompPlugin *p,
+ UNWRAP (ws, s, preparePaintScreen);
+ UNWRAP (ws, s, donePaintScreen);
+ UNWRAP (ws, s, drawWindowTexture);
++ UNWRAP(ws, s, windowUngrabNotify);
+
+ free (ws);
+ }
diff --git a/po/de.po b/stable/po/de.po
index 27146ad..27146ad 100644
--- a/po/de.po
+++ b/stable/po/de.po
diff --git a/po/en.po b/stable/po/en.po
index b480096..b480096 100644
--- a/po/en.po
+++ b/stable/po/en.po
diff --git a/po/es.po b/stable/po/es.po
index 7c7bc1f..7c7bc1f 100644
--- a/po/es.po
+++ b/stable/po/es.po
diff --git a/po/it.po b/stable/po/it.po
index b6cbe9e..b6cbe9e 100644
--- a/po/it.po
+++ b/stable/po/it.po
diff --git a/stable/scripts/compiz-check b/stable/scripts/compiz-check
new file mode 100755
index 0000000..7438c21
--- /dev/null
+++ b/stable/scripts/compiz-check
@@ -0,0 +1,963 @@
+#!/bin/bash
+# Compiz-Check -- script to test if your system is able to run Compiz
+#
+# Copyright (c) 2008 Nick Bauermeister <Forlong@gmx.de>
+#
+# This program is free software. Feel free to redistribute and/or
+# modify it under the terms of the GNU General Public License v3
+# as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful
+# but comes 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.
+
+VERSION="0.4.5-4"
+
+usage()
+{
+ printf "\nAbout:\n"
+ printf "%6s Compiz-Check will check if your system satisfies all requirements to\n"
+ printf "%6s run Compiz properly.\n"
+ printf "%6s It will also help you trace back the problem(s) you may be facing.\n\n"
+ printf "%6s Visit\033[1m http://forlong.blogage.de/article/pages/Compiz-Check \033[0m\n"
+ printf "%6s for further information.\n\n"
+ printf "Usage:\n"
+ printf "%6s Run this script without any arguments.\n\n"
+ printf "Available arguments:\n"
+ printf " -h or --help %8s List available arguments and usage (this message).\n"
+ printf " -v or --version %5s Print version of Compiz-Check in use.\n\n"
+}
+
+banana()
+{
+ printf "//\\ \nV%2s\\ \n \\%2s\\ \n%2s\\ \033[1;33m.\`-.\n%3s|\\ \`. \`.\n%3s( \\%2s\`. \`-.%24s_,.-:\\ \n%4s\\ \\%3s\`.%2s\`-._%13s__..--' ,-';/\n%5s\\ \`.%3s\`-.%3s\`-..___..---'%3s_.--' ,'/\n%6s\`. \`.%4s\`-._%8s__..--'%4s,' /\n%8s\`. \`-_%4s \`\`--..''%6s _.-' ,'\n%10s\`-_ \`-.___%8s__,--'%3s,'\n%13s\`-.__%2s\`----'''%4s__.-'\n%18s\`--..____..--'\033[0m\n\n"
+}
+
+if [ $# != 0 ]; then
+ case $1 in
+ -h | --help)
+ usage
+ exit 0
+ ;;
+ -v | --version)
+ echo $VERSION
+ exit 0
+ ;;
+ --banana)
+ banana
+ exit 0
+ ;;
+ *)
+ printf "Error, unknown option: \"$1\"\nRun \033[1m$0 --help\033[0m for details.\n"
+ exit 1
+ ;;
+ esac
+fi
+
+# Exit when running as root
+if [ "$(whoami)" = root ]; then
+ printf "\n Do not run this script as root, because it might distort its outcome.\n Aborting.\n\n"
+ exit 0
+fi
+
+# Needed for lspci, because it's not in the $PATH of every distro
+export PATH=$PATH:/sbin:/usr/sbin
+
+# Can't handle more than one graphics card or X server at a time
+if [ $(lspci | grep VGA -c) -gt 1 ]; then
+ ERROR_DEVICE="graphics chip"
+elif [ $(xdpyinfo | grep -i dimensions: -c) -gt 1 ]; then
+ ERROR_DEVICE="running X server"
+fi
+
+if [ ! -z "$ERROR_DEVICE" ]; then
+ printf "\n More than one $ERROR_DEVICE detected -- sorry, the script can not handle that.\n Aborting.\n\n"
+ exit 0
+fi
+
+# Skip system checks if they are harmful or useless
+SKIP=yes
+
+# Coloured output (there are other emphases hardcoded in the script, so
+# it would be pretty useless changing those here)
+UNKNOWN="\033[1;31mUnknown\033[0m"
+OK=" \033[1;32mOK\033[0m "
+FAIL="\033[1;31mFAIL\033[0m"
+SKIPPING="\033[33mSKIP\033[0m"
+WARN="\033[33mWARN\033[0m"
+
+# General distribution info file
+DIST_INFO="/etc/lsb-release"
+
+# Detect distribution
+# If your distro is not on this list, contact me.
+detect_distro()
+{
+ if [ -d /etc/linuxmint ]; then
+ DISTRIB_ID="Linux Mint"
+ return 0
+ elif [ -r $DIST_INFO ]; then
+ . $DIST_INFO
+ fi
+
+ if [ -z $DISTRIB_ID ]; then
+ unset DISTRIB_RELEASE
+ if [ -f /etc/arch-release ]; then
+ DISTRIB_ID="Arch Linux"
+ elif [ -r /etc/knoppix-version ]; then
+ DISTRIB_ID="Knoppix"
+ DISTRIB_RELEASE="($(cat /etc/knoppix_version))"
+ elif [ -r /etc/sidux-version ]; then
+ DISTRIB_ID="Sidux"
+ DISTRIB_RELEASE="($(cat /etc/sidux-version | awk '{print $4}'))"
+ elif [ -r /etc/debian_version ]; then
+ DISTRIB_ID="Debian GNU/Linux"
+ DISTRIB_RELEASE="($(cat /etc/debian_version))"
+ elif [ -r /etc/fedora-release ]; then
+ DISTRIB_ID="$(cat /etc/redhat-release)"
+ elif [ -r /etc/gentoo-release ]; then
+ DISTRIB_ID="Gentoo"
+ DISTRIB_RELEASE="($(cat /etc/gentoo-release | awk '{print $5}'))"
+ elif [ -f /etc/lfs-version ]; then
+ DISTRIB_ID="Linux from scratch"
+ elif [ -r /etc/pclinuxos-release ]; then
+ DISTRIB_ID="PCLinuxOS"
+ elif [ -f /etc/mandriva-release ] || [ -f /etc/mandrake-release ]; then
+ DISTRIB_ID="Mandriva"
+ elif [ -f /etc/redhat-release ]; then
+ DISTRIB_ID="RedHat"
+ elif [ -r /etc/vector-version ]; then
+ DISTRIB_ID="VectorLinux"
+ DISTRIB_RELEASE="($(cat /etc/vector-version))"
+ elif [ -r /etc/slackware-version ]; then
+ DISTRIB_ID="$(cat /etc/slackware-version)"
+ elif [ -f /etc/release ]; then
+ DISTRIB_ID="Solaris"
+ elif [ -r /etc/SuSE-release ]; then
+ DISTRIB_ID="$(grep -i suse /etc/SuSE-release)"
+ elif [ -f /etc/yellowdog-release ]; then
+ DISTRIB_ID="YellowDog Linux"
+ elif [ -f /etc/zenwalk-version ]; then
+ DISTRIB_ID="Zenwalk"
+ else
+ DISTRIB_ID="Unknown"
+ fi
+ fi
+}
+
+# Detect desktop environment in use
+detect_de()
+{
+ if [ ! -z $GNOME_DESKTOP_SESSION_ID ]; then
+ DE=GNOME
+ elif [ "$KDE_SESSION_VERSION" = 4 ]; then
+ DE=KDE4
+ elif [ "$KDE_FULL_SESSION" = true ]; then
+ DE=KDE
+ elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1 ; then
+ DE=Xfce
+ else
+ DE=Unknown
+ fi
+}
+
+# Detect graphics card
+detect_video()
+{
+ if lspci | grep -q VGA ; then
+ VIDEO=$(lspci | grep VGA | sed 's/.*: //')
+ else
+ VIDEO=$UNKNOWN # TODO abort?
+ fi
+}
+
+XSET=$(command -v xset)
+
+# Detect location of the Xorg log file
+if [ ! -z $XSET ]; then
+ XORG_LOG=$($XSET q | grep "Log file" | awk '{print $3}')
+fi
+
+# Fallback Xorg log
+if [ -z $XORG_LOG ]; then
+ if [ -f /var/log/Xorg.0.log ]; then
+ XORG_LOG=/var/log/Xorg.0.log
+ fi
+fi
+
+# advise to look for proprietary drivers in Ubuntu
+detect_driver_manager()
+{
+ if [ $(echo "$DISTRIB_RELEASE" | sed 's/\.//g') -gt 710 ] && [ $DE = GNOME ] || [ $DE = Xfce ]; then
+ DRVS_MNGR=hardy-gtk
+ elif [ $(echo "$DISTRIB_RELEASE" | sed 's/\.//g') -gt 710 ] && [ $DE = KDE ]; then
+ DRVS_MNGR=hardy-kde
+ elif [ "$DISTRIB_RELEASE" = "7.10" ] && [ $DE = GNOME ] || [ $DE = Xfce ]; then
+ DRVS_MNGR=gutsy-gtk
+ elif [ "$DISTRIB_RELEASE" = "7.10" ] && [ $DE = KDE ]; then
+ DRVS_MNGR=gutsy-kde
+ elif [ "$DISTRIB_RELEASE" = "7.04" ] && [ $DE = GNOME ] || [ $DE = Xfce ]; then
+ DRVS_MNGR=feisty-gtk
+ fi
+}
+
+# Drivers known to work with Compiz
+WHITELIST="nvidia intel i810 ati radeon fglrx"
+
+# Drivers taken from Hardy's /usr/lib/xorg/modules/drivers/ directory
+# plus radeonhd, vboxvideo, nouveau and the proprietary one's.
+# Contact me, if your driver is not on this list.
+KNOWN_DRIVERS="$WHITELIST apm ark chips cirrus cyrix fbdev glint i128
+ i740 imstt mga mtx neomagic newport nsc nv openchrome
+ rendition s3virge savage siliconmotion sis sisusb tdfx
+ tga trident tseng vesa vga via vmware vboxvideo voodoo
+ radeonhd s3 nouveau"
+
+# Detect driver in use.
+# TODO not really satisfied with this. Just because the module is
+# loaded doesn't necessarily mean the driver is properly working.
+detect_driver()
+{
+ if [ -z $XORG_LOG ]; then
+ DRV=$SKIPPING
+ CHECKS=$SKIP
+ SKIP_MESSAGE="Unable to locate your Xorg log"
+ return 1
+ elif [ ! -r $XORG_LOG ]; then
+ DRV=$SKIPPING
+ CHECKS=$SKIP
+ SKIP_MESSAGE="No permission to read $XORG_LOG"
+ return 1
+ fi
+
+ for i in $KNOWN_DRIVERS ; do
+ if grep Loading $XORG_LOG | grep -q "${i}_drv\.so" &&
+ ! grep Unloading $XORG_LOG | grep -q "${i}_drv\.so" ; then
+ DRV=$i
+ fi
+ done
+
+ if [ -z $DRV ]; then
+ DRV=$UNKNOWN
+ return 0
+ fi
+
+# glxinfo might kill X if vesa or vga are in use (LP#119341)
+# 'LIBGL_ALWAYS_INDIRECT=1 glxinfo' kills X on openchrome driver
+# according to user feedback (same for unichrome)
+# nv driver blocks AIGLX
+ case $DRV in
+ vesa | vga | nv)
+ CHECKS=$SKIP
+ SKIP_MESSAGE="$DRV driver in use"
+ ERROR_MESSAGE="The $DRV driver is not capable of running Compiz, you need to install\n the proper driver for your graphics card."
+ if [ "$DISTRIB_ID" = Ubuntu ]; then
+ detect_driver_manager
+ fi
+ ;;
+ unichrome | openchrome)
+ CHECKS=$SKIP
+ SKIP_MESSAGE="$DRV driver in use" #TODO ERROR_MESSAGE
+ ;;
+ esac
+}
+
+# Detect rendering method
+detect_rendering()
+{
+ XVINFO=$(command -v xvinfo)
+
+ if [ ! -z $XVINFO ]; then
+ if $XVINFO | grep -q Xgl ; then
+ RENDER=Xgl
+ return 0
+ fi
+ fi
+
+ if xdpyinfo | grep -q NV-GLX ; then
+ RENDER=Nvidia
+ return 0
+ fi
+
+ AIGLX_STAT="AIGLX enabled\|AIGLX disabled"
+
+ if [ -z $XORG_LOG ] || [ ! -r $XORG_LOG ]; then
+ RENDER=$SKIPPING
+ return 1
+ elif grep "$AIGLX_STAT" $XORG_LOG | tail -1 | grep -q "AIGLX enabled" ; then
+ RENDER=AIGLX
+ return 0
+ fi
+
+ if [ -z $XVINFO ]; then
+ RENDER=$SKIPPING
+ CHECKS=$SKIP
+ SKIP_MESSAGE="Unable to check for Xgl, could not run xvinfo"
+ else
+ RENDER="\033[31mNone\033[0m"
+ CHECKS=$SKIP # Checks can be OK nonetheless
+ SKIP_MESSAGE="No rendering method in use (AIGLX, Xgl or Nvidia)"
+ fi
+}
+
+GLXINFO=$(command -v glxinfo)
+
+# Check for texture_from_pixmap
+check_tfp()
+{
+ if [ "$RENDER" = Xgl ]; then
+ TFP=$SKIPPING
+ return 0
+ elif [ -z $GLXINFO ]; then
+ TFP=$SKIPPING
+ SKIP_MESSAGE="glxinfo not installed"
+ ERROR_MESSAGE="The program glxinfo is needed to perform a number of crucial tests."
+ if [ -e /etc/debian_version ]; then
+ DIST_HELP="You need to install the package \033[1mmesa-utils\033[0m\n Type e.g. \033[1msudo apt-get install mesa-utils\033[0m to install it."
+ elif [ -e /etc/mandriva-release ]; then
+ DIST_HELP="You need to install \033[1mmesa-demos\033[0m\n"
+ fi
+ return 0
+ fi
+
+ if [ $(glxinfo 2>/dev/null | grep GLX_EXT_texture_from_pixmap -c) -gt 2 ]; then
+ TFP=$OK
+ elif [ $(LIBGL_ALWAYS_INDIRECT=1 glxinfo 2>/dev/null | grep GLX_EXT_texture_from_pixmap -c) -gt 2 ]; then
+ TFP=$OK
+ else
+ TFP=$FAIL
+ fi
+}
+
+# Check for non power of two texture support
+check_npo2()
+{
+ if [ "$RENDER" = Xgl ] || [ -z $GLXINFO ]; then
+ NPO2=$SKIPPING
+ elif glxinfo 2>/dev/null | egrep -q '(GL_ARB_texture_non_power_of_two|GL_NV_texture_rectangle|GL_EXT_texture_rectangle|GL_ARB_texture_rectangle)' ; then
+ NPO2=$OK
+ else
+ NPO2=$FAIL
+ fi
+}
+
+# Check for composite extension
+check_composite()
+{
+ if xdpyinfo -queryExtensions | grep -q Composite ; then
+ COMP=$OK
+ else
+ COMP=$FAIL
+ fi
+}
+
+# Check for FBConfig
+check_fbconfig()
+{
+ if [ -z $GLXINFO ]; then
+ FBC=$SKIPPING
+ elif glxinfo 2>/dev/null | grep -q GLX.*fbconfig ; then
+ FBC=$OK
+ elif [ "$DRV" = via ]; then
+ FBC=$SKIPPING # 'glxinfo -i' kills X on some setups using the via driver
+ elif glxinfo -i 2>/dev/null | grep -q GLX.*fbconfig ; then
+ FBC=$OK
+ else
+ FBC=$FAIL
+ fi
+}
+
+# Check if fglrx driver supports composite
+check_fglrx()
+{
+ if [ "$DRV" = fglrx ]; then
+ FGLRXINFO=$(command -v fglrxinfo)
+ if [ ! -z "$FGLRXINFO" ]; then
+ if $FGLRXINFO | grep -q mesa ; then
+ STATUS=$FAIL
+ ERROR="Fglrx driver not properly installed, you are using the Mesa driver."
+ return 0
+ else
+ DIGITS=$($FGLRXINFO | grep version | sed 's/[a-Z:(.)]//g')
+ for i in $DIGITS ; do
+ if [ $i -gt 100000 ]; then
+ FGLRX_VERSION=$i
+ fi
+ done
+ FGLRX_COMPOSITE=206958 # 2.0.6958 first release to support AIGLX
+ if [ ! -z $FGLRX_VERSION ]; then
+ if [ $FGLRX_VERSION -lt $FGLRX_COMPOSITE ] && [ "$RENDER" != Xgl ]; then
+ STATUS=$FAIL
+ ERROR="The version of fglrx in use needs Xgl to work with Compiz."
+ ERROR_MESSAGE="Older versions of fglrx do not support AIGLX, so you have to use Xgl in order\n to make Compiz run with this driver.\n You can either install Xgl or a newer version of the fglrx driver."
+ if [ "$DISTRIB_ID" = Ubuntu ]; then
+ if [ $(echo "$DISTRIB_RELEASE" | sed 's/\.//g') -gt 704 ]; then
+ DIST_HELP="Type \033[1msudo apt-get install xserver-xgl\033[0m to install Xgl."
+ fi
+ fi
+ return 0
+ fi
+ return 1
+ fi
+ STATUS=$SKIPPING
+ SKIP_MESSAGE="Unable to detect fglrx driver version in use."
+ return 0
+ fi
+ fi
+ STATUS=$FAIL
+ ERROR="Fglrx driver not properly installed. Could not run fglrxinfo."
+ return 0
+ fi
+
+ return 1
+}
+
+if [ -z $XDG_CONFIG_DIRS ]; then
+ XDG_CONFIG_DIRS=/etc/xdg
+fi
+
+if [ -z $XDG_CONFIG_HOME ]; then
+ XDG_CONFIG_HOME=$HOME/.config
+fi
+
+COMPIZ_MNGR_HOME=$XDG_CONFIG_HOME/compiz/compiz-manager
+
+# Check if checks are skipped (by compiz-manager, not here!)
+check_skip()
+{
+ OLD_IFS=$IFS
+ IFS=:
+ for m in $XDG_CONFIG_DIRS
+ do
+ test -r $m/compiz/compiz-manager && . $m/compiz/compiz-manager
+ done
+ IFS=$OLD_IFS
+ unset OLD_IFS
+
+ if [ -r $COMPIZ_MNGR_HOME ]; then
+ . $COMPIZ_MNGR_HOME
+ fi
+
+ if [ "$SKIP_CHECKS" = yes ]; then
+ return 1
+ fi
+
+ return 0
+}
+
+# Check max texture size compared to resolution in use
+check_resolution()
+{
+ if [ -z $GLXINFO ]; then
+ STATUS=$SKIPPING
+ return 0
+ fi
+
+ TEXTURE_LIMIT=$(glxinfo -l 2>/dev/null | grep GL_MAX_TEXTURE_SIZE | sed 's/.*=[^0-9]//g')
+ RESOLUTION=$(xdpyinfo | grep -i dimensions: | sed 's/[^0-9]*pixels.*(.*).*//' | sed 's/[^0-9x]*//')
+ VRES=$(echo $RESOLUTION | sed 's/.*x//')
+ HRES=$(echo $RESOLUTION | sed 's/x.*//')
+
+ if [ -z $TEXTURE_LIMIT ]; then
+ STATUS=$SKIPPING
+ SKIP_MESSAGE="Unable to detect maximum 3D texture size"
+ return 0
+ elif [ $VRES -gt $TEXTURE_LIMIT ] || [ $HRES -gt $TEXTURE_LIMIT ]; then
+ STATUS=$FAIL
+ ERROR="Your current resolution is too high to run Compiz."
+ ERROR_MESSAGE="Your resolution is \033[1m${RESOLUTION}\033[0m but the maximum 3D texture size that your\n graphics card is capable of is \033[1m${TEXTURE_LIMIT}x${TEXTURE_LIMIT}\033[0m. Thus Compiz will not be able to run\n on this setup. You have to decrease the resolution first (in case you are\n using a dual-head setup, try disabling one monitor and run the script again)."
+ return 0
+ fi
+
+ return 1
+}
+
+
+# Check if there is already another compositing manager running
+check_compositor()
+{
+ XCOMPMGR_PID=$(ps -o pid= -C xcompmgr)
+ METACITY_PID=$(ps -o pid= -C metacity)
+ XFWM_PID=$(ps -o pid= -C xfwm4)
+
+ if [ ! -z $XCOMPMGR_PID ]; then
+ OTHER_COMP=true
+ COMP_MSG="It has been detected, that you are currently running \033[1mxcompmgr\033[0m, which is a\n standalone compositing manager."
+ QUERY_XCOMPMGR=yes
+ elif [ ! -z $METACITY_PID ]; then
+ METACITY=$(command -v metacity)
+ if [ ! -z $METACITY ]; then
+ if [ $($METACITY --version | grep metacity | awk '{print $2}' | sed 's/\.//g') -gt 2200 ]; then
+ GCONFTOOL=$(command -v gconftool-2)
+ if [ ! -z $GCONFTOOL ]; then
+ if $GCONFTOOL -a /apps/metacity/general | grep -q compositing_manager &&
+ [ "$($GCONFTOOL -g /apps/metacity/general/compositing_manager)" = true ]; then
+ OTHER_COMP=true
+ WM_COMP=GNOME
+ QUERY_METACITY=yes
+ fi
+ fi
+ fi
+ fi
+ elif [ ! -z $XFWM_PID ]; then
+ if [ -r $XDG_CONFIG_HOME/xfce4/mcs_settings/wmtweaks.xml ]; then
+ if grep UseCompositing $XDG_CONFIG_HOME/xfce4/mcs_settings/wmtweaks.xml | grep -q 'value="1"' &&
+ ! ps -ef | grep xfwm4 | grep -q compositor=off ; then
+ OTHER_COMP=true
+ WM_COMP=Xfce
+ QUERY_XFWM=yes
+ fi
+ fi
+ fi
+
+ if [ ! -z $OTHER_COMP ]; then
+ ERROR="Another compositing manager in use."
+ if [ ! -z $WM_COMP ]; then
+ COMP_MSG="The default window manager of $WM_COMP has its own compositing manager to\n provide basic desktop effects."
+ fi
+ ERROR_MESSAGE="${COMP_MSG}\n If this one is in use, Compiz will not be able to run."
+ return 0
+ fi
+
+ return 1
+}
+
+# Hardy blacklists laptops using ati/radeon driver (LP#201330)
+check_laptop_ati()
+{
+ if [ "$DISTRIB_ID $DISTRIB_RELEASE" = "Ubuntu 8.04" ]; then
+ if [ "$DRV" = ati ] || [ "$DRV" = radeon ] ; then
+ if laptop-detect && check_skip ; then
+ ERROR="Laptop using $DRV driver."
+ ERROR_MESSAGE="It has been detected, that you are running a laptop with an ATI chip.\n The $DRV driver supports Compiz out-of-the-box but because of a nasty bug\n in the driver that causes X to freeze on some cards, this particular\n combination had to be blacklisted in Ubuntu \"Hardy Heron\".\n\n In case you already used Compiz successfully on Ubuntu 7.10 (Gutsy), it is\n safe to skip the blacklist."
+ QUERY_SKIP=yes
+ return 0
+ fi
+ fi
+ fi
+
+ return 1
+}
+
+# Check if "Composite" has been disabled in the xorg.conf
+check_cmpst_xorg()
+{
+ if [ "$COMP" = "$OK" ]; then
+ return 1
+ fi
+
+ # Detect location of the Xorg log file
+ if [ ! -z $XSET ]; then
+ XORG_CONF=$($XSET q | grep "Config file" | awk '{print $3}')
+ fi
+
+ # Fallback xorg.conf
+ if [ -z $XORG_CONF ]; then
+ if [ -f /etc/X11/xorg.conf ]; then
+ XORG_CONF=/etc/X11/xorg.conf
+ else
+ return 1
+ fi
+ fi
+
+ if [ ! -r $XORG_CONF ]; then
+ SKIP_MESSAGE="No permission to read $XORG_CONF"
+ return 1
+ else
+ CMPST=$(grep -i "Composite" $XORG_CONF)
+ if echo $CMPST | grep -qi "0" ; then
+ COMPST_STAT='"0"'
+ COMPST_FIX='"1"'
+ elif echo $CMPST | grep -qi "Disable" ; then
+ COMPST_STAT='"Disable"'
+ COMPST_FIX='"Enable"'
+ elif echo $CMPST | grep -qi "false" ; then
+ COMPST_STAT='"false"'
+ COMPST_FIX='"true"'
+ fi
+ fi
+
+ case $DE in
+ GNOME)
+ EDITOR=gedit
+ ;;
+ KDE4 | KDE)
+ EDITOR=kate
+ ;;
+ Xfce)
+ EDITOR=mousepad
+ ;;
+ esac
+
+ if [ ! -z $COMPST_STAT ]; then
+ ERROR="Composite manually disabled"
+ ERROR_MESSAGE="It has been detected that the \"Composite\" option of your ${XORG_CONF}\n has been set to $COMPST_STAT"
+ if [ "$DRV" = fglrx ] && [ $FGLRX_VERSION -lt $FGLRX_COMPOSITE ]; then
+ return 0
+ fi
+ if [ ! -z $EDITOR ] && [ -x $EDITOR ]; then
+ DIST_HELP="Open the file being root, e.g. \033[1msudo $EDITOR $XORG_CONF\033[0m\n Then change $COMPST_STAT to $COMPST_FIX and save. Finally restart X and try again."
+ else
+ DIST_HELP="Open the file being root and change $COMPST_STAT to $COMPST_FIX\n Then restart X and try again."
+ fi
+ return 0
+ fi
+
+ return 1
+}
+
+# Check for Software Rasterizer
+check_rasterizer()
+{
+ if glxinfo 2>/dev/null | grep -q 'OpenGL renderer string: Software Rasterizer' ; then
+ ERROR="Software Rasterizer in use" #TODO add $ERROR_MESSAGE
+ return 0
+ else
+ return 1
+ fi
+}
+
+DISCLAIMER="You can skip this blacklist -- but keep in mind that you did so.\n Do not complain if you encounter any problems with Compiz afterwards."
+
+# Check if driver in use is on the whitelist
+check_whitelist()
+{
+ for i in $WHITELIST ; do
+ if [ "$DRV" = "$i" ]; then
+ return 1
+ fi
+ done
+
+ if [ "$DRV" = "$UNKNOWN" ]; then
+ DRV_MSG="Unknown driver in use."
+ else
+ DRV_MSG="Detected driver is not on the whitelist."
+ fi
+
+ if [ "$TFP" = "$OK" -o "$SKIPPING" ] && [ "$NPO2" = "$OK" -o "$SKIPPING" ] &&
+ [ "$COMP" = "$OK" ] && [ "$FBC" = "$OK" -o "$SKIPPING" ]; then
+ if ! check_skip ; then
+ return 1
+ fi
+ STATUS=$WARN
+ WARNING=$DRV_MSG
+ ERROR_MESSAGE="Your driver is not widely known to work with Compiz and thus may be\n blacklisted on certain distributions.\n\n $DISCLAIMER"
+ QUERY_SKIP=yes
+ return 0
+ elif [ "$DRV" = vmware ] || [ "$DRV" = vboxvideo ]; then
+ STATUS=$FAIL
+ ERROR="$DRV driver in use"
+ ERROR_MESSAGE="Compiz can not be run in a virtual environment."
+ return 0
+ fi
+
+ STATUS=$FAIL
+ ERROR=$DRV_MSG
+ ERROR_MESSAGE="Your driver is not known (most probably not able) to work with Compiz.\n See http://wiki.compiz-fusion.org/Hardware for details."
+
+ if [ "$DISTRIB_ID" = Ubuntu ]; then
+ detect_driver_manager
+ fi
+
+ return 0
+}
+
+# PCI IDs that may be blacklist on certain distributions
+# List taken from Gutsy
+GUTSY_BLACKLIST="1002:5954 1002:5854 1002:5955 1002:4153 8086:2982 8086:2992
+ 8086:29a2 8086:2a02 8086:2a12 8086:2972 1002:3152 1002:3150
+ 1002:5462 1002:5653"
+# Blacklisted IDs on Intrepid
+BLACKLISTED_PCIIDS="$GUTSY_BLACKLIST 8086:1132 8086:2e02 8086:3577 8086:2562"
+
+# My own private PCI IDs (added for testing reasons)
+# Please let me know if I really was that stupid to let those in here.
+#BLACKLISTED_PCIIDS="$BLACKLISTED_PCIIDS 1002:4152 1002:4e50"
+
+# Check if PCI ID in use is on the blacklist
+check_pciid()
+{
+ if [ "$DISTRIB_ID" = Ubuntu ] && [ "$DISTRIB_RELEASE" = "8.04" ]; then
+ return 1
+ fi
+
+ for PCIID in $BLACKLISTED_PCIIDS ; do
+ if $(lspci -n | grep -q "$PCIID") && check_skip ; then
+ STATUS=$WARN
+ WARNING="PCI ID \033[1m${PCIID}\033[0m detected."
+ ERROR_MESSAGE="Your particular graphics chip may be blacklisted on certain distributions.\n However that does not necessarily mean you will not be able to run Compiz.\n\n $DISCLAIMER"
+ QUERY_SKIP=yes
+ return 0
+ fi
+ done
+
+ return 1
+}
+
+# Check for needed xdg files in Ubuntu
+check_xdg()
+{
+ if [ "$DISTRIB_ID" = Ubuntu ]; then
+ if [ $(echo "$DISTRIB_RELEASE" | sed 's/\.//g') -gt 704 ]; then
+ XDG_COMPIZ=/etc/xdg/compiz
+ if [ ! -e $XDG_COMPIZ/compiz-manager ] && [ -e /usr/bin/compiz.real ]; then
+ check_skip
+ if [ "$COMPIZ_BIN_PATH" = /usr/bin/ ] && [ "$COMPIZ_NAME" = compiz.real ] &&
+ [ "$PLUGIN_PATH" = /usr/lib/compiz/ ]; then
+ return 1
+ else
+ STATUS=$WARN
+ WARNING="No path to Compiz found."
+ ERROR_MESSAGE="In case you did not compile Compiz manually, this will result in Compiz\n failing to run."
+ if [ -d $XDG_COMPIZ ]; then
+ BACKUP=$(echo $(ls $XDG_COMPIZ | grep "compiz-manager\.") | awk '{print $1}')
+ fi
+ if [ ! -z $BACKUP ] ; then
+ DIST_HELP="You can try to fix this, by typing the following command in the terminal:\n\033[1msudo mv $XDG_COMPIZ/$BACKUP $XDG_COMPIZ/compiz-manager\033[0m"
+ fi
+ return 0
+ fi
+ fi
+ fi
+ fi
+
+ return 1
+}
+
+# Check if Nvidia card in use has enough memory
+check_nvidia_mem()
+{
+ if [ "$DRV" = nvidia ]; then
+ if [ "$RENDER" = Xgl ]; then
+ STATUS=$SKIPPING
+ SKIP_MESSAGE="Xgl on Nvidia chip."
+ return 0
+ fi
+ NVIDIA_SETTINGS=$(command -v nvidia-settings)
+ if [ ! -z $NVIDIA_SETTINGS ] ; then
+ MEM=$($NVIDIA_SETTINGS -q VideoRam | egrep Attribute\ \'VideoRam\'\ .*: | cut -d: -f3 | sed 's/[^0-9]//g')
+ NVIDIA_MEMORY=65536 # 64MB
+ if [ "$MEM" -lt $NVIDIA_MEMORY ] && check_skip ; then
+ STATUS=$WARN
+ WARNING="Nvidia card has not enough memory ($MEM KB) to run Compiz properly."
+ ERROR_MESSAGE="It is not recommended to run Compiz on a Nvidia chip with such a low amount\n of memory. Because of that, your hardware may be blacklisted on certain\n distributions.\n\n $DISCLAIMER"
+ QUERY_SKIP=yes
+ return 0
+ fi
+ return 1
+ fi
+ STATUS=$SKIPPING
+ SKIP_MESSAGE="Could not check the amount of memory on your Nvidia chip."
+ ERROR_MESSAGE="That does \033[1mnot\033[0m mean, you will not be able to use Compiz.\n If everything else went OK you are most probably fine.\n\n In case you want the script to check this step as well, install the program\n \033[1mnvidia-settings\033[0m on your system."
+ return 0
+ fi
+
+ return 1
+}
+
+# Check for proprietary driver (Ubuntu only)
+check_prop_driver()
+{
+ printf "Check if there's an alternate (proprietary) driver available? (Y/n) "
+ read REPLY
+ case $REPLY in
+ "" | y | Y | yes | Yes)
+ case $DRVS_MNGR in
+ hardy-gtk)
+ exec gksu jockey-gtk & exit 0
+ ;;
+ hardy-kde)
+ exec kdesu jockey-kde & exit 0
+ ;;
+ gutsy-gtk)
+ exec gksu restricted-manager & exit 0
+ ;;
+ gutsy-kde)
+ exec kdesu restricted-manager-kde & exit 0
+ ;;
+ feisty-gtk)
+ exec gksu restricted-manager & exit 0
+ ;;
+ esac
+ ;;
+ n | N | no | No)
+ exit 0
+ ;;
+ *)
+ check_prop_driver
+ ;;
+ esac
+}
+
+# Query if the user wants to skip checks in compiz-manager
+query_skip_checks()
+{
+ printf "Do you want to skip blacklist checks by Compiz? (y/N) "
+ read REPLY
+ case $REPLY in
+ y | Y | yes | Yes)
+ mkdir -p $XDG_CONFIG_HOME/compiz
+ echo SKIP_CHECKS=yes >> $COMPIZ_MNGR_HOME
+ ;;
+ "" | n | N | no | No)
+ exit 0
+ ;;
+ *)
+ query_skip_checks
+ ;;
+ esac
+}
+
+# Query if the user wants to kill xcompmgr
+query_xcompmgr()
+{
+ printf "Do you want to disable xcompmgr? (Y/n) "
+ read REPLY
+ case $REPLY in
+ "" | y | Y | yes | Yes)
+ kill $XCOMPMGR_PID
+ ;;
+ n | N | no | No)
+ exit 0
+ ;;
+ *)
+ query_xcompmgr
+ ;;
+ esac
+}
+
+# Query to disable Metacity's compositing manager
+query_metacity_comp()
+{
+ printf "Do you want to disable GNOME's compositing manager? (Y/n) "
+ read REPLY
+ case $REPLY in
+ "" | y | Y | yes | Yes)
+ $GCONFTOOL -s -t bool /apps/metacity/general/compositing_manager false
+ kill -9 $METACITY_PID 2>/dev/null
+ exec $METACITY --replace &
+ ;;
+ n | N | no | No)
+ exit 0
+ ;;
+ *)
+ query_metacity_comp
+ ;;
+ esac
+}
+
+# Query if the user wants to disable Xfwm's compsitor
+query_xfwm_comp()
+{
+ printf "Do you want to disable Xfce's compositing manager? (Y/n) "
+ read REPLY
+ case $REPLY in
+ "" | y | Y | yes | Yes)
+ kill $XFWM_PID
+ sleep 1
+ exec xfwm4 --compositor=off --daemon &
+ exit 0
+ ;;
+ n | N | no | No)
+ exit 0
+ ;;
+ *)
+ query_xfwm_comp
+ ;;
+ esac
+}
+
+# Ask user to print additional info (Starship Troopers style).
+more_info()
+{
+ printf "Would you like to know more? (Y/n) "
+ read REPLY
+ case $REPLY in
+ "" | y | Y | yes | Yes)
+ return 0
+ ;;
+ n | N | no | No)
+ return 1
+ ;;
+ *)
+ more_info
+ ;;
+ esac
+}
+
+# --- Output starts here ---
+
+# System info
+printf "\nGathering information about your system...\n\n"
+detect_distro
+printf " Distribution: %9s\033[1m${DISTRIB_ID} ${DISTRIB_RELEASE}\033[0m\n"
+detect_de
+printf " Desktop environment: %2s\033[1m${DE}\033[0m\n"
+detect_video
+printf " Graphics chip: %8s\033[1m${VIDEO}\033[0m\n"
+detect_driver
+printf " Driver in use: %8s\033[1m${DRV}\033[0m\n"
+detect_rendering
+printf " Rendering method: %5s\033[1m${RENDER}\033[0m\n"
+
+# System checks
+printf "\nChecking if it's possible to run Compiz on your system..."
+if [ "$CHECKS" = yes ]; then
+ printf "%2s[${SKIPPING}]\n\n"
+else
+ printf "\n\n Checking for texture_from_pixmap..."
+ check_tfp
+ printf "%15s[${TFP}]\n"
+ printf " Checking for non power of two support..."
+ check_npo2
+ printf "%10s[${NPO2}]\n"
+ printf " Checking for composite extension..."
+ check_composite
+ printf "%15s[${COMP}]\n"
+ printf " Checking for FBConfig..."
+ check_fbconfig
+ printf "%26s[${FBC}]\n"
+fi
+
+# Hardware checks
+printf " Checking for hardware/setup problems..."
+if [ "$CHECKS" = yes ]; then
+ printf "%11s[${SKIPPING}]\n\n"
+elif check_compositor || check_laptop_ati || check_cmpst_xorg || check_rasterizer ; then
+ printf "%11s[${FAIL}]\n\n"
+elif check_fglrx || check_whitelist || check_resolution || check_xdg || check_pciid || check_nvidia_mem ; then
+ printf "%11s[${STATUS}]\n\n"
+else
+ printf "%11s[${OK}]\n\n"
+fi
+
+# Print error or warning (if any)
+# The $ERROR, $WARNING and $SKIP_MESSAGE outputs are supposed to be a
+# short description of the respective error.
+if [ "x$ERROR" != "x" ]; then
+ printf "There has been (at least) one error detected with your setup:\n \033[31mError:\033[0m $ERROR \n\n"
+elif [ "x$WARNING" != "x" ]; then
+ printf "Something potential problematic has been detected with your setup:\n \033[33mWarning:\033[0m $WARNING \n\n"
+elif [ "x$SKIP_MESSAGE" != "x" ]; then
+ printf "At least one check had to be skipped:\n \033[33mError:\033[0m $SKIP_MESSAGE \n\n"
+fi
+
+# Interactive output begins here
+if [ "x$ERROR_MESSAGE" != "x" ] && more_info ; then
+ printf "\n $ERROR_MESSAGE \n\n"
+ if [ ! -z $QUERY_SKIP ]; then
+ query_skip_checks
+ elif [ ! -z $QUERY_XCOMPMGR ]; then
+ query_xcompmgr
+ elif [ ! -z $QUERY_METACITY ]; then
+ query_metacity_comp
+ elif [ ! -z $QUERY_XFWM ]; then
+ query_xfwm_comp
+ elif [ "x$DRVS_MNGR" != "x" ]; then
+ check_prop_driver
+ elif [ "x$DIST_HELP" != "x" ]; then
+ printf " $DIST_HELP \n\n"
+ fi
+fi
+
diff --git a/stable/scripts/convert-patch b/stable/scripts/convert-patch
new file mode 100755
index 0000000..724bcf5
--- /dev/null
+++ b/stable/scripts/convert-patch
@@ -0,0 +1,19 @@
+#!/bin/bash
+# Script to convert normal patches into ones usable by git-compiz
+if [ -z "$1" -o -z "$2" ]; then
+ echo "Usage: $0 [file to convert] [git item]"
+ exit 1
+fi
+if [ ! -f $1 ]; then
+ echo "Patch doesn't exist, can't convert"
+ exit 2
+fi
+echo " * Generating new patch"
+cat <<EOF >`basename $1`.git-compiz
+GIT_OBJECT=$2
+
+---
+EOF
+cat $1 >>`basename $1`.git-compiz
+echo " * Generated `basename $1`.git-compiz"
+exit