Abrir una aplicación al iniciar sesión por primera vez

Abrir una aplicación al iniciar sesión por primera vez

Sé que Ubuntu admite el inicio automático de aplicaciones cada vez que un usuario inicia sesión. Pero lo que me gustaría hacer es abrir una aplicación específica cada vez que un nuevo usuario inicia sesión por primera vez y luego la aplicación no se iniciará automáticamente en ningún inicio de sesión. es posible?

Respuesta1

Lo que sugeriría es un proceso de 2 pasos:

  1. Cree un myapp.desktoparchivo en /etc/skel/.config/el directorio. Todo lo siguiente /etc/skelse copia en las carpetas de los nuevos usuarios cuando se crean. Para conocer el formato de ese archivo, consulteCómo agregar un script de shell al iniciador como acceso directo. No se preocupe por el título: los .desktoparchivos son esencialmente los mismos que los accesos directos de Windows, y su presencia en el ~/.config/autostart/directorio del usuario es lo que permite que una aplicación en particular se ejecute al iniciar sesión en la GUI.

  2. Cree el script contenedor que ejecutará la aplicación que desea, pero luego también eliminará el iniciador específico, digamos, por ejemplo.

    #!/bin/bash
    gedit
    rm ~/.config/autostart/myapp.desktop
    

    De esa manera, la entrada de inicio automático se ejecutará solo en el primer inicio de sesión y, en ese primer inicio de sesión, se eliminará. Potencialmente, es posible que también desee eliminar el script si es necesario. Tampoco es necesario eliminarlo, simplemente puede cambiarle el nombre a través demv ~/.config/autostart/myapp.desktop ~/.config/autostart/myapp.desktop.bak

Tenga en cuenta que no especificó qué aplicación en particular o qué condiciones específicas necesita para que funcione, por lo que este es solo un ejemplo aproximado y no dude en adaptarlo a sus necesidades.

Como nota al margen, es posible que ni siquiera sea necesario un guión si lo que quieres hacer es simple. Por ejemplo, es posible que desee tener la siguiente línea en su .desktoparchivo:

Exec=bash -c 'firefox && rm ~/.config/autostart/myapp.desktop' myapp`

Respuesta2

si es posible. Tengo una idea, pero tal vez también haya mejores soluciones, aquí está mi idea, espero que ayude;)

Si sabe un poco sobre shellel lenguaje de programación o python... puede crear un script que cada vez que ejecute este script, obtenga su nombre de usuario y create a text file/a row in database/ a row in a fileantes de este paso, ya verificó si este nombre de usuario había estado en el archivo de base de datos o no, si no, ejecuta su programa y, en caso afirmativo, no lo hace. el código Python puede ser así (guárdelo como 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

pero ahora, ¿cómo podemos configurar esto para que se ejecute al principio? Es fácil con systemd. supongamos que creamos este script de Python con el nombre Runit.pyque necesitamos:

sudo touch /etc/systemd/system/RunMyScript.service

luego con

sudo gedit /etc/systemd/system/RunMyScript.service

escribe esto en él:

[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

ahora su servicio está listo para comenzar al iniciar sesión:

sudo systemctl enable RunMyScript.service

En este escenario, su servicio siempre se ejecuta para cada inicio de sesión y su secuencia de comandos verifica si ese usuario ya se ejecutó o no.

información relacionada