web-dev-qa-db-fra.com

Comment ajouter un script aux applications de démarrage à partir de la ligne de commande?

J'ai un script shell. Je souhaite configurer mon script pour qu'il s'exécute automatiquement au démarrage. Je sais comment faire cela depuis l'interface graphique. Mais je voulais faire cela depuis le terminal. Comment puis-je faire ceci?

Lors d’une recherche principale, j’ai trouvé que le fichier devait être déplacé dans le répertoire /etc/int.d/. Mais cette opération nécessite l'autorisation de Sudo. Je voulais le faire sans les autorisations du super utilisateur.

J'ai également constaté qu'il existe des fichiers sous ~/.config/autostart/ qui ont certains paramètres concernant les applications de démarrage. Mais je ne sais pas comment les éditer pour y parvenir.

Quelqu'un peut-il me dire la procédure exacte pour y parvenir?

19
Anonymous Platypus

Comment configurer un lanceur de démarrage à partir de la ligne de commande

Comme vous l'avez mentionné dans votre question, les commandes peuvent être exécutées lors de la connexion en plaçant un lanceur dans ~/.config/autostart Etant donné que le lanceur n'est utilisé que pour démarrer un script, vous avez uniquement besoin des mots-clés d'entrée de bureau "de base" dans les fichiers .desktop créés: les mots-clés/lignes dont vous auriez besoin au moins:

[Desktop Entry]
Name=name
Exec=command
Type=Application

La ligne (facultative) X-GNOME-Autostart-enabled=true sera ajoutée automatiquement si vous activez/désactivez la fonction de démarrage automatique du programme de lancement (elle est définie sur X-GNOME-Autostart-enabled=true par défaut).

Plus sur les champs obligatoires, vous pouvez trouver ici .

Exemple de script

Pour créer un tel lanceur à partir de la ligne de commande, vous avez besoin d'un petit script qui prend le nom du démarreur et la commande à exécuter en tant qu'argument. Un exemple d'un tel script ci-dessous.

Si je le lance avec la commande:

python3 '/path/to/script' 'Test' 'gedit'

Il crée un programme de lancement de démarrage, exécutant gedit lorsque je me connecte.
Le lanceur est également visible dans Dash> Applications de démarrage:

enter image description here

Le scénario

#!/usr/bin/env python3
import os
import sys
home = os.environ["HOME"]

name = sys.argv[1]; command = sys.argv[2]

launcher = ["[Desktop Entry]", "Name=", "Exec=", "Type=Application", "X-GNOME-Autostart-enabled=true"]
dr = home+"/.config/autostart/"
if not os.path.exists(dr):
    os.makedirs(dr)
file = dr+name.lower()+".desktop"

if not os.path.exists(file):
    with open(file, "wt") as out:     
        for l in launcher:
            l = l+name if l == "Name=" else l
            l = l+command if l == "Exec=" else l
            out.write(l+"\n")
else:
    print("file exists, choose another name")

Collez-le dans un fichier vide, enregistrez-le sous set_startupscript.py, exécutez-le à l'aide de la commande suivante:

python3 /path/to/set_startupscript.py '<name>' '<command>'

Ce qu'il fait

  • Il crée un lanceur de base (vous n'en avez pas besoin de plus, exécuter un script) dans ~/.config/autostart, en prenant le nom et la commande comme arguments.
  • Si un programme de lancement portant le nom existe déjà dans ~/.config/autostart, il affiche un message:

    file exists, choose another name
    
18
Jacob Vlijm

J'ai trouvé une réponse

cd à ~/.config/autostart/. Si vous n'avez pas de dossier nommé autostart, créez-en un avec ce nom à l'aide de mkdir autostart.

Ajoutez maintenant le fichier suivant avec le nom yourScript.sh.desktop

[Desktop Entry]
Type=Application
Exec="/Your/location/to/theScript/yourScript.sh"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_IN]=AnyNameYouWish
Name=AnyNameYouWish
Comment[en_IN]=AnyComment
Comment=AnyComment

Terminé!

6
Anonymous Platypus