Я нашел YAD (еще один диалог), чтобы найти самое простое решение. См. краткое описание 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 в терминале.
person
Communicative Algebra
schedule
04.12.2015