diff options
Diffstat (limited to 'spawn-test-env.py')
-rwxr-xr-x | spawn-test-env.py | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/spawn-test-env.py b/spawn-test-env.py deleted file mode 100755 index 39e879f..0000000 --- a/spawn-test-env.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/python -t - -import sys, os -import gtk, gobject -import pwd -import types - -def change_user(user): - try: - pwrec = pwd.getpwnam(user) - except KeyError: - raise Exception("Username '%s' does not exist." % user) - uid = pwrec[2] - os.setuid(uid) - return (pwrec[6], pwrec[5]) - -def shell_watch_cb(pid, condition, user_data=None): - gtk.main_quit() - -def main(): - if len(sys.argv) < 2: - print "Usage: %s <test user>" % sys.argv[0] - user = sys.argv[1] - - # Start Xephyr - DISPLAY = ":10" - args = "/usr/bin/Xephyr -ac -host-cursor -screen 800x600 %s" % DISPLAY - args = args.split() - (xephyr_pid, ign1, ign2, ign3) = gobject.spawn_async(args, flags=gobject.SPAWN_STDERR_TO_DEV_NULL | gobject.SPAWN_STDOUT_TO_DEV_NULL) - print "Xepyhr pid is %d" % xephyr_pid - - (shell, home) = change_user(user) - - args = "/bin/dbus-daemon --session --print-address".split() - (dbus_pid, ign1, dbus_stdout, ign3) = gobject.spawn_async(args, flags=gobject.SPAWN_STDERR_TO_DEV_NULL, standard_output=True) - dbus_file = os.fdopen(dbus_stdout) - addr = dbus_file.readline() - addr = addr.strip() - print "dbus-daemon pid is %d, session bus address is %s" % (dbus_pid, addr) - dbus_file.close() - - os.environ["DISPLAY"] = DISPLAY - os.environ["DBUS_SESSION_BUS_ADDRESS"] = addr - os.environ["HOME"] = home - - args = "/usr/bin/metacity" - (metacity_pid, ign1, ign2, ign3) = gobject.spawn_async([args], flags=gobject.SPAWN_STDERR_TO_DEV_NULL | gobject.SPAWN_STDOUT_TO_DEV_NULL) - - print "\n" - (shell_pid, ign1, ign2, ign3) = gobject.spawn_async([shell], flags=gobject.SPAWN_LEAVE_DESCRIPTORS_OPEN | gobject.SPAWN_CHILD_INHERITS_STDIN | gobject.SPAWN_DO_NOT_REAP_CHILD) - gobject.child_watch_add(shell_pid, shell_watch_cb) - try: - gtk.main() - except KeyboardInterrupt: - pass - - try: - os.kill(dbus_pid, 9) - except OSError: - pass - try: - os.kill(metacity_pid, 9) - except OSError: - pass - -if __name__ == "__main__": - main() |