Una aplicación necesita dos cosas para abrir una ventana en una pantalla X. Necesita saber la ubicación de la pantalla X; eso es transmitido por la DISPLAYvariable de entorno. También necesita autenticarse con el servidor X. Esto se transmite a través de una cookie, que es un valor secreto generado por el servidor X cuando se inicia y almacena en un archivo al que solo puede acceder el usuario que inició el servidor X. El archivo de cookie predeterminado es ~/.Xauthority.
Alternativamente, ejecutar el programa como el usuario que está ejecutando el servidor X funcionará, siempre que el archivo de cookies se encuentre en la ubicación predeterminada (de lo contrario, tendrá que ubicar el archivo de cookies, como en el caso raíz). Agregue la Userdirectiva (por ejemplo User=dogs).
Por supuesto, el servicio no se ejecutará si no hay una pantalla X con ese número propiedad del usuario que especifique.
Es bastante extraño iniciar un programa GUI desde Systemd. No fue diseñado para esto. Los programas GUI viven en una sesión X, iniciada por un usuario. Systemd es para procesos del sistema. Deberías experimentar con demonios en su lugar.
systemctl --user
. Además, laDISPLAY
variable no es una cuestión entonces. Echa un vistazo aquí .Puedes agregar
.xinitrc
:¡Esto funciona para mi!
fuente