diff --git a/sugar-emulator b/sugar-emulator index aa620af5..2e186a2c 100755 --- a/sugar-emulator +++ b/sugar-emulator @@ -78,12 +78,16 @@ if len(sys.argv) == 1: else: program = sys.argv[1] -fullscreen = (gtk.gdk.screen_width() <= 1200 or - gtk.gdk.screen_height() <= 900) and \ - (gtk.gdk.screen_width() / 4 * 3 == - gtk.gdk.screen_height()) +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 + width = gtk.gdk.screen_width() - 50 + height = width / 4 * 3 -emulator = Emulator(fullscreen) +emulator = Emulator(width, height, fullscreen) emulator.start() os.execlp('dbus-launch', 'dbus-launch', '--exit-with-session', program) diff --git a/sugar/emulator.py b/sugar/emulator.py index fe9539d6..6cc4f52e 100644 --- a/sugar/emulator.py +++ b/sugar/emulator.py @@ -78,13 +78,16 @@ class MatchboxProcess(Process): return 'Matchbox' class XephyrProcess(Process): - def __init__(self, fullscreen): + def __init__(self, width, height, fullscreen): self._display = get_display_number() cmd = 'Xephyr :%d -ac ' % (self._display) + if fullscreen: - cmd += '-fullscreen ' - else: - cmd += '-screen 1200x900' + cmd += ' -fullscreen ' + + if width > 0 and height > 0: + cmd += ' -screen %dx%d' % (width, height) + Process.__init__(self, cmd) def get_name(self): @@ -97,12 +100,15 @@ class XephyrProcess(Process): class Emulator(object): """The OLPC emulator""" - def __init__(self, fullscreen): + def __init__(self, width, height, fullscreen): self._fullscreen = fullscreen + self._width = width + self._height = height def start(self): try: - process = XephyrProcess(self._fullscreen) + process = XephyrProcess(self._width, self._height, + self._fullscreen) process.start() except: print 'Cannot run the emulator. You need to install Xephyr'