Öffnen Sie beim ersten Anmelden eine App

Öffnen Sie beim ersten Anmelden eine App

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:

  1. Erstellen Sie eine myapp.desktopDatei im /etc/skel/.config/Verzeichnis. Alles darunter /etc/skelwird 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 .desktopDateien 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.

  2. 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 umbenennenmv ~/.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 .desktopDatei 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 shellProgrammiersprachen auskennen oder pythonoder ... 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 filevor 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.pywir 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.

verwandte Informationen