summaryrefslogtreecommitdiffstats
path: root/fusion-desktop-effects.in
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 /fusion-desktop-effects.in
downloadfusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.tar.gz
fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.tar.xz
fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.zip
- initial import
Diffstat (limited to 'fusion-desktop-effects.in')
-rwxr-xr-xfusion-desktop-effects.in145
1 files changed, 145 insertions, 0 deletions
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()
+
+