Я конечно все понимаю, философия
Arhc'a такая, что все должно работать как задумывал разработчик, но если проект мягко говоря заброшен, а очень нужная фичя в программе есть, но не работает, вот тут то к нам на помощь и приходят патчи.
Многие насмехаются над пользователями
conky, за излишество выводимых данных, и в частности за версию ядра, лично я в этом ничего такого не вижу, ядро обновляется как минимум раз в неделю, и бывает забываешь какая там версия… Но сейчас не об этом, установив
conky и скопировав старый конфиг из
debian, я не увидел не температуры видеокарты, не процессора… да даже в статусе бесперебойника стояло N/A хотя служба
apcusbd была настроена и прекрасно работала. Я стал разбираться, выяснилось что это древний баг коньков, а патч есть в пакете
debian'a. Погнали, заставим эту сучку работать!
Обновил статью но процесс сборки не трогал, я давно уже использую conky-nvidia, apcusb давно работает из коробки.
Я особо не стал заморачиваться и воспользовался системой
PKGBUILD Arhc'a.
Я взял готовый PKBUILD из [
https://aur.archlinux.org/packages/conky-lua-nv/] и немножко его подправил.
# Maintainer: Jon Wilson <bugs@pandorica.net>
# Contributor: Spyros Stathopoulos <foucault.online[at]gmail[dot]com>
# Contributor: Andrwe Lord Weber <lord-weber-andrwe [at] andrwe [dot] org>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: James Rayner <james@archlinux.org>
# Contributor: Partha Chowdhury <kira.laucas@gmail.com>
pkgname=conky-nv
_pkgname=conky
pkgver=1.9.0
pkgrel=6
pkgdesc="An advanced system monitor for X based on torsmo with lua and nvidia enabled"
arch=('i686' 'x86_64')
url="http://conky.sourceforge.net/"
license=('custom')
replaces=('torsmo' 'conky')
conflicts=('conky')
provides=('conky')
depends=('alsa-lib' 'libxml2' 'curl' 'cairo' 'libxft' 'glib2' 'libxdamage' 'imlib2' )
makedepends=('pkgconfig' 'libxnvctrl')
optdepends=('nvidia: for GT4xx and newer GPUs',
'nvidia-340xx: for G8x, G9x, GT2xx GPUS',
'nvidia-304xx: for GeForce 6/7 GPUs')
backup=(etc/conky/conky.conf etc/conky/conky_no_x11.conf)
source=(http://downloads.sourceforge.net/project/${_pkgname}/${_pkgname}/${pkgver}/${_pkgname}-${pkgver}.tar.bz2 apcupsd.patch 3616.patch)
md5sums=('d3de615f43aadc98d555e05ad9e902c2'
'7f25a356d8944c82bebc1c85c88c4e27'
'8c744eb18015df9d06b12ec81a45ee76')
install="conky-nv.install"
build() {
cd ${srcdir}/${_pkgname}-${pkgver}
pwd
patch -p1 < ../apcupsd.patch
patch -p1 < ../3616.patch
sed -i '/#include <curl\/types.h>/d' ${srcdir}/${_pkgname}-${pkgver}/src/ccurl_thread.c
./configure --prefix=/usr \
--sysconfdir=/etc \
--enable-ibm \
--enable-imlib2 \
--enable-ibm \
--enable-nvidia
make
}
package() {
cd ${srcdir}/${_pkgname}-${pkgver}
make DESTDIR=${pkgdir} install
install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE
install -D -m644 extras/vim/syntax/conkyrc.vim "${pkgdir}"/usr/share/vim/vimfiles/syntax/conkyrc.vim
install -D -m644 extras/vim/ftdetect/conkyrc.vim "${pkgdir}"/usr/share/vim/vimfiles/ftdetect/conkyrc.vim
}
# vim:ts=2:et:sw=2
Выкладываю патчи отдельно [
3616.patch] [
apcupsd.patch]
Уже собранный пакет [
conky-nv-1.9.0-6-x86_64.pkg.tar.xz]
И если у вас есть желание собрать самим скачиваем [
conky-nv.tar.gz],
распаковываем
tar xf conky-nv.tar.gz
, заходим в каталог
cd conky-nv
и начинаем сборку
makepkg
если все прошло хорошо, в этом же каталоге должен появиться собранный пакет, остается его только установить
pacman -U conky-nv-1.9.0-6-x86_64.pkg.tar.xz
(так он будет называется если у вас 64х битная система).
Ну а теперь пользуемся и наслаждаемся рабочим
conky.
Мой скрин и конфиг коньков:
~/.conkyrc
conky.config = {
background = false,
update_interval = 1,
cpu_avg_samples = 6,
net_avg_samples = 2,
minimum_width = 310,
temperature_unit = 'celsius',
double_buffer = true,
no_buffers = true,
text_buffer_size = 2048,
gap_x = 20,
gap_y = 40,
own_window = true,
own_window_type = 'desktop',
own_window_transparent = true,
own_window_argb_visual = true,
own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
border_inner_margin = 0,
border_outer_margin = 0,
alignment = 'top_right',
draw_shades = false,
draw_outline = false,
draw_borders = false,
draw_graph_borders = false,
override_utf8_locale = true,
use_xft = true,
xftalpha = 0.5,
uppercase = false,
font = 'caviar dreams:size=10',
template0 = 'Ubuntu:size=10:weight:bold',
template1 = 'Ubuntu:size=10:weight:normal',
template2 = 'Monospace:size=10:weight:normal',
template3 = 'Sans:size=10:weight:normal',
default_color = 'FFFFFF',
color1 = 'DDDDDD',
color2 = 'AAAAAA',
color3 = '888888',
color4 = 'ff5951',
}
conky.text = [[
${font $template0}${color}System
${font $template1}${color}Kernel${alignr}${kernel}
${color}Uptime${alignr}${uptime}
${font $template0}${color}CPU: ${cpu cpu0}% ${alignr} ${loadavg}
${font $template0}${color}MEM: ${memperc}% ${alignr}$memeasyfree
${cpugraph cpu0 FF0019 0AFF00 s}
${font $template1}${color}Processes: $processes Running: $running_processes
${font $template2}${color}Name PID CPU% MEM%
${color4} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem_res 1}
${color2} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem_res 2}
${color2} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem_res 3}
${color3} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem_res 4}
${color3} ${top name 5} ${top pid 5} ${top cpu 5} ${top mem_res 5}
${font $template0}${color}Disks I/O:${alignr}$diskio
${font $template1}${color}root:${alignr}${fs_free /}
${color}tmp:${alignr}${fs_free /tmp}
${color}home:${alignr}${fs_free /home}
${color}myfiles:${alignr}${fs_free /mnt/myfiles}
${color}clsv:${alignr}${fs_free /mnt/clsv}
${font $template0}${color}Network
${font $template1}${color}eth1: ${downspeed eth1}${goto 100}${downspeedgraph eth1 10,60 000000 00ff00}${goto 190}${upspeedgraph eth1 10,60 000000 ff0000}${alignr}${upspeed eth1}
${color}total: ${totaldown eth1}${alignr}${totalup eth1}
${font $template0}${color}Ping
${font $template1}${color}gateway:${alignr}${execpi 15 cat /tmp/p/IP_ADDRESS}
${color}yandex.ru:${alignr}${execpi 15 cat /tmp/p/93.158.134.3}
${font $template0}${color}Temperature
${font $template1}${color}CPU:${alignr}${hwmon 2 temp 2}°С
${color}System:${alignr}${hwmon 2 temp 1}°С
${color}Nvidia GPU:${alignr}${nvidia temp}°С
${color}HDD:${alignr}${hddtemp /dev/sdc}°С ${hddtemp /dev/sda}°С ${hddtemp /dev/sdb}°С ${hddtemp /dev/sdd}°С
${font $template0}${color}UPS${apcupsd 192.168.84.5 3551}
${font $template1}${color}Status:${alignr}${apcupsd_status}
${color}Time Left:${alignr}${apcupsd_timeleft}m
${color}Bcharge:${alignr}${apcupsd_charge}%
${color}Voltage:${alignr}${apcupsd_linev}V
${color}Load:${alignr}${apcupsd_load}%
${font $template0}${color}Ports${alignr}${font $template0}${color}Total open: ${tcp_portmon 1 65535 count}
#${font $template0}${color}Yandex.disk
# ${font $template2}${color}Status: ${alignr}${texeci 30 sed -n 2p ~/Yandex.Disk/.sync/status}
${font $template0}${color}Курс $$ и € на ${time %d.%m.%Y}
${font $template2}${color}${execpi 3600 ~/.conky/zabugor.php}
]]
Данный скрипт каждые 10 минут перечитывает файл /path/to/servers_list и пингует адреса указанные там, результаты записывает в /tmp/p/ а конки уже оттуда читает.
~/.conky/ping.sh
#!/bin/bash
path=/tmp/p/
mkdir -p $path
while true; do
while read ip; do
time=`ping ${ip} -c 1 -W 5| grep "time=" | awk '{print $7 $8}' | sed 's/time=//g'`
if [ -z $time ]
then
echo "\${color #ff0000}host is down" > ${path}${ip}
else
echo "\${color #00ff00}"$time > ${path}${ip}
fi
done < "/path/to/servers_list"
sleep 10
done
/path/to/server_list
93.158.134.3
93.158.134.1
93.158.134.2
В связи скачек доллара, наваял небольшой скриптик на
php, который получает с сайта
центробанка текущий курс доллара и евро
#!/usr/bin/php
<?php
$currencies = [
'R01239' => [
'NumCode' => 978,
'symbol' => '€',
],
'R01235' => [
'NumCode' => 840,
'symbol' => '$$',
],
];
$td = date("d/m/Y");
$yd = date("d/m/Y", strtotime('yesterday'));
$data['today'] = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=" . $td);
$data['yesterday'] = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=" . $yd);
foreach ($currencies as $id => &$params) {
foreach ($data as $day => $xml) {
if ($find = $xml->xpath('//Valute[@ID="' . $id . '"]')) {
if ($find[0]->NumCode == $params['NumCode']) {
$params[$day] = floatval(str_replace(',', '.', $find[0]->Value));
}
}
}
}
foreach ($currencies as $value) {
$diff = round($value['today'] - $value['yesterday'], 4);
$diff = $diff > 0 ? '+' . $diff : $diff;
print '${alignr}' . $value['symbol'] . '= ' . $value['today'] . "₽ ( $diff )\n";
}
В массиве
$currencies укажите ID и NumCode интересующей вас валюты, посмотреть их можно по ссылке [
http://www.cbr.ru/scripts/XML_daily.asp ]
Всем коньков.
UPD: Обновил заметку 20.03.2019 только конфиг и скрипты.
Сделал все как вашей статье, сами конки отображаются, но zabugor.php скрипт не запускается.
Пожалуйста, помогите разобраться.
Система у меня 5.0.2-arch1-1-ARCH #1 SMP PREEMPT Thu Mar 14 18:47:49 UTC 2019 x86_64 GNU/Linux.
Спасибо
Скрипт сейчас проверил все работает, данные получает.
Если он вам не помешает можете его установить
Теперь осталось разобраться почему курс такой странный показывает,
открыл ссылку из скрипта там вообще не нашел ни 98,3057 ни 64,6694.
Скрипт как валюту определяет по Valute ID=«R01239» или по NumCode>978?
Судя по кусочку кода в скрипте Valute[9] я так понял что по Valute ID,
но как его правильно вставить в скрипт не понял.
Пожалуйста, помогите и это исправить. Думаю если вы этими конками пользуетесь, вам то же нужен правильный курс.
Спасибо
$xml->Valute[9] — а именно 9, что бы смотрел по ID или numcode нужно переписывать скрипт, если время будет перепишу и сообщу, а так по идее все должно работать, во всяком случае логику я его не правил и у меня отображается курс верно