Conky (Русский)
Conky является системным монитором для оконной системы X. Он доступен для Linux и FreeBSD. Это свободное программное обеспечение выпущенное на условиях лицензии GPLv3. Conky может производить мониторинг большинства системных параметров, включая частоту и загрузку CPU, RAM, подкачки, дискового пространства, температуру, может отображать системные сообщения, и др. Он довольно легко настраивается, однако, процесс настройки может быть слегка сложным для понимания. Conky - это ответвление от проекта torsmo.
Contents
- 1 Установка и настройка
- 2 Версии из AUR
-
3 Советы и рекомендации
- 3.1 Включить реальную прозрачность в KDE4 и Xfce4
- 3.2 Автозапуск в Xfce4
- 3.3 Как предотвратить мерцание
- 3.4 Настройка цвета
- 3.5 С двумя экранами
- 3.6 Не сворачивать при сворачивании всех окон
- 3.7 Интеграция с Gnome 3
- 3.8 Интеграция с KDE
- 3.9 Интеграция с Razor-qt
- 3.10 Показывать информацию об обновлениях пакетов
- 3.11 Показывать прогноз погоды
- 3.12 Показывать RSS ленты
- 3.13 Показывать состояние rTorrent
- 3.14 Показывать состояние вашего WordPress блога
- 3.15 Показывать количество новых писем из Gmail
- 3.16 Показывать новые письма (IMAP + SSL)
- 3.17 Исправление прокручивания для кодировки UTF-8
- 4 Примеры конфигурации от пользователей
- 5 Замечание о шрифтах
- 6 Универсальный способ включения настоящей прозрачности
- 7 Смотрите также
Установка и настройка
- Установите пакет conky из официальных репозиториев.
- Отредактируйте конфигурационный файл
~/.conkyrc
, используя пример конфигурации с homeproject-screenshot
Редактируя конфигурационный файл, вы сразу же сможете видеть результат внесённых изменений, как только сохраните его. Вам не нужно завершать/начинать ваш X сеанс. Поэтому лучше всего тестировать все опции по порядку, сохраняя конфигурационный файл и наблюдаяя за окном conky, и исправлять их, если они вам не понравились.
- Либо используйте файл стандартной конфигурации
/etc/conky/conky.conf
:
$ cp /etc/conky/conky.conf ~/.conkyrc
Лучше использовать локальный ~/.conkyrc
конфигурационный файл. Как и многие приложения, conky сначала проверит, есть ли локальный файл .conkyrc
. В случае его отсутствия conky прочитает файл по умолчанию из /etc/conky
.
В случае, если вы храните вашу конфигурацию локально, например, в домашней директории, вы не сможете читать файлы логов, пока не внесете некоторые изменения. Одной из полезных функций conky является вывод на рабочий стол некоторых файлов из /var/log/
, чтобы наблюдать за журнальными сообщениями. Большинство этих файлов может читать только root
, вам придётся запускать conky через sudo
. Однако, запуск conky с привилегиями root
не рекомендуется, поэтому выполните следующие действия:
$ usermod -aG log имя_пользователя
Вы добавили пользователя имя_пользователя
в группу log
. Теперь имя_пользователя
может читать файлы логов, и conky сможет отображать журнальные записи на рабочем столе.
- В случае, если conky не принимает изменения, например,
minimum_size
, которые вы делаете в~/.conkyrc
, убедитесь, что вы очистили/etc/conky/conky.conf
или закомментировали соответствующюю секцию. Лучше всего удалить файлы из/etc/conky/
, так как conky будет пытаться их читать и из-за этого выдавать вам некоторые сообщения об ошибках Xorg.
Версии из AUR
В дополнение к обычному пакету conky есть ещё нескеолько AUR пакетов с разными опциями компиляции:
- conky-cli — Conky без X11 зависимостей
- || conky-cliAUR
- conky-lua — Conky с поддержкой Lua
- || conky-luaAUR
- conky-lua-nv — Conky с поддержкой Lua и Nvidia
- || conky-lua-nvAUR
- conky-nvidia — Conky с поддержкой Nvidia
- || conky-nvidiaAUR
Советы и рекомендации
Включить реальную прозрачность в KDE4 и Xfce4
Начиная с версии 1.8.0 conky поддерживает реальную прозрачность. Чтобы её включить, добавьте следующую строку в ~/.conkyrc
:
own_window_transparent yes
Предыдущая опция не совместима с опцией OWN_WINDOW_ARGB_VISUAL yes
.
Она заменяет feh метод, описанный ниже.
Автозапуск в Xfce4
В файле .conkyrc
:
background yes
Эта переменная запустит conky в фоновом режиме. Если вы хотите сделать окно всегда видимым на вашем рабочем столе, на всех рабочих местах и чтобы оно не отображалось на панели задач, добавьте следующие аргументы:
own_window yes own_window_type override
Опция override
делает ваше окно неконтролируемым из вашего оконного менеджера.
Напишите в ~/.config/autostart/conky.desktop
:
[Desktop Entry] Encoding=UTF-8 Version=0.9.4 Type=Application Name=conky Comment= Exec=conky -d StartupNotify=false Terminal=false Hidden=false
Как предотвратить мерцание
Чтобы предотвратить мерцание, conky требует поддержку Double Buffer Extension (DBE) со стороны X-сервера, потому что он не может достаточно быстро обновлять окно без этого. Поддержка DBE может быть включена в /etc/X11/xorg.conf
добавлением строки Load "dbe"
в разделе "Module"
. Файл xorg.conf
заменён (начиная с патча 1.8.x и выше) на /etc/X11/xorg.conf.d
, который содержит отдельные конфигурационные файлы. DBE загружен автоматически.
Для включения double-buffer проверте наличие в ~/.conkyrc
строки:
# Place below the other options, not below TEXT or XY double_buffer yes
Настройка цвета
Помимо стандартных предопределённых цветов (white, black, yellow...), вы можете задать свой собственный цвет, используя название для кода цвета. Чтобы определить код нужного вам цвета, воспользуйтесь приложением для выбора цвета. Базовый пакет gcolor2 из официальных репозиториев подскажет вам название цвета. Он состоит из шести шестнадцатеричных цифр (0-9, A-F). Добавьте такую строку в конфигурационный файл, чтобы задать собственные цвета:
color1 Имя_цвета_1 color2 Имя_цвета_2
Затем, при редактировании раздела TEXT
, используйте собственный номер цвета, определённый ранее.
С двумя экранами
При работе с двумя экранами, вам придётся поиграться с двумя опциями, чтобы разместить ваше окно conky. Предположим, у вас разрешение 1680X1050 и вы хотите, чтобы окно было на левом мониторе сверху по центру. Сделайте так:
alignment top_left gap_X 840
Опция alignment
отвечает за выравнивание, а опция gap_X
определяет расстояние в пикселях от левой границы вашего экрана.
Не сворачивать при сворачивании всех окон
Используя Compiz: Если кнопка 'Показать рабочий стол' или комбинация клавиш сворачивает conky вместе со всеми остальными окнами, запустите Compiz configuration settings manager, перейдите в "General Options" и снимите галочку с опции "Hide Skip Taskbar Windows".
Если вы не используете Compiz, попробуйте отредактировать ~/.conkyrc
, добавив/изменив следующую строку:
own_window_type override
или
own_window_type desktop
Обратитесь к странице справочного руководства (man) по conky, чтобы выяснить, чем они отличаются. Последний вариант позволяет изменять границы окна с помощью растягивания или сочетаний клавиш, например, в Openbox, а с первым вариантом так не получится.
Интеграция с Gnome 3
У некоторых возникают проблемы с отображением conky в Gnome 3.
- Добавьте эти строки в
~/.conkyrc
:
own_window yes own_window_type conky own_window_transparent yes own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
Если у вас всё ещё остались проблемы с прозрачностью, можете добавить следующие строки:
own_window_argb_visual yes own_window_argb_value 255
Интеграция с KDE
Conky с конфигурацией из примеров на странице со скриншотами создаёт проблему с отображением иконок. Итак, выполните следующее:
- Добавьте эти строки в
~/.conkyrc
:
own_window yes own_window_type normal own_window_transparent yes own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
- Если данная строка есть, закомментируйте или удалите её:
minimum_size
- Для автозапуска conky создайте следующую символьную ссылку:
- KDE4:
$ ln -s /usr/bin/conky ~/.kde4/Autostart/conkylink
- KDE3:
$ ln -s /usr/bin/conky ~/.kde/share/autostart/conkylink
- Установите пакет feh из официальных репозиториев.
- Создайте скрипт для разрешения прозрачности с рабочим столом
Для пользователей KDE4 ~/.kde4/Autostart/fehconky
:
#!/bin/bash feh --bg-scale "$(sed -n 's/wallpaper=//p' ~/.kde4/share/config/plasma-desktop-appletsrc)"
Для пользователей KDE3 ~/.kde/share/autostart/fehconky
:
#!/bin/bash feh --bg-scale $(dcop kdesktop KBackgroundIface currentWallpaper 1)
используйте --bg-center
, чтобы расположить фоновый рисунок по ценру.
- Сделайте его исполняемым:
- KDE4:
$ chmod +x ~/.kde4/Autostart/fehconky
- KDE3:
$ chmod +x ~/.kde/share/autostart/fehconky
- По желанию, вместо использования скрипта, вы можете добавить подобную строку в самый низ файла
~/.conkyrc
- Для KDE4
${exec feh --bg-scale "$(sed -n 's/wallpaper=//p' ~/.kde4/share/config/plasma-desktop-appletsrc)"}
- Для KDE3
${exec feh --bg-scale $(dcop kdesktop KBackgroundIface currentWallpaper 1)}
Интеграция с Razor-qt
С конфигурацией по умолчанию окно conky может исчезнуть с рабочего стола, если вы кликнете на букву. Добавьте эти строки в:
~/.conkyrc
own_window yes own_window_class Conky own_window_type normal own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_transparent yes
Показывать информацию об обновлениях пакетов
-
Pacman предоставляет свой собственный скрипт, называемый
checkupdates
, который отображает обновления пакетов из официальных репозиториев. Используйте${execpi 3600 checkupdates | wc -l}
, чтобы показать общее количество пакетов -
Paconky - показывает информацию об обновлении пакета в формате, определённом пользователем. Вывод этой программы может быть включён в Conky с помощью команды
${execpi}
- Прокручиваемые уведомления - печатает прокручиваемые уведомления об обновлениях. От создателя paconky
- Perl Script - более простой и древний скрипт от автора paconky. Печатает только количество пакетов, нуждающихся в обновлении
- Python Script - хорошо настраиваемая программа для уведомления пользователя о наличии обновлений, написанная на python
- Bash Script - bash-скрипт для пользователей, которые включили ShowSize
Показывать прогноз погоды
Смотрите это обсуждение.
Показывать RSS ленты
Conky имеет возможность отображать RSS-ленты самостоятельно, без необходимости применения внешних скриптов. Например, чтобы отображать заголовки десяти последних обновлений Planet Arch и обновлять ленту каждую минуту вы должны поместить это в ваш ~/.conkyrc
в раздел TEXT
:
${rss https://planet.archlinux.org/rss20.xml 1 item_titles 10 }
Если вы хотите отображать rss ленту форума Arch, добавьте следующую строку:
${rss https://bbs.archlinux.org/extern.php?action=feed&type=rss 1 item_titles 4}
где 1 - это интервал обновлений в минутах (15 мин по умолчанию), 4 - количество объектов, которые вы хотите отображать.
Ленты русскоязычного форума:
- Последние сообщения: http://archlinux.org.ru/forum/feeds/posts/
- Последние темы: http://archlinux.org.ru/forum/feeds/topics/
Показывать состояние rTorrent
Смотрите это обсуждение.
Показывать состояние вашего WordPress блога
Вы можете это сделать, используя расширение, написанное на python ConkyPress.
Показывать количество новых писем из Gmail
Создайте файл gmail.py
в удобнов месте (в данном примере в ~/.scripts/
) со следующем python-кодом:
gmail.py
#!/usr/bin/env python from urllib.request import FancyURLopener email = 'ваш email' # @gmail.com can be left out password = 'ваш пароль' url = 'https://%s:%s@mail.google.com/mail/feed/atom' % (email, password) opener = FancyURLopener() page = opener.open(url) contents = page.read().decode('utf-8') ifrom = contents.index('<fullcount>') + 11 ito = contents.index('</fullcount>') fullcount = contents[ifrom:ito] print(fullcount + ' new')
Вы также можете использовать Python urllib, как описано ниже:
gmail.py
#! /usr/bin/env python import urllib.request from xml.etree import ElementTree as etree # Enter your username and password below within quotes below, in place of ****. # Set up authentication for gmail auth_handler = urllib.request.HTTPBasicAuthHandler() auth_handler.add_password(realm='New mail feed', uri='https://mail.google.com/', user= '****', passwd= '****') opener = urllib.request.build_opener(auth_handler) # ...and install it globally so it can be used with urlopen. urllib.request.install_opener(opener) gmail = 'https://mail.google.com/gmail/feed/atom' NS = '{http://purl.org/atom/ns#}' with urllib.request.urlopen(gmail) as source: tree = etree.parse(source) fullcount = tree.find(NS + 'fullcount').text print(fullcount + ' new')
Добавьте следующую строку в ваш ~/.conkyrc
, чтобы проверять свой Gmail на предмет новых писем каждые пять минут (300 секунд) и показать их:
${execpi 300 python ~/.scripts/gmail.py}
Аналогичные способы
Всё то же самое, но используя curl
, grep
и sed
:
$ curl -s -u '''email''':'''пароль''' https://mail.google.com/mail/feed/atom | grep fullcount | sed 's/<[^0-9]*>//g'
замените email и пароль на свои данные.
Также вы можете воспользоваться stunnel, предоставленном в пакете stunnel.
Следующая конфигурация взята из FAQ по conky
Измените /etc/stunnel/stunnel.conf
как показано ниже, а затем запустите демон stunnel
:
# Service-level configuration for TLS server [imap] client = yes accept = 143 connect = imap.gmail.com:143 protocol = imap sslVersion = TLSv1 # Service-level configuration for SSL server [imaps] client = yes accept = 993 connect = imap.gmail.com:993
Теперь осталось только отредактировать ~/.conkyrc
:
imap localhost username * -i 120 -p 993 TEXT Inbox: ${imap_unseen}/${imap_messages}
Здесь использована *
вместо пароля для того, чтобы сonky его спрашивал, но вы не обязаны так делать.
Показывать новые письма (IMAP + SSL)
Conky имеет встроенную поддержку IMAP аккаунтов, но не поддерживает SSL. Его может обеспечить следующий скрипт, взятый с этого форума. Для этого требуются Perl/CPAN модули Mail::IMAPClient и IO::Socket::SSL, которые находятся в пакетах perl-mail-imapclientAUR и perl-io-socket-ssl.
Создайте файл imap.pl
в месте, где его сможет прочитать conky. Добавьте следующее содержимое в этот файл, внеся соответствующие изменения:
#!/usr/bin/perl # gimap.pl by gxmsgx # description: get the count of unread messages on imap use strict; use Mail::IMAPClient; use IO::Socket::SSL; my $username = 'имя_пользователя'; my $password = 'пароль123'; my $socket = IO::Socket::SSL->new( PeerAddr => 'imap.server', PeerPort => 993 ) or die "socket(): $@"; my $client = Mail::IMAPClient->new( Socket => $socket, User => $username, Password => $password, ) or die "new(): $@"; if ($client->IsAuthenticated()) { my $msgct; $client->select("INBOX"); $msgct = $client->unseen_count||'0'; print "$msgct\n"; } $client->logout();
Добавьте в ~/.conkyrc
:
${execpi 300 ~/.conky/imap.pl}
или другое расположение, куда вы сохранили файл.
Если вы пользуетесь Gmail, вам может понадобиться сгенерировать пароль для конкретного приложения.
Также вы можете использовать stunnel, как описано выше: #Показывать количество новых писем из Gmail
Исправление прокручивания для кодировки UTF-8
В текущей версии conky (1.9.0) замечена ошибка (http://sourceforge.net/p/conky/bugs/341/), из-за которой прокрутка текста производится по байтам, а не по символам, из-за чего в тексте, содержащем мультибайтные символы происходит их исчезновение и появление при прокрутке. Пакет, с исправлением данного бага можно установить из AUR: conky-utfscrollAUR[ссылка недействительна: package not found]
Примеры конфигурации от пользователей
Graysky
Вот оно - изменяйте под вашу систему. Оптимизировано для четырёх ядерного процессора с несколькими hdd (хотя один из них не подсоединён на скриншоте) и видеокарты nvidia. Вы легко можете изменить этот пример под двух- или однопроцессорную машину с одним или любым другим количеством hdd.
Пример скрипта с поддержкой nvidia
# -- Conky settings -- # background no update_interval 1 cpu_avg_samples 2 net_avg_samples 2 override_utf8_locale yes double_buffer yes no_buffers yes text_buffer_size 2048 imlib_cache_size 0 # -- Window specifications -- # own_window yes own_window_type normal own_window_transparent yes own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below border_inner_margin 0 border_outer_margin 0 minimum_size 320 800 maximum_width 320 alignment bottom_right gap_x 0 gap_y 0 # -- Graphics settings -- # draw_shades no draw_outline no draw_borders no draw_graph_borders yes # -- Text settings -- # use_xft yes xftfont MaiandraGD:size=24 xftalpha 0.4 uppercase no default_color 888888 # -- Lua Load -- # lua_load ~/conky/lua/lua.lua lua_draw_hook_pre ring_stats TEXT ${alignr}${voffset 53}${goto 90}${font MaiandraGD:size=11}${time %A, %d %B %Y} ${voffset 5}${goto 164}${font MaiandraGD:size=16}${time %H:%M} ${voffset -40}${goto 100}${font MaiandraGD:size=9}Kernel:${offset 70}Uptime: ${goto 90}${font MaiandraGD:size=9}$kernel${offset 40}$uptime ${voffset 57}${goto 117}${font snap:size=8}${cpu cpu0}% ${goto 117}${cpu cpu1}% ${goto 117}CPU ${voffset 19}${goto 145}${memperc}% ${goto 145}$swapperc% ${goto 145}MEM ${voffset 25}${goto 170}${nvidia gpufreq} ${goto 170}${nvidia memfreq} ${goto 170}GPU ${voffset 27}${goto 198}${totaldown ppp0} ${goto 198}${totalup ppp0} ${goto 205}NET ${voffset 21} ${goto 222}${fs_used /home} ${goto 230}DISK
И приложеный lua.lua скрипт:
--[[ Ring Meters by londonali1010 (2009) This script draws percentage meters as rings. It is fully customisable; all options are described in the script. IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this does not happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num > 5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num > 3; conversely if you update Conky every 0.5s, you should use update_num > 10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error. To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua): lua_load ~/scripts/rings-v1.2.1.lua lua_draw_hook_pre ring_stats Changelog: + v1.2.1 -- Fixed minor bug that caused script to crash if conky_parse() returns a nil value (20.10.2009) + v1.2 -- Added option for the ending angle of the rings (07.10.2009) + v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009) + v1.0 -- Original release (28.09.2009) ]] settings_table = { { -- Edit this table to customise your rings. -- You can create more rings simply by adding more elements to settings_table. -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'. name='time', -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''. arg='%I.%M', -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100. max=12, -- "bg_colour" is the colour of the base ring. bg_colour=0x888888, -- "bg_alpha" is the alpha value of the base ring. bg_alpha=0.3, -- "fg_colour" is the colour of the indicator part of the ring. fg_colour=0x888888, -- "fg_alpha" is the alpha value of the indicator part of the ring. fg_alpha=0.5, -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window. x=191, y=145, -- "radius" is the radius of the ring. radius=32, -- "thickness" is the thickness of the ring, centred around the radius. thickness=4, -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative. start_angle=0, -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger (e.g. more clockwise) than start_angle. end_angle=360 }, { name='time', arg='%M.%S', max=60, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=191, y=145, radius=37, thickness=4, start_angle=0, end_angle=360 }, { name='time', arg='%S', max=60, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=191, y=145, radius=42, thickness=4, start_angle=0, end_angle=360 }, { name='cpu', arg='cpu0', max=100, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=140, y=300, radius=26, thickness=5, start_angle=-90, end_angle=180 }, { name='cpu', arg='cpu1', max=100, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=140, y=300, radius=20, thickness=5, start_angle=-90, end_angle=180 }, { name='memperc', arg='', max=100, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=170, y=350, radius=26, thickness=5, start_angle=-90, end_angle=180 }, { name='swapperc', arg='', max=100, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=170, y=350, radius=20, thickness=5, start_angle=-90, end_angle=180 }, { name='time', arg='%d', max=31, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=191, y=145, radius=50, thickness=5, start_angle=-140, end_angle=-30 }, { name='time', arg='%m', max=12, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=191, y=145, radius=50, thickness=5, start_angle=30, end_angle=140 }, -- { -- name='fs_used_perc', -- arg='/', -- max=100, -- bg_colour=0x888888, -- bg_alpha=0.3, -- fg_colour=0x888888, -- fg_alpha=0.5, -- x=260, y=503, -- radius=26, -- thickness=5, -- start_angle=-90, -- end_angle=180 -- }, { name='fs_used_perc', arg='/home', max=100, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=260, y=503, radius=20, thickness=5, start_angle=-90, end_angle=180 }, { name='totalup', arg='ppp0', max=2, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=230, y=452, radius=20, thickness=5, start_angle=-90, end_angle=180 }, { name='totaldown', arg='ppp0', max=2, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=230, y=452, radius=26, thickness=5, start_angle=-90, end_angle=180 }, { name='nvidia', arg='gpufreq', max=475, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=200, y=401, radius=26, thickness=5, start_angle=-90, end_angle=180 }, { name='nvidia', arg='memfreq', max=700, bg_colour=0x888888, bg_alpha=0.3, fg_colour=0x888888, fg_alpha=0.5, x=200, y=401, radius=20, thickness=5, start_angle=-90, end_angle=180 }, } require 'cairo' function rgb_to_r_g_b(colour,alpha) return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha end function draw_ring(cr,t,pt) local w,h=conky_window.width,conky_window.height local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle'] local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha'] local angle_0=sa*(2*math.pi/360)-math.pi/2 local angle_f=ea*(2*math.pi/360)-math.pi/2 local t_arc=t*(angle_f-angle_0) -- Draw background ring cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f) cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga)) cairo_set_line_width(cr,ring_w) cairo_stroke(cr) -- Draw indicator ring cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc) cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga)) cairo_stroke(cr) end function conky_ring_stats() local function setup_rings(cr,pt) local str='' local value=0 str=string.format('${%s %s}',pt['name'],pt['arg']) str=conky_parse(str) value=tonumber(str) if value == nil then value = 0 end pct=value/pt['max'] draw_ring(cr,pct,pt) end if conky_window==nil then return end local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height) local cr=cairo_create(cs) local updates=conky_parse('${updates}') update_num=tonumber(updates) if update_num>5 then for i in pairs(settings_table) do setup_rings(cr,settings_table[i]) end end end
Замечание о шрифтах
Большинство из наиболее красивых конфигураций .conkyrc
используют шрифты PizzaDude Bullets и Pie Charts for Maps. Они доступны в AUR в пакетах ttf-pizzadude-bulletsAUR и ttf-piechartsformapsAUR[ссылка недействительна: сохранено в aur-mirror] соответственно, или же вы можете найти и скачать их из интернета и установить вручную, как описано в статье Шрифты.
Универсальный способ включения настоящей прозрачности
Прозрачность в conky ведёт себя упрямо, но есть универсальный способ включения настоящей прозрачности с любым окружением или оконным менеджером - использование xcompmgr и transset-df. Установите пакеты xcompmgr и transset-df из официальных репозиториев. Оба эти пакета имеют одинаковые зависимости, поэтому это самый легкий способ для компоновки, для тех кто использует отдельные оконные менеджеры для достижения минимальной установки (или по какой-либо другой причине :D)
Проверьте документацию xcompmgr, чтобы разобраться, какие композитные опции вы хотите применить. Вот стандартная команда:
$ xcompmgr -c -t-5 -l-5 -r4.2 -o.55 &
Убедитесь, что conky запущен с conky &
. Используйте transset-df, чтобы включить прозрачность для окна conky. Установите '.5' в любое значение из диапазона 0 - 1:
$ transset-df .5 -n Conky
Это сделает окно conky по-настоящему прозрачным. Если у вас возникает ошибка типа:
$ transset-df .5 -n Conky
No Window matching Conky exists!
Проверьте, что conky запущен и, используя xprop, нажмите на окно conky, чтобы узнать название, которое вы должны вписать в transset-df
:
$ xprop | grep WM_NAME
WM_NAME(STRING) = "Conky (ArchitectLinux)"
В данном случае подошло conky, но у вас оно может отличаться, поэтому убедитесь, что вы использовали своё значение. Если в ~/.conkyrc
написано own_window_type panel
, тогда этот вызов xprop может сейчас выводить. Попробуйте использовать какую-нибудь из следующих опций: own_window_type {dock,normal,override,desktop}
.
Напишите в ~/.xinitrc
следующие строки, чтобы conky был прозрачным при запуске startx
:
xcompmgr -c -t-5 -l-5 -r4.2 -o.55 & conky -d; sleep 1 && transset-df .5 -n Conky