You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.5 KiB
Python

import os
import gtk
import gobject
from Shell import Shell
from Process import Process
import sugar.theme
import sugar.env
class ActivityProcess(Process):
def __init__(self, module):
Process.__init__(self, module.get_exec())
self._module = module
def get_name(self):
return self._module.get_name()
class DbusProcess(Process):
def __init__(self):
Process.__init__(self, "dbus-daemon --session --print-address")
def get_name(self):
return 'Dbus'
def start(self):
Process.start(self, True)
dbus_file = os.fdopen(self._stdout)
addr = dbus_file.readline()
addr = addr.strip()
dbus_file.close()
os.environ["DBUS_SESSION_BUS_ADDRESS"] = addr
class MatchboxProcess(Process):
def __init__(self):
options = '-use_titlebar no'
kbd_config = os.path.join(sugar.env.get_data_dir(), 'kbdconfig')
options += ' -kbdconfig %s' % kbd_config
command = 'matchbox-window-manager %s' % options
print command
Process.__init__(self, command)
def get_name(self):
return 'Matchbox'
class Session:
"""Takes care of running the shell and all the sugar processes"""
def __init__(self):
sugar.theme.setup()
def start(self):
"""Start the session"""
process = DbusProcess()
process.start()
process = MatchboxProcess()
process.start()
shell = Shell()
shell.start()
registry = shell.get_registry()
for activity_module in registry.list_activities():
process = ActivityProcess(activity_module)
process.start()
try:
gtk.main()
except KeyboardInterrupt:
print 'Ctrl+C pressed, exiting...'