Public feed #599109

Miscellany

public text v1 · immutable
Raw Edit
·published 2007-07-02 00:23 UTC
rendered paste body
#!/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()