desktop->shared

This commit is contained in:
Daniel Bauer
2020-02-20 10:32:33 +01:00
parent f73d80c03f
commit 683a113df7
44 changed files with 470 additions and 62 deletions

View File

@@ -0,0 +1,22 @@
[bar/base]
width=900 ;100%
height=35
radius=6.0
fixed-center=false
background=${colors.background}
foreground=${colors.foreground}
line-size=3
line-color=#f00
border-size=0
border-color=#00000000
padding-left=0
padding-right=2
module-margin-left=1
module-margin-right=3
tray-position = right
tray-padding = 2
font-0 = "Noto Sans:size=14:style=Regular;1"
font-1 = unifont:fontformat=truetype:size=14:antialias=false;0
font-2 = FontAwesome:size=14;0

View File

@@ -0,0 +1,11 @@
[colors]
background=#222
background-alt=#444
foreground=#dfdfdf
foreground-alt=#555
primary=#ffb52a
secondary=#e60053
alert=#bd2c40
green=#689d6a
yellow=#fabc2f
red=#cc241d

View File

@@ -0,0 +1,400 @@
[module/xwindow]
type=internal/xwindow
label="> %title:0:75:...%"
[module/xkeyboard]
type=internal/xkeyboard
blacklist-0=num lock
format-prefix=" "
format-prefix-foreground=${colors.foreground-alt}
format-prefix-underline=${colors.secondary}
label-layout=%layout%
label-layout-underline=${colors.secondary}
label-indicator-padding=2
label-indicator-margin=1
label-indicator-background=${colors.secondary}
label-indicator-underline=${colors.secondary}
[module/filesystem]
type=internal/fs
interval=25
mount-0=/
mount-1=/data
mount-2=/backup
label-mounted=%{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
label-unmounted=%mountpoint% not mounted
label-unmounted-foreground=${colors.foreground-alt}
[module/bspwm]
type=internal/bspwm
label-focused=%index%
label-focused-background=${colors.background-alt}
label-focused-underline=${colors.primary}
label-focused-padding=2
label-occupied=%index%
label-occupied-padding=2
label-urgent=%index%!
label-urgent-background=${colors.alert}
label-urgent-padding=2
label-empty=%index%
label-empty-foreground=${colors.foreground-alt}
label-empty-padding=2
[module/i3]
type=internal/i3
format=<label-state> <label-mode>
index-sort=true
wrapping-scroll=false
strip-wsnumbers=true
pin-workspaces=true
label-mode-padding=2
label-mode-foreground=#000
label-mode-background=${colors.primary}
label-focused=%icon%
label-focused-background=${colors.green}
label-focused-underline=${colors.green}
label-focused-padding=${module/bspwm.label-focused-padding}
label-unfocused=%icon%
label-unfocused-padding=${module/bspwm.label-occupied-padding}
label-urgent=%icon%
label-urgent-background=${colors.red}
label-urgent-underline=${colors.red}
label-urgent-padding=${module/bspwm.label-urgent-padding}
label-visible=%icon%
label-visible-background=${self.label-focused-background}
label-visible-underline=${self.label-focused-underline}
label-visible-padding=${self.label-focused-padding}
ws-icon-0=1;1
ws-icon-1=2;2
ws-icon-2=3;3
ws-icon-3=4;4
ws-icon-4=5;5
ws-icon-5=6;6
ws-icon-6=7;
ws-icon-7=8;
ws-icon-8=9;
[module/mpd]
type=internal/mpd
format-online=<label-song> <icon-prev> <icon-stop> <toggle> <icon-next>
icon-prev=
icon-stop=
icon-play=
icon-pause=
icon-next=
label-song-maxlen=25
label-song-ellipsis=true
[module/xbacklight]
type=internal/xbacklight
format=<label> <bar>
label=BL
bar-width=10
bar-indicator=|
bar-indicator-foreground=#ff
bar-indicator-font=2
bar-fill=─
bar-fill-font=2
bar-fill-foreground=#9f78e1
bar-empty=─
bar-empty-font=2
bar-empty-foreground=${colors.foreground-alt}
[module/backlight-acpi]
inherit=module/xbacklight
type=internal/backlight
card=intel_backlight
[module/cpu]
type=internal/cpu
interval=0.5
format=<label> <ramp-coreload>
label=CPU
ramp-font=2
ramp-coreload-0=▁
ramp-coreload-font=3
ramp-coreload-0-foreground=${colors.green}
ramp-coreload-1=▂
ramp-coreload-1-font=2
ramp-coreload-1-foreground=${colors.green}
ramp-coreload-2=▃
ramp-coreload-2-font=2
ramp-coreload-2-foreground=${colors.green}
ramp-coreload-3=▄
ramp-coreload-3-font=2
ramp-coreload-3-foreground=${colors.green}
ramp-coreload-4=▅
ramp-coreload-4-font=2
ramp-coreload-4-foreground=${colors.yellow}
ramp-coreload-5=▆
ramp-coreload-5-font=2
ramp-coreload-5-foreground=${colors.yellow}
ramp-coreload-6=▇
ramp-coreload-6-font=2
ramp-coreload-6-foreground=${colors.red}
ramp-coreload-7=█
ramp-coreload-7-font=2
ramp-coreload-7-foreground=${colors.red}
[module/memory]
type=internal/memory
format=<label> <bar-used>
label=MEM
bar-used-indicator=
bar-used-width=20
bar-used-foreground-0=${colors.green}
bar-used-foreground-1=${colors.yellow}
bar-used-foreground-2=${colors.red}
bar-used-fill=▐
bar-used-empty=▐
bar-used-empty-foreground=#444444
[module/wlan]
type=internal/network
interface=
interval=3.0
format-connected=<ramp-signal> <label-connected>
format-connected-underline=#9f78e1
label-connected=%essid%
format-disconnected=
;format-disconnected=<label-disconnected>
;format-disconnected-underline=${self.format-connected-underline}
;label-disconnected=%ifname% disconnected
;label-disconnected-foreground=${colors.foreground-alt}
ramp-signal-0=
ramp-signal-1=
ramp-signal-2=
ramp-signal-3=
ramp-signal-4=
ramp-signal-foreground=${colors.foreground-alt}
[module/eth]
type=internal/network
interface=
interval=3.0
format-connected-underline=#55aa55
format-connected-prefix=" "
format-connected-prefix-foreground=${colors.foreground-alt}
label-connected=%local_ip%
format-disconnected=
;format-disconnected=<label-disconnected>
;format-disconnected-underline=${self.format-connected-underline}
;label-disconnected=%ifname% disconnected
;label-disconnected-foreground=${colors.foreground-alt}
[module/date]
type=internal/date
interval=1
date=%a %d %b %Y%%{F-}
date-alt=%a %d %b %Y%%{F-}
time=%H:%M
time-alt=%H:%M:%S
format-prefix-foreground=${colors.foreground-alt}
label=%time% %date%
format=<label>
[module/pulseaudio]
type=internal/pulseaudio
format-volume=<label-volume> <bar-volume>
label-volume=
label-volume-foreground=${root.foreground}
format-muted-foreground=${colors.foreground-alt}
label-muted=sound muted
bar-volume-width=20
bar-volume-foreground-0=#55aa55
bar-volume-foreground-1=#55aa55
bar-volume-foreground-2=#55aa55
bar-volume-foreground-3=#55aa55
bar-volume-foreground-4=#55aa55
bar-volume-foreground-5=#f5a70a
bar-volume-foreground-6=#ff5555
bar-volume-gradient=false
bar-volume-indicator=▐
bar-volume-indicator-font=2
bar-volume-fill=─
bar-volume-fill-font=2
bar-volume-empty=─
bar-volume-empty-font=2
bar-volume-empty-foreground=${colors.foreground-alt}
[module/volume]
type=internal/alsa
format-volume=<label-volume> <bar-volume>
label-volume=
label-volume-foreground=${root.foreground}
format-muted-foreground=${colors.foreground-alt}
label-muted=sound muted
bar-volume-width=20
bar-volume-foreground-0=#55aa55
bar-volume-foreground-1=#55aa55
bar-volume-foreground-2=#55aa55
bar-volume-foreground-3=#55aa55
bar-volume-foreground-4=#55aa55
bar-volume-foreground-5=#f5a70a
bar-volume-foreground-6=#ff5555
bar-volume-gradient=false
bar-volume-indicator=▐
bar-volume-indicator-font=2
bar-volume-fill=─
bar-volume-fill-font=2
bar-volume-empty=─
bar-volume-empty-font=2
bar-volume-empty-foreground=${colors.foreground-alt}
[module/temperature]
type=internal/temperature
thermal-zone=0
warn-temperature=60
format=<ramp> <label>
format-underline=#f50a4d
format-warn=<ramp> <label-warn>
format-warn-underline=${self.format-underline}
label=%temperature%
label-warn=%temperature%
label-warn-foreground=${colors.secondary}
ramp-0=
ramp-1=
ramp-2=
ramp-foreground=${colors.foreground-alt}
[module/powermenu]
type=custom/menu
format-spacing=1
label-open=
label-open-foreground=${colors.secondary}
label-close= cancel
label-close-foreground=${colors.secondary}
label-separator=|
label-separator-foreground=${colors.foreground-alt}
menu-0-0=reboot
menu-0-0-exec=menu-open-1
menu-0-1=power off
menu-0-1-exec=menu-open-2
menu-1-0=cancel
menu-1-0-exec=menu-open-0
menu-1-1=reboot
menu-1-1-exec=sudo reboot
menu-2-0=power off
menu-2-0-exec=sudo poweroff
menu-2-1=cancel
menu-2-1-exec=menu-open-0
[module/gpu]
type=custom/script
exec=/bin/bash ~/.config/polybar/gpu.sh
interval=1
tail=false
format=GPU <label>
[module/spotify]
type=custom/script
exec=python3 ~/.config/polybar/spotify.py
interval=1
tail=false
format= <label>
; vim:ft=dosini
[module/battery1]
type=internal/battery
full-at=95
battery=BAT0
adapter=ADP1
time-format=%Hh:%Mm
label-charging=%time% full
format-charging=<label-charging>
label-full=Fully charged
format_full=<label-full>
label-discharging=%percentage%% %time% left
format-discharging=<ramp-capacity> <label-discharging>
ramp-capacity-0=
ramp-capacity-0-foreground=${colors.red}
ramp-capacity-1=
ramp-capacity-1-foreground=${colors.yellow}
ramp-capacity-2=
ramp-capacity-2-foreground=${colors.green}
ramp-capacity-3=
ramp-capacity-3-foreground=${colors.green}
ramp-capacity-4=
ramp-capacity-4-foreground=${colors.green}
animation-discharging-0=
[module/previous]
type=custom/script
interval=86400
format="%{T3}<label>"
format-padding=1
exec=echo ""
exec-if="pgrep spotify"
line-size=1
click-left="dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous"
[module/playpause]
type=custom/script
interval=86400
format="%{T3}<label>"
format-padding=1
exec=echo "/"
exec-if="pgrep spotify"
line-size=1
click-left="dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause"
[module/next]
type=custom/script
interval=86400
format="%{T3}<label>"
format-padding=1
exec=echo ""
exec-if="pgrep spotify"
line-size=1
click-left="dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next"

View File

@@ -0,0 +1,7 @@
wm-restack=i3
scroll-up=i3wm-wsnext
scroll-down=i3wm-wsprev
[global/wm]
margin-top=5
margin-bottom=5

View File

@@ -0,0 +1,21 @@
#!/bin/bash
t_warn=50
t_crit=70
GPU=$(nvidia-smi -q | grep Gpu | awk '{print $3}')
if [ $GPU -gt $t_crit ]
then
printf " %d%%" "$GPU"
printf "\n %d%%" "$GPU"
printf "\n#fb4934\n"
elif [ $GPU -gt $t_warn ]
then
printf " %d%%" "$GPU"
printf "\n %d%%" "$GPU"
printf "\n#fabd2f\n"
else
printf " %d%%" "$GPU"
printf "\n %d%%" "$GPU"
fi

View File

@@ -0,0 +1,16 @@
#!/usr/bin/python2
import dbus
try:
bus = dbus.SessionBus()
spotify = bus.get_object("org.mpris.MediaPlayer2.spotify", "/org/mpris/MediaPlayer2")
spotify_iface = dbus.Interface(spotify, 'org.freedesktop.DBus.Properties')
props = spotify_iface.Get('org.mpris.MediaPlayer2.Player', 'Metadata')
try:
out = str(props['xesam:artist'][0]) + " - " + str(props['xesam:title'])
except IndexError:
out = ''
print(out)
exit
except dbus.exceptions.DBusException:
exit

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env sh
/usr/bin/env python3 ~/scripts/spotify/py_spotify_listener.py

View File

@@ -0,0 +1,125 @@
#!/usr/bin/env python3
# Unwrap function: (C)2011-2015 Dennis Kaarsemaker
# License: GPL3+
"""Receiver related functionality."""
import dbus.service
import dbus.glib
from gi.repository import GObject
import dbus
class Test(dbus.service.Object):
"""Reciever test class."""
loop = None
def __init__(self, bus_name, object_path, loop):
"""Initialize the DBUS service object."""
dbus.service.Object.__init__(self, bus_name, object_path)
self.loop = loop
@dbus.service.method('tld.domain.sub.TestInterface')
def foo(self):
"""Return a string."""
return 'Foo'
# Stop the main loop
@dbus.service.method('tld.domain.sub.TestInterface')
def stop(self):
"""Stop the receiver."""
self.loop.quit()
return 'Quit loop'
# Pass an exception through dbus
@dbus.service.method('tld.domain.sub.TestInterface')
def fail(self):
"""Trigger an exception."""
raise Exception('FAIL!')
def catchall_handler(*args, **kwargs):
"""Catch all handler.
Catch and print information about all singals.
"""
print('---- Caught signal ----')
print('%s:%s\n' % (kwargs['dbus_interface'], kwargs['member']))
print("\n")
def quit_handler():
"""Signal handler for quitting the receiver."""
print('Quitting....')
loop.quit()
def event_handler(*args, **kwargs):
"""event handler for the receiver."""
"""arg[1] contains metadata"""
"""arg[1][1] contains PlaybackStatus"""
data = unwrap(args)
if data[1]['PlaybackStatus'] == "Playing":
print("Music is playing")
""" Send IPC hook 2 to the bottom bar pid for module playpause """
with open("/tmp/ipc-bottom", "w") as text_file:
print("hook:module/playpause2", file=text_file)
if data[1]['PlaybackStatus'] == "Paused":
print("Music is paused.")
""" Send IPC hook 3 to the bottom bar pid for module playpause """
with open("/tmp/ipc-bottom", "w") as text_file:
print("hook:module/playpause3", file=text_file)
""" Send IPC hook 2 to the bottom bar pid for module spotify """
with open("/tmp/ipc-bottom", "w") as text_file:
print("hook:module/spotify2", file=text_file)
def unwrap(val):
if isinstance(val, dbus.ByteArray):
return "".join([str(x) for x in val])
if isinstance(val, (dbus.Array, list, tuple)):
return [unwrap(x) for x in val]
if isinstance(val, (dbus.Dictionary, dict)):
return dict([(unwrap(x), unwrap(y)) for x, y in val.items()])
if isinstance(val, (dbus.Signature, dbus.String)):
return str(val)
if isinstance(val, dbus.Boolean):
return bool(val)
if isinstance(val, (dbus.Int16, dbus.UInt16, dbus.Int32, dbus.UInt32, dbus.Int64, dbus.UInt64)):
return int(val)
if isinstance(val, dbus.Byte):
return bytes([int(val)])
return val
loop = GObject.MainLoop()
"""
First we get the bus to attach to. This may be either the session bus, of the
system bus. For system bus root permission is required.
We claim a bus name on the chosen bus. The name should be in form of a
domain name.
"""
bus = dbus.SessionBus()
# bus = dbus.SystemBus()
bus_name = dbus.service.BusName('sub.domain.tld', bus=bus)
"""
We initialize our service object with our name and object path. Object
path should be in form of a reverse domain dame, delimited by / instead of .
and the Class name as last part.
The object path we set here is of importance for our invoker, since it will to
call it exactly as defined here.
"""
obj = Test(bus_name, '/tld/domain/sub/Test', loop)
"""
Attach signal handler.
Signal handlers may be attached in different ways, either by interface keyword
or DBUS interface and a signal name or member keyword.
You can easily gather all information by running the DBUS monitor.
"""
bus.add_signal_receiver(quit_handler,
dbus_interface='tld.domain.sub.event',
signal_name='quit_signal')
bus.add_signal_receiver(event_handler,
dbus_interface='org.freedesktop.DBus.Properties',
member_keyword='PropertiesChanged')
loop.run()

View File

@@ -0,0 +1,67 @@
#!/usr/bin/env python3
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'
)
args = parser.parse_args()
# Default parameters
output = '{artist}: {song}'
trunclen = 25
# 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
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')
artist = metadata['xesam:artist'][0]
song = metadata['xesam:title']
if len(song) > trunclen:
song = song[0:trunclen]
song += '...'
if ('(' in song) and (')' not in song):
song += ')'
# Python3 uses UTF-8 by default.
if sys.version_info.major == 3:
print(output.format(artist=artist, song=song))
else:
print(output.format(artist=artist, song=song).encode('UTF-8'))
except Exception as e:
if isinstance(e, dbus.exceptions.DBusException):
print('')
else:
print(e)