вторник, 8 марта 2011 г.

Скрипты переключающие цвет выводимого параметра

Для большей информативности, не всегда же смотришь на вывод параметров в конки, можно использовать скрипты переключающие цвет выводимого параметра при достижении им определённых значений.


Первый скрипт colorize.sh, написан на bash, и дискретно изменяет цвет. Может использоваться в классических конки для вывода температуры процессора, нагрузки на процессор и для привлечения внимания к любым выводимым параметрам. В одних из своих конок этот скрипт был мной задействован на информацию о количестве поступивших писем.

#!/bin/bash
# colorize.sh
COOL=60
WARM=95
if [[ $1 -lt $COOL ]]
   then echo "\${color 00BF00}"$1    # COOL
elif [[ $1 -gt $WARM ]]
   then echo "\${color FF0000}"$1    # HOT
else echo "\${color FFFF00}"$1       # WARM
fi
exit 0

 Пределы переключения цвета задаются в строках

COOL=60     -- нижний предел переключения
WARM=95   -- верхний предел переключения

 В данном примере выводимый параметр окрашен в зелёный цвет. При достижении порога в 60, градусов или процентов, происходит переключение на желтый, а при достижении 95 на красный цвет.

В conkyrc скрипт подключается такой строкой, пример для вывода температуры ядра

Temperature ${execpi 6 sensors | grep 'Core 0' | cut -c 15-16 | xargs ~/conky_26.02.2011/scripts/colorize.sh}${color}°


Второй скрипт написан на lua, но может использоваться и в классических конках. Этот скрипт плавно изменяет цвет от цвета установленного вами до красного цвета. Может применяться для вывода нагрузки CPU и используемого объёма памяти.

--[[ change_colour.lua by olgmen 19.02.2011

Изменение цвета текста в зависимости от величины выводимого параметра

Color change depending on the output parameter

When writing used a script written Brenden Matthews
Copyright (c) 2009 Brenden Matthews, all rights reserved.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Для запуска необходимо добавить в conkyrc следующие строки

lua_load ~/путь_к_скрипту/change_colour.lua

TEXT

# Для вывода нагрузки процессора

CPU0 ${lua_parse change_cpu_colour 0}${color} %
CPU1 ${lua_parse change_cpu_colour 1}${color} %
CPU2 ${lua_parse change_cpu_colour 2}${color} %

# Для вывода используемой памяти, свопа

mem ${lua_parse change_mem_colour memperc}${color} %
swap ${lua_parse change_mem_colour swapperc}${color} %

]]
require 'cairo'
function components_to_colour(r, g, b)
    -- Take the RGB components r, g, b, and return an RGB integer
    return ((math.floor(r + 0.5) * 0x10000) + (math.floor(g + 0.5) * 0x100) + math.floor(b + 0.5)) % 0xffffff -- no bit shifting operator in Lua afaik
end

function colour_to_components(colour)
    -- Take the RGB components r, g, b, and return an RGB integer
    return (colour / 0x10000) % 0x100, (colour / 0x100) % 0x100, colour % 0x100
end

function conky_change_colour (value, max, default_colour)

    if value == nil then value = 0 end

    local r, g, b = colour_to_components(default_colour)

    r = r + (256 - r) * value/max * 2

    if r > 255 then r = 255 end

    if r < 255 then

        g = g + (256 - g) * value/max * 2

        if g > 255 then g = 255 end
    else

        g = 255 - 255/(max/2) * (value - max/2)
    end

    b = b - b/max * value * 2

    if b < 0 then b = 0 end

    colour = components_to_colour(r, g, b)

    return string.format("${color #%06x}", colour)

end

function conky_change_cpu_colour(arg)

    str = conky_parse(string.format('${cpu cpu%s}', arg))
    value = tonumber(str)

    return conky_change_colour(value, 100, 0x3aca36) .. str
end

function conky_change_mem_colour(arg)

    str = conky_parse(string.format('${%s}', arg))
    value = tonumber(str)

    return conky_change_colour(value, 100, 0x3aca36) .. str
end

Все объяснения в заголовке скрипта. Единственное, что можно добавить, первоначальный цвет выводимых параметров можно установить в строках

 return conky_change_colour(value, 100, 0x3aca36) .. str

1 комментарий:

  1. Подскажите пожалуйста. Как менять цвет в зависимости от загрузки процессора, вот в этой строке :

    fg_colour=0x8DB1FF,
    -строка в скрипте LUA , скрипт построен на часах , выводит круглый бар.

    ОтветитьУдалить