From 8664b0894039c48f1d5ca8f1e4241a4a62003168 Mon Sep 17 00:00:00 2001 From: Valerie Date: Wed, 11 Aug 2021 23:42:06 -0400 Subject: [PATCH] added polybar scripts --- polybar_scripts/focus_class.sh | 4 + polybar_scripts/lan.sh | 13 +++ polybar_scripts/now_playing.sh | 18 ++++ polybar_scripts/redshift.sh | 16 ++++ polybar_scripts/spotify_status.py | 141 ++++++++++++++++++++++++++++++ 5 files changed, 192 insertions(+) create mode 100755 polybar_scripts/focus_class.sh create mode 100755 polybar_scripts/lan.sh create mode 100755 polybar_scripts/now_playing.sh create mode 100755 polybar_scripts/redshift.sh create mode 100755 polybar_scripts/spotify_status.py diff --git a/polybar_scripts/focus_class.sh b/polybar_scripts/focus_class.sh new file mode 100755 index 0000000..2bf755d --- /dev/null +++ b/polybar_scripts/focus_class.sh @@ -0,0 +1,4 @@ +#!/usr/bin/bash + +id=$(xdotool getwindowfocus) + diff --git a/polybar_scripts/lan.sh b/polybar_scripts/lan.sh new file mode 100755 index 0000000..49ca8b1 --- /dev/null +++ b/polybar_scripts/lan.sh @@ -0,0 +1,13 @@ +#!/usr/bin/bash +if [[ "$(cat /sys/class/net/enp0s31f6/operstate)" == "up" ]]; then + echo "" + #echo "" + exit +fi +wlan=$(iwctl station list | grep wlan0 | awk '{ print $2 }') +if [[ "$wlan" == "connected" ]]; then + echo "" +else + echo "" + #echo "" +fi diff --git a/polybar_scripts/now_playing.sh b/polybar_scripts/now_playing.sh new file mode 100755 index 0000000..34ae591 --- /dev/null +++ b/polybar_scripts/now_playing.sh @@ -0,0 +1,18 @@ +#!/usr/bin/bash + +if [[ "$(playerctl status)" == "Playing" ]]; then + player=$(playerctl metadata | head -n 1 | awk '{print $1 }') + if [[ "$player" == "spotify" ]]; then + #echo "%{F#1DB954}" + echo "" + elif [[ "$player" == "firefox" ]]; then + #echo "%{F#FF443D}" + echo "" + else + echo "" + fi +else + #echo "ﱙ" + #echo "" + echo "" +fi diff --git a/polybar_scripts/redshift.sh b/polybar_scripts/redshift.sh new file mode 100755 index 0000000..c69ec37 --- /dev/null +++ b/polybar_scripts/redshift.sh @@ -0,0 +1,16 @@ +#!/usr/bin/bash + +if [ "$(pgrep -x redshift)" ]; then + period=$(redshift -p 2> /dev/null | grep Period | awk '{print $2}') + if [[ $period == 'Night' ]]; then + #echo "" + echo "" + #echo "鈴" + elif [[ $period == 'Transition' ]]; then + echo "" + else + echo "盛" + fi +else + echo "" +fi diff --git a/polybar_scripts/spotify_status.py b/polybar_scripts/spotify_status.py new file mode 100755 index 0000000..39920a2 --- /dev/null +++ b/polybar_scripts/spotify_status.py @@ -0,0 +1,141 @@ +#!/usr/bin/python + +import sys +import dbus +import argparse + +parser = argparse.ArgumentParser() +parser.add_argument( + '-t', + '--trunclen', + type=int, + metavar='trunclen' +) +parser.add_argument( + '-f', + '--format', + type=str, + metavar='custom format', + dest='custom_format' +) +parser.add_argument( + '-p', + '--playpause', + type=str, + metavar='play-pause indicator', + dest='play_pause' +) +parser.add_argument( + '--font', + type=str, + metavar='the index of the font to use for the main label', + dest='font' +) +parser.add_argument( + '--playpause-font', + type=str, + metavar='the index of the font to use to display the playpause indicator', + dest='play_pause_font' +) +parser.add_argument( + '-q', + '--quiet', + action='store_true', + help="if set, don't show any output when the current song is paused", + dest='quiet', +) + +args = parser.parse_args() + + +def fix_string(string): + # corrects encoding for the python version used + if sys.version_info.major == 3: + return string + else: + return string.encode('utf-8') + + +def truncate(name, trunclen): + if len(name) > trunclen: + name = name[:trunclen] + name += '...' + if ('(' in name) and (')' not in name): + name += ')' + return name + + + +# Default parameters +output = fix_string(u'{play_pause} {artist}: {song}') +trunclen = 35 +play_pause = fix_string(u'\u25B6,\u23F8') # first character is play, second is paused + +label_with_font = '%{{T{font}}}{label}%{{T-}}' +font = args.font +play_pause_font = args.play_pause_font + +quiet = args.quiet + +# parameters can be overwritten by args +if args.trunclen is not None: + trunclen = args.trunclen +if args.custom_format is not None: + output = args.custom_format +if args.play_pause is not None: + play_pause = args.play_pause + +try: + session_bus = dbus.SessionBus() + spotify_bus = session_bus.get_object( + 'org.mpris.MediaPlayer2.spotify', + '/org/mpris/MediaPlayer2' + ) + + spotify_properties = dbus.Interface( + spotify_bus, + 'org.freedesktop.DBus.Properties' + ) + + metadata = spotify_properties.Get('org.mpris.MediaPlayer2.Player', 'Metadata') + status = spotify_properties.Get('org.mpris.MediaPlayer2.Player', 'PlaybackStatus') + + # Handle play/pause label + + play_pause = play_pause.split(',') + + if status == 'Playing': + play_pause = play_pause[0] + elif status == 'Paused': + play_pause = play_pause[1] + else: + play_pause = str() + + if play_pause_font: + play_pause = label_with_font.format(font=play_pause_font, label=play_pause) + + # Handle main label + + artist = fix_string(metadata['xesam:artist'][0]) if metadata['xesam:artist'] else '' + song = fix_string(metadata['xesam:title']) if metadata['xesam:title'] else '' + album = fix_string(metadata['xesam:album']) if metadata['xesam:album'] else '' + + if (quiet and status == 'Paused') or (not artist and not song and not album): + print('') + else: + if font: + artist = label_with_font.format(font=font, label=artist) + song = label_with_font.format(font=font, label=song) + album = label_with_font.format(font=font, label=album) + + # Add 4 to trunclen to account for status symbol, spaces, and other padding characters + print(truncate(output.format(artist=artist, + song=song, + play_pause=play_pause, + album=album), trunclen + 4)) + +except Exception as e: + if isinstance(e, dbus.exceptions.DBusException): + print('') + else: + print(e)