#!/usr/bin/python import os import pygtk pygtk.require('2.0') import gtk, gobject import egg.trayicon is_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 break def 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 icon tray = 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()