some modifications to xdg-autostart based on suggestions from the PyXDG maintainer

This commit is contained in:
Dana Jansens 2008-03-02 10:45:28 -05:00
parent 664b0b4e94
commit a291ba6019
2 changed files with 25 additions and 22 deletions

View file

@ -0,0 +1,4 @@
all clean install:
$(MAKE) -C ../.. -$(MAKEFLAGS) $@
.PHONY: all clean install

View file

@ -64,7 +64,7 @@ def main(argv=sys.argv):
# run them ! # run them !
environments = argv[1:] environments = argv[1:]
for autofile in files: for autofile in files:
if list: autofile.list(environments) if list: autofile.display(environments)
else: autofile.run(environments) else: autofile.run(environments)
class AutostartFile: class AutostartFile:
@ -80,10 +80,10 @@ class AutostartFile:
def __str__(self): def __str__(self):
return self.path + " : " + self.de.getName() return self.path + " : " + self.de.getName()
def isexecfile(path): def _isexecfile(path):
return os.access(path, os.X_OK) return os.access(path, os.X_OK)
def findFile(self, path, search, match_func): def _findFile(self, path, search, match_func):
# check empty path # check empty path
if not path: return None if not path: return None
# check absolute path # check absolute path
@ -96,13 +96,13 @@ class AutostartFile:
candidate = os.path.join(dirname, path) candidate = os.path.join(dirname, path)
if (match_func(candidate)): return candidate if (match_func(candidate)): return candidate
def alert(self, str, info=False): def _alert(self, str, info=False):
if info: if info:
print "\t ", str print "\t ", str
else: else:
print "\t*", str print "\t*", str
def showInEnvironment(self, envs, verbose=False): def _showInEnvironment(self, envs, verbose=False):
default = not self.de.getOnlyShowIn() default = not self.de.getOnlyShowIn()
noshow = False noshow = False
force = False force = False
@ -117,49 +117,48 @@ class AutostartFile:
for i in self.de.getOnlyShowIn(): for i in self.de.getOnlyShowIn():
if s: s += ", " if s: s += ", "
s += i s += i
self.alert("Excluded by: OnlyShowIn (" + s + ")") self._alert("Excluded by: OnlyShowIn (" + s + ")")
if default and noshow and not force: if default and noshow and not force:
s = "" s = ""
for i in self.de.getOnlyShowIn(): for i in self.de.getOnlyShowIn():
if s: s += ", " if s: s += ", "
s += i s += i
self.alert("Excluded by: NotShowIn (" + s + ")") self._alert("Excluded by: NotShowIn (" + s + ")")
return (default and not noshow) or force return (default and not noshow) or force
def shouldRun(self, envs, verbose=False): def _shouldRun(self, envs, verbose=False):
if not self.de.getExec(): if not self.de.getExec():
if verbose: self.alert("Excluded by: Missing Exec field") if verbose: self._alert("Excluded by: Missing Exec field")
return False return False
if self.de.getHidden(): if self.de.getHidden():
if verbose: self.alert("Excluded by: Hidden") if verbose: self._alert("Excluded by: Hidden")
return False return False
if self.de.getTryExec(): if self.de.getTryExec():
if not self.findFile(self.de.getTryExec(), os.getenv("PATH"), if not self._findFile(self.de.getTryExec(), os.getenv("PATH"),
self.isexecfile): self._isexecfile):
if verbose: self.alert("Excluded by: TryExec (" + if verbose: self._alert("Excluded by: TryExec (" +
self.de.getTryExec() + ")") self.de.getTryExec() + ")")
return False return False
if not self.showInEnvironment(envs, verbose): if not self._showInEnvironment(envs, verbose):
return False return False
return True return True
def list(self, envs): def display(self, envs):
running = False if self._shouldRun(envs):
if self.shouldRun(envs):
print "[*] " + self.de.getName() print "[*] " + self.de.getName()
else: else:
print "[ ] " + self.de.getName() print "[ ] " + self.de.getName()
self.alert("File: " + self.path, info=True) self._alert("File: " + self.path, info=True)
if self.de.getExec(): if self.de.getExec():
self.alert("Executes: " + self.de.getExec(), info=True) self._alert("Executes: " + self.de.getExec(), info=True)
self.shouldRun(envs, True) self._shouldRun(envs, True)
print print
def run(self, envs): def run(self, envs):
here = os.getcwd() here = os.getcwd()
if self.de.getPath(): if self.de.getPath():
os.chdir(self.de.getPath()) os.chdir(self.de.getPath())
if self.shouldRun(envs): if self._shouldRun(envs):
args = ["/bin/sh", "-c", "exec " + self.de.getExec()] args = ["/bin/sh", "-c", "exec " + self.de.getExec()]
os.spawnv(os.P_NOWAIT, args[0], args); os.spawnv(os.P_NOWAIT, args[0], args);
os.chdir(here) os.chdir(here)