rendered paste body#!/usr/bin/pythonimport osimport pygtkpygtk.require('2.0')import gtk, gobjectimport egg.trayiconis_installed = []apps = ("compiz", "gcompizthemer", "cgwd", "gnome-window-decorator")decorators = ("cgwd", "gnome-window-decorator")for x in apps: if os.path.exists('/usr/bin/' + x): is_installed.append(x)for x in decorators: if x in is_installed: decorator = x breakdef start_compiz(): gobject.spawn_async(['compiz', '--replace', 'gconf'], \ flags=gobject.SPAWN_SEARCH_PATH)def start_decorator(): if decorator == decorators[1]: gobject.spawn_async(['cgwd', '--replace'], \ flags=gobject.SPAWN_SEARCH_PATH) else: gobject.spawn_asynx(['gnome-window-decorator', '--replace'], \ flags=gobject.SPAWN_SEARCH_PATH)def place_menu(menu): (width, height) = menu.size_request() (menu_xpos, menu_ypos) = tray.window.get_origin() menu_xpos = menu_xpos + tray.allocation.x menu_ypos = menu_ypos + tray.allocation.y if menu_ypos > tray.get_screen().get_height() / 2: menu_ypos -= height + 1 else: menu_ypos += tray.allocation.height + 1 x = menu_xpos; y = menu_ypos; push_in = True; return (x, y, push_in)def gconf_menu_activate(widget): gobject.spawn_async(['gconf-editor', '/apps/compiz'], flags=gobject.SPAWN_SEARCH_PATH)def cpm_menu_activate(widget): gobject.spawn_async(['cpm'], flags=gobject.SPAWN_SEARCH_PATH)def gcompizthemer_menu_activate(widget): gobject.spawn_async(['gcompizthemer'], flags=gobject.SPAWN_SEARCH_PATH)def compiz_menu_activate(widget): start_compiz()def decorator_menu_activate(widget): start_decorator()def compiz_decorator_menu_activate(widget): start_compiz() start_decorator()def metacity_menu_activate(widget): os.system("killall " + decorator) gobject.spawn_async(['metacity', '--replace', 'gconf'], \ flags=gobject.SPAWN_SEARCH_PATH)def quit_menu_activate(widget): gtk.main_quit()def callback(widget, ev): menu.set_screen(widget.get_screen()) menu.popup(None, None, place_menu, ev.button, ev.time)menu = gtk.Menu()item = gtk.ImageMenuItem( "Edit with Gconf" )item.connect("activate", gconf_menu_activate)_img = gtk.Image()_img.set_from_stock("gtk-preferences", gtk.ICON_SIZE_BUTTON)item.set_image(_img)menu.append(item)item = gtk.ImageMenuItem ( "Edit with CPM" )item.connect("activate", cpm_menu_activate)_img = gtk.Image()_img.set_from_stock("gtk-preferences", gtk.ICON_SIZE_BUTTON)item.set_image(_img)menu.append(item)item = gtk.SeparatorMenuItem()menu.append(item)item = gtk.ImageMenuItem( "Theme Selector" )item.connect("activate", gcompizthemer_menu_activate)_img = gtk.Image()_img.set_from_stock("gtk-select-color", gtk.ICON_SIZE_BUTTON)item.set_image(_img)menu.append(item)item = gtk.SeparatorMenuItem()menu.append(item)item = gtk.MenuItem("Restart Compiz")item.connect("activate", compiz_menu_activate)menu.append(item)item = gtk.MenuItem("Restart " + decorator)item.connect("activate", decorator_menu_activate)menu.append(item)item = gtk.MenuItem("Restart Both")item.connect("activate", compiz_decorator_menu_activate)menu.append(item)item = gtk.SeparatorMenuItem()menu.append(item)item = gtk.MenuItem("Switch to metacity")item.connect("activate", metacity_menu_activate)menu.append(item)item = gtk.SeparatorMenuItem()menu.append(item)item = gtk.ImageMenuItem(stock_id=gtk.STOCK_QUIT)item.connect("activate", quit_menu_activate)menu.append(item)menu.show_all()# Set the systray icontray = egg.trayicon.TrayIcon("TrayIcon")box = gtk.EventBox()pixbuf = gtk.gdk.pixbuf_new_from_file("/usr/share/compiz/logo24.png")image = gtk.Image()image.set_from_pixbuf(pixbuf)box.add(image)tray.add(box)tray.show_all() box.connect("button-press-event", callback)decorator=os.system("ps -A | grep " + decorator)compiz=os.system("ps -A | grep compiz")compizstart=os.system("ps -A | grep compiz-start")if (compiz and decorator) == (256 or '') or compizstart == (256 or ''): start_compiz() start_decorator()elif compiz == (256 or ''): start_compiz()elif decorator == (256 or ''): start_decorator()gtk.main()