Я нашел ЯД (еще один диалог) , чтобы предоставить самое простое решение. См. Краткое описание webupd8 . Тем не менее, интеграция в Unity в данный момент выглядит слегка нарушенной. Ниже я упоминаю обходной путь, но если вы действительно заботитесь об Unity, вам, вероятно, стоит поискать другие ответы.
Примечание. Хотя я уверен, что YAD работает в самых разных средах, я протестировал приведенные ниже инструкции только с использованием Lubuntu 15.10 (рабочий стол LXDE) и Ubuntu 14.04 (рабочий стол Unity) .
Установка
Я получил рабочую установку с:
sudo apt-add-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install yad
(На самом деле мне не нужны были первые две строки в Lubuntu 15.10, но это могло быть совпадением.)
В LXDE звоните
yad --notification --listen
затем вызвал иконку в трее, которую я мог бы изменить, набрав (например): icon:gtk-help
. В Unity ничего не появилось, поэтому мне нужно было следующее ...
Обходной путь для Unity:
Следующие инструкции снова взяты из webupd8 .
Проблема в том, что «системный трей» больше официально не существует в Unity. Одним из возможных решений для запуска таких программ, как YAD, которые не догнали это изменение, является установка «эмулятора системного трея»:
sudo apt-add-repository ppa:fixnix/indicator-systemtray-unity
sudo apt-get update
sudo apt-get install indicator-systemtray-unity
Чтобы получить значки прямо на панели Unity, я использовал следующие настройки:
gsettings set net.launchpad.indicator.systemtray tray-is-static true
gsettings set net.launchpad.indicator.systemtray show-background-static false
Как только я выйду из системы и вернусь снова, yad --notification
заработал как положено. (Более того, «системный трей» отображал некоторые дополнительные значки, которые я ранее искал напрасно.) Положение значков на панели можно изменить с помощью:
gsettings set net.launchpad.indicator.systemtray static-x 1500
(где 1500 может быть заменено любым разумным значением). Я не знаю, как сделать так, чтобы значки отображались вровень-вправо. Если вам когда-нибудь захочется снова удалить «эмулятор системного трея», webupd8 рекомендует:
sudo apt-get purge indicator-systemtray-unity
Демо
Вот упрощенная демонстрация, которая может помочь проиллюстрировать, как использовать YAD в реальных сценариях. Я предполагаю, что сам YAD уже установлен, как описано выше. Предположим, мы хотели бы посмотреть вывод какой-либо программы, запущенной в командной строке, и соответствующим образом обновить иконку в трее. Для целей этой демонстрации давайте просто возьмем эту «программу» в качестве следующего скрипта «dummyprogram.sh»:
#! /bin/bash
i=1
while [ $i -ne 3 ]
do
let "i=((i+1)%2)"
echo $i
sleep 1
done
Копирование вышеуказанных строк в файл "dummyprogram.sh", выполнение его с помощью "chmod + x dummyprogram.sh" и вызов "./dummyprogram.sh" должны привести к следующему выводу:
0
1
0
1
...
(одна строка каждую секунду). Теперь для актуальной задачи под рукой. Чтобы получить «иконизированную» версию вышеприведенного вывода в области уведомлений, мы используем следующий скрипт «demo.sh»:
#! /bin/bash
while read x
do
if [ $x -eq 0 ]
then
echo icon:gtk-home
else
echo icon:gtk-help
fi
done
Снова скопируйте строки в файл "demo.sh" и сделайте его исполняемым. Вызов
./dummyprogram.sh | ./demo.sh | yad --notification --listen
теперь должно привести к желаемому результату: значок в области уведомлений, который каждую секунду меняет изображение между двумя различными значками.
Вы можете завершить демонстрацию, набрав Ctrl-C в терминале.