Может ли 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
Другие вопросы по тегам