redshift não é um serviço do sistema; ele funciona dentro da sua sessão de login, pois ele precisa acessar o servidor X11. Então, basicamente, ele deve ser iniciado automaticamente da mesma forma que a maioria dos programas gráficos são:
Método 1
Adicione um arquivo redshift.desktop
ao diretório de início automático do XDG, ~/.config/autostart/
:
[Desktop Entry]
Type=Application
Name=Redshift
Exec=/usr/bin/redshift
Isso funciona com ambientes de área de trabalho que seguem a especificação XDG Autostart; isso inclui o GNOME, o KDE, o Xfce e muitos outros. Em alguns, é editável por meio de interfaces gráficas (por exemplo, gnome-session-properties
no GNOME).
Método 2
Adicione a seguinte linha ...
redshift &
... para o seu ~/.xprofile
. Isso funciona com a maioria dos gerenciadores de exibição (gdm, kdm, lightdm, lxdm, sddm - não é magro, no entanto).
Se você usar a ferramenta startx , ~/.xprofile
não será usado por padrão, portanto, será necessário atualizar seu script ~/.xinitrc
- adicione a mesma linha em algum lugar antes de iniciar o gerenciador de sessões .
Método 3
Se você usar um gerenciador de exibição como o GDM, talvez queira executar o programa antes de efetuar login, para que também se aplique à tela de login. Como isso varia entre gerenciadores de exibição, mas no GDM isso pode ser feito editando /etc/gdm/Init/Default
. (Disclaimer: Eu não tentei e isso pode ser o arquivo errado.)
Coisas que não funcionam
-
Um script de inicialização do sistema não funcionará, pois ele é executado independentemente das sessões gráficas - ele não terá o% correto
$DISPLAY
nem o% correto$XAUTHORITY
definido; se você codificar esses, pode acabar tentando se conectar à exibição errada (por exemplo, você codificaDISPLAY=":0"
, mas sua sessão começa em:1
); e se você tentar ver todas as telas, o script ainda é muito provável de ser iniciado antes que qualquer qualquer display X11 tenha sido iniciado. -
Um
@reboot
cronjob será executado como o usuário certo (em vez de precisarsu
/sudo
), mas caso contrário, ele terá todos os mesmos problemas que os scripts init do sistema.