From dbe42ac6d9c0be6be47d2c7545b4997070b4621f Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 04 Feb 2008 19:36:09 +0000 Subject: Make the shell scripts just a tiny wrapper which setup the python path and run main(). --- (limited to 'bin/sugar-shell') diff --git a/bin/sugar-shell b/bin/sugar-shell deleted file mode 100755 index b8f44a3..0000000 --- a/bin/sugar-shell +++ /dev/null @@ -1,164 +0,0 @@ -#!/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 sys -import os -from ConfigParser import ConfigParser -import gettext - -# HACK we need to import numpy before gtk otherwise we traceback in -# some locales. See http://dev.laptop.org/ticket/5559. -import numpy - -import pygtk -pygtk.require('2.0') -import gtk -import gobject - -from sugar import env -from sugar import logger -from sugar.profile import get_profile - -sys.path.insert(0, env.get_shell_path()) - -from view.Shell import Shell -from model.shellmodel import ShellModel -from shellservice import ShellService -from hardware import hardwaremanager -from intro import intro -import logsmanager -import config - -def _start_matchbox(): - cmd = ['matchbox-window-manager'] - - cmd.extend(['-use_titlebar', 'no']) - cmd.extend(['-theme', 'sugar']) - cmd.extend(['-kbdconfig', env.get_shell_path('kbdconfig')]) - - gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH) - -def _save_session_info(): - # Save our DBus Session Bus address somewhere it can be found - # - # WARNING!!! this is going away at some near future point, do not rely on it - # - session_info_file = os.path.join(env.get_profile_path(), "session.info") - f = open(session_info_file, "w") - - cp = ConfigParser() - cp.add_section('Session') - cp.set('Session', 'dbus_address', os.environ['DBUS_SESSION_BUS_ADDRESS']) - cp.set('Session', 'display', gtk.gdk.display_get_default().get_name()) - cp.write(f) - - f.close() - -def _setup_translations(): - locale_path = os.path.join(config.prefix, 'share', 'locale') - domain = 'sugar' - - gettext.bindtextdomain(domain, locale_path) - gettext.textdomain(domain) - -def check_cm(bus_name): - try: - import dbus - bus = dbus.SessionBus() - bus_object = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus') - name = bus_object.GetNameOwner(bus_name, dbus_interface='org.freedesktop.DBus') - if name: - return True - except dbus.DBusException: - pass - return False - -def _shell_started_cb(): - # Unfreeze the display - hw_manager = hardwaremanager.get_manager() - hw_manager.set_dcon_freeze(0) - -def main(): - gobject.idle_add(_shell_started_cb) - - logsmanager.setup() - logger.start('shell') - - _save_session_info() - _start_matchbox() - _setup_translations() - - icons_path = env.get_data_path('icons') - gtk.icon_theme_get_default().append_search_path(icons_path) - - # Do initial setup if needed - if not get_profile().is_valid(): - win = intro.IntroWindow() - win.show_all() - gtk.main() - - if os.environ.has_key("SUGAR_TP_DEBUG"): - # Allow the user time to start up telepathy connection managers - # using the Sugar DBus bus address - import time - from telepathy.client import ManagerRegistry - - registry = ManagerRegistry() - registry.LoadManagers() - - debug_flags = os.environ["SUGAR_TP_DEBUG"].split(',') - for cm_name in debug_flags: - if cm_name not in ["gabble", "salut"]: - continue - - try: - cm = registry.services[cm_name] - except KeyError: - print RuntimeError("%s connection manager not found!" % cm_name) - - while not check_cm(cm['busname']): - print "Waiting for %s on: DBUS_SESSION_BUS_ADDRESS=%s" %(cm_name, os.environ["DBUS_SESSION_BUS_ADDRESS"]) - try: - time.sleep(5) - except KeyboardInterrupt: - print "Got Ctrl+C, continuing..." - break - - model = ShellModel() - shell = Shell(model) - service = ShellService(shell) - -if __name__ == '__main__': - # running the gtk.main outside of the main() function allows us to - # profile startup times. To profile startup times replace the following - # call to main with: - # import cProfile - # cProfile.run('main()', '/home/olpc/sugar-startup.stats') - - main() - - hw_manager = hardwaremanager.get_manager() - hw_manager.startup() - - try: - gtk.main() - except KeyboardInterrupt: - print 'Ctrl+C pressed, exiting...' - - session_info_file = os.path.join(env.get_profile_path(), "session.info") - os.remove(session_info_file) - -- cgit v0.9.1