redshift ไม่ใช่บริการของระบบ มันทำงานได้ในเซสชั่นเข้าสู่ระบบของคุณเนื่องจากมันจำเป็นต้องเข้าถึงเซิร์ฟเวอร์ X11 ดังนั้นโดยพื้นฐานแล้วควรเริ่มต้นอัตโนมัติในลักษณะเดียวกับที่โปรแกรมกราฟิกส่วนใหญ่:
วิธีที่ 1
เพิ่มไฟล์ redshift.desktop
ไปยังไดเรกทอรี XDG Autostart ~/.config/autostart/
:
[Desktop Entry]
Type=Application
Name=Redshift
Exec=/usr/bin/redshift
ใช้งานได้กับสภาพแวดล้อมเดสก์ท็อปที่เป็นไปตามข้อกำหนด XDG Autostart สิ่งนี้รวมถึง GNOME, KDE, Xfce และอื่น ๆ อีกมากมาย ในบางส่วนสามารถแก้ไขได้ผ่านส่วนต่อประสานกราฟิก (เช่น gnome-session-properties
ใน GNOME)
วิธีที่ 2
เพิ่มบรรทัดต่อไปนี้ ...
redshift &
... ถึงคุณ ~/.xprofile
. วิธีนี้ใช้ได้กับเครื่องมือจัดการดิสเพลย์ส่วนใหญ่ (gdm, kdm, lightdm, lxdm, sddm - ไม่ผอมเลย)
หากคุณใช้ startx เครื่องมือ, ~/.xprofile
ไม่ได้ใช้เป็นค่าเริ่มต้นดังนั้นคุณจะต้องอัปเดตของคุณ ~/.xinitrc
สคริปต์แทน - เพิ่มบรรทัดเดียวกันก่อนที่จะเริ่มตัวจัดการเซสชัน
วิธีที่ 3
หากคุณใช้โปรแกรมจัดการหน้าจอเช่น GDM คุณอาจต้องการเรียกใช้โปรแกรมก่อนที่จะเข้าสู่ระบบเพื่อที่จะสามารถนำไปใช้กับหน้าจอเข้าสู่ระบบได้เช่นกัน วิธีการนี้จะแตกต่างกันระหว่างตัวจัดการการแสดงผล แต่ใน GDM สามารถทำได้โดยการแก้ไข /etc/gdm/Init/Default
. (ข้อจำกัดความรับผิดชอบ: ฉันยังไม่ได้ลองและอาจเป็นไฟล์ผิด)
สิ่งที่จะไม่ทำงาน
สคริปต์ init ของระบบจะไม่ทำงานเนื่องจากจะทำงานแยกต่างหากจากเซสชันกราฟิก - ซึ่งจะไม่มีสิทธิ์ $DISPLAY
ไม่ถูกต้อง $XAUTHORITY
ตั้ง; หากคุณฮาร์ดโค้ดเหล่านั้นมันอาจสิ้นสุดการพยายามเชื่อมต่อกับจอแสดงผลที่ไม่ถูกต้อง (เช่นคุณฮาร์ดโค้ด DISPLAY=":0"
แต่เซสชันของคุณเริ่มต้นที่ :1
); และถ้าคุณทำให้มันลองแสดงทั้งหมดสคริปต์ยังคงมีแนวโน้มที่จะเริ่มก่อน ใด จอแสดงผล X11 เริ่มขึ้นแล้ว
@reboot
cronjob จะทำงานในฐานะผู้ใช้ที่ถูกต้อง (ไม่ใช่ต้องการ su
/ sudo
) แต่อย่างอื่นมันมีปัญหาเช่นเดียวกับสคริปต์เริ่มต้นระบบ