/ Статьи / Системное / Conky. Подробная настройка /

Conky. Подробная настройка

Дата публикации: Sept. 18, 2009, 3:15 p.m.
Теги: Conky, настройка, системный монитор, Linux,
Автор: Brainsburn

Conky Подробная настройка Conky. Установка и настройка Conky.
Conky — системный монитор для Linux. Настройка Conky. Мониторинг системы в Linux.
conkylogo_1253267644.png
Почему разработчики выбрали такой логотип для Conky, вы можете узнать на http://conky.sourceforge.net/aboutconky.html


Итак, вступление. Сonky — многофункциональный полностью настраиваемый системный монитор для Linux и BSD систем. Если вы запустите conky сразу после установки, то сможете подумать, что conky — некрасивая и неудобная программа. На самом деле это в корне не так. Conky нужно настроить и, если это сделать правильно, все будет супер.

Предупреждение: если вы не хотите утруждать свои нежные мозги чтением непонятных слов и набиранием их вручную с клавиатуры (ужас-то какой!), то до conky вы не доросли и можете закрыть эту страницу :Р Если вас это не напугало — читайте дальше ;)

Как я уже сказал, чтобы conky выглядел хорошо, его надо настроить. Тут два варианта. Первый вариант: найти неплохой но стандартный готовый конфиг и просто использовать его. Найти можно на http://conky.sourceforge.net/screenshots.html.
Второй вариант: дочитать эту статью и написать свой на основе готового, добавляя и редактируя его под себя. Благо, это не сложно и интересно. В этой статье я пошагово разберу свой конфиг и опишу настройки кое-каких дополнительных программ, которые пригодятся в работе conky.

Вступление закончилось, приступим к делу. Настройка Conky
Конфиг conky называется .conkyrc и должен лежать в домашней директории пользователя. Он состоит из двух частей: в первой части описываются настройки внешнего вида, а во второй находится то, что будет непосредственно показано на экране.
Разберем мой конфиг по частям. Пометка: обычный текст - пояснения; текст, выделенный цветом, - строки конфига Conky, их вы можете копировать в свой конфиг, изменяя некоторые параметры под себя. Поехали.


Эти строчки нужны для корректного отображения окна conky. Скорее всего менять их вам не придется.
background no
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

Используем XFT шрифты. Выбор таких шрифтов не велик - Terminus, Vera, Sans и Mono. Вы можете закоментировать эти две строчки и сможете использовать обычные шрифты, но только с XFT шрифтами на моем компьютере conky корректно отображал русские буквы.
use_xft yes
xftfont Terminus:size=8

Поддержка двойного буфера. Без нее conky будет неприятно мигать.
double_buffer yes

Включаем тени - для улучшения читабельности текста.
draw_shades yes

Задаем умолчальные цвета
default_color white
default_shade_color black
default_outline_color blue

Задаем позицию для окна. Conky будет отображаться в левом верхнем углу. Можно изменить на top_right, bottom_left, bottom_right
alignment top_left

Делаем небольшие отступы с краев
gap_x 10
gap_y 10

Так указывается шрифт, если у вас отключено use_xft yes. Для определения правильного имени шрифта используйте утилиту xfontsel. Так шрифт можно указывать, если не используется use_xft. Но без use_xft не отображаются корректно русские буквы. Поэтому пока закоментим.
## font  -schumacher-clean-medium-r-*-*-12-*-*-*-*-*-*-*



Эта строчка определяет, как будет показываться свободная/используемая оперативная память. Если no_buffers no, то кол-во используемой оперативной памяти будет определяться с учетом кэшированной памяти. Если no_buffers yes, кэш будет считаться свободной памятью. Единственного правильного варианта нет. Да и вобще, утилитам которые показывают кол-во свободной/занятой памяти не стоит доверять. Это из-за тонкостей использования динамических библиотек в Linux. Если две программы используют библиотеку в 20МБ, это не означает, что каждая из программ занимает +20МБ в ОЗУ. Именно поэтому в некоторых случаях программы, которые используют "жирные" библиотеки типа QT или GTK, на деле используют оперативную память эффективнее чем остальные. Но и это не всегда верно. Также, программа может "занять" себе довольно большой объем оперативки и, с одной стороны память будет занята, но с другой - свободна. Решать вам. Скажу лишь, что с no_buffers yes, у меня никогда не "занято" больше 500МБ, а с no_buffers no - Conky показывает что "занято" постоянно около 3-4ГБ.
no_buffers no

Все, первая часть конфига окончена. Переходим ко второй.

Все, что будет идти после TEXT, будет выведено на экран. Минимальная настройка conky может выглядеть так: TEXT HELLO
TEXT

Сверху у нас будет написана версия ядра системы. "Kernel: ${kernel}" можно заменять на "Ядро: ${kernel}", как вам угодно. Информация берется из переменной $kernel. Если надо указать какие-то дополнительные параметры, имя переменной заключается в фигурные скобки. Да и без параметров обычно так делают - по-привычке, видимо :)
Kernel: ${kernel}

Дата и время
Date: ${time}

Аптайм системы
Uptime: $uptime

Информация о использовании процессора. ${color a1ccea} указывает цвет последующего текста. Весь текст, следующий после ${color a1ccea} будет синим, поэтому, после этой строчки мы его сделаем опять белым.
Если у вас многоядерный процессор, можно выводить информацию с каждого ядра таким образом ${cpu 1} - для первого ядра, #{cpu 2} - для второго и тд.
${color a1ccea}CPU usage:    $cpu% 

Возвращаем цвет в белый и рисуем полоску загруженности процессора высотой 3 и шириной 140 пикселей
${color ffffff}${cpubar 3,140}

Рисуем движущийся график загрузки процессора высотой 20 и шириной 140 пикселей. "000000 ffffff" означают что график будет окрашен градиентно - от белого к черному. Вы можете изменить цвета на свои или вобще убрать "000000 ffffff", тогда график будет просто белый.
${cpugraph 20,140 000000 ffffff}

