Skip to content

Instantly share code, notes, and snippets.

@TiZ-HugLife
Last active August 29, 2015 14:15
Show Gist options
  • Save TiZ-HugLife/5df3c05268dd5ce8e5e3 to your computer and use it in GitHub Desktop.
Save TiZ-HugLife/5df3c05268dd5ce8e5e3 to your computer and use it in GitHub Desktop.
Quod Libet conky
update_interval 1.0
update_interval_on_battery 5.0
total_run_times 0
alignment br
gap_x 83
gap_y 15
use_xft yes
override_utf8_locale yes
xftfont Liberation Sans:size=12
border_width 0
border_inner_margin 2
border_outer_margin 0
draw_shades yes
own_window yes
own_window_type desktop #Change to normal when using GNOME Shell
own_window_title QuodLibet-Conky
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent yes
own_window_argb_visual yes
max_text_width 0
minimum_size 20 10
default_color FFFFFF
color1 FFFFFF
text_buffer_size 65536
double_buffer yes
no_buffers yes
lua_load ~/.conky/QLInfo/draw.lua
lua_draw_hook_pre draw 0x000000 0.35 16 0 0 16
TEXT
${execp ~/.conky/QLInfo/qlinfo.sh -h -f"Liberation Sans" -F"Meguri P" -s9 -t12 -S64 -v0 -a76 -r4}
update_interval 1.0
update_interval_on_battery 5.0
total_run_times 0
alignment br
gap_x 2
gap_y 2
use_xft yes
override_utf8_locale yes
xftfont Liberation Sans:size=12
border_width 0
border_inner_margin 2
border_outer_margin 0
draw_shades yes
own_window yes
own_window_type desktop #Change to normal when using GNOME Shell
own_window_title QuodLibet-Conky-Cover
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent yes
own_window_argb_visual yes
max_text_width 0
minimum_size 74 74
default_color FFFFFF
color1 FFFFFF
text_buffer_size 65536
double_buffer yes
no_buffers yes
lua_load ~/.conky/QLInfo/draw.lua
lua_draw_hook_pre draw_cover 0x000000 0.35 14 13 2 2 true
TEXT
require 'cairo'
local function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
local function check_ql()
local test = io.open("/tmp/.qlopen", "r")
print(test)
if test == nil then
return false
else
test:close()
return true
end
end
function conky_draw(bg_colour, bg_alpha, rad_tl, rad_tr, rad_br, rad_bl, v)
if conky_window == nil then return end
--if not check_ql() then return end
if v == nil then v = 0 end
local w = conky_window.width
local h = conky_window.height
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, w, h)
local cr = cairo_create(cs)
cairo_move_to(cr,rad_tl,0)
cairo_line_to(cr,w-rad_tr,0)
cairo_curve_to(cr,w,0,w,0,w,rad_tr)
cairo_line_to(cr,w,h+v-rad_br)
cairo_curve_to(cr,w,h+v,w,h+v,w-rad_br,h+v)
cairo_line_to(cr,rad_bl,h+v)
cairo_curve_to(cr,0,h+v,0,h+v,0,h+v-rad_bl)
cairo_line_to(cr,0,rad_tl)
cairo_curve_to(cr,0,0,0,0,rad_tl,0)
cairo_close_path(cr)
cairo_set_source_rgba(cr,rgb_to_r_g_b(bg_colour,bg_alpha))
cairo_fill(cr)
cairo_surface_destroy(cs)
cairo_destroy(cr)
end
function conky_draw_cover(bg_colour, bg_alpha, top, bottom, x, y, middle)
if conky_window == nil then return end
if top == nil then top = 0 end
if bottom == nil then bottom = 0 end
if x == nil then x = 0 end
if y == nil then y = 0 end
local w = conky_window.width
local h = conky_window.height
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, w, h)
local cr = cairo_create(cs)
if middle then w = w / 2 end
cairo_move_to(cr,0,top)
cairo_line_to(cr,w,top)
cairo_line_to(cr,w,h-bottom)
cairo_line_to(cr,0,h-bottom)
cairo_line_to(cr,0,top)
cairo_close_path(cr)
cairo_set_source_rgba(cr,rgb_to_r_g_b(bg_colour,bg_alpha))
cairo_fill(cr)
local image = cairo_image_surface_create_from_png("/tmp/conkycover.png")
if image then
cairo_set_source_surface(cr, image, x, y)
cairo_paint(cr)
end
cairo_surface_destroy(cs)
cairo_surface_destroy(image)
cairo_destroy(cr)
end
#!/bin/bash
# Requires imagemagick. Configure Quod Libet's Picture Saver plugin to save
# the cover to /tmp/current.cover
([[ -z "$(pgrep quodlibet)" ]] || [[ ! -e ~/.quodlibet/current ]]) && exit 0
VOFFSET=30
HOFFSET=112
FONT="Avenir LT 65 Medium"
FALLBACKFONT="WenQuanYi Micro Hei" # In case of Japanese music.
FONTSIZE=10
TITLESIZE=14
IMGSIZE=96
RADIUS=12
SHADOWTYPE=0
while getopts :s:t:S:f:F:v:a:r:hH OPT; do
case $OPT in
s) FONTSIZE="$OPTARG" ;;
t) TITLESIZE="$OPTARG" ;;
S) IMGSIZE="$OPTARG" ;;
f) FONT="$OPTARG" ;;
F) FALLBACKFONT="$OPTARG" ;;
v) VOFFSET="$OPTARG" ;;
a) HOFFSET="$OPTARG" ;;
r) RADIUS="$OPTARG" ;;
h) SHADOWTYPE=1 ;;
H) SHADOWTYPE=2 ;;
esac
done
[[ "$SHADOWTYPE" = "1" ]] && VOFFSET=$((VOFFSET + 10))
cd /tmp
CUR="$(quodlibet --print-playing '${font %font%:Bold:size='$TITLESIZE'}${alignr} <title>${font %font%:Bold:size='$FONTSIZE'}<artist|
${alignr} <artist>>${font %font%:size='$FONTSIZE'}<album|
${alignr} <album>><website|
${alignr} <website>>')"
if [[ "$(cat .current.song)" != "$CUR" ]]; then
IN=current.cover
[[ ! -e $IN ]] && IN=~/.conky/QLInfo/nocover.png
convert $IN -resize ${IMGSIZE}x${IMGSIZE} .qli-step1.png
convert .qli-step1.png -format "roundrectangle 0,0 %[fx:w-1],%[fx:h-1] $RADIUS,$RADIUS" \
info: > .qli-draw.mvg
convert .qli-step1.png -border 0 -alpha transparent -background none -fill \
white -stroke none -strokewidth 0 -draw "@.qli-draw.mvg" .qli-mask.png
convert .qli-step1.png -alpha set -bordercolor none -border 0 .qli-mask.png \
-compose DstIn -composite .qli-step2.png
convert .qli-step2.png -background none -gravity center -extent ${IMGSIZE}x${IMGSIZE} \
.qli-step3.png
if [[ "$SHADOWTYPE" = "1" ]]; then
convert .qli-step3.png \( +clone -background black -shadow 90x3+0+0 \) \
+swap -background none -layers merge +repage conkycover.png
elif [[ "$SHADOWTYPE" = "2" ]]; then
convert .qli-step3.png +level 0%,0% .qli-step4.png
composite -compose Dst_Over -geometry +1+1 .qli-step4.png .qli-step3.png \
conkycover.png
else
mv .qli-step3.png conkycover.png
fi
rm .qli-step*.png .qli-mask.png .qli-draw.mvg
echo "$CUR" > .current.song
fi
if (echo "$CUR" | grep -P '[^[:ascii:]]' > /dev/null); then
CUR="$(echo "$CUR" | sed -e "s/%font%/$FALLBACKFONT/g")"
else
CUR="$(echo "$CUR" | sed -e "s/%font%/$FONT/g")"
fi
IMGDIFF=$((588 - IMGSIZE))
#echo -e '${image /tmp/conkycover.png -p '$IMGDIFF',0}${voffset '$VOFFSET'}'"$CUR"'${font}'
#echo -e '${voffset '$VOFFSET'}'"$CUR"'${font}'
echo -e "$CUR"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment