Add conkys and wallpapers
This commit is contained in:
54
.conky/music/.conkyrc-music
Executable file
54
.conky/music/.conkyrc-music
Executable 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
26
.conky/music/fetch_art.sh
Executable 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
22
.conky/music/fetch_meta.sh
Executable 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
16
.conky/music/format.sh
Executable 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
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
58
.conky/music/launcher.sh
Executable 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
|
||||
63
.conky/music/playerctl_listen.py
Normal file
63
.conky/music/playerctl_listen.py
Normal 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()
|
||||
|
||||
Reference in New Issue
Block a user