Показываем три процесса, которые сильнее всего нагружают процессор. Первый окрашиваем оранжевым цветом.
Highest CPU:
${color ff9000}${top name 1} ${top cpu 1}%

Возвращаем цвет текста к белому
${color ffffff}${top name 2} ${top cpu 2}%
${top name 3} ${top cpu 3}%

Использование оперативной памяти
${color a1ccea}MEM usage:    $memperc%

Пишем количество занятой памяти и общее кол-во озу
${color ffffff}Used: $mem of $memmax

Рисуем полоску использования памяти высотой 3 и шириной 140
${membar 3,140}

Рисуем график использования памяти высотой 20 и шириной 140, закрашенный градиентом
${memgraph 20,140  000000 ffffff}

Показываем три процесса, которые используют памяти больше, чем другие. Самый прожорливый окрашиваем оранжевым цветом.
Highest MEM:
${color ff9000}${top_mem name 1} ${top_mem mem 1}%
${color ffffff}${top_mem name 2} ${top_mem mem 2}%
${top_mem name 3} ${top_mem mem 3}%

Выводим информацию по использованию свопа
SWAP usage: $swapperc% 
Used: $swap/$swapmax


Теперь переходим к мониторингу сетевых интерфейсов
${color a1ccea}Network usage:

Показываем исходящий трафик для интерфейса eth0. Если у вас интерфейс называется по-другому, измените eth0 на свое. Если у вас больше одного сетевого интерфейса, просто скопируйте следующие строчки и измените eth0 на свое.
${color ffffff}
Up: ${upspeed eth0}/s

График исходящего трафика
${upspeedgraph eth0 20,140  000000 ffffff}

Входящий трафик
Down: ${downspeed eth0}/s

График для входящего трафика
${downspeedgraph eth0 20,140  000000 ffffff}


Информация о файловых системах.
Тут показывается информация для разделов /, /home и /files Эти разделы используются на моем компьютере, поэтому измените параметры на нужные
${color a1ccea}File systems:
${color ffffff}

Сколько использовано на корневом разделе и сколько места всего
 / ${fs_used /}/${fs_size /}

Полоска для корневого раздела
${fs_bar 3,140 /}

То-же самое для /home и /files:
Home ${fs_used /home}/${fs_size /home}
${fs_bar 3,140 /home}
 /files ${fs_used /files}/${fs_size /files}
${fs_bar 3,140 /files}


На мониторинге температуры остановимся подробнее.
Чтобы следить за температурой чипсета материнской платы и температурой процессора, надо установить и настроить пакет lm_sensors. Как это делается, написано тут: Установка и настройка lm_sensors
Температуру жесткого диска можно смотреть утилитой hddtemp. Просто установите ее, никаких настроек не требуется. Единственная проблема - hddtemp использовать может только root. Но мы же не хотим каждый раз запускать conky от рута, поэтому надо разрешить запускать hddtemp от пользователя, без прав рута. В Gentoo hddtemp лежит по адресу /usr/sbin/hddtemp и, чтобы разрешить запускать ее от пользователя, надо выполнить от рута команду chmod a+s /usr/sbin/hddtemp. Если у вас в /usr/sbin/ ее нету, местоположение файла hddtemp можно узнать командой whereis hddtemp (от рута тоже). Дополнительная проблема в том, что если эта программа у вас обновится, то права надо будет изменить заново.
Температуру видеокарты, как мне известно, могут смотреть только владельцы Nvidia. Для этого, conky должен быть собран с флагом nvidia (в Gentoo). Во многих дистрибутивах он по умолчанию собирается с поддержкой nvidia.

Температура процессора. Данные берутся с lm_sensors. В моем случае за процессор в lm_sensors отвечает датчик temp1. У вас может быть по-другому.
Самый простой способ узнать, какой из датчиков за что отвечает, - записать данные с вывода lm_sensors, перезагрузиться и сравнить их с данными о температуре в BIOS
${color ffffff}CPU:             ${execi 2 sensors | grep temp1 | cut -c 15-16}°С

Температура сис. платы. У меня за нее отвечает temp2. Замените temp2 на другой датчик, если у вас по-другому
SYS:             ${execi 2 sensors | grep temp2 | cut -c 15-16}°С

Температура жестких дисков. Данные берутся с hddtemp. У меня устроства жестких дисков называются /dev/sda и /dev/sdb. Измените это на свое, если у вас по-другому.
/dev/SDA:        ${execi 2 /usr/sbin/hddtemp /dev/sda -q | awk '{print $3; }' | cut -c 1-2}°С
/dev/SDB:        ${execi 2 /usr/sbin/hddtemp /dev/sdb -q | awk '{print $3; }' | cut -c 1-2}°С

Температура видео-карты. Новые версии Conky поддерживают показ температуры с видеокарт Nvidia. Про ATI ничего не известно
Nvidia GPU:      ${nvidia temp}°С


Показ погоды в conky. Я не стал заморачиваться с RSS (он у меня как-то криво работал) и использованием отдельных скриптов, а сделал просто - с помощью wget каждые 600сек (10мин) с сайта гисметео скачивается маленькая (4кб) картинка и сохраняется под именем .conkyweather.gif. Затем она отображается в окне Conky. У меня используется ссылка для Тулы. Получить ссылку для вашего города вы можете по адресу http://informer.gismeteo.ru/ в разделе "графические информеры"
${color a1ccea}Weather:
${color ffffff}${execi 600 wget -O ~/.conkyweather.gif http://informer.gismeteo.ru/new/4392-13.GIF}

Картинка будет показываться по координатам 0,635 и будет обновляться раз в 300 сек.
${image ~/.conkyweather.gif -p 0,635 -f 300}

И еще кое-что. Чтобы картинка влезла в окно conky, его надо растянуть, сделав в 4-5 переносов строк






Вот так :) Это растянуло окно conky, чтобы картинка с погодой не уехала за край. Можно и более "правильным" способом, но так проще :)
( еще один способ отображения погоды - Скрипт для отображения погоды в Conky с gismeteo. )


