
Ich weiß, dass Ubuntu den automatischen Start von Apps bei jeder Benutzeranmeldung unterstützt. Aber ich möchte, dass bei jeder ersten Benutzeranmeldung eine bestimmte App geöffnet wird und die App dann bei keiner Anmeldung automatisch gestartet wird. Ist das möglich?
Antwort1
Ich würde einen zweistufigen Prozess vorschlagen:
Erstellen Sie eine
myapp.desktop
Datei im/etc/skel/.config/
Verzeichnis. Alles darunter/etc/skel
wird in die Ordner neuer Benutzer kopiert, wenn diese erstellt werden. Das Format dieser Datei finden Sie unterSo fügen Sie dem Launcher ein Shell-Skript als Verknüpfung hinzu. Machen Sie sich wegen des Titels keine Gedanken – die.desktop
Dateien sind im Wesentlichen dieselben wie die Windows-Verknüpfungen, und ihre Präsenz im Benutzerverzeichnis~/.config/autostart/
ermöglicht die Ausführung bestimmter Apps bei der Anmeldung über die GUI.Erstellen Sie ein Wrapper-Skript, das die gewünschte App ausführt, entfernen Sie dann aber auch den entsprechenden Launcher, beispielsweise
#!/bin/bash gedit rm ~/.config/autostart/myapp.desktop
Auf diese Weise wird der Autostart-Eintrag nur beim ersten Login ausgeführt und entfernt sich bei diesem ersten Login selbst. Eventuell möchten Sie bei Bedarf auch das Skript selbst entfernen. Das Löschen ist auch nicht notwendig, Sie können es einfach über umbenennen
mv ~/.config/autostart/myapp.desktop ~/.config/autostart/myapp.desktop.bak
Bitte beachten Sie, dass Sie nicht angegeben haben, um welche spezielle App es sich handelt oder welche speziellen Bedingungen für die Funktion dieser App erforderlich sind. Dies ist also nur ein grobes Beispiel. Sie können es gerne an Ihre Bedürfnisse anpassen.
Nebenbei bemerkt: Ein Skript ist möglicherweise nicht einmal erforderlich, wenn das, was Sie tun möchten, einfach ist. Beispielsweise möchten Sie möglicherweise die folgende Zeile in Ihrer .desktop
Datei haben:
Exec=bash -c 'firefox && rm ~/.config/autostart/myapp.desktop' myapp`
Antwort2
ja, das ist möglich. Ich habe eine Idee, aber vielleicht gibt es auch bessere Lösungen. Hier ist meine Idee, ich hoffe, sie hilft ;)
wenn Sie sich ein wenig mit shell
Programmiersprachen auskennen oder python
oder ... können Sie ein Skript erstellen, das bei jeder Ausführung Ihren Benutzernamen abruft und create a text file/a row in database/ a row in a file
vor diesem Schritt bereits überprüft, ob dieser Benutzername in der Datenbankdatei enthalten ist oder nicht. Wenn nicht, wird Ihr Programm ausgeführt, und wenn doch, nicht. Der Python-Code kann wie folgt aussehen (speichern Sie ihn als 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
aber wie können wir das jetzt so einstellen, dass es beim Start ausgeführt wird? mit systemd ist das ganz einfach. Nehmen wir an, wir erstellen dieses Python-Skript mit dem Namen, den Runit.py
wir brauchen:
sudo touch /etc/systemd/system/RunMyScript.service
dann mit
sudo gedit /etc/systemd/system/RunMyScript.service
Geben Sie Folgendes ein:
[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
Jetzt ist Ihr Dienst nach der Anmeldung startbereit:
sudo systemctl enable RunMyScript.service
In diesem Szenario wird Ihr Dienst immer bei jeder Anmeldung ausgeführt und Ihr Skript prüft, ob es für diesen Benutzer bereits ausgeführt wurde oder nicht.