summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIzhar Firdaus <kagesenshi.87@gmail.com>2008-12-26 03:40:04 +0800
committerIzhar Firdaus <kagesenshi.87@gmail.com>2008-12-26 03:40:04 +0800
commitd52056e943cead3d2e59022420191eff4b128300 (patch)
treeed17460a5618cb13f8cdbc1788291d0d584f98af
downloadfusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.tar.gz
fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.tar.xz
fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.zip
- initial import
-rwxr-xr-xcompiz-fusion-gtk11
-rw-r--r--compiz-fusion-gtk.desktop8
-rwxr-xr-xfusion-desktop-effects.in145
-rw-r--r--images/cf_logo.pngbin0 -> 14813 bytes
-rwxr-xr-xsetup.py66
5 files changed, 230 insertions, 0 deletions
diff --git a/compiz-fusion-gtk b/compiz-fusion-gtk
new file mode 100755
index 0000000..898d1d1
--- /dev/null
+++ b/compiz-fusion-gtk
@@ -0,0 +1,11 @@
+#!/bin/sh
+export LIBGL_ALWAYS_INDIRECT=1
+
+/usr/bin/glx_tfp_test
+
+if [ $? -eq 0 ]; then
+ gtk-window-decorator &
+ exec compiz --ignore-desktop-hints ccp $@
+else
+ exec metacity $@
+fi
diff --git a/compiz-fusion-gtk.desktop b/compiz-fusion-gtk.desktop
new file mode 100644
index 0000000..ded0f4c
--- /dev/null
+++ b/compiz-fusion-gtk.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+Name=Compiz
+TryExec=compiz-fusion-gtk
+Exec=compiz-fusion-gtk
+NoDisplay=true
+X-Desktop-File-Install-Version=0.15
diff --git a/fusion-desktop-effects.in b/fusion-desktop-effects.in
new file mode 100755
index 0000000..4a31d56
--- /dev/null
+++ b/fusion-desktop-effects.in
@@ -0,0 +1,145 @@
+#!/usr/bin/env python
+
+import gtk
+import sys
+import gobject
+import gettext
+import subprocess
+import time
+import gconf
+_ = gettext.gettext
+
+gettext.bindtextdomain("fusion-desktop-effects", "@prefix@/share/locale")
+gettext.textdomain("fusion-desktop-effects")
+COMPIZ_LAUNCHER = "compiz-manager"
+COMPIZ_WM = "compiz-fusion-gtk"
+WM_KEY = "/desktop/gnome/session/required_components/windowmanager"
+BANNER = "@datadir@/cf_logo.png"
+
+def enable_compiz():
+ gc = gconf.client_get_default()
+ gc.set_string(WM_KEY,COMPIZ_WM)
+
+def compiz_enabled():
+ gc = gconf.client_get_default()
+ return gc.get_string(WM_KEY) == COMPIZ_WM
+
+def enable_metacity():
+ subprocess.Popen(["metacity","--replace"])
+ gc = gconf.client_get_default()
+ gc.set_string(WM_KEY,"metacity")
+
+
+class MainWindow:
+ def __init__(self):
+ self.window = gtk.Dialog()
+ self.window.set_title(_("Compiz Fusion"))
+ self.togglebutton = gtk.ToggleButton(_("Enable Compiz Fusion Desktop Effects"))
+ self.window.set_resizable(False)
+ if compiz_enabled():
+ self.togglebutton.set_active(True)
+ self.togglebutton.connect('toggled',self.on_toggle)
+
+
+ heading = gtk.Label(_("<b>Desktop Effects</b>"))
+ heading.set_use_markup(True)
+ heading.set_alignment(0,0)
+ hbox = gtk.HBox(homogeneous=False,spacing=0)
+ self.window.vbox.pack_start(hbox,padding=10)
+ vbox = gtk.VBox(homogeneous=False,spacing=0)
+
+ img = gtk.Image()
+ img.set_from_file(BANNER)
+
+ vbox.pack_start(img)
+ hbox.pack_start(vbox,padding=10)
+ vbox.pack_start(heading)
+ vbox.pack_start(self.togglebutton)
+
+ closebutton = self.window.add_button(gtk.STOCK_CLOSE,0)
+ closebutton.connect('clicked',self.destroy)
+ self.window.show_all()
+
+ self.window.connect('destroy',self.destroy)
+
+ def destroy(self,widget):
+ sys.exit(0)
+
+ def on_toggle(self,widget):
+ if widget.get_active():
+ process = subprocess.Popen([COMPIZ_LAUNCHER])
+ procpoll = None
+ for i in range(0,5):
+ time.sleep(1)
+ procpoll = process.poll()
+ if not procpoll:
+ td = TimeoutDialog(self.togglebutton)
+ td.run()
+ else:
+ enable_metacity()
+
+class TimeoutDialog:
+ def __init__(self,togglebutton):
+ self.togglebutton = togglebutton
+ self.window = gtk.Dialog()
+ self.window.set_resizable(False)
+ self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS)
+ self.window.set_title(_("Keep Settings"))
+
+ mainbox = gtk.HBox(homogeneous=False,spacing=0)
+ self.window.vbox.pack_start(mainbox,padding=10)
+
+ iconimg = gtk.Image()
+ iconimg.set_from_icon_name('gtk-dialog-question',6)
+ mainbox.pack_start(iconimg,padding=5)
+
+ vbox = gtk.VBox(homogeneous=False,spacing=0)
+ heading = gtk.Label(_("<b>Do you want to keep these settings?</b>"))
+ heading.set_use_markup(True)
+ vbox.pack_start(heading)
+ self.label = gtk.Label(_("Testing the new settings. If you don't respond in 30 seconds, the previous settings will be restored."))
+ self.label.set_line_wrap(True)
+ vbox.pack_start(self.label)
+ mainbox.pack_start(vbox)
+
+ savebutton = self.window.add_button(_("Keep Settings"),0)
+ cancelbutton = self.window.add_button(_("Use Previous Settings"),0)
+ savebutton.connect('clicked',self.save)
+ cancelbutton.connect('clicked',self.cancel)
+
+ self.window.show_all()
+
+ def save(self,widget):
+ self._apply()
+ gobject.source_remove(self.timeoutloop)
+ self.window.destroy()
+
+ def _apply(self):
+ enable_compiz()
+
+ def cancel(self,widget):
+ self._revert()
+ self.window.destroy()
+
+ def _revert(self):
+ enable_metacity()
+
+ def run(self):
+ timerdata = dict(timer=0,endtime=30)
+ self.timeoutloop = gobject.timeout_add(1000, self.updatelabel,timerdata)
+
+ def updatelabel(self,timerdata):
+ timeleft = timerdata['endtime'] - timerdata['timer']
+ self.label.set_label(_("Testing the new settings. If you don't respond in %d seconds, the previous settings will be restored." % timeleft))
+ timerdata['timer'] += 1
+ if timeleft < 0:
+ self._revert()
+ return False
+ else: return True
+
+
+
+a = MainWindow()
+gtk.main()
+
+
diff --git a/images/cf_logo.png b/images/cf_logo.png
new file mode 100644
index 0000000..a2afc2c
--- /dev/null
+++ b/images/cf_logo.png
Binary files differ
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..66320e7
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+
+import sys, getopt
+from distutils.core import setup
+from distutils.command.build import build as _build
+
+prefix="/usr"
+pyscripts = ["fusion-desktop-effects"]
+scripts = ["compiz-fusion-gtk"]
+
+
+def getindex(l,var):
+ idx = 0
+ for i in l:
+ if i == var:
+ return idx
+ else:
+ idx += 1
+ return 0
+
+if len(sys.argv) > 2:
+ (opts,args) = getopt.getopt(sys.argv[2:],"","prefix=")
+ for o,v in opts:
+ if o == "--prefix":
+ prefix = v
+ if sys.argv[1] == "build":
+ if "%s=%s" % (o,v) in sys.argv:
+ sys.argv.remove("%s=%s" % (o,v))
+ else:
+ i = getindex(sys.argv,o)
+ sys.argv.pop(i)
+ sys.argv.pop(i)
+
+datadir="%s/share/fusion-desktop-effects/" % prefix
+
+
+
+class build(_build):
+ def run(self):
+ for s in pyscripts:
+ f = open("%s.in" % s).read().replace("@prefix@",prefix).replace("@datadir@",datadir)
+ fo = open(s,'w')
+ fo.write(f)
+ fo.close()
+ _build.run(self)
+
+
+
+setup (
+ name = "fusion-desktop-effects",
+ version = "0.0.1",
+ description = "Compiz Fusion Desktop Effects",
+ author = "Mohd Izhar Firdaus Ismail",
+ author_email = "izhar@fedoraproject.org",
+ url = "http://blog.kagesenshi.org/",
+ license = "GPL",
+ data_files = [
+ (datadir,['images/cf_logo.png']),
+ ('%s/share/applications' % prefix, ['compiz-fusion-gtk.desktop'])
+ ],
+ packages = [],
+ scripts = scripts + pyscripts,
+ cmdclass = {"build":build},
+ )
+
+