Изменить Conky для обработки значений переменной длины

5462
JBirch

В настоящее время я экспериментировал с DWM и Conky, чтобы создать минимально выглядящий рабочий стол, чтобы использовать его для кодирования и тому подобного. У меня происходит что-то хорошее, но есть кое-что, с чем у меня сейчас проблемы. Прямо сейчас мой TEXTраздел Conky выровнен по центру, что выглядит неплохо, но также возвращает информацию об использовании процессора. Если загрузка ЦП колеблется, скажем, от 9 до 10%, общий размер текста будет другим, и поскольку он выровнен по центру, он немного сместился. Цвета на секунду удалены для ясности, вот простая версия рассматриваемой линии ...

$CPU: $%

Разница, конечно, между двумя

Процессор 9%

Процессор 10%

это то, что вызывает проблему. Как бы я пошел по левому краю 9 с двумя нулями, затем 10 с одним нулем, а затем 100 без нулей? Единственное, что я могу видеть в документации, смутно связанной с этим, - это иметь дело с заполнением десятичными разрядами, а это совсем не то, что мне нужно.

6

4 ответа на вопрос

5
cYrus

Решение (не может найти ничего лучше сейчас, но оно работает) включает использование пользовательской функции Lua, вот как вы должны это сделать:

  1. Создайте файл для функции Lua, скажем ~/.conky_lua_scripts.luaс:

    function conky_pad( number ) return string.format( '%3i', conky_parse( number ) ) end 

    Это будет заполнять число пробелами (лучше), если вы хотите, чтобы нули просто заменили «% 3i» на «% 03i».

  2. В вашем .conkyrcдобавлении перед TEXTразделом:

    lua_load ~/.conky_lua_scripts.lua 
  3. Наконец, чтобы напечатать тип дополненного значения в вашем TEXTразделе что-то вроде:

    $CPU: $}% 

Я пытался сделать функцию Lua настолько простой, насколько смогу, но вы можете сделать более общую, если хотите, чтобы вы могли управлять любым числом / значением или даже изменять его выравнивание.

Боюсь, я не в состоянии проверить это, но это выглядит справедливо для моего (разумно начинающего) Конки. И это крутой маленький хак для загрузки ^^ JBirch 13 лет назад 0
Дайте мне знать, как только вы проверите это, для любых проблем. cYrus 13 лет назад 0
Это прекрасно работает, раньше я не добавлял дополнительные скрипты lua! Я обновил функцию, добавив аргумент `padding`, также сделал возможным заполнение строк, изменив` number` на `value` и сделав:` string.format (string.format ('%%% is', conky_parse (padding) )), conky_parse (значение)) ` mVChr 7 лет назад 0
5
sgtpep

Conky finally has it built-in. These options do the trick:

use_spacer left pad_percents 2 
что (точно) они делают? Nikana Reklawyks 8 лет назад 0
1
petey

У меня была такая же проблема, когда я пытался отобразить проценты, скажем, 04% 05% и т. Д. Вместо 1%, 5%, 0% и т. Д. (Чтобы текст не «прыгал»). Я был в состоянии написать простую структуру, используя$if_match

$<10}0$$% 

^^^ То, что это делает, печатает 0 в столбце десятков, если $меньше 10. Затем он печатает цифру столбца единиц. Затем он печатает символ%.

$if_match will print, run, or execute whatever is between itself and the $  $ ...commands <<< all i do is print a 0. heh $ 

Здесь я разобью его на составляющие с комментариями, многострочно

$<10} ### is the cpu load less than 10% ? 0 ### if so, print a 0 !!! $ ### thanks bye i had a really good time % ### output formatting. so it says 08%  # instead of 08 
0
Patkos Csaba

Я обычно выравниваю текст (ЦП) по левому краю и значения по правому краю и указываю их точное положение. Таким образом, значения «расширяются» (например, от 9 до 10) в пустое пространство между процессором и значением.

Это было одно соображение, но с точки зрения дизайна, я действительно хочу их в середине. JBirch 13 лет назад 0

Похожие вопросы