В conky предусмотрена переменная weather. Казалось бы, с ее помощью мы легко сможем отобразить всю интересующую нас информацию о погоде, но мы пойдем другим путем. Вот почему: на данный момент эта переменная все еще является экспериментальной, поэтому привязываться к ней не стоит. К тому же, сейчас в качестве параметров можно передать два источника метеоданных. Первый предоставляет данные только для Америки (если вы живете в Америке, то это может стать вашим выбором), а второй требует регистрации (но нам лень).
РЕКОМЕНДУЕМ: Создание панелей Conky включающих только текст
Для получения текущей погоды воспользуемся сервисом Yahoo. Например, чтобы узнать сведения о погоде в Москве перейдите по ссылке: http://xml.weather.yahoo.com/forecastrss?w=2346910&u=c. Если у вас установлено приложение или плагин браузера для просмотра rss-фидов, то вы увидите что-то подобное:
За этим содержимым стоит обычный xml-код. Он нам и нужен. Обратите внимание, что на конце url используется два параметра: w и u. Первый из них определяет место, для которого мы хотим узнать погоду, а второй позволяет выбрать единицы измерения температуры (градусы Цельсия c или Фаренгейта f). Параметр w означает WOEID — Where On Earth IDentifier. Найти его для вашего города можно на сайте http://woeid.rosselliot.co.nz/lookup.
Например, на скриншоте выше показано, что я ввел в строку поиска «velikiy novgorod», и получил на запрос два результата. Первый результат относится к району, а второй непосредственно к городу. Поэтому я запоминаю соответствующий WOEID — 2122471.
Следующий шаг — получение непосредственных данных. Для этого создадим простой скрипт ~/.scripts/weather.sh:
1 2 3 4 |
#!/bin/sh WOEID="$1" curl -s "http://xml.weather.yahoo.com/forecastrss?w=${WOEID}&u=c" | grep "Current Conditions" -A1 | tail -1 | awk '{ for( i=1; i<NF-2; ++i) { printf "%s ", $i } printf "%sC\n", $(NF-2) }' |
На вход он принимает единственный параметр — WOEID нужного нам места. Обратите внимание, что для работы скрипта вам понадобится curl. Также в скрипте используется немного awk (см. AWK: Примеры программ).
Попробуем запустить скрипт с найденным ранее WOEID:
1 |
weather.sh 2122471 |
В результате имеем такой выход:
1 |
Light Snow, -9C |
Вывод информации об осадках осуществляется на английском. При желании можно доработать скрипт, добавив в него преобразование, которое будет выполнять перевод этой строки на нужный вам язык. А можно вообще не выводить эти данные и ограничиться только текущей температурой. В этом случае получаем такой скрипт:
1 2 3 4 |
#!/bin/sh WOEID="$1" curl -s "http://xml.weather.yahoo.com/forecastrss?w=${WOEID}&u=c" | grep "Current Conditions" -A1 | tail -1 | awk '{ printf "%sC\n", $(NF-2) }' |
Вывести все это с помощью conky уже дело техники. Вы можете поместить панель туда, где вам покажется удобней, а я просто переделаю файл конфигурации из прошлой статьи, с помощью которого мы выводили уведомления о новых сообщениях на электронной почте:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
background yes use_xft yes xftfont Droid Sans Mono:size=17:bold xftalpha 0.1 update_interval 2.0 total_run_times 0 own_window yes own_window_class Conky own_window_type desktop own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_argb_visual yes own_window_argb_value 255 double_buffer yes minimum_size 344 0 default_bar_size 100 10 draw_shades no draw_outline no draw_borders no draw_graph_borders yes default_color white default_outline_color white alignment bl gap_x 0 gap_y 31 no_buffers yes uppercase no cpu_avg_samples 2 net_avg_samples 1 override_utf8_locale yes use_spacer yes TEXT ${color #9999FF}${execi 30 ~/.scripts/weather.sh 2122471}$color |
Внешне выглядит довольно примитивно, но вы сами можете подобрать цвета и шрифты, чтобы такая панель лучше вписывалась в ваше оформление.
При желании вы также можете переработать скрипт, и, например, добавить вывод не только текущей температуры, но и прогноз на ближайшие дни.