Aesdana 09.06.2010 01:02
How-to`s — Little tricks with conky.
Грозилась написать пост в рамках тематической недели, но к сожалению заработалась и всё никак не находила времени. Как говорится "лучше поздно, чем никогда" ;)Хочу рассказать про маленькие хитрости, которые я использую в своих конфигах conky. Поскольку на моём рабочем столе царит разумный минимализм, а виджеты со всякими уведомлениями и системной информацией слишком прожорливы, для всего этого я использую conky.
Небольшое отступление:
Все конфиги у меня лежат в ~/.conky, скрипты и сами конфиги стараюсь называть так, чтобы было понятно их назначение — в будущем намного удобнее ориентироваться. Самые удачные конфиги со всеми скриптами и картинками кладу в отдельные папки и как-нибудь обзываю, обычно в честь созданныхо гтк/пек тем.
Рецепт первый. А-ля covergloobus.
Тут вариантов несколько. Все основаны на небольшом скрипте, который отображает текущую обложку (возможно где-то есть лучше и проще, я буду рассказывать только о тех, что есть у меня — поэтому не стесняйтесь, дополняйте) и собственно вставке картинки фона, плюс дополнительные бары и информация.
Скрин №1
Что желательно указать в конфиге:
Всё, что после TEXT:
Теперь о скрипте.
Он берёт информацию о треке из файла, который создаёт sonata, именно ей я рулю mpd. Для mpc и прочего думаю можно запросто нагуглить, либо написать :)
Тонкости баша расписывать не буду, не о том тема, да и думаю всем более-менее понятно о чём тут. Поясню только 1 момент.
Если в папке с обложками нужной картинки нет, то в currentcover уходит заранее подготовленный nocover, тобишь та картинка, которую показыть, если обложки нету.
Рисуете на свой вкус, хоть надпись NO COVER, хоть FFFUUUUU
Скрин №2
Тут всё абсолютно то же самое, за исключением пары моментов.
Во-первых, использыется три картинки, вместо двух (фон, обложка, плей/паузы)
Рецепт второй. Моднявые шрифты.
Скриншот:
Для отображения этих мордашек я использовала шрифт dist yolks emoticons, который взяла на dafont.com в разделе Dingbats.
В принципе можно вставить любое безумие, которое найдёте. Есть там и ноты, и инопланетяне, и персонажи сказок, комиксов, мультов и фильмов. Цвет, размер — всё задаётся как для обычного шрифта, потому что это он и есть ?
Рецепт третий. Кармафилия.
По мотивам поста про расширение для хрома написала себе скриптик.
Скажу сразу честно. Он ужасен. Начиная от идеи, и заканчивая готовым результатом. на момент написания стояла задача разобраться что такое sed и с чем его употребляют.
Итак, скрипт для отображения текущего рейтинга на вилинуксе:
Код для conky:
Сам скрипт:
1 |
#!/bin/bash
|
Подозреваю, что можно смело отправлять на говнокод ?
Товарищи знатоки, поможете довести до ума, а? )
А делает он вот что: загружает в rate страницу юзера, выводится 53-я строка, из которой sed'ом режутся цифры рейтинга.
Стыдно и страшно, однако, оно работает :)
UPD 1: Спасибо xT за помощь со скриптом.
Смотрите комментарий.
UPD 2: Рецепт от nvbn:
1 |
curl -silent 'http://welinux.ru/ajax/r_get?user=Aesdana' |\
|
Рецепт четвёртый. В курсе событий.
Далее. Об уведомлялках для gmail и новых пакетах. Про первое есть уже пост. В комментариях имеется альтернатива на баше, сама же я использую скрипт на перле, длинный и непонятный.
Все три помещаю в спойлер.
Баш:
Перл:
Питон:
1 |
#!/bin/bash
|
Перл:
Питон:
Про уведомлялку об апдейтах расскажу подробнее.
Пихаем в нужное место конфига коньков эту незамысловатую строчку:
Сам скрипт:
Не забудьте создать updates.log, а то будет "No such file or directory"
А в крон суём скрипт на баше, который будет заполнять наш лог ;):
Время обновления выбирайте сами для себя, у меня это примерно каждые 6 часов.
Скрипт прост: считает кол-во строк в логе по заданному выражению и выводит кол-во новых пакетов.
На последним скрине обновлений не наблюдается, сказывается привычка довольно часто делать sudo pacman -Syu :)
Рецепт пятый. Календарики и часики.
Календариков на просторах инета много, я юзаю один из самых простых вариантов.
Выглядит это так:
Конфиг:
${color 555C37} — цвет текущей даты. ${color 696969} — для следующих дней.
Так же можно добавить ${time %B, %Y}, к примеру.
То же самое, только на питоне.
Совсем простой вариант:
${exec cal -m | cut -c23-44 --complement}
Вариант поинтереснее — горизонтальный календарь.
Найдено на лоре, овации автору. Вариант с динамичной текущей датой тут.
Поясню как использовать скрипт в коньках:
${texeci 3 perl ~/.conky/mov_hor.pl 1 15 15}${color 555C37}${font droid sans:size=22}${voffset -10}${texeci 3 perl ~/.conky/mov_hor.pl 2 15 15}${font}${color #696969}${voffset -3}${texeci 3 perl ~/.conky/mov_hor.pl 3 15 15}
Выделенные жирным циферки — номера частей скрипта. Тобишь до текущей даты, текущая, и после неё. Так что легко менять цвет, размер и положение всех частей.
Если желаете чего-то экзотического, можно поискать в гугле "conky calendar script" :)
А чтобы календарь не расползался и дни недели шли ровно используйте моноширинные шрифты.
lua scripts использовала давно и только ради милых аналоговых часиков. Скрипт lua:
Огромные кольца разных цветов и размеров мне не нравятся, а вот часики приглянулись. Посмотреть скрин.
В конфиге conky указываем, что будет использовать lua:
# Lua Load #
lua_load ~/.conky/clock.lua
lua_draw_hook_pre clock_rings
TEXT
${alignc}
lua_load ~/.conky/clock.lua
lua_draw_hook_pre clock_rings
TEXT
${alignc}
Выравнивание вставила, потому что пустой конфиг не воркает, а кроме часов он больше у меня ничего не показывал.
Рецепт шестой. Проще простого.
Тут не будет никак скриптов и конфигов, только парочка советов напоследок.
1. Два параметра, ${color} и ${font}, имеют свойство распространяться не только на текущую строку, но и на весь конфиг в целом. Тобишь после однократного использования лучше закрывать их, как теги.
Дабы не городить подобное:
TEXT:
${color 767676}бла-бла${color 212121}тру-ля-ля${color 767676}ай-люли-люли
${color 767676}бла-бла${color 212121}тру-ля-ля${color 767676}ай-люли-люли
Сделаем проще. Цвет выделения в алиасы, а 767676 в цвет по умолчанию.
#color
default_color 767676
color1 212121
TEXT:
бла-бла${color1}тру-ля-ля${color}ай-люли-люли
default_color 767676
color1 212121
TEXT:
бла-бла${color1}тру-ля-ля${color}ай-люли-люли
Точно так же со шрифтами.
Честно говоря, я почему-то до сих пор этим не пользуюсь. Буду исправляться, да.
2. Иногда случается так, что в конфиге присутствует элемент, из-за которого разъезжаются все данные. Портит не только вид рабочего стола, но и нервы. Обычно это касается выравнивания по горизонтали (alingr, alignc, offset).
В таких случаях приходит на помощь параметр ${goto %посыл%}.
Пример: конфиг conky имеет вид строки на всю ширину монитора и высотой в 20 пикселей. Вы наблюдаете свободное место на ваших дисках и разделах, а так же скорость интерфейсов, или же скорость торрента. Данные сие непостоянны весьма, выводятся без округлений, по сему строка будет прыгать туда-сюда, если использовать offset и т.д.
${goto} же воткнёт элемент в чётко указанное место и изменение его размера на всей строке не отобразится.
3. Список переменных и параметров конфига.
Официальные скриншоты с готовыми конфигами и скриптами.
Скромный такой намёк на rtfm ;)
Всем спасибо за внимание, пишите, дополняйте, спрашивайте.
Popeye 09.06.2010 01:29 #
+ 1 -
Спасибки!!! Пошёл пробовать)
Браво! Молодец!
Хо-хо! Не перевелись ещё бабы в русских селениях
; D
да ту изи : )
Остальное, думаю, тоже можно заоптимайзить, да под утро лениво : )
P.S. wtf? почему везде указаны прямые пути к файлам в хомдире?! : (
; D
Сам скрипт:
Товарищи знатоки, поможете довести до ума, а? )
#!/bin/bash
wget -q -O ~/.conky/rate http://welinux.ru/user/Aesdana && echo | sed -n '53p' ~/.conky/rate | grep ruAesdana | sed 's/< >.*rp..//' | sed 's/<</a-z>>//g'
Подозреваю, что можно смело отправлять на говнокод ?Товарищи знатоки, поможете довести до ума, а? )
да ту изи : )
curl -silent http://welinux.ru/user/Aesdana | grep "<span class='rp'>" -m 1 | sed -e :a -e 's/<<^>>*>//g;/</N;//ba;s/ //g'
Остальное, думаю, тоже можно заоптимайзить, да под утро лениво : )
P.S. wtf? почему везде указаны прямые пути к файлам в хомдире?! : (
Во, это гораздо лучше моих извращений :)
Но свой скрипт оставлю, ради лулзов.
Но свой скрипт оставлю, ради лулзов.
Мда. Линуксоиды такие линуксоиды. Ушел спать без чего-то час. Сейчас 7:38. А у поста уже 15 плюсиков. Интересно, когда спят линуксоиды
Опередил, блин... :(
Aesdana - ему откажешь - меня рассмотри :)
Aesdana - ему откажешь - меня рассмотри :)
Если будете писать такие же зажигательные посты как этот - не огорчите. :)
Вместо http://welinux.ru/user/Aesdana используй http://welinux.ru/ajax/r_get?user=Aesdana, оно специально для этих целей создано =)
Готовая конструкция для bash:
И статья очень хороша, побольше бы таких =)
Готовая конструкция для bash:
curl -silent 'http://welinux.ru/ajax/r_get?user=Aesdana' |\
sed -e 's/<{}>/''/g' |\
awk -v RS=',"' -F: '/^rate/ {print $2}'
И статья очень хороша, побольше бы таких =)
А не подскажете, что это за формат? Поищу под перл модуль. А в xml того же самого нету? А то вообще было бы элеменатрно разную инфу получать (новые сообщения в разных блогах, лента, карма, лс и т.п.)
Отлично, спасибо. Так и подумал, но решил уточнить, под перл полно модулей для парсинга! Можно чего-нить упрощающего жизнь написать. =)
как бы в данном случае без разницы, ибо баш не умеет ансериалайзить массивы, и все равно идут танцы с седом
в других, да : )
в других, да : )
Так меньше нагрузки на сервер.
+ вёрстка на странице пользователя может поменяться
+ вёрстка на странице пользователя может поменяться
Все, теперь только чутка времени и все станем матерыми конькобежцами. Огромное спасибо.
Спасибо за статью, очень интересно. Воодушевили на подвиги, приду домой попробую, может чего интерсеного добавлю, если ума хватит! =)
Ксати рецепт со скриптом на баше неплох, на говнокоде такое минусуют, ибо этот скрипт имеет право на жизнь, но вот это:
можно смело отправлять на говнокод, потому как заменяется одной строкой:
=))
Ксати рецепт со скриптом на баше неплох, на говнокоде такое минусуют, ибо этот скрипт имеет право на жизнь, но вот это:
if ($i == 0) {
print "0";
} else {
print "$i";
}
можно смело отправлять на говнокод, потому как заменяется одной строкой:
print "$i";
=))
Проглядела. В каком-то из скриптов для гмыла, кажется, есть что-то подобное. Но это не мои, если что )
Спасибо! Давно хотел календарь в коньках, но чет он у меня корявый был.
/me ушел править .conkyrc
/me ушел править .conkyrc
Извиняюсь за, вероятно, нубский вопрос. Я скопировал строки
и
в конец конфига, но календарики не появились, вместо них появилось пустая полоса.
Что я делаю не так? =)
${execpi 3600 DJS=`date +%_d`; cal -m | sed '1d' | sed '/./!d' | sed 's/$/ /' | fold -w 21 | sed -n '/^.\{21\}/p' | sed 's/^/${alignc} /' | sed /" $DJS "/s/" $DJS "/" "'${color 555C37}'"$DJS"'${color 696969}'" "/}
и
${exec cal -m | cut -c23-44 --complement}
в конец конфига, но календарики не появились, вместо них появилось пустая полоса.
Что я делаю не так? =)
<~> #uname -a
Linux DarkneSS 2.6.32-22-generic #36-<b>Ubuntu</b> SMP Thu Jun 3 19:31:57 UTC 2010 x86_64 GNU/Linux
Подскажите, пожалуйста, как переписать.
Спасибо! Календари появились. Второй, действительно, совсем простой. Теперь другой вопрос: можно ли сделать, чтобы сбоку от календаря писало время/дату (место свободное пропадает). Я использую строку
${color #30a988}Время: ${alignr}${color #3a6a20}${time %c}
Спасибо, подсел на коньки =) Настроил MPD, сейчас буду еще играться.
Хм, я правда перла не знаю, но в общих чертах понимать должен.
Но в упор не понимаю как скрипт
... может определить количество апдейтов?
Написано "Скрипт прост: считает кол-во строк в логе по заданному выражению и выводит кол-во новых пакетов."
А откуда в логе появятся строки?
Хм, я правда перла не знаю, но в общих чертах понимать должен.
Но в упор не понимаю как скрипт
#! /usr/bin/perl -w
use strict;
# November 15, 2006
# Daniel Vredenburg (Vredfreak)
# This is a program that checks for package updates for Arch Linux users.
open (MYINPUTFILE, "~/.conky/updates.log") or die "No such file or directory: $!";
my $i = 0;
while(<MYINPUTFILE>)
{
if (/^(.*)\/(.*)(\..*\..*\.)/) {
#print " \n";
$i++;
}
}
print "$i";
close(MYINPUTFILE);
... может определить количество апдейтов?
Написано "Скрипт прост: считает кол-во строк в логе по заданному выражению и выводит кол-во новых пакетов."
А откуда в логе появятся строки?
может я облегчу тебе жизнь, если предложу использовать это:
pacman -Qyu | wc -l
Да, так действительно работает, спасибо)
Но все-таки интересно как работал тот скрипт. И работал ли он =)
Но все-таки интересно как работал тот скрипт. И работал ли он =)
ах да, для аура можно использовать:
echo "n" | yaourt -Su --aur 2>/dev/null | grep -c "\s=>\s"
С такой частью конфига
получается так:
с какой-то полосой снизу... Не подскажете, как её убрать и можно ли сделать, чтобы надписи справа шли подряд?
получается так:
с какой-то полосой снизу... Не подскажете, как её убрать и можно ли сделать, чтобы надписи справа шли подряд?
Поэксперементировал и выяснил, что окно конки почему-то не изменяет размер по высоте... Пытался оставить в конфиге только одну строчку - размер окна сохранился.
Полный конфиг.
Полный конфиг.
Решено добавлением в самый конец конфига
${voffset 20}
. Спасибо, Aesdana, за статью и помощь!
Простите за офтоп, но как добавить статью в избранное на панели сайта?
Немного некропостинга: после обновления бунты до 11.04 календарь поломался:
Кусок конфига:
Кусок конфига: