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 ) แต่อย่างอื่นมันมีปัญหาเช่นเดียวกับสคริปต์เริ่มต้นระบบ