นี่คือสิ่งที่ฉันเพิ่งสร้างขึ้นเป็นวิธีแก้ปัญหาสำหรับยังไม่พร้อมใช้งานgraphical-session.target
(บนระบบ Kubuntu 16.04 ของฉัน):
- สร้างหน่วยผู้ใช้หลอก systemdซึ่งทำให้กราฟิก -session.target ขึ้นและลง
สร้าง~/.config/systemd/user/xsession.target
ด้วยเนื้อหาดังต่อไปนี้:
[Unit]
คำอธิบาย = Xsession ขึ้นและทำงาน
BindsTo = graphical-session.target
บอก systemd เกี่ยวกับยูนิตใหม่นี้:
$> systemctl --user daemon-reload
- สร้างautostart และสคริปต์ shutdownซึ่งควบคุม
xsession.target
ผ่านกลไกที่มีอยู่ในปัจจุบันของ Ubuntu 16.04 desktop
สร้าง~/.config/autostart-scripts/xsession.target-login.sh
ด้วยเนื้อหาดังต่อไปนี้:
#! / bin / ทุบตี
ถ้า! systemctl --user is-active xsession.target &> / dev / null
แล้วก็
/ bin / systemctl - ผู้ใช้นำเข้าสภาพแวดล้อม DISPLAY XAUTHORITY
/ bin / systemctl --user เริ่ม xsession.target
Fi
สร้าง~/.config/plasma-workspace/shutdown/xsession.target-logout.sh
ด้วยเนื้อหาดังต่อไปนี้:
#! / bin / ทุบตี
ถ้า systemctl --user is-active xsession.target &> / dev / null
แล้วก็
/ bin / systemctl - ผู้ใช้หยุด xsession.target
Fi
ทำให้สคริปต์เรียกทำงานได้:
$> chmod + x ~ / .config / autostart-สคริปต์ / xsession.target-login.sh
$> chmod + x ~ / .config / plasma-workspace / ปิดระบบ / xsession.target-logout.sh
หมายเหตุ:ไฟล์ทั้งสองนี้จะถูกวางไว้ที่ KDE จะไปรับพวกเขาเพื่อเริ่มอัตโนมัติและปิด ไฟล์อาจถูกวางไว้ที่อื่นสำหรับสภาพแวดล้อมเดสก์ทอปอื่น ๆ (เช่น Gnome) - แต่ฉันไม่รู้เกี่ยวกับสภาพแวดล้อมเหล่านั้น
หมายเหตุ:วิธีแก้ปัญหานี้ขาดการสนับสนุนเซสชันหลายเดสก์ท็อป มันจัดการgraphical-session.target
ได้อย่างถูกต้องตราบเท่าที่มีการใช้งานเซสชัน X11 เพียงครั้งเดียวเท่านั้นที่ทำงานบนเครื่อง (แต่นั่นเป็นกรณีสำหรับผู้ใช้ linux ส่วนใหญ่ของเรา)
- สร้างหน่วยผู้ใช้ systemd ของคุณเองซึ่งขึ้นอยู่กับ
graphical-session.target
และให้มันทำงานได้อย่างสมบูรณ์ในขณะที่ล็อกอินบนเดสก์ท็อปของคุณ
ดังตัวอย่างของหน่วย @ mkaito ควรมีลักษณะเช่นนี้:
[Unit]
คำอธิบาย = Redshift
partof = graphical-session.target
[บริการ]
ExecStart = / bin / redshift -l 28: -13 -t 5300: 3300 -b 0.80: 0.91 -m randr
เริ่มต้นใหม่ = เสมอ
(อย่าลืมทำการdaemon-reload
แก้ไขหลังจากหน่วยของคุณ!)
- รีบูตเครื่องของคุณเข้าสู่ระบบและยืนยันหน่วยของคุณจะเริ่มตามที่คาดไว้
$> systemctl --user status graphics-session.target
● graphics-session.target - เซสชันผู้ใช้แบบกราฟิกปัจจุบัน
โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/user/graphical-session.target; static; preset ของผู้ขาย: เปิดใช้งาน)
ใช้งานอยู่: เปิดใช้งานตั้งแต่ดอน 2017-01-05 15:08:42 CET; 47 นาทีที่แล้ว
Docs: man: systemd.special (7)
$> systemctl - ผู้ใช้ระบุสถานะหน่วยของคุณ ...
ในอนาคตบางวัน (จะเป็น Ubuntu 17.04?) วิธีแก้ปัญหาของฉันล้าสมัยเนื่องจากระบบจะจัดการgraphical-session.target
อย่างถูกต้องเอง ในวันนั้นเพียงแค่ลบ autostart และ shutdown script และxsession.target
- ผู้ใช้ที่กำหนดเองของคุณอาจไม่ถูกแตะต้องและใช้งานได้