#!/usr/bin/env python # Copyright (C) 2006, Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import os import sys import gtk os.environ['SUGAR_EMULATOR'] = 'yes' sourcedir = os.path.abspath(os.path.dirname(__file__)) if os.path.isfile(os.path.join(sourcedir, 'sugar/__uninstalled__.py')): print 'Running sugar from ' + sourcedir + ' ...' sys.path.insert(0, sourcedir) else: print 'Running the installed sugar...' sourcedir = None from sugar import env from sugar import util from sugar.emulator import Emulator if sourcedir: if os.environ.has_key('PYTHONPATH'): old_path = os.environ['PYTHONPATH'] os.environ['PYTHONPATH'] = sourcedir + ':' + old_path else: os.environ['PYTHONPATH'] = sourcedir bin_path = sourcedir bin_path += ':' + os.path.join(sourcedir, 'shell') bin_path += ':' + os.path.join(sourcedir, 'services/presence') bin_path += ':' + os.path.join(sourcedir, 'services/clipboard') if os.environ.has_key('PATH'): old_path = os.environ['PATH'] os.environ['PATH'] = bin_path + ':' + old_path else: os.environ['PATH'] = bin_path bin = os.path.join(sourcedir, 'services/presence/sugar-presence-service') util.write_service('org.laptop.Presence', bin, env.get_user_service_dir()) bin = os.path.join(sourcedir, 'services/clipboard/sugar-clipboard') util.write_service('org.laptop.Clipboard', bin, env.get_user_service_dir()) bin = os.path.join(sourcedir, 'services/datastore/sugar-data-store') util.write_service('org.laptop.sugar.DataStore', bin, env.get_user_service_dir()) bin = os.path.join(sourcedir, 'services/console/sugar-console') util.write_service('org.laptop.sugar.Console', bin, env.get_user_service_dir()) if len(sys.argv) == 1: program = 'sugar-shell' else: program = sys.argv[1] width = height = -1 if gtk.gdk.screen_width() / 4 * 3 == gtk.gdk.screen_height(): fullscreen = (gtk.gdk.screen_width() <= 1200 or gtk.gdk.screen_height() <= 900) else: fullscreen = False height = gtk.gdk.screen_height() - 50 width = height * 4 / 3 emulator = Emulator(width, height, fullscreen) emulator.start() os.execlp('dbus-launch', 'dbus-launch', '--exit-with-session', program)