LINUX.ORG.RU

Изображение в conky

 ,


0

2

Решил таки поставить изображение в вывод conky и столкнулся с такой проблемой.

${image ~/Ar14119.jpg -p 165,415 -s 96x72}
Опция -p 165,415 считает координаты так, что 0,0 - это левый верхний угол conky. А мне нужен любой, но нижний угол, ибо ставлю изображение почти в конце вывода, а в середине у conky некоторое количество строк изменяется динамически. В результате изображение «наплывает» на строки.

Есть ли способ этого избежать?

★★★★

Хочешь, чтобы изображение плавало синхронно с текстом? Вряд ли так можно сделать. Просто оставляй свободное место под максимальное количество динамических строк.

Worron ★★★
()

Сталкивался с проблемой, когда делал отображение обложки альбома, играющего в плеере в данный момент. У меня не было текста в коньках, но нужно было выравнивать по правому нижнему углу – в итоге решил проблему наложением картинки на прозрачный фон нужного размера imagemagick-ом, который и отвечает за выравнивание.

Подпишусь, может чего дельного насоветуют.

si0 ★★★
()
Ответ на: комментарий от Allakka

Хотя, я тут подумал, через lua можно картинку привязать к нижнему краю. Это если не против использования lua в коньках.

Worron ★★★
()
Ответ на: комментарий от Allakka

Ну я сам на практике не проверял, попозже попробую накидать скриптик, получится - отпишу здесь.

Worron ★★★
()
Ответ на: комментарий от Allakka

В общем, по поводу lua, добавляешь в свой конфиг строчки перед TEXT, пути, естественно, здесь и далее везде свои поставь:

lua_load /home/vorron/Documents/conky/image-by-bottom.lua
lua_draw_hook_post main

Скрипт image-by-bottom.lua

require 'cairo'

function conky_main()
	
	-- initialization cairo
	----------------------------
	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)
	cr = cairo_create(cs)

	-- image
	----------------------------
	local image_name = "/home/vorron/Documents/conky/audio.png"
	local image = cairo_image_surface_create_from_png(image_name)
	
	-- set position and size
	----------------------------
	local gap = {
		x = 50,
		y = 80
	}
	local size = {
		w = 128,
		h = 128
	}

	-- draw
	----------------------------
	cairo_translate (cr, gap.x, conky_window.height - size.h - gap.y) -- by left bottom
	--cairo_translate (cr, conky_window.width - size.w - gap.x, conky_window.height - size.h - gap.y) -- by right bottom
	
	cairo_scale (cr, size.w/cairo_image_surface_get_width (image), size.h/cairo_image_surface_get_height (image))
	cairo_set_source_surface (cr, image, 0, 0)
	cairo_paint (cr)
	cairo_surface_destroy (image)

	-- destroy cairo
	----------------------------
	cairo_destroy(cr)
	cairo_surface_destroy(cs)
	cr=nil
end
Ну и сам lua должен быть в системе установлен.

Worron ★★★
()
Ответ на: комментарий от Worron

Спасибо, теперь объясните как это проверить. Я так понимаю это lua скрипт и его можно запускать в консоли. При запуске выдаёт такое

./image.lua: line 1: require: команда не найдена
./image.lua: line 5: syntax error near unexpected token `--'
./image.lua: line 5: `       -- initialization cairo'
И ещё вопрос. У меня изображение Ar14119.jpg, а в скрипте png. Что надо сделать? Перевести jpg в png или можно подправить этот скрипт?

Allakka ★★★★
() автор топика
Ответ на: комментарий от Allakka

Не, запускать этот скрипт должны коньки, там обращение к параметрам окна conky, так что проверить в консоли не получится. Те две строчки, что приведены первыми нужно вставить в твой .conkyrc перед секцией TEXT. Первая это ссылка на внешний lua скрипт, пропиши там путь к image.lua, или как там ты его обзовешь. Потом просто запускаешь коньки, как обычно.

По поводу картинки, лучше сохранить в png, насколько я знаю для jpg нужны будут лишние телодвижения. И да, забыл упомянуть, отрисовка картинки здесь идет через cairo, так что оно должно быть в системе.

Worron ★★★
()
Ответ на: комментарий от Worron

Огромное спасибо! Всё работает!

Allakka ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.