Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/bin/rainbow-easy
blob: e97b2549b2cd5fbb43b34ba304a42653f1a773ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/python

import os
import sys

from os.path import join
from optparse import OptionParser

from rainbow.util import make_reporter, trace, EnvMerge

sys.excepthook = trace

usage = "usage: sudo %prog [options] ACTIVITY /path/to/program"

def main():
    parser = OptionParser(usage=usage, version='0.1')
    opts, args = parser.parse_args()
    if len(args) < 2 or "SUDO_USER" not in os.environ:
        parser.print_help()
        exit(1)

    activity = args[0]
    launch_argv = args[1:]

    env = EnvMerge()
    path       = env.parent_envvar("PATH") or ""
    term       = env.parent_envvar("TERM") or ""
    display    = env.prefer_our_envvar("DISPLAY") or ""
    xauthority = env.prefer_our_envvar("XAUTHORITY") or ""

    rainbow_argv = [
      "/usr/sbin/rainbow-run",
      "-s", "/var/spool/rainbow/2",
      "-u", os.environ["SUDO_USER"],
      "-c", os.getcwd(),
      "-f", "0", "-f", "1", "-f", "2",
      "-E", "DISPLAY="+display,
      "-E", "XAUTHORITY="+xauthority,
      "-E", "PATH="+path,
      "-E", "TERM="+term,
      "-a", "/usr/bin/rainbow-xify",
      "-o", "audio",
      "-o", "network",
      "-i", "%s_%s" % (os.environ["SUDO_USER"], activity),
      "--"] + launch_argv

    return os.execv(rainbow_argv[0], rainbow_argv)

if __name__ == "__main__":
    main()