Conky. Использование if_match
Недавно в сообщении Важные новинки в conky я написал, что в последних версиях (с версии 1.7.0 и выше) появились новые интересные фичи. Одна из них: переменная if_match
.
На самом деле это не переменная, а блок такого вида:
${if_match expr}
True block
${endif}
${if_match expr}
True block
${else}
False block
${endif}
expr
– это логическое выражение. Допускаются к использованию следующие операнды „>“, „<“, „>=“, „<=“, „==“, „!=“. Аргументами могут быть числа и строки. Для сравнения строк аргументы выражения должны быть заключены в кавычки. Если выражение истинно печатается true block. Сейчас я покажу как и для чего ее можно применять.
Индикатор свободного места с цветовой сигнализацией.
Индикаторы свободного места на разделах «жесткого диска» удобная штука – помогут вовремя заметить, когда раздел вот-вот переполнения. Сделать заметнее ситуацию когда раздел на грани переполнения поможет выделение индикатора красным цветом. Реализовать это средствами conky проще простого.
Нужно всего-лишь в конфигурационном файле в переменной TEXT
перед индикатором добавить такую конструкцию и индикатор «покраснеет» как только свободного пространства станет меньше 10 процентов (пример для раздела /var):
${if_match ${fs_free_perc /var}<10}${color red}${endif}
Для индикатора fs_bar
и раздела /var будет иметь такой вид:
${if_match ${fs_free_perc /var}<10}${color red}${endif}${fs_bar 5,25 /var}
Используя template
можно эту запись сократить, например вот так:
Определяем template1
:
Template1 \1: ${if_match ${fs_free_perc \1}<10}${color red}${endif}${fs_bar 5,25 \1}
и используем в TEXT
, например, таким образом (для разделов /, /var и /usr):
${template1 /} ${template1 /var} ${template1 /usr}
Индикатор батареи с цветовой сигнализацией.
Индикатор батареи battery_bar
показывает сколько в батарейке еще осталось заряда. Но сейчас мы сделаем так что он у нас будет краснеть, желтеть или зеленеть в зависимости от текущего состояния. Если батарея заряжена индикатор зеленый, если заряжается – желтый, если ни то и не другое – красный.
Для этого в конфигурационном файле в перед индикатором батарейки добавим такую запись:
${if_match "${execi 10 ~/bin/conky/batt/batt.sh}" != "charged"}${if_match "${execi 10 ~/bin/conky/batt/batt.sh}" != "charging"}${color red}${else}${color yellow}${endif}${else}${color green}${endif}
То магическое заклинание, которое было добавлено в конфиг конки, обяжет его каждые 10 секунд вызывать скрипт ~/bin/conky/batt/batt.sh, который возвращает текущее состояние батареи.
Для моей системы скрипт выглядит так:
#!/bin/sh
sed '/^charging state:/!d; s/charging state:[ /t]*//' /proc/acpi/battery/C1AC/state
И обычно возвращает одно из этих состояний charged, charging, discharging (скорее всего вам придется его видоизменить).
(#) фримен:
${if_match ${cpu cpu0}%>70}${color #E32D1C}${else}${color #000000}${endif}в итоге в независимости с каким числом сраниваю выводится перым цветом,мб ктото подскажет в чем ошибка?
$ conky -v
Conky 1.8.0 compiled Fri Jul 29 20:16:26 UTC 2011 for Linux 2.6.39-2-amd64 (x86_64)
Compiled in features:
System config file: /etc/conky/conky.conf
Package library path: /usr/lib/conky
X11:
* Xdamage extension
* XDBE (double buffer extension)
* Xft
* ARGB visual
Music detection:
* MPD
* MOC
General:
* math
* hddtemp
* portmon
* Curl
* RSS
* Weather (METAR)
* Weather (XOAP)
* wireless
* support for IBM/Lenovo notebooks
* nvidia
* eve-online
* config-output
* Imlib2
* ALSA mixer support
* apcupsd
* iostats
* ncurses
* Lua
Lua bindings:
* Cairo
* Imlib2
(#) фримен:
все нашел решение.не понял логики но писать надо без знака %${if_match ${cpu cpu0}>70}${color #E32D1C}${else}${color #000000}${endif}
(#) фримен:
понял логику))я думал что знак % заставляет команду выводить результат в процентах,а он ее сразу выводит в процентах,но просто числом.