Conky, настроенный таким образом будет выглядеть так:
myconky_1253254026.png

Если с вашим фоном рабочего стола белый текст видно плохо, замените везде ffffff на код другого цвета, а также замените цвет в строке default_color white.

Этот конфиг вы можете скачать тут.


Слегка сокращенный перевод официальной документации по Conky.

Опции конфигурации

TEXT : После этого весь текст будет отображен на экране

alignment : Определяет позицию на экране. Может быть top_left, top_right, top_middle, bottom_left, bottom_right, bottom_middle, middle_left или middle_right
default_color : Дефолтный цвет границ и текста
default_shade_color : Дефолтный цвет теней
double_buffer : Включите это, если Conky неприятно мигает
draw_shades : Включить тени
font : Указывает, какой шрифт использовать. Для определения имени шрифта используйте утилиту xfontsel
gap_x : отступ слева или справа
gap_y : отступ сверху или снизу
use_xft : Использовать шрифты Xft. Xft поддерживают антиальясинг.
xftfont : Какой xft шрифт использовать

Переменные

color (color) : Задает цвет последующего текста. Пример: ${color ffffff}
cpu (cpuN) : Использование процессора в процентах. Пример для одноядерной машины: ${cpu} Пример для многоядерной для первого ядра: ${cpu 1}
cpubar (cpuN) (height),(width) : Полоска загрузки процессора, где cpuN - номер ядра (указывать, если машина многоядерная), height - высота, width - ширина полоски. Пример: ${cpubar 3,100}
cpugraph (cpuN) (height),(width) : График загруженности процессора, где cpuN - номер ядра (указывать, если машина многоядерная), height - высота, width - ширина полоски. Пример: ${cpugraph 20,100}
curl url interval_in_minutes : Скачивает и показывает текстовые данные с указанного url. Пример: ${curl http://mydomain.com/test.txt 2}
downspeed (net) : Скорость скачки, где net - имя сетевого интерфейса. Пример: ${downspeed eth0}
downspeedgraph (net) : График скорости скачки, где net - имя сетевого интерфейса.
else : Логическое иначе
endif : Конец условия $if
execi interval commamd : Выполнение исполняемого файла и показ его вывода. Пример: ${execi 2 cat /home/myname/test.txt}
freq (n) : Частота процессора в МГц, где n - номер ядра (по дефолту 1)
fs_bar (height),(width) fs : Полоска, которая показывает, как используется файловая система. Пример: ${fs_bar3,100 /home}
fs_free (fs) : Кол-во свободного места файловой системы
fs_size (fs) : Размер файловой системы
fs_type (fs) : Тип файловой системы
fs_used (fs) : Количество использованного места файловой системы
if_empty (var) : Если указанная переменная пуста, показывает все, что идет после $if_empty и до $endif
if_existing file (string) : Если указанный файл существует, показывает все, что идет после $if_existing и до $endif
if_running (process) : Если указанный процесс запущен, то показывает все, что идет после $if_running и до $endif
image (-p x,y) (-f interval) : Показывает изображение. x и y - координаты, -f interval - частота обновления. Пример: ${image /path/to/image.png -p 10,100 -f 15}
kernel : Версия ядра
mem : Кол-во используемой памяти
membar (height),(width) : Полоска загруженности памяти
memfree : Кол-во свободной памяти
memgraph (height),(width) : График использоемой памяти
memmax : Общее кол-во памяти
nvidia : Для владельцев карт Nvidia. Пример для вывода температуры: ${nvidia temp}
shadecolor (color) : Цвет теней
swap : Кол-во использованного свопа
swapfree : Кол-во свободного свопа
swapmax : Общее кол-во свопа
time : Вывод времени
upspeed (net) : Скорость исходящего трафика, где net - сетевой интерфейс
upspeedgraph (net) (height),(width) : График по исходящему трафику
uptime : Аптайм



UPD: Скрипт для отображения погоды в Conky с gismeteo.

Итак, научим Conky выдирать данные о погоде из этого XML - http://informer.gismeteo.ru/getcode/xml.php?id=27612 . Вам нужно получить ссылку для своего города. Для Москвы это http://informer.gismeteo.ru/xml/27612_1.xml .

Теперь создайте файл conky-weather.sh с таким содержимым:
time=$(date +%H)

URL="http://informer.gismeteo.ru/xml/27719_1.xml"
EXEC="/usr/bin/curl -s"

a=`$EXEC $URL`

#температура
echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /../' | gawk '{ print "Темп.",$1,"°C" }'
#ветер
echo $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Ветер",($1+$2)/2,"м/с" }'
#давление
echo $a | tr "/>" "\n" | grep PRESSURE | sed -n 1p | sed -e 's/<PRESSURE //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Давл.",($1+$2)/2,"мм" }'
URL="http://informer.gismeteo.ru/xml/27719_1.xml" замените на ссылку для вашего города. Проверить работоспособность скрипта можно, выполнив его в терминале:
$ ./conky-weather.sh 
Темп. 14..16 °C
Ветер 3 м/с
Давл. 754 мм
Если все работает, то добавьте в ваш ~/.conkyrc следующие строки:
${color a1ccea}Weather:
${color ffffff}${execi 3600 /путь/до/скрипта/conky-weather.sh}
Вот и все. Выглядеть участок Conky с погодой будет примерно так:

погода в conky


UPDATE 2
Обновленный, по просьбам трудящихся, скрипт для показа погоды в Conky с учетом направления ветра:
time=$(date +%H)

URL="http://informer.gismeteo.ru/xml/27719_1.xml"
EXEC="/usr/bin/curl -s"

a=`$EXEC $URL`


#температура
echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /../' | gawk '{ print "Темп.",$1,"°C" }'

#ветер
WIND_DIRECTION=`echo -e $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "direction=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

WDN[0]="С"
WDN[1]="С-В"
WDN[2]="В"
WDN[3]="Ю-В"
WDN[4]="Ю"
WDN[5]="Ю-З"
WDN[6]="З"
WDN[7]="С-З"

WIND=`echo -ne $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Ветер",($1+$2)/2,"м/с"}'`

echo $WIND ${WDN[$WIND_DIRECTION]}

#давление
echo $a | tr "/>" "\n" | grep PRESSURE | sed -n 1p | sed -e 's/<PRESSURE //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Давл.",($1+$2)/2,"мм" }'


Скрипт аналогичен предыдущему. XML-информер гисметео дает о ветре такие данные:
WIND min="3" max="5" direction="3"
direction="0" - северный, direction="1" - северо-восточный и т.д. Скрипт направление ветра показывает сокращенно - С, Ю-В, С-З и т.д. Все должно быть сделано правильно, однако, когда я писал этот скрипт, гисметео говорил, что ветер в моем городе южный. При этом XML-информер сообщал, что направление ветра - "3" (цифра, а не буква), что должно соответствовать юго-восточному ветру. Не понятно, почему такие разногласия у них.
Вывод скрипта выглядит так:
$ ./weather.sh 
Темп. -11..-9 °C
Ветер 4 м/с Ю-В
Давл. 748 мм





Возможно, эти материалы Вас заинтересуют:


Рекомендовать эту страницу:

Комментарии:(78)

# анон April 25, 2010, 10:31 p.m.
отлично. спасибо

# lexer May 11, 2010, 6:29 p.m.
не подскажите ли Вы,но вот у меня почему-то погода не хочет отображатся..вставил в свой .conkyrc вот эти строки

ПОГОДА ${hr 2}

${color ffffff}${execi 600 wget -O ~/.conky/conkyweather.gif [url]http://informer.gismeteo.ru/new/4944-44.GIF[/url]}
${image ~/conky/conkyweather.gif -p 10 -f 300}]

# lexer May 11, 2010, 6:34 p.m.
а все,понял....))) пропустил точку в названии папки) хД

