Vicious/ru

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

Соглашение Vicious
Типовые виджеты Vicious являются основой для создания ваших собственных виджетов в awesome. Vicious содержат модули, которые собирают данные о вашей системе, и многие вспомогательные функции которые облегчают регистрацию таймеров, приостановку виджетов, и т.д.


 * Почему не использовать Wicked?
 * Он не является модульным.
 * Почему не использовать Obvious?
 * Для разработчиков он является противоположным vicious.
 * Почему не использовать Bashets?
 * У него другая целевая категория пользователей.


 * Цели Vicious:
 * Виджеты должны быть модульными, вы подключаете только то, что нужно именно вам, игнорируя все остальное.
 * Виджеты очень маленькие, чуть больше 10 строк, модули выполняющие функции получают данные и возвращают их в необработанном (сыром) виде.
 * Как данные будут отформатированны, какого цвета красного или синего, должно быть описано в другом месте (обычно в rc.lua).
 * Кроме того, в нашу задачу не входит регистрация, привязка к кнопкам, подсказкам или уведомлениям naughty.
 * Виджеты не должны нагружать систему, особенно при работе от аккумулятора.
 * Виджеты должны быть легки в установке, поэтому они не должны зависеть от каких то сторонних библиотек Lua.

Установка Vicious
Vicious располагается http://git.sysphere.org/vicious/ где вы можете скачать архив с последней релизной версией, или текущей разрабатываемой версией с помощью git. where you can download the tarball of the latest release/tag, or get the development code with git. Git доступен через http, вы можете клонировать репозитарий используя:

$ git clone http://git.sysphere.org/vicious

После извлечения из архива, или клонирования из репозитория, вам необходимо переместить папку vicious в папку awesome $XDG_CONFIG_HOME (обычно ~/.config/awesome).

$ mv vicious $XDG_CONFIG_HOME/awesome/

Установка в Ubuntu
Репозиторий Ubuntu содержит пакет называемый "awesome-extra", который включает библиотеку Vicious. Наберите:

$ sudo aptitude install awesome-extra

On Archlinux
Репозиторий Arch Community содержит пакет vicious. Просто наберите:

$ sudo pacman -S vicious

Старые версии awesome
Vicious версии v1.0.11 это последний релиз поддерживающий awesome с версией меньше 3.4. В версию v1.0.12 vicious и новее, была портированна новая инфраструктура таймеров и виджетов awful, поэтому старые версии awesome в ней не поддерживаются. Тем не менее, исправление ошибок и улучшения, были бэкпортированны в старую релизную версию с номером v1.0.11.4.

Использование Vicious
Vicious загружает только тот тип виджетов, которые вы планируете использовать, и зарегистрированы в вашем файле конфигурации awesome, чтобы избежать безполезных модулей висящих в памяти. Для того, чтобы начать использовать Vicious добавьте следующую строку в rc.lua:

vicious = require("vicious")

После этого вы можете регистрировать любые виджеты (textbox, graph или progressbar) вызывая функцию vicious.register.

Внимание! Если вы планируете использовать несколько виджетов одного типа, необходимо включить кеширование возвращаемых этим типом значений перед их инициализацией вызовом функции vicious.cache(wtype). Например: -- Включение кеширования возвращаемых значений vicious.widgets.cpu vicious.cache(vicious.widgets.cpu) -- Инициализация виджета cpuwidget = wibox.widget.textbox -- Регистрация виджета vicious.register(cpuwidget, vicious.widgets.cpu, "$1%")

Прочтите файл README, в котором все разъяснено более детально, и описывает все доступные функции и описание различных виджетов на актуальных примерах.

Примеры виджетов

 * Начните с простого виджета, например date. Затем настройте его.
 * Помните, что помимо создания виджета, вам необходимо добавить его в секцию wibox (statusbar) для отображения его на экране.

Date (textbox)
Этот виджет отображает время и дату. В этом примере интервал обновления данных составляет 60 секунд.

Для awesome 3.4

-- Инициализация виджета datewidget = widget({ type = "textbox" }) -- Регистрация vicious.register(datewidget, vicious.widgets.date, "%b %d, %R", 60)

Для awesome 3.5

-- Инициализация виджета datewidget = wibox.widget.textbox -- Регистрация vicious.register(datewidget, vicious.widgets.date, "%b %d, %R", 60)

Для получения списка доступных форматов для даты, наберите в консоли man strftime

Memory usage (textbox)
Данный пример отображает использование памяти в MB и общую память системы, с обновление раз в 13 секунд.

Для awesome 3.4

-- Инициализация виджета memwidget = widget({ type = "textbox" }) -- Регистрация виджета vicious.register(memwidget, vicious.widgets.mem, "$1% ($2MB/$3MB)", 13)

