Почему не работает dzen2 при вызове через?

dzen2 – полезная утилита уведомлений. Эта команда выведет на экран сообщение с надписью «Привет»:

echo Hi | dzen2 -p 

Debian's – это утилита, которая планирует события в будущем. Эта команда заставит файл «foo» появиться в вашем пользовательском каталоге через 1 минуту:

 echo "touch ~/foo" | at now + 1 minute 

Так почему же эта команда не вызывает уведомление dzen2 через 1 минуту?

 echo "echo Hi | dzen2 -p" | at now + 1 minute 

Я расследовал часами и не могу найти причины, почему это не работает! У меня есть догадка, что это связано с оболочкой, на которую вызывается, но я просто не понимаю, почему она терпит неудачу. В качестве примера встречной точки эта команда работает очень хорошо:

 echo "notify-send Hi" | at now + 1 minute 

One Solution collect form web for “Почему не работает dzen2 при вызове через?”

Программа, которая составляет задание, является дочерним элементом процесса atd (в daemon ), а не оболочки, в которой вы работаете. Таким образом, он не наследует текущую среду оболочки. Система at системе организует копирование среды (и рабочего каталога и еще нескольких неясных вещей), но она не содержит нескольких переменных.

В частности, переменная DISPLAY не копируется в задание. Эта переменная сообщает всем X-программам, которые отображаются для подключения. Без дисплея X dzen2 не знает, где вывести уведомление. При удалении DISPLAY поскольку он обычно используется для пакетных заданий, которые не производят никакого вывода терминала или графического вывода.

notify-send работает, потому что он не подключается к X-серверу: он использует D-bus для подключения к демону, который подключен к вашей X-сессии.

Вы можете сделать работу dzen2, явно скопировав переменную DISPLAY :

 echo "export DISPLAY=$DISPLAY;" 'echo hello | dzen2 -p' | at now + 42 minutes 

Вероятно, dzen2 создает сообщение об ошибке (стандартное сообщение не Can't open display: :). Любое сообщение о выходе или ошибке, созданное на задании, отправляется локальной почтой (точно так же, как и для заданий cron). Проверьте местную почту.

  • Что такое X Window System?
  • Решение круговой зависимости ад для libX11 и libXi
  • Как использовать / etc / fbtab в OpenBSD для обеспечения безопасности X11?
  • Запустить GUI-браузер на сервере без GUI?
  • oxmplayer на вершине и блокирует все другие приложения GUI
  • Как использовать клавиатуру вместо мыши, щелкнуть среднюю кнопку для копирования / вставки?
  • mpirun с ssh и X11
  • Можно ли использовать x-forward приложения для Windows в Linux, если Windows PC работает Xming?
  • xdotool: как искать окно по названию и классу с разными шаблонами (аналогично AutoHotkey)
  • Самый быстрый удаленный X из Windows
  • US International Keyboard Layout не ведет себя так, как ожидалось?
  • Linux и Unix - лучшая ОС в мире.