redshift non è un servizio di sistema; funziona all'interno della sessione di accesso, poiché deve accedere al server X11. Quindi sostanzialmente dovrebbe essere avviato automaticamente allo stesso modo della maggior parte dei programmi grafici:
Metodo 1
Aggiungi un file redshift.desktop
alla directory di avvio automatico XDG ~/.config/autostart/
:
[Desktop Entry]
Type=Application
Name=Redshift
Exec=/usr/bin/redshift
Funziona con ambienti desktop che seguono le specifiche di avvio automatico XDG; questo include GNOME, KDE, Xfce e molti altri. In alcuni è modificabile tramite interfacce grafiche (ad es. gnome-session-properties
In GNOME).
Metodo 2
Aggiungi la seguente riga ...
redshift &
... al tuo ~/.xprofile
. Funziona con la maggior parte dei display manager (gdm, kdm, lightdm, lxdm, sddm - non sottile, tuttavia).
Se si utilizza lo strumento startx , ~/.xprofile
non viene utilizzato per impostazione predefinita, quindi è necessario aggiornare lo ~/.xinitrc
script: aggiungere la stessa riga da qualche parte prima di avviare il gestore sessioni.
Metodo 3
Se usi un display manager come GDM, potresti voler eseguire il programma prima di accedere, in modo che si applichi anche alla schermata di accesso. Come fare ciò varia tra i gestori display, ma in GDM può essere fatto modificando /etc/gdm/Init/Default
. (Dichiarazione di non responsabilità: non ho provato e questo potrebbe essere il file sbagliato.)
Cose che non funzioneranno
Uno script di inizializzazione del sistema non funzionerà poiché viene eseguito indipendentemente dalle sessioni grafiche - non avrà né il giusto $DISPLAY
né il giusto $XAUTHORITY
set; se li hardcode, potrebbe finire per provare a connettersi al display sbagliato (ad es. hardcode DISPLAY=":0"
ma la tua sessione inizia alle :1
); e se lo fai provare tutti i display, è molto probabile che lo script si avvii prima che qualsiasi display X11 sia stato avviato.
Un @reboot
cronjob verrà eseguito come l'utente giusto (anziché dover su
/ sudo
), ma per il resto ha tutti gli stessi problemi degli script di inizializzazione del sistema.