Esa es una pregunta que he visto varias veces para varias versiones de Linux, así que tratemos de ser exhaustivos.
¿Cuál es el método para ejecutar el script/comando/programa antes y después de que el usuario inicie sesión en su sesión de escritorio?
Respuesta aceptada:
Introducción
Para ejecutar un programa en un entorno gráfico antes de que un usuario inicie sesión en un entorno gráfico, depende de su administrador de pantalla. Un administrador de pantalla está a cargo de proporcionarle una interfaz de inicio de sesión y configurar su entorno gráfico una vez que haya iniciado sesión.
los más importantes son los siguientes:
- GDM es el administrador de pantalla de GNOME.
- LightDM es un administrador de pantalla de escritorio cruzado, puede usar varios front-end escritos en cualquier kit de herramientas.
- LXDM es el administrador de pantalla LXDE pero independiente del entorno de escritorio LXDE.
- SDDM es un administrador de pantalla moderno para X11 y Wayland que busca ser rápido, simple y atractivo.
Revisaremos cómo configurar la ejecución del comando cuando aparezca el administrador de visualización antes de que cualquier usuario inicie sesión y cómo ejecutar algo cuando alguien finalmente inicie sesión.
Si no sabe cuál está ejecutando, puede consultar esta pregunta:
¿Existe un comando simple de Linux que me diga cuál es mi administrador de pantalla?
IMPORTANTE
Antes de comenzar, editará el archivo excepto si menciona ejecutar el comando como root
. No elimine cosas existentes en esos archivos, excepto si sabe lo que está haciendo y tiene cuidado con lo que pone en esos archivos. Esto podría eliminar su capacidad para iniciar sesión.
DMG
Tenga cuidado con GDM, ejecutará todas las secuencias de comandos como `root`, un código de error diferente a 0 podría limitar su capacidad de inicio de sesión y GDM esperará a que su secuencia de comandos termine de hacer que no responda mientras se ejecute su comando.
Para una explicación completa [lea la documentación][5].
Antes de iniciar sesión
Si necesita ejecutar comandos antes de que un usuario inicie sesión, puede editar el archivo:
`/etc/gdm3/Init/Default`.
Este archivo es un script de shell que se ejecutará antes de la visualización administrador se muestra al usuario.
Después de iniciar sesión
Si necesita ejecutar cosas una vez que un usuario haya iniciado sesión pero antes de que se haya inicializado su sesión, edite el archivo:
`/etc/gdm3/PostLogin/Default`
Si desea ejecutar el comando después de la sesión de inicialización de la sesión (env, entorno gráfico, inicio de sesión...) edite el archivo:
`/etc/gdm3/PreSession/Default`
DM ligero
Hablaré de lightdm.conf y no de /etc/lightdm.conf.d/*.conf. Puede hacer lo que quiera, lo importante es conocer las opciones que puede usar.
Tenga cuidado con lightDM, ya podría tener varios otros scripts comenzando, debe leer con precisión su archivo de configuración antes de editarlo. además, el orden en el que coloque esos scripts puede influir en la forma en que se carga la sesión.
LightDM funciona un poco diferente a los demás. Colocará opciones en los archivos de configuración principales para indicar el script que se ejecutará.
Edite el archivo de configuración de lightDM principal /etc/lightdm/lightdm.conf
.
Debe agregar la primera línea con [Seat:*]
, como se indica aquí:
Las versiones posteriores de lightdm (15.10 en adelante) han reemplazado el obsoleto
[SeatDefaults] con [Seat:*]
Antes de iniciar sesión
Agregue una línea `greeter-setup-script=/my/path/to/script`
Esta secuencia de comandos se ejecutará cuando lightDM muestre la interfaz de inicio de sesión.
Después de iniciar sesión
Agregue una línea `session-setup-script=/script/to/start/script`
Esto ejecutará el script como `root` después de que un usuario haya iniciado sesión correctamente.
LXDM
Antes de iniciar sesión
Si desea ejecutar el comando antes de que alguien inicie sesión, puede editar el script de shell:
`/etc/lxdm/LoginReady`
Después de iniciar sesión
Si desea ejecutar el comando después de que alguien haya iniciado sesión pero como root, puede editar el script de shell:
`/etc/lxdm/PreLogin`
Y si desea ejecutar el comando como el usuario que ha iniciado sesión, puede editar el script:
`/etc/lxdm/PostLogin`
SSDM
No se pudo encontrar información adecuada sobre eso... Siéntete libre de editar esta parte.