Aplikasi membutuhkan dua hal untuk membuka jendela pada tampilan X. Perlu mengetahui lokasi tampilan X; yang disampaikan oleh DISPLAY
variabel lingkungan. Ini juga perlu diautentikasi dengan X server. Ini disampaikan melalui cookie, yang merupakan nilai rahasia yang dihasilkan oleh server X saat dijalankan dan disimpan dalam file yang hanya dapat diakses oleh pengguna yang memulai server X. File cookie default adalah ~/.Xauthority
.
Jika server X Anda menggunakan lokasi file cookie default, maka menambahkan Environment=XAUTHORITY=/home/dogs/.Xauthority
akan berfungsi (dengan asumsi /home/dogs
direktori home dari pengguna yang login di bawah X). Jika Anda perlu menemukan lokasi, lihat Dapatkah saya meluncurkan program grafis di desktop pengguna lain sebagai root? dan Buka jendela pada tampilan X jarak jauh (mengapa "Tidak bisa membuka layar")?
Atau, menjalankan program sebagai pengguna yang menjalankan X server akan berfungsi, asalkan file cookie berada di lokasi default (jika tidak, Anda harus mencari file cookie, seperti dalam kasus root). Tambahkan User
arahan (misalnya User=dogs
).
Tentu saja layanan tidak akan berjalan jika tidak ada tampilan X oleh nomor yang dimiliki oleh pengguna yang Anda tentukan.
Agak aneh memulai program GUI dari Systemd. Itu tidak dirancang untuk ini. Program GUI hidup dalam sesi X, dimulai oleh pengguna. Systemd adalah untuk proses sistem. Anda seharusnya bereksperimen dengan daemon.
systemctl --user
. JugaDISPLAY
variabel bukan masalah kalau begitu. Silahkan lihat di sini .