diff options
author | Izhar Firdaus <kagesenshi.87@gmail.com> | 2008-12-26 03:40:04 +0800 |
---|---|---|
committer | Izhar Firdaus <kagesenshi.87@gmail.com> | 2008-12-26 03:40:04 +0800 |
commit | d52056e943cead3d2e59022420191eff4b128300 (patch) | |
tree | ed17460a5618cb13f8cdbc1788291d0d584f98af | |
download | fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.tar.gz fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.tar.xz fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.zip |
- initial import
-rwxr-xr-x | compiz-fusion-gtk | 11 | ||||
-rw-r--r-- | compiz-fusion-gtk.desktop | 8 | ||||
-rwxr-xr-x | fusion-desktop-effects.in | 145 | ||||
-rw-r--r-- | images/cf_logo.png | bin | 0 -> 14813 bytes | |||
-rwxr-xr-x | setup.py | 66 |
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 Binary files differnew file mode 100644 index 0000000..a2afc2c --- /dev/null +++ b/images/cf_logo.png 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}, + ) + + |