# username May 15, 2010, 10:54 a.m.
Спасибо, отлично расписали! Теперь на основе этой информации можно сделать вполне годный конфиг! Уважение %)

# peredelkin May 23, 2010, 5:42 p.m.
выводить температуру и прочее можно и так ${execi 1 cat /proc/acpi/thermal_zone/THRM/temperature} :D
вот только вывод будет в виде : :D
p.s. Данынй вариант вывода для процессора

# peredelkin May 23, 2010, 5:44 p.m.
небольшой конфуз с квадратными скобками
*виде - (ифя файла): (значение)

# peredelkin May 23, 2010, 6:52 p.m.
ну или нормальным способом Частота процессора: ${freq}Мгц
Температура процессора: ${acpitemp}°С
Настройки http://conky.sourceforge.net/config_settings.html
Переменные http://conky.sourceforge.net/variables.html

# Technarius June 19, 2010, 12:09 p.m.
Годная статья! Теперь у меня коньки отображают погоду! :)

# IT.Tux.Droid July 18, 2010, 10:27 p.m.
Очень хорошая статья, представленная в удобочитаемом виде! Ъ!

# Alex Sept. 5, 2010, 4:25 p.m.
Статья неплохая,
вопрос почему нет рсс ?

# Максим Oct. 4, 2010, 2:26 a.m.
Большое человеческое спасибо автору!

# Grel0m Oct. 9, 2010, 1:25 p.m.
Автору респект и уважуха!!!! Про информер погоды отдельное спасибо! Круто!

# zx\\'// Nov. 22, 2010, 4:40 p.m.
Крутая статья наконец доточил свои коньки

# Brainsburn Nov. 22, 2010, 6:51 p.m.
Спасибо за хорошие отзывы! Очень приятно, что время, затраченное на написание статьи, не прошло зря :)

# nSauk Dec. 24, 2010, 12:19 a.m.
Позволю себе заметить: у меня первое ядро cpu0, а не cpu1, cpu1 — второе.
Не знаю, в чём особенность, сомневаюсь, что автор ошибся, просто уточняю.
За статью спасибо (:

# Гость Dec. 26, 2010, 9:58 p.m.
Хорошая статья. Спасибо. Сайт отличный.

# Гость Feb. 11, 2011, 1:13 p.m.
респект автору, очень помогло

# Гость Feb. 19, 2011, 2 a.m.
Статья зачёт! Впервые смог понять вообще как настроить коньки. :)))
СПАСИБО ОГРОМНОЕ! :)))

# spyphy Feb. 23, 2011, 12:12 a.m.
выдает ошибку

$ ./conky-weather.sh
: command not found line 2:
: command not found line 5:
: is unknown -s

как исправить?

# spyphy Feb. 23, 2011, 1:23 a.m.
закрываю свой вопрос - видимо, дело было в интерпретаторе bash или типа того, теперь заработало

# spyphy Feb. 23, 2011, 1:41 a.m.
Идея с погодой мне понравилась. Единственное, на что хочу обратить внимание, так указан параметр HEAT - "комфорт - температура воздуха по ощущению одетого по сезону человека, выходящего на улицу" вместо реальной температуры воздуха. Ну это просто кому как привычней...

# mk March 11, 2011, 3:45 p.m.
Уважаемый, моё почтение и благодарность за проделанный труд и выложенную информацию. Это, пожалуй, самый простой и приемлемый, для меня по крайней мере, способ. Однако, нельзя-ли прикрутить к скрипту вывод направления ветра? В нашей местности оно имеет БОЛЬШОЕ влияние на погоду...

# Brainsburn March 11, 2011, 8:58 p.m.
Пожалуйста! Обновил скрипт для вывода погоды в Conky.

