diff --git a/bin/sugar-emulator b/bin/sugar-emulator
index 8c0aa8e..80b03ec 100644
a
|
b
|
import gobject |
26 | 26 | |
27 | 27 | from sugar import env |
28 | 28 | |
29 | | def _run_xephyr(display, dpi, dimensions): |
| 29 | default_dimensions = (1200, 900) # XO-1 screen size |
| 30 | def _run_xephyr(display, dpi, dimensions, fullscreen): |
30 | 31 | cmd = [ 'Xephyr' ] |
31 | 32 | cmd.append(':%d' % display) |
32 | 33 | cmd.append('-ac') |
33 | 34 | |
34 | | if dimensions is not None: |
35 | | cmd.append('-screen') |
36 | | cmd.append(dimensions) |
37 | | elif gtk.gdk.screen_width() < 1200 or gtk.gdk.screen_height() < 900: |
| 35 | screen_size = (gtk.gdk.screen_width(), gtk.gdk.screen_height()) |
| 36 | |
| 37 | if (not dimensions) and (fullscreen is None) and \ |
| 38 | (screen_size < default_dimensions) : |
| 39 | # no forced settings, screen too small => fit screen |
| 40 | fullscreen = True |
| 41 | elif (not dimensions) : |
| 42 | # screen is big enough or user has en/disabled fullscreen manually |
| 43 | # => use default size (will get ignored for fullscreen) |
| 44 | dimensions = '%dx%d' % default_dimensions |
| 45 | |
| 46 | if not dpi : |
| 47 | dpi = gtk.settings_get_default().get_property('gtk-xft-dpi') / 1024 |
| 48 | |
| 49 | if fullscreen : |
38 | 50 | cmd.append('-fullscreen') |
39 | | else: |
| 51 | |
| 52 | if dimensions : |
40 | 53 | cmd.append('-screen') |
41 | | cmd.append('%dx%d' % (1200, 900)) |
| 54 | cmd.append(dimensions) |
42 | 55 | |
43 | | if dpi is None: |
44 | | dpi = gtk.settings_get_default().get_property('gtk-xft-dpi') / 1024 |
45 | | if dpi > 0: |
| 56 | if dpi : |
46 | 57 | cmd.append('-dpi') |
47 | 58 | cmd.append('%d' % dpi) |
48 | 59 | |
… |
… |
def _check_xephyr(display): |
58 | 69 | stderr=open(os.devnull, "w")) |
59 | 70 | return result == 0 |
60 | 71 | |
61 | | def _start_xephyr(dpi, dimensions): |
| 72 | def _start_xephyr(dpi, dimensions, fullscreen): |
62 | 73 | # FIXME evil workaround until F10 Xephyr is fixed |
63 | 74 | if os.path.exists('/etc/fedora-release'): |
64 | 75 | if open('/etc/fedora-release').read().startswith('Fedora release 10'): |
65 | | _run_xephyr(random.randint(100, 500), dpi, dimensions) |
| 76 | _run_xephyr(random.randint(100, 500), dpi, dimensions, fullscreen) |
66 | 77 | return |
67 | 78 | |
68 | 79 | for display in range(100, 110): |
69 | 80 | if not _check_xephyr(display): |
70 | | _run_xephyr(display, dpi, dimensions) |
| 81 | _run_xephyr(display, dpi, dimensions, fullscreen) |
71 | 82 | |
72 | 83 | tries = 10 |
73 | 84 | while tries > 0: |
… |
… |
def main(): |
126 | 137 | help='Sugar scaling in %') |
127 | 138 | parser.add_option('-i', '--dimensions', dest='dimensions', |
128 | 139 | help='Emulator dimensions (ex. 1200x900)') |
| 140 | parser.add_option('-f', '--fullscreen', dest='fullscreen', |
| 141 | action='store_true', default=None, |
| 142 | help='Run emulator in fullscreen mode') |
| 143 | parser.add_option('-F', '--no-fullscreen', dest='fullscreen', |
| 144 | action='store_false', |
| 145 | help='Do not run emulator in fullscreen mode') |
129 | 146 | (options, args) = parser.parse_args() |
130 | 147 | |
131 | 148 | _setup_env() |
132 | 149 | |
133 | | _start_xephyr(options.dpi, options.dimensions) |
| 150 | _start_xephyr(options.dpi, options.dimensions, options.fullscreen) |
134 | 151 | |
135 | 152 | if options.scaling: |
136 | 153 | os.environ['SUGAR_SCALING'] = options.scaling |