Может ли BASH отображаться в systray в качестве индикатора приложения?
У меня есть скрипт bash, который блокирует экран через определенное время ( приложение, которое блокирует экран через определенное время для Ubuntu). Я хотел бы отобразить оставшееся время на панели задач в системном трее / на панели приложений Ubuntu.
1 ответ
Лучший метод, который я нашел, - это индикатор системного монитора из этой статьи: webupd8.org - индикатор приложения Ubuntu, отображающий bash. Он отображает текст на панели задач / панели приложений Unity, который ваш bash-скрипт "выводит".
Вышеупомянутая статья нацелена на Ubuntu 16.04 с Unity. Для получения дополнительной информации о Xubuntu, расширении индикатора приложения Gnome-Shell + и Budgie перейдите на веб-сайт разработчиков: https://github.com/fossfreedom/indicator-sysmonitor. Также посетите сайт для более подробных инструкций по установке и настройке.
Установить и настроить indicator-sysmonitor
Для установки индикатора системного монитора необходимо сначала указать PPA, где indicator-sysmonitor
может быть найден:
sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
sudo apt-get update
sudo apt-get install indicator-sysmonitor
Теперь запустите графический интерфейс "индикатор-системный монитор" из Dash (Alt + F2).
- Нажмите на область systray, которая появляется с "cpu: 99% mem: 99%"
- Выберите "Настройки"
- Вначале активна вкладка "Общие", нажмите "Запуск при запуске"
- Выберите вкладку "Дополнительно"
- Нажмите кнопку " Создать", чтобы добавить новый элемент управления.
- В поле "Датчик" введите
custom
- В поле Описание
Bash Indicator
_ В поле Command введите имя вашего bash-скрипта, т.е./mnt/e/bin/indicator-sysmonitor-display
- Сохраните ваш новый пользовательский индикатор
- Выделить
custom
и нажмите кнопку Добавить, чтобы активировать его. - Вы можете удалить переменные по умолчанию для "CPU" и "Mem", которые могут быть вам бесполезны.
- Я изменил интервал времени обновления с
2
секунд до.3
второй. Для поддержки "спиннинг пиццы" поясняется ниже. - Теперь нажмите кнопку Сохранить.
Сисмонитор Индикатор в действии
это .gif
показывает, как это выглядит при обновлении системного лотка Ubuntu.
- В начале анимации наш системный вывод содержит "Яркость: 3000".
- затем
multi-timer
(ссылка ниже) запускается и проходит через несколько таймеров. - Появляется вращающаяся пицца с обратным отсчетом оставшегося времени.
ПРИМЕЧАНИЕ. Индикатор системного монитора также отображает "Яркость: 3000". Это дневная настройка для уровня яркости моего оборудования Intel Backlight (ссылка ниже).
Sysmonitor Indicator BASH скрипт
Создайте скрипт, подобный следующему, и назначьте его переменной {Custom}
в индикаторе системного монитора:
#!/bin/bash
# UPDT: May 30 2018 - Cohesion with new multi-timer and old lock-screen-timer.
if [ -f ~/.lock-screen-timer-remaining ]; then
text-spinner
Spinner=$(cat ~/.last-text-spinner) # read last text spinner used
String=$(cat ~/.lock-screen-timer-remaining)
systray="$Spinner $String"
else
systray=""
fi
if [ -f /tmp/display-current-brightness ]; then
Brightness=$(cat /tmp/display-current-brightness)
systray="$systray Brightness: $Brightness"
else
systray="$systray Brightness: OFF"
fi
# Below for AU answer: https://Ask-ubuntu.ru/questions/1024866/is-it-possible-to-show-ip-address-on-top-bar-near-the-time
# default_interface=$(route -n | awk '$1 == "0.0.0.0" {print $8; exit}')
# ip_address=$(ifconfig "$default_interface" | awk 'sub(/.* inet addr:/, "") {print $1}')
# systray="$systray $ip_address"
echo "$systray" # sysmon-indidicator will put echo string into systray for us.
exit 0
После того, как Sysmonitor Indicator сообщит имя вашего bash-скрипта, установите {Custom}
Переменная она запускается каждый интервал обновления. Независимо от того, что ваш bash-скрипт выводит через echo
Команда появляется в системном трее Ubuntu.
ПРИМЕЧАНИЕ. Сценарий отображает значения оставшегося времени и уровня яркости дисплея. Эти значения устанавливаются сценариями, задокументированными в Ask Ubuntu: приложение, которое блокирует экран через определенное время для Ubuntu, таймер для одновременной установки различных аварийных сигналов и автоматическая настройка яркости дисплея на основе восхода и захода солнца соответственно.
Пицца text-spinner
BASH скрипт
text-spinner
Скрипт bash создает эффект вращающейся пиццы, перебирая персонажей |
, /
, ─
а также \
, Этот эффект подчеркивает тот факт, что что-то "работает" или "думает". Чтобы получить "эффект вращения", вы хотите изменить интервал обновления индикатора Sysmonitor по умолчанию 2
секунд до 0.30
секунд.
Здесь text-spinner
скрипт bash:
#!/bin/bash
# return '|', '/', '─', '\' sequentially with each call to this script.
# Use ~/.last-text-spinner to store last used
FILE=~/.last-text-spinner
if ! [ -f $FILE ]; then
echo '|' > $FILE
exit 124 # ASCII equivalent for '|'. Bash doesn't allow character return codes
fi
LAST=$(cat $FILE) # read last character used
if [[ $LAST == '|' ]]; then
echo '/' > $FILE
exit 47 # ASCII equivalent of "/"
elif [[ $LAST == '/' ]]; then # NOTE: you must have spaces around " == " else code breaks
echo '─' > $FILE
exit 9472 # ASCII equivalent
elif [[ $LAST == '─' ]]; then
echo '\' > $FILE # NOTE: must use single quote because double quote BASH reinterprets
exit 92 # ASCII
else
echo '|' > $FILE
exit 124 # ASCII
fi