Bashets/ru

Введение
Bashets это пользовательская библиотека виджетов (but really not only for widget-related things) работающая со криптами оболочки (в дальнейшем возможности увеличатся).

Bashets это объединяющий код, который позволяет вам где то получить данные, а затем передать их куда либо (например в другой виджет). Это отдельный подход для Obvious или Vicious, который пытаются упаковать и объеденять все их виджеты.

Поддерживаются источники:
 * Запуск скрипта по времени (timed-execution).
 * Запуск скрипта для получения данных (external).
 * Прослушивание сигналов DBus и получение данных из него.
 * Получение данных из предопределенных пользователем функций.

Поддерживаются перенаправления в:
 * Различные виджеты. Виджеты могуть быть textbox, imagebox, progressbar, или graph.
 * Возвращающие значения функции. Вы можете принять возвращаемые значения в ваших собственных функциях.

Примечание: Bashets работает с awesome 3.5 и новее.

Почему вы должны использовать эту библиотеку
Unix-подобные системы насчитывают более 9000 консольных утилит для сбора и обработки данных. Поэтому простейший способ получения этих данных где либо - это использование shell скриптов.

Когда вы выбираете какую либо систему виджетов, на самом деле вы выбираете способ обработки и представления данных. Например, данные по использованию процессора могут быть представлены в виде: графика, прогрессбара, диаграмы или простого текста.

Итак, что вам для этого нужно? Вам нужно написать shell-скрипт для получения данных, и иметь виджет который будет их отображать.

Bashets это объединяющий код, облегчающий взаимодействие и абстагирующий вашу работу с сырыми timers, awesome-client или DBUS APIs в awesome.

Вам необходимо только единожды добавить вызов 'bashets.register' в rc.lua для виджета - и ваши счетчики и графики заработают.

Что можно сделать с его помощью


В примере справа, вы можете увидеть мой рабочий стол во следующими виджетами:


 * Раскладка клавиатуры (textbox)
 * Заряд аккумулятора (imagebox)
 * Виджет плеера с обложкой и прогресбаром (textbox + imagebox + progressbar combination).

Ирония заключается в том, что виджеты и библиотеки Wicked являются основоположниками для всех существующих виджетов и библиотек awesome и это нужно отметить, хотя на сегодняшний день эта библиотека и считается устаревшей.

Конечно, вы можете сделать все рутинные задачи самостоятельно: создать таймер для вызова mpc/acpi, или написать shell-скрипт для передачи данных клавиатурному виджету. Но вместо этого, вам нужно написать около 5 строк кода на lua, и bashets облегчит вашу работу.

Здесь мой старый рабочий стол, где у меня стоит 7 progressbar получающих данные из разных источников. Без использования Bashets это было кошмаром, необходимо было использовать различные модули для виджетов, в то время как сейчас при использовании Bashets достаточно добавить всего 7 строк кода на lua.

Как использовать библиотеку

 * 1) Скачайте bashets.lua и скопируйте ее в /usr/share/awesome/lib
 * 2) Добавьте require("bashets") в начало файла rc.lua
 * 3) Создайте виджет:
 * 4) * Textbox: xkbw = wibox.widget.textbox
 * 5) * Imagebox: batw = wibox.widget.imagebox
 * 6) * Progress Bar: coverpg = awful.widget.progressbar
 * 7) * Graph: cpugraph = awful.widget.graph
 * 8) Зарегистрируйте источник данных для обновления виджета
 * 9) * Периодически запускаемый(timed-execution) shell-скрипт: bashets.register("batpic.sh", {widget = batw, separator = " ", update_time=1})
 * 10) * Сторонний (extetnal) shell-скрипт: bashets.register("xkb.sh", {widget = xkbw, update_time = 1, external = true, format = ' $1 '})
 * 11) * Сигналы DBus: bashets.register("org.freedesktop.Hal.Manager", {dbus = true, busname = "system", widget = datew, format="$3"})
 * 12) Отредактируйте форматирование строки и разделите ее так как вам нужно (по умолчанию испльзуются "$1" и символ пробела).
 * 13) После того как все виджеты зарегистрированны, добавьте строку: bashets.start
 * 14) Добавьте строку bashets.stop непосредственно перед awesome.quit если вы используете внешние(extarnal) скрипты. В противном случае, ваш терминал получит огромное колличество ошибок DBus.
 * 15) Наслаждайтесь!

Помните различие между "timed-execution" и "external" скрипты: С пользовательской точки зрения, никакой разницы в использовании между ними нет. Они печатают разные строки в stdout, и это единственное различие.
 * Timed-execution скрипт запускается каждый раз через значение установленное в update_time
 * External скрипты запускаются с awesome и работают в фоне, они передают данные виджетам через awesome-client

Чтобы узнать больше прочтите документацию.

PS: Предыдущая версия этой сраницы описывает больше средств разработки и идеологии Bashets.

Как получить Bashets
Bashets располагается на Gitorious, там же полная докуметация. Еще вы можете найти на Arch Linux package в AUR.