Tengo un script python3 que usa el Gtk
módulo (importado de gi.repository
, para la funcionalidad de administrador reciente), que requiere un enlace a la sesión actual de xserver ( lightdm
servicio en Ubuntu).
Ejecutarlo manualmente a través de la consola (en una sesión de xserver) funciona, pero quiero que se ejecute automáticamente.
Un script init.d no funcionará (estableciendo la variable DISPLAY en 0.0). El uso xvfb-run
hizo que el script init.d ejecutara mi script, pero en un entorno de servidor virtual como se esperaba (no el mío). ¿No existe ningún equivalente que conecte un script init.d a la sesión xserver actual?
Hasta ahora he probado un .xinitrc
archivo (en ~/
, sí, es ejecutable), además de crear .xprofile, .xsession, .xsessionrc
un enlace al primero a través de ln -s
. Intenté agregar gnome-terminal &
para realizar pruebas, pero el terminal tampoco apareció, ya sea después de reiniciar lightdm
o incluso de toda la PC e iniciar sesión nuevamente.
yo también lo he intentadoEjecute el script de configuración al reanudar la sesión X, pero eso da el error Can't open /usr/share/acpi-support/power-funcs
.
Usando upstart
, como lo sugiereEjecute un script de inicio con lightdmTampoco proporcionaría la variable de visualización xserver (¿o el identificador?), simplemente ejecútelo después de lightdm
comenzar, ¿correcto?
¿Quizás ponerlo en algún lugar xorg.conf
? (¿Cómo puedo hacer que la personalización de xrandr sea permanente?) Me gana..
(Mi secuencia de comandos crea listas rápidas de archivos recientes y las agrega a los menús contextuales del iniciador de Unity, similar a Windows:https://github.com/thirschbuechler/ubuntu-recentquicklists)
Respuesta1
Como en muchos casos, el tiempo es el tema principal aquí.
- Su script debe ejecutarse a nivel de usuariodespués de iniciar sesión, ya que edita los elementos del iniciador, que está a nivel de usuario.
- Incluso entonces, observando lo que debería hacer el script (leyendo su explicación), el script debe esperar un poco hasta que el escritorio se cargue por completo; El Unity Launcher no es lo primero que debe estar "listo" después de iniciar sesión. Si el script se ejecuta demasiado pronto, se romperá o no alcanzará el objetivo.
En breve
Necesita ejecutar el script appr. 10 a 15 segundos después de iniciar sesión, lo que se puede hacer agregando:
/bin/bash -c "sleep 15 && python /path/to/script.py"
(si el script no es ejecutable), o
/bin/bash -c "sleep 15 && /path/to/script.py"
(si el guiónesejecutable) a las Aplicaciones de inicio del usuario: Dash > Aplicaciones de inicio > Agregar.
Ejecutarlo portodos los usuarios
Si necesita que el script se ejecutepara todos los usuarios(después de iniciar sesión), puede agregarlo a las aplicaciones de inicio para todos los usuarios a la vez.
Para hacer eso, copie el código a continuación en un archivo vacío, edite las líneas, comenzando con Name=
y establezca la ruta correcta al script en la línea:
Exec=/bin/bash -c "sleep 15 && python /path/to/script.py"
luego guarda el archivo /etc/xdg/autostart
como launch_script.desktop
(o como quieras, siempre que termine con .desktop
)
[Desktop Entry]
Name=Name
Exec=/bin/bash -c "sleep 15 && python /path/to/script.py"
Type=Application