Вы можете сделать что-то простое, подобное этому, которое использует execpi
для запуска сценария оболочки каждые 30 секунд, который анализирует вывод df /
и преобразует его в длинную строку conky color
команды и символы \ #
(поскольку #
используется для комментариев):
${execpi 30 df --output=pcent / | awk 'NR==2 {
n = ($1+0)/2; yellow = 20; red = 40;
if(n>=red) { r = "${color #ff0000}"; for(;n>=red;n--) r = r "\\#" }
if(n>=yellow){ y = "${color #ffff00}"; for(;n>=yellow;n--)y = y "\\#" }
g = "${color #00ff00}"; for(;n>0;n--) g = g "\\#";
print g y r
printf "%50s"," "
}' }
${color}
My df --output = pcent
выводит 2 линии; второй - используемый процент, например 69%
. Я пробовал это на conky 1.9.
Если ваш файл ~ / .conkyrc
был преобразован в формат версии 1.10, он будет содержать строку
conky.text = [[
. Убедитесь, что вы добавили указанный выше сценарий перед окончательным закрытием ]]
.
Кроме того, цвета 1,10, указанные как числа (например, # ff0000
выше), больше не начинаются с #
, поэтому следует использовать ff0000
и т. Д. в скрипте.
Для упрощения поместите следующий скрипт в отдельный файл где-нибудь в вашем PATH, скажем ~ / mydf
, сделайте его исполняемым ( chmod + x ~ / mydf
), а затем поместите это имя файла в ~ / .conkyrc
, например $ {execpi 30 ~ / mydf /}
#!/bin/bash
df --output=pcent "${1?}" | awk 'NR==2{
n = ($1+0)/2; yellow = 20; red = 40;
if(n>=red) { r = "${color ff0000}"; for(;n>=red;n--) r = r "\\#" }
if(n>=yellow){ y = "${color ffff00}"; for(;n>=yellow;n--)y = y "\\#" }
g = "${color 00ff00}"; for(;n>0;n--) g = g "\\#";
print g y r
printf "%50s"," "
}'
Если вы хотите поместить весь сценарий в ~ / .conkyrc
, вам нужно будет увеличить размер буфера по умолчанию, иначе команда будет усечена до 256 символов. Это приводит к ошибкам типа
sh: -c: line 0: unexpected EOF while looking for matching `''
. Для этого в 1.10 добавьте строку внутри части conky.config = {...}
, убедившись, что вы разделяете настройки запятой (,
):
text_buffer_size = 400,
В conky 1.9 добавьте строку перед разделом TEXT
:
text_buffer_size 400
Чтобы остановить изменение размера окна по мере увеличения количества напечатанных символов, последний printf "% 50s", ""
добавляет секунду строка пробелов максимальной длины. В качестве альтернативы добавьте параметр конфигурации для минимального размера окна в пикселях, например minimum_size 500
(или minimum_size = 500,
для 1.10), где используемое значение зависит от шрифта. ширина символа #
.
Создайте каталог build
и загрузите туда патч, сохранив его как d.patch
.
Следуйте этому сценарию. (Я сохранил всю сессию, чтобы вы знали, из каких каталогов вы должны использовать эти заклинания ).
[user@MACHINE build]$ git clone git://git.gnome.org/gnome-settings-daemon #download GSD source
[user@MACHINE build]$ git clone git://git.gnome.org/libgnome-volume-control #download dependency
[user@MACHINE build]$ cd gnome-settings-daemon/
[user@MACHINE gnome-settings-daemon]$ git checkout GNOME_SETTINGS_DAEMON_3_18_2 #get the version for which the script was prepared
[user@MACHINE gnome-settings-daemon]$ git submodule init #download more dependencies
[user@MACHINE gnome-settings-daemon]$ git config --local submodule.panels/media-keys/gvc.url../libgnome-volume-control
[user@MACHINE gnome-settings-daemon]$ git submodule update
[user@MACHINE gnome-settings-daemon]$ cd..
[user@MACHINE build]$ wget https://launchpad.net/ubuntu/+archive/primary/+files/gnome-settings-daemon_3.18.2-0ubuntu2.debian.tar.xz #download Ubuntu patches - that's why I asked you about your OS
[user@MACHINE build]$ tar -xf gnome-settings-daemon_3.18.2-0ubuntu2.debian.tar.xz
[user@MACHINE build]$ cd gnome-settings-daemon/
[user@MACHINE gnome-settings-daemon]$ patch -p1 -i../debian/patches/64_restore_terminal_keyboard_shortcut_schema.patch #apply Ubuntu patches if you want Ubuntu version of GSD
[user@MACHINE gnome-settings-daemon]$ patch -p1 -i../debian/patches/ubuntu-lid-close-suspend.patch
[user@MACHINE gnome-settings-daemon]$ patch -p1 -i../debian/patches/revert_background_dropping.patch
[user@MACHINE gnome-settings-daemon]$ patch -p1 -i../debian/patches/revert-gsettings-removals.patch
[user@MACHINE gnome-settings-daemon]$ cd..
[user@MACHINE build]$ mv gnome-settings-daemon gnome-settings-daemon-3.18.2
[user@MACHINE build]$ patch -p0 <d.patch #patch with downloaded patch
[user@MACHINE build]$ cd gnome-settings-daemon-3.18.2/
[user@MACHINE gnome-settings-daemon-3.18.2]$ NOCONFIGURE=1./autogen.sh #generate config script - would fail if we wouldn't download those dependencies before
[user@MACHINE gnome-settings-daemon-3.18.2]$./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/gnome-settings-daemon --disable-static #configure - will check for dependencies - you might need to download some packages
[user@MACHINE gnome-settings-daemon-3.18.2]$ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool #see https://bugzilla.gnome.org/show_bug.cgi?id=656231
[user@MACHINE gnome-settings-daemon-3.18.2]$ make
[user@MACHINE gnome-settings-daemon-3.18.2]$ make install
Скрипт адаптирован из здесь . Вы можете увидеть там примерно зависимости, необходимые для его настройки.
TL;DR Единственное волшебство — собрать вместе все исходники :git submodules
, патчи Ubuntu с панели запуска и libgnome-volume-control
. Это будет работать без применения sed
. Все остальное - стандартная процедура.