# mk March 12, 2011, 7:14 p.m.
Огромнейшее спасибо! Вот только нарисовалась проблема... В терминале по команде ~/weather1.sh погода выводится неизменно и в соответствии с примером вывода скрипта из вышеизложенной статьи. В коньках-же из всего блока, отвечающего за погоду
${font URW Gothic L:size=9:weight=normal}${color #4e85ca}За окном$color$font
${execi 3600 ~/weather1.sh}
выводится только заголовок "За окном"... :(

# Brainsburn March 13, 2011, 5:06 p.m.
Что-то не так с конфигом conky. Попробуйте вставить вызов скрипта в другое место или же оставить его и удалить все остальное (для проверки). Еще есть вероятность, что в момент запуска conky у вас был забит интернет канал и скрипт загрузить данные не успел, а повторно он выполняется через 3600 секунд.

# qlonik March 23, 2011, 9:36 p.m.
Спасибо Вам! Очень хорошая статья
Но вот проблема: если просмотреть содержимое xml файла, то можно узнать что самые новые данные о погоде - последние, а Ваш скрипт вытягивает первые. Подскажите, пожалуйста, как можно вытянуть последние данные?

# Brainsburn March 24, 2011, 5:04 p.m.
Первая часть - текущая погода, остальные - на будущее. Дело в том, что последняя часть показывает погоду, которая будет через 19 часов. Т.е. рано утром там будет погода на вечер, днем - на ночь. Мне кажется, это немного запутанно, поэтому я и взял первую часть, т.к. она показывает данные, близкие к текущим. Чтобы скрипт показывал 4ю часть, надо везде в скрипте sed -n 1p изменить на sed -n 4p

# F_og April 2, 2011, 3:43 a.m.
Привет, пытаюсь запустить пишет что нет такого файла или каталога, ругается на эту строчку:
EXEC="/usr/bin/curl -s"
Зашел в /usr/bin, но curl там нет(ни файла ни каталога).
Подскажи что с этим делать?

# F_og April 2, 2011, 4:08 a.m.
Проблему решил, но не совсем, теперь выдает:
./conkyweather.sh: строка 11: gawk: команда не найдена
./conkyweather.sh: строка 15: gawk: команда не найдена
./conkyweather.sh: строка 19: gawk: команда не найдена
Что можно сделать?

# F_og April 2, 2011, 4:13 a.m.
Все разобрался уже), спасибо за статью!!!!!!!!

# Kostilo May 2, 2011, 9:49 a.m.
Впервые настраиваю conky и наступил на те же грабли что и F_og
Привет, пытаюсь запустить пишет что нет такого файла или каталога, ругается на эту строчку:
EXEC="/usr/bin/curl -s"

Подскажите куда кидаться?(

# Kostilo May 2, 2011, 10:04 a.m.
Мда, и кто бы мог подумать что CURL - это прога которая ставится с помощю синаптика)))

# Brainsburn May 5, 2011, 4:19 p.m.
gawk: команда не найдена

Мда, и кто бы мог подумать что CURL - это прога которая ставится с помощю синаптика)))

Я думал, что gawk и curl есть во всех дистрибутивах по умолчанию, извиняйте :)

# ПроходилМимо May 8, 2011, 9:04 p.m.
для винта вот это точнее:
/dev/SDA: ${execi 2 /usr/sbin/hddtemp /dev/sda -n -q}°С
т.к. не всегда имя винта в одно слово, бывает и так
/dev/sdb: Hitachi HDS721010CLA332: 33°C
и тогда со старым вариантом выдается HD вместо температуры

# Brainsburn May 8, 2011, 10:13 p.m.
ПроходилМимо, никогда не видел таких названий устройств да еще и с пробелами. Можно узнать, что за дистрибутив так называет жесткие диски? А по поводу команды вы правы, как-то я не заметил опцию "-n"...

# ПроходилМимо May 8, 2011, 10:21 p.m.
У себя датчики температур сделал так:
CPU:			${execi 2 sensors | grep Core | cut -c 15-16 | tr -s "\n" " "}°С

SYS: ${execi 2 sensors | grep temp2 | cut -c 15-16}°С
SDA: ${hddtemp /dev/sda}°С
SDB: ${hddtemp /dev/sdb}°С
GPU: ${execi 2 aticonfig --adapter=0 --od-gettemperature | grep -E Temp.* | cut -c 37-38}°С

Показ температуры для всех ядер в одну строку ( у меня Intel, выборка по coretemp-isa). Далее hddtemp встроенная команда в conky, былоб не плохо модель винта писать. Последняя строка - температура на ATI(AMD) видеокарте, доступна после установки проприетарных дров. Чего еще не хватает мне - так это подсветка красным при превышении заданного порога....

# ПроходилМимо May 8, 2011, 10:26 p.m.
Можно узнать, что за дистрибутив так называет жесткие диски?

Боюсь дело не в дистрибутиве, в винте прошит серийник(или имя), а хддтемп читает его. Вот у меня оба хитачи выдаются по разному:
/dev/sda: HDS728080PLA380: 36°C
/dev/sdb: Hitachi HDS721010CLA332: 33°C

# Евгений June 1, 2011, 6:22 a.m.
Полезная статья, но у меня оказались проблемы с погодой:

1. При использовании изображения-информера - картинка в conky отображается и вроде бы все отлично, но она не обновляется. Т.е. в папке-то все отлично, изображение постоянно подгружается и актуальное, а вот на экран выводится всегда одна и та же (кэшируется видимо как-то). Обновляется только с перезапуском conky.

2. При использовании же "погодного" скрипта (чтение из xml) - в консоль все выводится на отлично (3 строки), а вот в conky отображается только первая возвращаемая скриптом строка.

Побороть так и не получилось. Есть какие-либо идеи?

# Дмитрий June 9, 2011, 6:49 p.m.
К вопросу о последнем посте. Конкретно вывод консоли таков (когда коньки запускаеш)

$ conky

Conky: desktop window (111) is root window
Conky: window type - override
Conky: drawing to created window (0x2c00001)
Conky: drawing to double buffer
/home/cynabr/bin/gismet.sh: 19: WDN[0]=С: not found
/home/cynabr/bin/gismet.sh: 20: WDN[1]=С-В: not found
/home/cynabr/bin/gismet.sh: 21: WDN[2]=В: not found
/home/cynabr/bin/gismet.sh: 22: WDN[3]=Ю-В: not found
/home/cynabr/bin/gismet.sh: 23: WDN[4]=Ю: not found
/home/cynabr/bin/gismet.sh: 24: WDN[5]=Ю-З: not found
/home/cynabr/bin/gismet.sh: 25: WDN[6]=З: not found
/home/cynabr/bin/gismet.sh: 26: WDN[7]=С-З: not found
/home/cynabr/bin/gismet.sh: 32: Bad substitution


