LINUX.ORG.RU

[Conky] Надпись другим цветом из скрипта.

 


0

1

Вызываю скрипт через

${execi 1 ./.conky-link}
. Мне нужно, чтобы скрипт вывел двуцветную надпись. Пробую:
echo "${color ff0000}Red${color 808080}Gray";
Вывод в консоли:

./.conky-link: line 12: ${color 808080}Red${color 00ff00}Gray: bad substitution

Можно как-то это реализовать? или придется делать вызов 6-ти скриптов? (мне надо 3 строки)

Ответ на: комментарий от kernelpanic

Он просто вывел эту надпись стандартным цветом.

AlexCones ★★★
() автор топика

man conky:

       execp command
Executes a shell command and displays the output in conky. warning: this takes a lot more resources than other variables. I'd recommend coding wanted behaviour in C and posting a patch. This differs from $exec in that it parses the output of the command, so you can insert things like ${color red}hi!${color} in your script and have it correctly parsed by Conky. Caveats: Conky parses and evaluates the output of $execp every time Conky loops, and then destroys all the ob‐ jects. If you try to use anything like $execi within an $execp statement, it will functionally run at the same interval that the $execp statement runs, as it is created and destroyed at every interval. execpi interval command
Same as execp but with specific interval. Interval can't be less than update_interval in configuration. Note that the output from the $execpi command is still parsed and evaluated at every interval.

AITap ★★★★★
()
Ответ на: комментарий от AITap

Вот только еще одна трабла - у меня UTF8 надобно вывести. Получается что-то вроде Б*|| Б*|| Б*|| вместо нужных символов.

AlexCones ★★★
() автор топика
Ответ на: комментарий от zolden

Так дело в том, что conkyrc в UTF-8 и все символы выводятся нормально. А echo из скрипта, содержащий UTF-8 символы выводит бред. Пробовал задавать HEX-последовательностью, то же самое. Все локали в xx_xx.UTF-8

AlexCones ★★★
() автор топика
Ответ на: комментарий от AITap

Может быть, проблема в скрипте?

#!/bin/bash

ping -c 1 -w 5 google.com &>/dev/null

if [ $? -ne 0 ] ; then 
# Off
   echo -e "\${color ff0000}╔═══════╗\${color 808080}╔═══════╗";
   echo -e "\${color ff0000}║[ OFF ]║\${color 808080}║[  ON ]║";
   echo -e "\${color ff0000}╚═══════╝\${color 808080}╚═══════╝";
else 
# On
   echo -e "\${color 808080}╔═══════╗\${color 00ff00}╔═══════╗";
   echo -e "\${color 808080}║[ OFF ]║\${color 00ff00}║[  ON ]║";
   echo -e "\${color 808080}╚═══════╝\${color 00ff00}╚═══════╝";
fi
AlexCones ★★★
() автор топика
Ответ на: комментарий от AlexCones

AlexCones

Так дело в том, что conkyrc в UTF-8 и все символы выводятся нормально


Имел в виду что-нить типа override_utf8_locale yes

zolden ★★★★★
()
Ответ на: комментарий от AlexCones

И да, если писать в UTF-8 в самом conkyrc, то выводится, если так: ${execp ./.conky-link}, то выводится кракозябра.

AlexCones ★★★
() автор топика
Ответ на: комментарий от AlexCones

> font -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-koi8-r

koi8-r

Попробуйте xftfont Terminus

Кстати, мне кажется, для такой команды лучше использовать $execpi с интервалом порядка нескольких десятков секунд.

AITap ★★★★★
()
Ответ на: комментарий от AlexCones

Ужос какой.

Осиль условия в самом конки и рисуй этот кошмар коньками, а не странными велосипедами с echо.

anonymous
()
Ответ на: комментарий от AITap

>с интервалом порядка нескольких десятков секунд.

Слишком много. Мне нужно максимум за 5 секунд понять, подключился я или нет - если нет, то придется перезагружать модем. Старая трабла, пока способов решения не нашел.

Попробуйте xftfont Terminus


Исчезает весь текст из коньков.

AlexCones ★★★
() автор топика
Ответ на: комментарий от kernelpanic

я смотрел на скрипт тс-а. для переменных это конечно не проканает

ananas ★★★★★
()
Ответ на: комментарий от AlexCones

Сам шрифт в наличии? Попробуйте Monospace, Liberation Mono, DejaVu Sans Mono и др.

AITap ★★★★★
()
Ответ на: комментарий от AlexCones

Причём здесь.Конки может сравнивать, имеет переменные для цветов и т.д.

Скрипт же просто код возврата должен отдавать. Т.е. наподобии

color1 ff0000
color2 00ff00

TEXT
${if_match ${exec 'скрипт'} == 0}${color2}ON${else}${color1}OFF${endif}
В принципе можно и без скрипта, а поставить пинг в exec, но там сложности с экранированием.

nitz ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.