Je sais que Ubuntu prend en charge le démarrage automatique des applications chaque fois qu'un utilisateur se connecte. Mais ce que je voudrais faire est d'ouvrir une application spécifique à chaque fois qu'un nouvel utilisateur se connecte pour la première fois. L'application ne se lancera pas automatiquement lors de la connexion. Est-ce possible?
Ce que je suggérerais est un processus en 2 étapes:
Créez un fichier myapp.desktop
dans le répertoire /etc/skel/.config/
. Tout ce qui se trouve sous /etc/skel
est copié dans les dossiers des nouveaux utilisateurs lors de leur création. Pour le format de ce fichier, examinez Comment ajouter un script Shell au programme de lancement en tant que raccourci . Ne vous inquiétez pas pour le titre - les fichiers .desktop
sont essentiellement identiques aux raccourcis Windows et leur présence dans le répertoire ~/.config/autostart/
de l'utilisateur est ce qui permet à une application particulière de s'exécuter après la connexion à l'interface graphique.
Créez le script d'emballage qui exécutera l'application souhaitée, mais supprimez également le lanceur spécifique, par exemple
#!/bin/bash
gedit
rm ~/.config/autostart/myapp.desktop
De cette façon, l'entrée de démarrage automatique ne sera exécutée qu'à la première connexion et, lors de cette première connexion, supprimez-la. Potentiellement, vous pouvez également vouloir supprimer le script lui-même si nécessaire. La suppression n’est pas non plus nécessaire, vous pouvez simplement le renommer via mv ~/.config/autostart/myapp.desktop ~/.config/autostart/myapp.desktop.bak
Veuillez noter que vous n'avez pas spécifié quelle application en particulier ni quelles conditions spécifiques vous avez besoin pour que cette application fonctionne. Il ne s'agit donc que d'un exemple approximatif. N'hésitez pas à l'adapter à vos besoins.
En passant, un script peut même ne pas être nécessaire si ce que vous voulez faire est simple. Par exemple, vous souhaiterez peut-être que la ligne soit la suivante dans votre fichier .desktop
:
Exec=bash -c 'firefox && rm ~/.config/autostart/myapp.desktop' myapp`
oui c'est possible. J'ai une idée, mais peut-être y a-t-il de meilleures solutions aussi, voici mon idée espérons que cela aidera;)
si vous connaissez un peu le langage de programmation Shell
ou python
ou ... vous pouvez créer un script qui, chaque fois que vous exécutez ce script, récupère votre nom d'utilisateur et create a text file/a row in database/ a row in a file
et avant cette étape, il a déjà vérifié si ce nom d'utilisateur était dans le fichier de base de données ou non, sinon, il exécute votre programme et si oui, il ne le fait pas. le code python peut être comme ceci (enregistrez-le sous Runit.py):
import sys
import getpass
import os
def createFile():
f = open("usersFirstLogin.txt", "a+")
f.write(user)
f.close()
os.system("echo Hi") # Run YOUR PROGRAM HERE
return 0
user = getpass.getuser()
fr = open("usersFirstLogin.txt", "a+")
count=0
for x in fr:
if(x == user):
count+=1
continue # DO NOTHING HERE
else:
createFile()
count+=1
if (count == 0):
createFile()
fr.close
mais maintenant, comment pouvons-nous régler cela pour qu'il fonctionne au début? c'est facile avec systemd. supposons que nous fassions ce script python avec le nom Runit.py
nous devons:
Sudo touch /etc/systemd/system/RunMyScript.service
puis avec
Sudo gedit /etc/systemd/system/RunMyScript.service
tapez-les dedans:
[Unit]
Description=RunIt
[Service]
WorkingDirectory=/Path/to/the/Runit.py folder
ExecStart=/Path/to/the/Runit.py folder/Runit.py
[Install]
WantedBy=multi-user.target
maintenant votre service est prêt à démarrer à la connexion:
Sudo systemctl enable RunMyScript.service
dans ce scénario, votre service est toujours exécuté pour chaque connexion et votre script vérifie s'il a déjà été exécuté pour cet utilisateur ou non.