Как создать индикатор, указывающий подключенное устройство в среде рабочего стола XFCE в Linux?

Как реализовать функцию включения индикатора в области уведомлений на панели XFCE при подключении внешнего USB-модема и его выключение при извлечении? Я использую проверку наличия модема в командной строке с помощью "ip route show", но сталкиваюсь с проблемой изменения имени модема при каждом подключении. Не могу найти соответствующих элементов ни в стандарте, ни в поиске.
  • 8 декабря 2023 г. 13:59
Ответы на вопрос 5
Для создания индикатора подключенного устройства в среде рабочего стола XFCE на Linux необходимо выполнить следующие шаги:

1. Создайте скрипт, который будет проверять наличие подключенного устройства. Например, назовем его `check_device.sh`. В этом скрипте вы можете использовать команду `ip route show` для проверки наличия модема или любую другую команду, подходящую для вашего устройства.
2. Создайте пустую панель в XFCE и добавьте элемент "Notify Area" на эту панель.
3. Создайте еще один скрипт, который будет выполняться при каждом запуске системы и будет проверять наличие устройства. Если устройство обнаружено, то этот скрипт будет включать индикатор в панели XFCE, а если устройство отключено, то скрипт будет выключать индикатор. В следующем примере этот скрипт называется `toggle_indicator.sh`.

```bash
#!/bin/bash
while true; do
    if ip route show | grep -q [имя вашего модема]; then
        xfconf-query -c xfce4-panel -p /panels/panel-1/plugin-ids -T int -s "indicator"
    else
        xfconf-query -c xfce4-panel -p /panels/panel-1/plugin-ids -T int -a "indicator"
    fi
    sleep 5
done
```

Вместо `[имя вашего модема]` вам нужно указать имя вашего модема или проверку, которую вы используете для определения наличия модема.

4. Добавьте в этот скрипт команду `sleep 5`, чтобы скрипт повторялся через каждые 5 секунд. Это поможет в случае, если устройство будет подключено или отключено во время работы системы.
5. Сделайте этот скрипт исполняемым, выполнив команду `chmod +x toggle_indicator.sh`.
6. Запустите этот скрипт в автозагрузку, чтобы он запускался каждый раз при загрузке системы.

Теперь, когда ваш компьютер будет загружаться, скрипт будет проверять наличие подключенного модема и автоматически включать или выключать индикатор на панели XFCE, основываясь на статусе модема.

Обратите внимание, что в приведенном выше примере предполагается, что у вас есть только одна панель (panel-1). Если у вас есть несколько панелей, вам нужно будет изменить путь в команде `xfconf-query` или указать конкретную панель по ее имени.

Кроме того, учтите, что использование команды `ip route show` для проверки наличия модема может не работать в некоторых случаях или с некоторыми моделями модемов. Вы можете попробовать использовать другие команды или методы для проверки наличия модема в вашей среде.
Напишите простенькое приложение на питоне и wxwidgets, которое отображает свое состояние в системном трее (taskbar) - https://wiki.wxpython.org/How%20to%20create%20a%20... 
Я таких приложений с десяток написпл, с менюшками и плюшками.
Ну скорее всего брать учебники по программированию и писать аплет для панели.
Источник события при подключении устройства - служба udev.  Написать правило в udev для включения индикатора. Ну и выключения. 

Либо сделать правило с созданием файлов в /dev со своими именами и отслеживать эти файлы виджетом
Если не получится через трей это сделать, то можно попробовать сделать это через conky, на десктопе через сетевой интерфейс модема: 
где enp3s0 - сетевой интерфейс модема (сменить на свой). Как только модем подключен и сетевой интерфейс появился - появится IP, модем отключен - IP пропал.
Похожие вопросы