bluecrystal21
New Member
Hallo ihr Lieben bin neu hier auf euerer Webseite,
mein Problem ist, ich möchte ein Skript schreiben das sich automatisch wenn es ausgeführt wird in den Autostart schiebt. Warum so viel Aufwand? Weil es auf mehreren Linux-Distributionen wandert. Mein Code wäre derzeit für das Skript folgender:
als Fehlermeldung bekomm ich folgendes:
ich hoffe ihr könnt mir irgendwie helfen
liebe Grüße
bluecrystal21
mein Problem ist, ich möchte ein Skript schreiben das sich automatisch wenn es ausgeführt wird in den Autostart schiebt. Warum so viel Aufwand? Weil es auf mehreren Linux-Distributionen wandert. Mein Code wäre derzeit für das Skript folgender:
Code:
class Autostart:
if sys.platform == 'win32':
# autostart on Windows
def __init__(self):
import _winreg
self._registry = _winreg.ConnectRegistry(None, _winreg.HKEY_CURRENT_USER)
def __get_runonce__(self):
return _winreg.OpenKey(_registry, r'Software\Microsoft\Windows\CurrentVersion\Run', 0, _winreg.KEY_ALL_ACCESS)
def add(self, name, application):
key = self.__get_runonce__()
_winreg.SetValueEx(key, name, 0, _winreg.REG_SZ, application)
_winreg.CloseKey(key)
def exists(self, name):
key = self.__get_runonce__()
exists = True
try:
_winreg.QueryValueEx(key, name)
except:
exists = False
_winreg.CloseKey(key)
return exists
def remove(self, name):
key = get_runonce()
_winreg.DeleteValue(key, name)
_winreg.CloseKey(key)
else:
# autostart on Unix-like systems
def __init__(self):
self._xdg_config_home = os.environ.get('XDG_CONFIG_HOME', '~/.config')
self._xdg_user_autostart = os.path.join(os.path.expanduser(self._xdg_config_home), 'autostart')
def __getfilename__(self, name):
return os.path.join(self._xdg_user_autostart, '%s.desktop' % name)
def add(self, name, application):
if name == '__terminal__':
file = open('%s/.profile' % os.environ.get('HOME', '~/.profile'), 'a')
file.write('\n%s\n' % (autostart_cmd))
file.close()
else:
desktop_entry = '[Desktop Entry]\nName=%s\nExec=%s\nType=Application\nTerminal=false\n' % (name, application)
if not os.path.exists(os.path.dirname(self.__getfilename__(name))):
os.makedirs(os.path.dirname(self.__getfilename__(name)))
file = open(self.__getfilename__(name), 'w')
file.write(desktop_entry)
file.close()
def exists(self, name):
if name == '__terminal__':
file = None
retval = False
try:
file = open('%s/.profile' % os.environ.get('HOME', '~/.profile'))
retval = autostart_cmd in file.read()
finally:
if file != None:
file.close()
return retval
else:
return os.path.exists(self.__getfilename__(name))
def remove(self, name):
try:
if name == '__terminal__':
file = open('%s/.profile' % os.environ.get('HOME', '~/.profile'))
lines = file.readlines()
file.close()
file = open('%s/.profile' % os.environ.get('HOME', '~/.profile'), 'w+')
for i in lines:
if autostart_cmd not in i:
file.write(i)
file.close()
os.unlink(self.__getfilename__(name))
except:
pass
if __name__ == '__main__':
try:
autostart = Autostart()
if not autostart.exists('__terminal__'):
autostart.add('__terminal__', autostart_cmd)
except:
print >> sys.stderr, '''Error: Coulnd't create autostart entry (terminal-login).'''
try:
if not autostart.exists('Programmname'):
autostart.add('Programmname', autostart_cmd)
except:
print >> sys.stderr, '''Error: Coulnd't create autostart entry (.desktop-file).'''
Backup(sources, target_dir, excludes, config_file, choices).main_loop()
als Fehlermeldung bekomm ich folgendes:
Code:
Error: Coulnd't create autostart entry (terminal-login).
ich hoffe ihr könnt mir irgendwie helfen
liebe Grüße
bluecrystal21