
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:
Cree un
myapp.desktop
archivo en/etc/skel/.config/
el directorio. Todo lo siguiente/etc/skel
se 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.desktop
archivos 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.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 de
mv ~/.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 .desktop
archivo:
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 shell
el 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 file
antes 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.py
que 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.