Для awesome 3.5

-- Инициализация виджета memwidget = wibox.widget.textbox -- Регистрация виджета vicious.register(memwidget, vicious.widgets.mem, "$1% ($2MB/$3MB)", 13)

Memory usage (progressbar)
Данный пример отображает использование памяти в процентах в виде индикатора, с обновлением раз в 13 секунд.

Для awesome 3.4

-- Инициализация виджета memwidget = awful.widget.progressbar -- Свойства индикатора memwidget:set_width(8) memwidget:set_height(10) memwidget:set_vertical(true) memwidget:set_background_color("#494B4F") memwidget:set_border_color(nil) memwidget:set_color("#AECF96") memwidget:set_gradient_colors({ "#AECF96", "#88A175", "#FF5656" }) -- Регистрация виджета vicious.register(memwidget, vicious.widgets.mem, "$1", 13)

Для awesome 3.5 

-- Инициализация виджета memwidget = awful.widget.progressbar -- Свойства индикатора memwidget:set_width(8) memwidget:set_height(10) memwidget:set_vertical(true) memwidget:set_background_color("#494B4F") memwidget:set_border_color(nil) memwidget:set_color({ type = "linear", from = { 0, 0 }, to = { 10,0 }, stops = { {0, "#AECF96"}, {0.5, "#88A175"},                    {1, "#FF5656"}}}) -- Регистрация виджета vicious.register(memwidget, vicious.widgets.mem, "$1", 13)

CPU usage (textbox)
Данный пример отображает использование всех доступных процессоров/ядер (CPUs/cores), с интервалом обновления 2 секунды (интервал по умолчанию).

Для awesome 3.4

-- Инициализация виджета cpuwidget = widget({ type = "textbox" }) -- Регистрация виджета vicious.register(cpuwidget, vicious.widgets.cpu, "$1%")

Для awesome 3.5

-- Инициализация виджета cpuwidget = wibox.widget.textbox -- Регистрация виджета vicious.register(cpuwidget, vicious.widgets.cpu, "$1%")

CPU usage (graph)
Данный пример отображает использование процессора с использованием всех доступных процессоров/ядер, с интервалом обновления в 2 секунды (стандартный интервал).

Для awesome 3.4

-- Инициализация виджета cpuwidget = awful.widget.graph -- Свойства графика cpuwidget:set_width(50) cpuwidget:set_background_color("#494B4F") cpuwidget:set_color("#FF5656") cpuwidget:set_gradient_colors({ "#FF5656", "#88A175", "#AECF96" }) -- Регистрация виджета vicious.register(cpuwidget, vicious.widgets.cpu, "$1")

Для awesome 3.5

-- Инициализация виджета cpuwidget = awful.widget.graph -- Свойства графика cpuwidget:set_width(50) cpuwidget:set_background_color("#494B4F") cpuwidget:set_color({ type = "linear", from = { 0, 0 }, to = { 10,0 }, stops = { {0, "#FF5656"}, {0.5, "#88A175"},                    {1, "#AECF96" }}}) -- Регистрация виджета vicious.register(cpuwidget, vicious.widgets.cpu, "$1")

MPD Status (textbox)
Этот пример выведет название песни и исполнителя, которая сейчас воспроизводится с использованием [MPD] (music player daemon). Данный пример также показывает как функции форматирования могут быть использованы для управления выводом.

 Для awesome 3.4 

-- Инициализация виджета mpdwidget = widget({ type = "textbox" }) -- Регистрация виджета vicious.register(mpdwidget, vicious.widgets.mpd,   function (widget, args)        if args["{state}"] == "Stop" then             return " - "        else             return args["{Artist}"]..' - '.. args["{Title}"]        end    end, 10)

 Для awesome 3.5 

-- Инициализация виджета mpdwidget = wibox.widget.textbox -- Регистрация виджета vicious.register(mpdwidget, vicious.widgets.mpd,   function (mpdwidget, args)        if args["{state}"] == "Stop" then             return " - "        else             return args["{Artist}"]..' - '.. args["{Title}"]        end    end, 10)

Виджеты из Wicked
Переход из Wicked на Vicious достаточно просто. Есть лишь небольшие различия в API:


 * Кэширование полностью контролируется пользователем.
 * Использование строковых виджетов не поддерживается.
 * Дополнения/изменения не поддерживаются разработчиками vicious.

Виджеты Awesome
Если вы хотите узнать больше о различных типах виджетов и объектах, как они работают, их свойства и прочее ... прочтите страницу Виджеты в awesome. Если вы планируете использовать виджеты графиков(graph) или индикаторов(progressbar) вы просто обязаны прочить ее. Пользователи vicious часто допускают ошибки когда добавляют свои виджеты в секцию wibox.