some modifications to xdg-autostart based on suggestions from the PyXDG maintainer
This commit is contained in:
parent
664b0b4e94
commit
a291ba6019
2 changed files with 25 additions and 22 deletions
4
tools/xdg-autostart/Makefile
Normal file
4
tools/xdg-autostart/Makefile
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
all clean install:
|
||||||
|
$(MAKE) -C ../.. -$(MAKEFLAGS) $@
|
||||||
|
|
||||||
|
.PHONY: all clean install
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue