Если вы хотите взаимодействовать с графическим интерфейсом пользователя из процесса, который не запускается из этого графического интерфейса, вам необходимо установить несколько переменных среды: как минимум DISPLAY
, возможно также XAUTHORITY
, если он не находится в местоположении по умолчанию, а для многих современных программ вам нужно установить DBUS_SESSION_BUS_ADDRESS
.
Но более надежным решением вашей проблемы было бы не перезапускать эти программы из NetworkManager. Помимо сложности их успешного запуска, вам также нужно беспокоиться о том, вошли ли вы в систему вообще, и есть ли другие пользователи и другие дисплеи, которые следует учитывать, и так далее. Вместо этого уничтожьте эти программы, но не перезапускайте их. В обычном сеансе вместо того, чтобы запускать их напрямую, запускайте их с супервизора, который перезапускает их, если они умирают. Я думаю, что systemd включает эту функцию (но я не знаю, как ее использовать); или вы можете использовать специальные программы-супервизоры, такие как monit , supervise ,…
Выполнение reload
из cron
оказалось недостаточным для обновления часового пояса. Однако запуск этой команды сработал:
service cron restart
Спасибо Джеффу Шаллеру за ваш комментарий .