Из моего журнала:
conky: неверные аргументы: '0,0' и '10.0'
conky: сравнение не удалось для выражения '0,0 <10.0'
Все эти сравнения похожи на это:
$ {if_match $ {downspeedf enp2s0} <100,0}
Сравнение по-прежнему не удается, если аргумент записан с ",". Явная установка локали conky на en_US.UTF-8 пока работает.
(Этого не было в 1.9.0.)
У меня та же проблема.
То же самое, подскажите, пожалуйста, как установить конкретный LOCALE для conky?
Вы вводите команду перед командой, например.
LC_ALL = C conky
Спасибо, однако оказывается, что сравнение с дробными числами в целом не работает:
conky: сравнение не удалось для выражения '12,61> = 10'
${if_match ${top cpu 1} >= 10 }${color red}\
${else}${color}\
${endif}\
Извините по моей вине, локаль не была установлена, теперь работает. Сейчас я использую следующий сценарий запуска:
#!/bin/bash
export LANG=en_US.UTF-8
export LC_ALL=C
sleep 5 && conky
Боковое примечание: похоже, что это находится в algebra.cc: enum arg_type get_arg_type. Я рекомендую использовать парсер чисел с учетом локали.
Эта проблема все еще не решена в текущей версии Conky? Если да, обновите проблему. В противном случае вопрос будет закрыт через 2 недели.
@lasers Вы можете посмотреть?
@ su8 Я пробовал. Не знаком с локалью. Пробовал Италию. Не удалось отобразить запятые. Может я ошибся.
@ su8 Я попробовал git bisect здесь, чтобы 1.9.0
. Предыдущие теги не содержали материала cmake
. :-(
НАС.
0B // False
56.9K // True
16.9K // False
544B // False
74.9K // True
88.4K // True
13.9K // False
DK.
conky: Bad arguments: '0,0' and '50.0'
conky: compare failed for expression '0,0>50.0'
0B // True
conky: Bad arguments: '0,0' and '50.0'
conky: compare failed for expression '0,3>50.0'
307B // True
^Cconky: Bad arguments: '0,3' and '50.0'
conky: compare failed for expression '0,3>50.0'
350B // True
@ su8 На случай, если вы пропустили последний комментарий, я могу проверить это сейчас.
Эта строка пропускается при использовании локалей, в которых используется ','
и возвращается
что приводит к печати "плохого аргумента"
Можете ли вы проверить это:
diff --git a/src/algebra.cc b/src/algebra.cc
index 66dfd2d6..4e1d36e2 100644
--- a/src/algebra.cc
+++ b/src/algebra.cc
@@ -155,7 +155,7 @@ enum arg_type get_arg_type(const char *arg) {
if (p == e + 1) {
return ARG_LONG;
}
- if (*p == '.') {
+ if (*p == '.' || *p == ',') {
p++;
while (p <= e) {
if (isdigit((unsigned char)*p) == 0) {
Оно работает. Цифры тоже печатаются с запятой. Ленивый скопировал приведенный выше пример.
56,9K // True
16,9K // False
544B // False
74,9K // True
88,4K // True
13,9K // False
Так бывает и в мастере. Хм. На самом деле, я думаю, что это нормально, как есть. Ага .
Откройте запрос на перенос с этим изменением, так как мне лень делать это: hamburger:
Вы не ленивы. Я лазеры ленивее. Мне что-то интересно. Если он содержит запятую, не следует ли сначала поменять местами символы?
Есть ли в этом смысл или я слишком много думаю?
Это текущий стандарт страны, зачем менять его на другой?
Идк. Нуб здесь. Сделаю пул-реквест по вашему запросу. Для чего нужен if (*p == '.') {
?
Закрыто через https://github.com/brndnmtthws/conky/pull/585 : wave: