Adjust polybar
This commit is contained in:
@@ -123,7 +123,6 @@ client.urgent $red $red $white $red $black
|
|||||||
|
|
||||||
# i3 bar
|
# i3 bar
|
||||||
# flaoting on start
|
# flaoting on start
|
||||||
for_window [class="Nautilus"] floating enable
|
|
||||||
for_window [class="Pavucontrol"] floating enable
|
for_window [class="Pavucontrol"] floating enable
|
||||||
for_window [title="Event Tester"] floating enable
|
for_window [title="Event Tester"] floating enable
|
||||||
for_window [class="flameshot"] floating enable
|
for_window [class="flameshot"] floating enable
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ foreground = ${colors.black}
|
|||||||
|
|
||||||
bottom = false
|
bottom = false
|
||||||
|
|
||||||
|
screenchange-reload = true
|
||||||
|
|
||||||
tray-position = right
|
tray-position = right
|
||||||
tray-scale = 1.0
|
tray-scale = 1.0
|
||||||
tray-maxsize = 25
|
tray-maxsize = 25
|
||||||
@@ -35,11 +37,11 @@ line-size = 4
|
|||||||
|
|
||||||
padding-left = 1
|
padding-left = 1
|
||||||
padding-right = 1
|
padding-right = 1
|
||||||
module-margin = 1
|
module-margin = 2
|
||||||
|
|
||||||
modules-left = logo i3 polywins
|
modules-left = logo i3 polywins spotify
|
||||||
modules-center =
|
modules-center =
|
||||||
modules-right = time date backlight pulseaudio battery conservation
|
modules-right = backlight pulseaudio battery conservation date time
|
||||||
|
|
||||||
[module/i3]
|
[module/i3]
|
||||||
strip-wsnumbers = true
|
strip-wsnumbers = true
|
||||||
@@ -130,7 +132,7 @@ label-full = 100%
|
|||||||
|
|
||||||
[module/conservation]
|
[module/conservation]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
exec = cat /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode
|
exec = if [ /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode ]; then echo "On"; else echo "Off"; fi
|
||||||
click-left = alacritty --command ~/dots/scripts/conservation_mode.sh
|
click-left = alacritty --command ~/dots/scripts/conservation_mode.sh
|
||||||
format = <label>
|
format = <label>
|
||||||
label = %output%
|
label = %output%
|
||||||
@@ -152,3 +154,14 @@ exec = ~/dots/scripts/polywins.sh 2>/dev/null
|
|||||||
format = <label>
|
format = <label>
|
||||||
label = %output%
|
label = %output%
|
||||||
tail = true
|
tail = true
|
||||||
|
|
||||||
|
[module/spotify]
|
||||||
|
type = custom/script
|
||||||
|
interval = 1
|
||||||
|
format = <label>
|
||||||
|
#exec = python3 ~/dots/scripts/spotify.py -f '{play_pause} {artist}: {song}' --font=2
|
||||||
|
exec = python3 ~/dots/scripts/spotify.py -f '{artist}: {song}'
|
||||||
|
|
||||||
|
click-left = playerctl play-pause
|
||||||
|
click-right = playerctl next
|
||||||
|
click-middle = playerctl previous
|
||||||
|
|||||||
141
scripts/spotify.py
Normal file
141
scripts/spotify.py
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
#!/usr/bin/env 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)
|
||||||
Reference in New Issue
Block a user