05 июн 2016

Тeги: awesome-widgets,pytextmonitor

Похожие посты:
Практическая молекулярная динамика. Часть 1
Как загрузить скриншот в S3 с помощью linux

Awesome Widgets - Произвольные форматеры и макросы

Данная статья описывает два основных изменения в версии 3.2.0.

Форматеры

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

Чтобы включить форматер, используйте файл $HOME/.local/share/awesomewidgets/formatters/formatters.ini. Данный файл имеет только одну секцию [Formatters], в которой ключи - это соответствующие ключи в виджете, а значения - имена соответствующих форматеров. Например:

[Formatters]
cpu=myformatter

означает, что форматер myformatter будет использован для ключа cpu.

Все форматеры хранятся в той же директории, один форматер на файл, файлы должны иметь расширение .desktop. Каждый форматер имееет следующие настройки внутри секции [Desktop Entry]:

Поле Обязательное Значение По-умолчанию
Name да имя форматера none
Comment нет комментарий empty
X-AW-ApiVersion да совместимость API. Не меняйте, если не знаете, что делаете 0
X-AW-Type нет тип форматера. Поддерживаются следующие типы: NoFormat, DateTime, Float, Json, List, Script, String NoFormat

Дополнительно следующте поля добавлены для совместимости:: X-AW-Active, X-AW-Interval, X-AW-Number, X-AW-Schedule, X-AW-Socket, но они будут проигнорированы.

Каждый тип форматера имеет свое поведение и свои настройки, которые описаны ниже. Также существуют системные настройки, которые хранятся в /usr/share/awesomewidgets/formatters/, системные форматеры будут перезаписаны пользовательскими, но настройки (то есть formatters.ini) будут просто дополнены.

NoFormat форматер

Просто значение конвертирует в строку. Не имеет никаких особых настроек.

DateTime форматер

Конвертирует QDateTime объект в строку.

Поле Обязательное Значение По-умолчанию
X-AW-Format да Qt специфичный формат времени (пусто)

Действует аналогично $ctime и имеет аналогичную конфигурацию.

Float форматер

Конвертирует любое число в строку.

Поле Обязательное Значение По-умолчанию
X-AW-FillChar нет символ для заполнения до X-AW-Width (space)
X-AW-ForceWidth нет обрезать строку после X-AW-Width false
X-AW-Format нет Qt специфичный формат числа, поддерживаются: e, E, f, g, G f
X-AW-Multiplier нет число, на которое значение будет умножено 1.0
X-AW-Precision нет число знаков после запятой -1 (как получится)
X-AW-Summand нет число, которое будет добавлено к значению 0.0
X-AW-Width нет ширина числового поля, отрицательное - выравнивание по левому краю 0 (не ограничивать)

Конечное значение будет получено по формуле X-AW-Multiplier * value + X-AW-Summand.

Json форматер

Извлекает сообщения из JSON.

Поле Обязательное Значение По-умолчанию
X-AW-Path да путь к значению в JSON (пусто)

Путь должен быть разделен точками. Числа в пути будут интерпретированы как индекс элемента в массиве.

List форматер

Конвертирует список строк в строку

Поле Обязательное Значение По-умолчанию
X-AW-Filter нет фильтровать список по заданному регулярному выражению (пусто)
X-AW-Separator нет использовать разделитель для объединения (пусто)
X-AW-Sort нет сортировать или нет список false

Script форматер

Использует javascript код для конвертации значения в строку. Значение будет передано как аргумент в функцию.

Поле Обязательное Значение По-умолчанию
X-AW-AppendCode нет вставить код между (function(value) { и }) true
X-AW-Code нет код для использования (пусто)
X-AW-HasReturn нет если false, то дополнить код return output;. Работает только если X-AW-AppendCode - true false

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

X-AW-AppendCode=true
X-AW-Code="output=value/8.0;"
X-AW-HasReturn=false

Код будет развернут в следующее:

(function(value) {
  output = value / 8.0;
  return output;
})

String форматер

Улучшенная версия NoFormat.

Поле Обязательное Значение По-умолчанию
X-AW-FillChar нет символ для заполнения до X-AW-Width (space)
X-AW-ForceWidth нет обрезать строку после X-AW-Width false
X-AW-Width нет ширина поля, отрицательное - выравнивание по левому краю 0 (не ограничивать)

Макросы

Другая особенность - макросы. Пользователь может определить свою функцию, используя следующую конструкцию $aw_macro<my_macro_name,some_arg,another_arg>{{macro body here with $some_arg}}.

Первый аргумент - имя макроса - обязателен. Другие описывают аргументы, которые будут переданы при вызове макроса. Тело макроса может иметь любой текст (включая шаблоны, лямбды и прочее) и аргументы, определенные используя $.

Чтобы вызвать макрос в коде нужно использовать следующую конструкцию: $aw_macro_my_macro_name<$cpu,$cpucl>{{}} (тело функции будет проигнорировано здесь). В данном примере, макрос будет развернут в macro body here with $cpu.