Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpgritti@gmail.com>2008-09-30 16:41:13 (GMT)
committer Marco Pesenti Gritti <mpgritti@gmail.com>2008-09-30 16:41:13 (GMT)
commit1f9e32e0cfa67c6a80d9200b7f7a586aff117133 (patch)
tree2ede00387e2d8f3f1cc5f3203f03b43b57bf8474 /bin
parent6619fc343aa99a7f27136eced6b8f9b71232d97b (diff)
Move emulator code in the script.
Diffstat (limited to 'bin')
-rw-r--r--bin/sugar-emulator106
1 files changed, 103 insertions, 3 deletions
diff --git a/bin/sugar-emulator b/bin/sugar-emulator
index 90e0234..36958db 100644
--- a/bin/sugar-emulator
+++ b/bin/sugar-emulator
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-# Copyright (C) 2008, Red Hat, Inc.
+# Copyright (C) 2006-2008, 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
@@ -15,8 +15,108 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-from jarabe.emulator import main
+import os
+import subprocess
+import time
+from optparse import OptionParser
-main()
+import gtk
+import gobject
+
+from sugar import env
+
+def _run_xephyr(display, dpi):
+ cmd = [ 'Xephyr' ]
+ cmd.append(':%d' % display)
+ cmd.append('-ac')
+
+ if gtk.gdk.screen_width() < 1200 or gtk.gdk.screen_height() < 900:
+ cmd.append('-fullscreen')
+ else:
+ cmd.append('-screen')
+ cmd.append('%dx%d' % (1200, 900))
+
+ if not dpi:
+ dpi = gtk.settings_get_default().get_property('gtk-xft-dpi') / 1024
+ if dpi > 0:
+ cmd.append('-dpi')
+ cmd.append('%d' % dpi)
+
+ result = gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH)
+ pid = result[0]
+
+ os.environ['DISPLAY'] = ":%d" % (display)
+ os.environ['SUGAR_EMULATOR_PID'] = str(pid)
+
+def _check_xephyr(display):
+ result = subprocess.call(['xdpyinfo', '-display', ':%d' % display],
+ stdout=open(os.devnull, "w"),
+ stderr=open(os.devnull, "w"))
+ return result == 0
+
+def _start_xephyr(dpi=None):
+ for display in range(100, 110):
+ if not _check_xephyr(display):
+ _run_xephyr(display, dpi)
+
+ tries = 10
+ while tries > 0:
+ if _check_xephyr(display):
+ return
+ else:
+ tries -= 1
+ time.sleep(0.1)
+
+def _start_matchbox():
+ cmd = ['matchbox-window-manager']
+
+ cmd.extend(['-use_titlebar', 'no'])
+ cmd.extend(['-theme', 'sugar'])
+ gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH)
+def _setup_env():
+ os.environ['SUGAR_EMULATOR'] = 'yes'
+ os.environ['GABBLE_LOGFILE'] = os.path.join(
+ env.get_profile_path(), 'logs', 'telepathy-gabble.log')
+ os.environ['SALUT_LOGFILE'] = os.path.join(
+ env.get_profile_path(), 'logs', 'telepathy-salut.log')
+ os.environ['STREAM_ENGINE_LOGFILE'] = os.path.join(
+ env.get_profile_path(), 'logs', 'telepathy-stream-engine.log')
+
+def main():
+ """Script-level operations"""
+
+ parser = OptionParser()
+ parser.add_option('-x', '--xo-style', dest='xo_style',
+ action='store_true', help='use the XO style')
+ (options, args) = parser.parse_args()
+
+ _setup_env()
+
+ if options.xo_style:
+ _start_xephyr(dpi=201)
+ else:
+ _start_xephyr()
+
+ if options.xo_style:
+ os.environ['SUGAR_THEME'] = 'sugar-xo'
+ os.environ['SUGAR_XO_STYLE'] = 'yes'
+ else:
+ os.environ['SUGAR_XO_STYLE'] = 'no'
+
+ command = ['dbus-launch', 'dbus-launch', '--exit-with-session']
+
+ if not args:
+ command.append('sugar-shell')
+ else:
+ _start_matchbox()
+
+ if args[0].endswith('.py'):
+ command.append('python')
+
+ command.append(args[0])
+
+ os.execlp(*command)
+
+main()