При этом в коньках выводится только 1я строка, та которая с температурой.
А если запустить сам скрипт отдельно, то он отрабатывает нормально и пишет все 3 строчки. Подскажите куда копать?
Кстати первый из приведеных скриптов работает нормально и сразу все 3 строки в коньках выводит...

# Гость June 12, 2011, 1:44 p.m.
Странно, у меня все ок. Копать, наверно, надо в сторону "/home/cynabr/bin/gismet.sh: 19: WDN=С: not found". Почему-то командному интерпретатору не нравится команда
WDN[0]="С"

# Алексей June 22, 2011, 10:03 a.m.
Подскажите, в чём ошибка, попробовал дописать скрипт погоды, привинтив туда ещё и атмосферные явления:
#атмосферные явления

PHENOMENA_CLOUDINESS=`echo -e $a | tr "/>" "\n" | grep PHENOMENA | sed -n 3p | sed -e 's/<PHENOMENA //' |\
sed -e 's/"//g' | tr -d "cloudiness=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

WDNR[0]="ясно."
WDNR[1]="мало облочно."
WDNR[2]="облочно."
WDNR[3]="пасмурно."

PHENOMENA_PRECIPITATION=`echo -e $a | tr "/>" "\n" | grep PHENOMENA | sed -n 3p | sed -e 's/<PHENOMENA //' |\
sed -e 's/"//g' | tr -d "precipitation=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

WDNE[4]="дошть."
WDNE[5]="ливень."
WDNE[6]="снег."
WDNE[7]="снег."
WDNE[8]="гроза."
WDNE[9]="хуй его знает."
WDNE[10]="без осадков."

echo ${WDNR[$PHENOMENA_CLOUDINESS]} ${WDNE[$PHENOMENA_PRECIPITATION]}

но правильно выводится только тип осадков (это PHENOMENA_PRECIPITATION), а вот облачность всегда пишется "ясно.", где я здесь накосячил?

# Евгений July 23, 2011, 1:05 p.m.
Кстати, по поводу запуска conky при старте системы. Надеюсь кому-то поможет.

При простом указании команды conky в автоматически запускаемых приложениях - эффект прямо таки никакой. И сей факт в общем-то известен. Для нормального запуска необходимо делать небольшую оттяжку по времени. Т.е. команда должна выглядеть как:

sleep 20 && conky


но по сути, это тоже не помогает, правильнее всего явно указать выполнение команды через командную оболочку (SH либо Bash):

/bin/sh -c 'sleep 20 && conky'




ЗЫ. Пока сам не допер до этого - запускал руками. При этом ни один совет на различных форумах не помог.

# xeen Aug. 6, 2011, 7:25 p.m.
Исправлено (в преведущем комментарии выпали условия if then)
====

#!/bin/sh
#
#
#

time=$(date +%H)


URL="http://informer.gismeteo.ru/xml/27962_1.xml"
EXEC="/usr/local/bin/curl -s"

a=`$EXEC $URL`

echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /../' | gawk '{ print "Temp.",$1,"°C" }'

WIND_DIRECTION=`echo -e $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "direction=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

if
then
WINDN="N"
elif
then
WINDN="N-E"
elif
then
WINDN="E"
elif
then
WINDN="S-E"
elif
then
WINDN="S"
elif
then
WINDN="S-W"
elif
then
WINDN="W"
elif
then
WINDN="N-W"
fi


WIND=`echo -ne $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Wind",($1+$2)/2,"m/s"}'`

echo $WIND ${WDN} $WINDN

echo $a | tr "/>" "\n" | grep PRESSURE | sed -n 1p | sed -e 's/<PRESSURE //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "Comp.",($1+$2)/2,"mm" }'

===

# Brainsburn Aug. 6, 2011, 7:47 p.m.
xeen, Если вы хотите использовать в тексте комментария специальные символы, например,
[
и
]
, используйте их внутри тега
 [code] [/code] 
, иначе они будут проглочены обработчиком BB-кодов.
В ближайшее время постараюсь исправить эту проблему.

# Anonimous Aug. 7, 2011, 3:18 p.m.
Евгений, Дмитрий, я добавил в начало скрипта #!/bin/bash, и всё заработало как надо

# xeen Aug. 9, 2011, 4:19 a.m.
ага...


#!/bin/sh
#
#
#

time=$(date +%H)


EXEC="/usr/local/bin/curl -s"

a=`$EXEC $URL`

temp=`echo $a | tr "/>" "\n" | grep HEAT | sed -n 1p | sed -e 's/<HEAT //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
sed -e 's/ /-/' | gawk '{ print $1"C" }'`

echo -n $temp" "

WIND_DIRECTION=`echo -ne $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "direction=" | sed -e 's/ //' |\
gawk '{ print $3 }'`

if [ $WIND_DIRECTION -eq 0 ]
    then
	WINDN="С"
elif [ $WIND_DIRECTION -eq 1 ]
    then
	WINDN="СВ"
elif [ $WIND_DIRECTION -eq 2 ]
    then
	WINDN="В"
elif [ $WIND_DIRECTION -eq 3 ]
    then
	WINDN="ЮВ"
elif [ $WIND_DIRECTION -eq 4 ]
    then
	WINDN="Ю"
elif [ $WIND_DIRECTION -eq 5 ]
    then
	WINDN="ЮЗ"
elif [ $WIND_DIRECTION -eq 6 ]
    then
	WINDN="З"
elif [ $WIND_DIRECTION -eq 7 ]
    then
	WINDN="СЗ"
fi


