diff options
Diffstat (limited to 'shell/sugar')
-rwxr-xr-x | shell/sugar | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/shell/sugar b/shell/sugar new file mode 100755 index 0000000..ccfdd00 --- /dev/null +++ b/shell/sugar @@ -0,0 +1,81 @@ +#!/usr/bin/python + +import sys +import os +import pwd +import random + +import pygtk +pygtk.require('2.0') +import gobject + +def add_to_python_path(path): + sys.path.insert(0, path) + if os.environ.has_key('PYTHONPATH'): + os.environ['PYTHONPATH'] += ':' + path + else: + os.environ['PYTHONPATH'] = path + +def start_dbus(): + curdir = os.path.dirname(__file__) + args = "/bin/dbus-daemon --session --print-address".split() + (dbus_pid, ign1, dbus_stdout, ign3) = gobject.spawn_async(args, flags=gobject.SPAWN_STDERR_TO_DEV_NULL, standard_output=True) + dbus_file = os.fdopen(dbus_stdout) + addr = dbus_file.readline() + addr = addr.strip() + print "dbus-daemon pid is %d, session bus address is %s" % (dbus_pid, addr) + dbus_file.close() + + os.environ["DBUS_SESSION_BUS_ADDRESS"] = addr + + return dbus_pid + +def stop_dbus(dbus_pid): + try: + print 'Closing dbus-daemon, pid %d' % (dbus_pid) + os.kill(dbus_pid, 9) + except OSError: + pass + +i = 0 +dbus_daemon_pid = None +for arg in sys.argv: + if arg == '--test-user': + user = sys.argv[i + 1] + user_dir = os.path.expanduser('~/.sugar-' + user) + os.environ['SUGAR_NICK_NAME'] = user + os.environ['SUGAR_USER_DIR'] = user_dir + dbus_daemon_pid = start_dbus() + started_dbus = True + i += 1 + +if not os.environ.has_key("SUGAR_NICK_NAME"): + nick = pwd.getpwuid(os.getuid())[0] + if not nick or not len(nick): + nick = "Guest %d" % random.randint(1, 10000) + os.environ['SUGAR_NICK_NAME'] = nick + os.environ['SUGAR_USER_DIR'] = os.path.expanduser('~/.sugar') + + +curdir = os.path.abspath(os.path.dirname(__file__)) +basedir = os.path.dirname(curdir) + +if os.path.isfile(os.path.join(basedir, 'sugar/__uninstalled__.py')): + print 'Running sugar from ' + basedir + ' ...' + add_to_python_path(basedir) + add_to_python_path(os.path.join(basedir, 'shell')) + add_to_python_path(os.path.join(basedir, 'activities/browser')) +else: + print 'Running the installed sugar...' + +add_to_python_path(os.path.expanduser('~/.sugar/activities')) + +print 'Redirecting output to the console, press ctrl+d to open it.' + +from session.session import Session + +session = Session() +session.start() + +if dbus_daemon_pid: + stop_dbus(dbus_daemon_pid) |