Add conkys and wallpapers

This commit is contained in:
kuben
2019-11-03 15:04:22 +01:00
parent a58cdb6355
commit 86764734fd
57 changed files with 1669 additions and 0 deletions

54
.conky/music/.conkyrc-music Executable file
View File

@@ -0,0 +1,54 @@
conky.config = {
use_spacer='none',
use_xft=true,
font='Liberation Sans:Bold:size=24',
text_buffer_size=2048,
update_interval=1.0,
total_run_times=0,
own_window=true,
own_window_transparent=true,
own_window_type='normal',
own_window_hints='undecorated,skip_taskbar,skip_pager',
own_window_class='Conky-music',
own_window_argb_visual=true,
own_window_argb_value=0,
draw_shades=false,
draw_outline=false,
draw_borders=false,
stippled_borders=0,
double_buffer=true,
draw_blended=false,
default_color='white',
default_shade_color='black',
--Minimum size of text area
maximum_width=1200 ,
--alignment='top_left',
--gap_x=1940,
--gap_y=0,
no_buffers=true,
net_avg_samples=2,
override_utf8_locale=true,
use_spacer=none,
short_units=on,
default_color='dddddd',
color1 = 'C7FF8E',
color2 = '000000',
color7 = '333333'
};
conky.text = [[
${if_existing /tmp/kuba_now_playing }
${color2}${exec cat /tmp/kuba_now_playing 2> /dev/null}${color}
${image /tmp/kuba_now_playing_cover.png -p -f 3 0,0 -s 200x200}
${else}
Not playing
${endif}
]];

26
.conky/music/fetch_art.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
# Written by Demetrio Ferro <ferrodemetrio@gmail.com> <https://twitter.com/DemetrioFerro>
# Distributed under license GPLv3+ GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY. YOU USE AT YOUR OWN RISK. THE AUTHOR
# WILL NOT BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY
# OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE.
# See the GNU General Public License for more details.
first_cover=""
while :
do
if [ -e ~/.conky/music/meta ]
then
new_cover=$(cat ~/.conky/music/meta | awk -F \' '{for(i=1;i<=NF;i++) if ($i=="mpris:artUrl") print $(i+2)}')
if [ "$new_cover" != "$first_cover" ]
then
first_cover="$new_cover"
wget -O ~/.conky/music/last_album_pic.png $new_cover
fi
fi
sleep 1
done

22
.conky/music/fetch_meta.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
old_meta=""
while :
do
if [ "$(playerctl status)" = "Playing" ]
then
new_meta=$(playerctl metadata)
if [ "$new_meta" != "$old_meta" ]
then
echo $new_meta > ~/.conky/music/meta
old_meta=$new_meta
fi
else
new_meta=''
if [ -e ~/.conky/music/meta ]
then
rm ~/.conky/music/meta
fi
fi
sleep 1
done

16
.conky/music/format.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
width=26
space=' ' #20 spaces
if [ -f $META_FILE ]; then
artist=$(cat ~/.conky/music/meta | awk -F \' '{for(i=1;i<=NF;i++) if ($i=="xesam:artist") print $(i+2)}')
album=$(cat ~/.conky/music/meta | awk -F \' '{for(i=1;i<=NF;i++) if ($i=="xesam:album") print $(i+2)}')
title=$(cat ~/.conky/music/meta | awk -F \' '{for(i=1;i<=NF;i++) if ($i=="xesam:title") print $(i+2)}')
out=$(echo "$artist"; echo "$title"; echo "$album")
out=$(echo "$out" | fmt -s --width $width)
mapfile -t var <<< "$out"
for word in "${var[@]}"; do
echo "$space $word"
done
else
echo "Nothing playing"
fi

BIN
.conky/music/last_album_pic.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

58
.conky/music/launcher.sh Executable file
View File

@@ -0,0 +1,58 @@
#!/bin/bash
fetch_art(){
first_cover=""
if [ -e ~/.conky/music/meta ]
then
new_cover=$(cat ~/.conky/music/meta | awk -F \' '{for(i=1;i<=NF;i++) if ($i=="mpris:artUrl") print $(i+2)}')
if [ "$new_cover" != "$first_cover" ]
then
first_cover="$new_cover"
wget -O ~/.conky/music/last_album_pic.png $new_cover
fi
fi
}
fetch_meta(){
old_meta=""
if [ "$(playerctl status)" = "Playing" ]
then
new_meta=$(playerctl metadata)
if [ "$new_meta" != "$old_meta" ]
then
echo $new_meta > ~/.conky/music/meta
old_meta=$new_meta
fi
else
new_meta=''
if [ -e ~/.conky/music/meta ]
then
rm ~/.conky/music/meta
fi
fi
}
running=false
while :
do
if [ $running = false ]; then
spotify_process_id=$(pidof spotify)
if [[ ! -z $spotify_process_id ]]; then
~/.conky/music/fetch_meta.sh & meta_PID=$!
~/.conky/music/fetch_art.sh & art_PID=$!
running=true
fi
else
spotify_process_id=$(pidof spotify)
if [[ -z $spotify_process_id ]]; then
if [[ ! -z $meta_PID ]]; then
kill $meta_PID
fi
if [[ ! -z $art_PID ]]; then
kill $art_PID
fi
running=false
fi
fi
sleep 10
done

View File

@@ -0,0 +1,63 @@
#!/usr/bin/env python3
import os
import urllib.request
import gi
gi.require_version('Playerctl', '2.0')
from gi.repository import Playerctl, GLib
metadata_file = '/tmp/kuba_now_playing'
album_cover_file = '/tmp/kuba_now_playing_cover.png'
manager = Playerctl.PlayerManager()
last_spotify_metadata = None # Keep this as spotify gives several notifications
def on_play(player, status, manager):
# print('player is playing: {}'.format(player.props.player_name))
pass
def download_album_cover(url):
image = urllib.request.urlopen(url)
with open(album_cover_file,'wb') as output:
output.write(image.read())
space = ' '
def on_metadata(player, metadata, manager):
global last_spotify_metadata
if last_spotify_metadata == metadata:
return
last_spotify_metadata = metadata
keys = metadata.keys()
with open(metadata_file, 'w+') as f:
f.write('{}{}\n'.format(space, metadata['xesam:artist'][0]))
f.write('{}{}\n'.format(space, metadata['xesam:title']))
f.write('{}{}'.format(space, metadata['xesam:album']))
download_album_cover(metadata['mpris:artUrl'])
def init_player(name):
# choose if you want to manage the player based on the name
if name.name in ['spotify']:#, 'vlc', 'cmus']:
player = Playerctl.Player.new_from_name(name)
#player.connect('playback-status::playing', on_play, manager)
player.connect('metadata', on_metadata, manager)
manager.manage_player(player)
return player
def on_name_appeared(manager, name):
player = init_player(name)
# if player != None:
# print('player has appeared: {}'.format(player.props.player_name))
def on_player_vanished(manager, player):
print('player has exited: {}'.format(player.props.player_name))
os.remove(metadata_file)
manager.connect('name-appeared', on_name_appeared)
manager.connect('player-vanished', on_player_vanished)
for name in manager.props.player_names:
init_player(name)
main = GLib.MainLoop()
main.run()