WIND=`echo -ne $a | tr "/>" "\n" | grep WIND | sed -n 1p | sed -e 's/<WIND //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print ($1+$2)/2"м/с"}'`

echo -n $WIND ${WDN} $WINDN

echo $a | tr "/>" "\n" | grep PRESSURE | sed -n 1p | sed -e 's/<PRESSURE //' |\
sed -e 's/"//g' | tr -d "min=" | tr -d "max=" | sed -e 's/ //' |\
gawk '{ print "", ($1+$2)/2"мм" }'


# casual Aug. 12, 2011, 5:47 p.m.
за статью спасибо, очень доступно
вот только второй погодный скриптик (с направлением ветра) у меня не очень работает: при запуске из терминала все выдает правильно, а когда запускаешь коньки информацию о ветре не выдает совсем… Не подскажете в чем может быть проблема?

# Дмитрий Aug. 20, 2011, 9:46 p.m.
По поводу получения погоды с ГисМетео, плучение более подробных данных на сутки вперед с парсером ена perl описал тут: http://garuda.homeunix.net/cgi-bin/wiki/Conky [garuda.homeunix.net]

там-же скрипты для получения баланса в Мегафоне и Скайлинке

# thero Sept. 18, 2011, 12:48 p.m.
а подскажите, возможно ли совместить upspeedgraph и downspeedgraph по аналогии с DU Meter?

# thero Sept. 18, 2011, 1:01 p.m.

# Сергей Oct. 18, 2011, 5:43 p.m.
Недавно заметил (по индикации текущего времени) что Conky стал обновляться через 11-12 секунд, тогда как параметр update_interval установлен 1.0 …
Не подскажете, что может оказывать влияние на интервал обновления?

# Сергей Oct. 18, 2011, 7:51 p.m.
Извиняюсь, поспешил задать вопрос - разобрался. Дело в моём провайдере - при выполнении скриптов, которые обращаются к сети задержка есть, при запрете выполнения оных задержка исчезла.

# Сеня Nov. 2, 2011, 1:39 a.m.
Спасибо.

# ДМ Nov. 9, 2011, 6:51 p.m.
Хорошая статья. Ни разу коньками не пользовался и почти всё настроил.
Хотел бы спросить, как сделать вывод монохромной картинки? Например, выше в комментариях говорилось про баланс на Мегафоне и Скайлинке - как сделать вывод логотипа компании, а не названия?

# Гость Nov. 10, 2011, 8:10 a.m.
ДМ, если вы про отображение картинок, то все просто:
${image ~/имя-картинки.jpg -p 0,635 -f 0}

-p - координаты,-f - время обновления (для случаев, если картинка меняется со временем)

# Nikolay Jan. 21, 2012, 3:12 a.m.
Валютные котировки если надо кому:
wget "http://download.finance.yahoo.com/d/quotes.csv?s=USDRUB=X&f=snl1&e=.csv [download.finance.yahoo.com]“ -qO-

Акции сбербанка на ММВБ:
wget ”http://finance.yahoo.com/d/quotes.csv?s=SBER.ME&f=sl1 [finance.yahoo.com]" -qO-

# leo March 12, 2012, 5:16 a.m.


# Гость May 8, 2012, 3:17 p.m.
края текста ток у меня обрезаны?

# Гость Jan. 1, 2013, 8:46 p.m.
Для замены curl и gawk можно использовать ‘wget -q -O -’ и ‘awk’ соответственно.

# Thunderball1978 Feb. 21, 2013, 1:40 a.m.
Полезная статья про полезный виджет. Нашёл много полезного для себя. Единственно не смог настроить отображение свободного места на подключаемых носителях mmcblk0 и sdb. Использую в ноуте SD ридер и CF через адаптер cardbus.

# Гость March 28, 2013, 12:26 p.m.
Замечательная статья.
Спасибо автору.
Подскажите как на Gismeteo узнать свой город?
Спасибо.

# _Brainsburn March 29, 2013, 12:36 a.m.
На гисметео, похоже, снова все изменили. Честно говоря, я сам не в курсе, как узнать код города. Советую воспользоваться вот этим сервисом: http://www.meteoservice.ru/content/export.html
Выбираете там город и используете ссылку после “Местоположение сервиса:”. XML там полностью аналогичен гисметео, так что в скрипте нужно будет заменить только значение URL на новое. Т.е. вместо URL="http://informer.gismeteo.ru/xml/27719_1.xml" будет "http://xml.meteoservice.ru/export/gismeteo/point/177.xml"

# Гость March 29, 2013, 6:27 a.m.
Спасибо

# Евгений June 12, 2013, 4:05 p.m.
Большое спасибо автору! Коньки заточены!
Кому нужен код в гисметео - http://informer.gismeteo.ru/getcode/imginf.php?id=4368&view=1

# Андрей June 16, 2013, 2:42 p.m.
Как на Gismeteo узнать код города?
Перейти на страницу http://www.gismeteo.ru/catalog/russia/
Выбрать область и город.
После загрузки страницы в контекстном меню ищем “Просмотр кода страницы” или “Исходный код” или похожее, в разных браузерах по разному.
Поиск в исходном коде страницы: informer.gismeteo.ru
Для Мурманска будет http://informer.gismeteo.ru/slice2/xml/22113.xml
Искомый код города Мурманска - 22113
Вырезаем из полученного адреса “slice2/” получаем URL="http://informer.gismeteo.ru/xml/22113.xml"
Да, с аэропортами какая-то хрень. Пусто.

# Андрей June 21, 2013, 10:10 a.m.
Добавил город и атмосферные явления.
#! /bin/bash

time=$(date +%H)

URL="http://informer.gismeteo.ru/xml/50953.xml"
EXEC="/usr/bin/curl -s"

a=`$EXEC $URL`

# город и атмосферные явления
URL1="http://informer.gismeteo.ru/slice2/xml/50953.xml"
b=`$EXEC $URL1`

