#!/usr/bin/env python # Author(s): crdlb import gobject, pygtk, gtk pygtk.require('2.0') from time import sleep from iconshared import * # Compiz-Manager Menu Functions def popup_menu(widget, button, time, data = None): if button == 3 and data: data.show_all() data.popup(None, None, gtk.status_icon_position_menu, 3, time, icon) def configure_menu_activate(widget): gobject.spawn_async(['ccsm'], flags=gobject.SPAWN_SEARCH_PATH) def option_ff_activate(widget): # Set/Unset ff option if option_ff.get_active(): configuration.set('compiz_options', 'fast_filter', '--fast-filter') configuration.write(open(config_file, 'w')) else: configuration.set('compiz_options', 'fast_filter', '') configuration.write(open(config_file, 'w')) if active_wm == compiz and initialized: start_compiz() def option_ir_activate(widget): # Set/Unset ir option if option_ir.get_active(): configuration.set('compiz_options', 'indirect_rendering', '--indirect-rendering') configuration.write(open(config_file, 'w')) else: configuration.set('compiz_options', 'indirect_rendering', '') configuration.write(open(config_file, 'w')) if active_wm == compiz and initialized: start_compiz() def option_lb_activate(widget): # Set/Unset lb option if option_lb.get_active(): configuration.set('compiz_options', 'loose_binding', '--loose-binding') configuration.write(open(config_file, 'w')) else: configuration.set('compiz_options', 'loose_binding', '') configuration.write(open(config_file, 'w')) if active_wm == compiz and initialized: start_compiz() def emerald_menu_activate(widget): if initialized and emerald_decorator.active: if active_wm == compiz and get_decorator() != 'emerald --replace': #remove the '--replace' (and any other arguments) old_dec_list = get_decorator().split() old_decorator = old_dec_list[0] system('killall %s' % (old_decorator)) sleep(1) set_decorator('emerald --replace') def kwd_menu_activate(widget): if initialized and kwd_decorator.active: if active_wm == compiz and get_decorator() != 'kde-window-decorator --replace': old_dec_list = get_decorator().split() old_decorator = old_dec_list[0] system('killall %s' % (old_decorator)) sleep(1) set_decorator('kde-window-decorator --replace') def gwd_menu_activate(widget): if initialized and gwd_decorator.active: if active_wm == compiz and get_decorator() != 'gtk-window-decorator --replace': old_dec_list = get_decorator().split() old_decorator = old_dec_list[0] system('killall %s' % (old_decorator)) sleep(1) set_decorator('gtk-window-decorator --replace') def quit_menu_activate(widget): gtk.main_quit() # Window Manager wm_menu = gtk.Menu() compiz_wm = gtk.RadioMenuItem(label=' Compiz') compiz_wm.connect('activate', compiz_menu_activate) if active_wm == compiz: compiz_wm.set_active(True) if compiz == '': compiz_wm.set_active(False) compiz_wm.set_sensitive(False) wm_menu.append(compiz_wm) if installed('kwin'): kwin_wm = gtk.RadioMenuItem(label=' Kwin') kwin_wm.set_group(compiz_wm) kwin_wm.connect('activate', kwin_menu_activate) if active_wm == 'kwin': kwin_wm.set_active(True) wm_menu.append(kwin_wm) if installed('metacity'): metacity_wm = gtk.RadioMenuItem(label=' Metacity') metacity_wm.set_group(compiz_wm) metacity_wm.connect('activate', metacity_menu_activate) if active_wm == 'metacity': metacity_wm.set_active(True) wm_menu.append(metacity_wm) if installed('xfwm4'): xfwm4_wm = gtk.RadioMenuItem(label=' Xfwm4') xfwm4_wm.set_group(compiz_wm) xfwm4_wm.connect('activate', xfwm4_menu_activate) if active_wm == 'xfwm4': xfwm4_wm.set_active(True) wm_menu.append(xfwm4_wm) # Compiz Options options_menu = gtk.Menu() option_ff = gtk.CheckMenuItem(label=' Fast Filter') option_ff.connect('activate', option_ff_activate) if fast_filter == '--fast-filter': option_ff.set_active(True) options_menu.append(option_ff) option_ir = gtk.CheckMenuItem(label=' Indirect Rendering') option_ir.connect('activate', option_ir_activate) if indirect_rendering == '--indirect-rendering': option_ir.set_active(True) if always_indirect: option_ir.set_active(True) option_ir.set_sensitive(False) options_menu.append(option_ir) option_lb = gtk.CheckMenuItem(label=' Loose Binding') option_lb.connect('activate', option_lb_activate) if loose_binding == '--loose-binding': option_lb.set_active(True) options_menu.append(option_lb) # Window Decorator decorator_menu = gtk.Menu() emerald_decorator = gtk.RadioMenuItem(label=' Emerald') emerald_decorator.connect('activate', emerald_menu_activate) if active_decorator == 'emerald --replace': emerald_decorator.set_active(True) if not installed('emerald'): emerald_decorator.set_active(False) emerald_decorator.set_sensitive(False) decorator_menu.append(emerald_decorator) if installed('gtk-window-decorator'): gwd_decorator = gtk.RadioMenuItem(label=' GTK Window Decorator') gwd_decorator.set_group(emerald_decorator) gwd_decorator.connect('activate', gwd_menu_activate) if active_decorator == 'gtk-window-decorator --replace': gwd_decorator.set_active(True) decorator_menu.append(gwd_decorator) if installed('kde-window-decorator'): kwd_decorator = gtk.RadioMenuItem(label=' KDE Window Decorator') kwd_decorator.set_group(emerald_decorator) kwd_decorator.connect('activate', kwd_menu_activate) if active_decorator == 'kde-window-decorator --replace': kwd_decorator.set_active(True) decorator_menu.append(kwd_decorator) # Compiz-Manager Tray Menu menu = gtk.Menu() item = gtk.ImageMenuItem('Settings Manager') img_sm = gtk.Image() img_sm.set_from_stock('gtk-preferences', gtk.ICON_SIZE_MENU) item.set_image(img_sm) item.connect('activate', configure_menu_activate) menu.append(item) item = gtk.ImageMenuItem('Emerald Theme Manager') if not installed('emerald'): item.set_sensitive(False) item.connect('activate', etm_menu_activate) img_etm = gtk.Image() img_etm.set_from_icon_name('emerald-theme-manager-icon', gtk.ICON_SIZE_MENU) item.set_image(img_etm) menu.append(item) item = gtk.SeparatorMenuItem() menu.append(item) # Window Manager Options item = gtk.ImageMenuItem('Reload Window Manager') item.connect('activate', wm_activate) img_refresh = gtk.Image() img_refresh.set_from_stock('gtk-refresh', gtk.ICON_SIZE_MENU) item.set_image(img_refresh) menu.append(item) item = gtk.ImageMenuItem('Select Window Manager') gtk.MenuItem.set_submenu(item, wm_menu) img_wm = gtk.Image() img_wm.set_from_stock('gtk-index', gtk.ICON_SIZE_MENU) item.set_image(img_wm) menu.append(item) item = gtk.ImageMenuItem('Compiz Options') gtk.MenuItem.set_submenu(item, options_menu) img_options = gtk.Image() img_options.set_from_stock('gtk-properties', gtk.ICON_SIZE_MENU) item.set_image(img_options) menu.append(item) item = gtk.ImageMenuItem('Select Window Decorator') gtk.MenuItem.set_submenu(item, decorator_menu) img_wd = gtk.Image() img_wd.set_from_stock('gtk-select-color', gtk.ICON_SIZE_MENU) item.set_image(img_wd) 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() # Compiz Fusion Icon pixbuf = gtk.gdk.pixbuf_new_from_file(path.join(pixmap_dir, 'fusion-icon.png')) icon = gtk.StatusIcon() icon.set_from_pixbuf(pixbuf) icon.set_tooltip('Compiz Fusion Icon') icon.connect('popup-menu', popup_menu, menu) initialized = True #start a WM pre_start_wm() # Compiz Fusion Icon Main gtk.main()