Inilah yang baru saja saya buat sebagai solusi untuk yang belum tersedia graphical-session.target
(Pada sistem Kubuntu 16.04 saya):
- Buat pseudo systemd unit pengguna yang membawa graphical-session.target naik dan turun.
Buat ~/.config/systemd/user/xsession.target
dengan konten berikut:
[Satuan]
Keterangan = Xsession aktif dan berjalan
BindsTo = graphical-session.target
Beri tahu systemd tentang unit baru ini:
$> systemctl --user daemon-reload
- Buat skrip autostart dan shutdown yang mengontrol
xsession.target
via mekanisme desktop Ubuntu 16.04 yang saat ini tersedia.
Buat ~/.config/autostart-scripts/xsession.target-login.sh
dengan konten berikut:
#! / bin / bash
jika! systemctl --user is-active xsession.target &> / dev / null
kemudian
/ bin / systemctl --user import-environment DISPLAY XAUTHORITY
/ bin / systemctl --user mulai xsession.target
fi
Buat ~/.config/plasma-workspace/shutdown/xsession.target-logout.sh
dengan konten berikut:
#! / bin / bash
jika systemctl --user adalah xsession.target aktif &> / dev / null
kemudian
/ bin / systemctl --user stop xsession.target
fi
Jadikan skrip dapat dieksekusi:
$> chmod + x ~ / .config / autostart-scripts / xsession.target-login.sh
$> chmod + x ~ / .config / plasma-workspace / shutdown / xsession.target-logout.sh
Catatan: dua file ini ditempatkan di mana KDE akan mengambilnya untuk mulai otomatis dan mematikan. File mungkin ditempatkan di tempat lain untuk lingkungan desktop lain (misalnya Gnome) - tapi saya tidak tahu tentang lingkungan itu.
Catatan: Solusi ini kurang mendukung sesi multi desktop. Ini hanya menangani dengan graphical-session.target
benar selama hanya satu sesi X11 aktif dijalankan pada mesin (tapi itu kasus bagi kebanyakan dari kita pengguna linux).
- Buat unit pengguna systemd Anda sendiri yang bergantung pada
graphical-session.target
dan menjalankannya dengan bersih saat sedang login di desktop Anda.
Sebagai contoh, unit @ mkaito akan terlihat seperti ini:
[Satuan]
Deskripsi = Pergeseran Merah
PartOf = graphical-session.target
[Layanan]
ExecStart = / bin / redshift -l 28: -13 -t 5300: 3300 -b 0,80: 0,91 -m randr
Mulai ulang = selalu
(Jangan lupa lakukan daemon-reload
setelah mengedit unit Anda!)
- Nyalakan ulang mesin Anda, masuk dan verifikasi unit Anda dimulai seperti yang diharapkan
$> systemctl - status pengguna graphical-session.target
● graphical-session.target - Sesi pengguna grafis saat ini
Dimuat: dimuat (/usr/lib/systemd/user/graphical-session.target; statis; preset vendor: diaktifkan)
Aktif: aktif sejak Don 2017-01-05 15:08:42 CET; 47 menit yang lalu
Documents: man: systemd.special (7)
$> systemctl - status pengguna unit Anda ...
Di masa mendatang (apakah itu Ubuntu 17.04?) Solusi saya menjadi usang karena sistem akan menangani dengan graphical-session.target
benar. Pada hari itu cukup hapus script autostart dan shutdown dan juga xsession.target
- unit pengguna khusus Anda mungkin tetap tidak tersentuh dan hanya berfungsi.