if echo $b | grep -q "," ; then
echo $b | cut -d "°" -f2 | tail -1 | sed 's/<.*/ /' | gawk '{ print "${color}"$3"${color gray}" }'
#echo $b | cut -d\, -f2 | tail -1 | cut -d\. -f1 | gawk '{ print "Явл. ",$1 }'
else
echo $b | cut -d "°" -f2 | tail -1 | sed 's/<.*/ /' | gawk '{ print "${color}"$2"${color gray}" }'
fi

#атмосферные явления
PHENOMENA_CLOUDINESS=`echo -e $a | tr '/>' '\n' | grep PHENOMENA | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print $1 }'`

CLOUD[0]="Ясно."
CLOUD[1]="Малооблочно."
CLOUD[2]="Облочно."
CLOUD[3]="Пасмурно."

PHENOMENA_PRECIPITATION=`echo -e $a | tr '/>' '\n' | grep PHENOMENA | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print $2 }'`

PREC[4]="Дождь."
PREC[5]="Ливень."
PREC[6]="Снег."
PREC[7]="Снег."
PREC[8]="Гроза."
PREC[9]="неизвестно."
PREC[10]="Без осадков."

echo ${CLOUD[$PHENOMENA_CLOUDINESS]} ${PREC[$PHENOMENA_PRECIPITATION]}

#температура
echo $a | tr '/>' '\n' | grep TEMPERATURE | sed -n 1p | tr -d [:upper:] | tr '<maxin="' ' ' | gawk '{ print "${color}Темп. ${color gray}",$2".."$1,"°C" }'

#ветер
WIND_DIRECTION=`echo -e $a | tr '/>' '\n' | grep WIND | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print $3 }'`

WDN[0]="С"
WDN[1]="С-В"
WDN[2]="В"
WDN[3]="Ю-В"
WDN[4]="Ю"
WDN[5]="Ю-З"
WDN[6]="З"
WDN[7]="С-З"

WIND=`echo -ne $a | tr '/>' '\n' | grep WIND | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print "${color}Ветер ${color gray}",($1+$2)/2,"м/с" }'`

echo $WIND ${WDN[$WIND_DIRECTION]}

#давление
echo $a | tr '/>' '\n' | grep PRESSURE | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print "${color}Давл. ${color gray}",($1+$2)/2,"мм" }'

# влажность
echo $a | tr '/>' '\n' | grep RELWET | sed -n 1p | tr -d [:punct:] | tr -d [:alpha:] | gawk '{ print "${color}Влаж. ${color gray}",($1+$2)/2,"%" }'

# vlitomsk Aug. 15, 2013, 11:13 a.m.
Спасибо за разжевывание conkyrc!
Только пришлось добавить #!/bin/bash в начало скрипта, собирающего погоду с gismeteo (без этого показывало только температуру, а в терминал выводило Bad substitution)

# Саня Aug. 31, 2013, 5:10 p.m.
Два дня все гуд работало. СПС Автору

А сегодня пишет:

Погода:
NULL

Что могло произойти? ничего в коде не менял…..

# Лфыр Dec. 17, 2013, 3:41 p.m.
Добвалю вывод температуры ATI-шной видеокарты:
${color1}Видеокарта: ${if_match “${execi 30 aticonfig –odgt | grep Sensor | awk ‘{print $5}’}” >= “60”}$color3$else$color2$endif${execi 30 aticonfig –odgt | grep Sensor | awk ‘{print $5}’}°С

P.S. дрова из репозитория ставил.

# Kash Dec. 17, 2013, 5:39 p.m.
Поправлюсь:
где “aticonfig –odgt” , там два знака “-”

# FG-08 Feb. 23, 2014, 3:48 a.m.
Информация о использовании процессора….. ${cpu1} …{cpu2}
ошибочка первый проц ${cpu cpu0} а второй естественно ${cpu cpu1}.

# sysadminiy July 26, 2015, 1:35 p.m.
Помогите с выводом погоды! Пожалуйста!

# Гость Aug. 26, 2015, 6:39 p.m.
Добавляю сетевой интерфейс wwan в готовые conky или изменяю, например, wlan на wwan - загрузка - выгрузка на отображаются.

# Андрей Sept. 20, 2015, 7:47 p.m.
Друзья поясните как включить в conky русский язык?

# Андрей Sept. 20, 2015, 7:51 p.m.
Друзья поясните как включить в conky русский язык?

# игорь Oct. 20, 2015, 5:22 p.m.
Подскажите параметр вывода названия видеокарты nvidia

# Вадим Jan. 25, 2017, 10:30 a.m.
Отлично, хорошая статья!

# Носатик July 5, 2019, 9:03 p.m.
Здраствуйте, спасибо за статью, по ней собирал конфиг. Кстати, Парни из трейлерпарка норм сериал, только матюков много. Вот часть конфига для арча, так как если брать отсюда без изменений, то будет чёрный фон:
background yes
own_window yes
own_window_class Conky
own_window_type normal
own_window_argb_visual yes
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

Комментировать:

Гость, Вы можете оставить свой комментарий.

Стиль кода:
Имя
Сайт * не обязательное поле
Поставьте галку, если вы - бот
Поставьте галку, если вы - человек

Друзья! Убедительная просьба воздержаться от нецензурной лексики!



Справка:
Если вы хотите использовать в тексте комментария специальные символы, например, [ и ], используйте их внутри тега [code] [/code]
Вы можете использовать теги BBcode. Для оформления кода и подсветки синтаксиса используйте тег [code] или [code=название_языка], например, [code=python]
Ссылки вставляйте так: [url]zenux.ru[/url] или так: http://zenux.ru, но не так: zenux.ru
Текст сообщения должен быть в пределах 3000 символов.




Последние комментарии:

Носатик: Здраствуйте, спасибо за статью, по ней собирал кон... >>>
thakur: А кто-то имеет опыт того, как налагать патчи?там н... >>>
thakur: А кто-то имеет опыт того, как налагать патчи?там н... >>>
Елена: <p style=“text-align: center;”>&... >>>
Вероника: <p style=“text-align: center;”>&... >>>