4

У меня есть программа с именем redshift которую я хотел бы запустить автоматически при входе в систему. Если я запусту « redshift » в терминале (или redshift &) или через alt+f2, это запустит его. Я не думаю, что у него есть сценарий инициализации, так что добавление « redshift » в мой файл .profile заставит его загружаться при запуске? Я полагаю, cronjob, установленный на @reboot также может работать?

Я думаю, что некоторые программы должны выполняться из определенной пользовательской среды, особенно те, которые влияют на графические элементы? Например, если я подключусь к удаленному компьютеру по SSH и попытаюсь открыть программу с графическим интерфейсом, очевидно, что это будет невозможно, поэтому произойдет сбой. Вот чего я стараюсь избегать в отношении того, откуда я запускаю эту программу.

1 ответ1

6

красное смещение не является системным сервисом; он работает во время сеанса входа в систему, поскольку ему необходим доступ к серверу X11. Так что, в основном, он должен запускаться автоматически так же, как и большинство графических программ:

Способ 1

Добавьте файл redshift.desktop в каталог автозапуска XDG, ~/.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 . (Отказ от ответственности: я не пробовал, и это может быть неправильный файл.)

Вещи, которые не будут работать

  • Сценарий инициализации системы не будет работать, поскольку он работает независимо от графических сеансов - у него не будет ни правильного $DISPLAY ни правильного набора $XAUTHORITY ; если вы жестко закодируете их, это может привести к попытке подключиться к неправильному дисплею (например, вы жестко закодировали DISPLAY=":0" но ваш сеанс начинается с :1); и если вы сделаете так, чтобы он попробовал все дисплеи, сценарий все еще может запуститься до запуска любого дисплея X11.

  • @reboot будет работать как правильный пользователь (а не как su/sudo), но в остальном он имеет те же проблемы, что и сценарии системной инициализации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .