Pull to refresh

GUI для rfkill на python с использованием Qt

Reading time 2 min
Views 2.9K
image Уже четвертый месяц как я являюсь обладателем прекрасного нет-бука Lenovo S10-3t с встроенным WiMAX. И уже чуть больше месяца как в ядре Linux есть дрова под Intel Corporation WiMAX/WiFi Link 6050 Series. Установить дрова и найти как правильно подключится из консоли тоже не проблема. А так хочется блэкджека и шлюкрасивых рюшечек и простого управления.

Многие наверно видели интерфейс от Yota где можно выбрать что сейчас использовать: WiMAX или Wi-Fi. image Просто и удобно. В краях Linux на эту тему произведений мало. В wicd говорят про релиз 2.0 с поддержкой WiMAX и плагинов, NetworkMenager живет активнее, даже должен плагин быть. А так как с последним менеджером у меня дружба не сложилась и я недавно закончил чтение книжки по Python, то ответ напросился сам — велосипед.

Итак представляю на ваш суд свое творение, минималистично, но то что требовалось мне, оно решает rfkill-qt-gui.

Структура проекта:
icons
dbuslibs:
-->DeviceManager.py
-->RfkillDevices.py
scripts:
-->wimax-connect.sh
-->wimax-disconnect.sh
rfkillqtgui.py

Итак что с чем едят.

DeviceManager.py

Библиотека отвечает за возню с устройствами посредством D-Bus, ловлей всяких полезных событий и уведомлением о них вышестоящих. Можно дописать туда разные классы устройств. Меня интересовали только Killswitch.

RfkillDevices.py

Обертка над DeviceManager для управления устройствами. Делит устройства на три группы Bluetooth, Wi-Fi, WiMAX и остальное неопознанное. Закладывал на несколько устройств в группе. Но так как свисток от Yota у меня не настроен и получить несколько WiMAX/Wi-Fi устройств не могу, то работает все с первым устройством в группе.

rfkillqtgui.py

Основная программа. Тут создается иконка системного лотка и его контекстное меню. Всего три пункта. image Также тут реализована логика для запуска скриптов по инициализации сети WiMAX. Искал как управлять настройкой из userspace, но писать свой wicd в планы не входило. Поэтому скрипты и kdesu для их запуска под рутом.

Использовать просто — запускам и переключаем что как нужно. Можно отключить запуск скриптов (--no-script) и включить возможность одновременной работы WiMAX и Wi-Fi (--all) параметрами. Выбор сети WiMAX прописываем в скриптах.

Приму вашу конструктивную критику. За иконку не пинать :) Хотелось совместить на одной все три параметра с отметкой об активности.
Мысль витала 4 месяца, оформлена была за сутки. Возможны баги и неточности.

Исходные файлы доступны тут
Или архивом тут

Инструментарий

qdbusviewer — простой Qt-ный обозреватель D-Bus
gimp — графический редактор

Разные мануалы

HAL 0.5.8 Specification
dbus-python tutorial
Qt 4.5 Doc

Тут были найдены и использованы кусочки кода

stoqlib (D-Bus)
Systray Icon
Python: работа с иконкой в трее в PyQt4 (через сокращение)
Пишем полезную программу для KDE4 на питоне за два часа
Tags:
Hubs:
+30
Comments 6
Comments Comments 6

Articles