Python und Autostart :)

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:
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
 
Back
Top