diff options
Diffstat (limited to 'i3wm')
| -rw-r--r-- | i3wm/.config/i3/config | 22 | ||||
| -rw-r--r-- | i3wm/.config/polybar/config | 556 | ||||
| -rwxr-xr-x | i3wm/.config/polybar/launch.sh | 19 | ||||
| -rwxr-xr-x | i3wm/.local/bin/rofi_goto_workspace | 4 | ||||
| -rwxr-xr-x | i3wm/.local/bin/rofi_moveto_workspace | 4 | ||||
| -rwxr-xr-x | i3wm/.local/bin/rofi_workspace_prompt | 3 | ||||
| -rwxr-xr-x | i3wm/.local/bin/spotifycl | 207 | ||||
| l--------- | i3wm/.local/share/config-files/polybar | 1 |
8 files changed, 14 insertions, 802 deletions
diff --git a/i3wm/.config/i3/config b/i3wm/.config/i3/config index 6d27594..57cbaf2 100644 --- a/i3wm/.config/i3/config +++ b/i3wm/.config/i3/config @@ -9,8 +9,10 @@ # # Please see https://i3wm.org/docs/userguide.html for a complete reference! -exec_always --no-startup-id $HOME/.config/polybar/launch.sh -exec_always --no-startup-id xautolock -locker "$HOME/.local/bin/lock.sh" -time 60 -detectsleep -notify 10 +exec_always --no-startup-id $HOME/.config/polybar/launch.sh i3 +exec_always --no-startup-id xset s 300 5 +exec_always --no-startup-id xss-lock -n /usr/bin/xsecurelock/dimmer -l -- xsecurelock +#exec_always --no-startup-id xautolock -locker "$HOME/.local/bin/lock.sh" -time 60 -detectsleep -notify 10 exec --no-startup-id nm-applet exec --no-startup-id picom @@ -47,15 +49,16 @@ bindsym $mod+Return exec alacritty #kitty #i3-sensible-terminal bindsym $mod+Shift+q kill # start dmenu (a program launcher) -bindsym $mod+d exec --no-startup-id rofi -show drun -bindsym $mod+x exec --no-startup-id rofi -show run +#bindsym $mod+d exec --no-startup-id rofi -show drun +#bindsym $mod+x exec --no-startup-id rofi -show run bindsym $mod+Tab exec --no-startup-id rofi -show window # There also is the (new) i3-dmenu-desktop which only displays applications # shipping a .desktop file. It is a wrapper around dmenu, so you need that # installed. -#bindsym $mod+d exec --no-startup-id dmenu_run +bindsym $mod+d exec --no-startup-id i3-dmenu-desktop +bindsym $mod+x exec --no-startup-id dmenu_run # change focus bindsym $mod+j focus left @@ -66,14 +69,16 @@ bindsym $mod+semicolon focus right # alternatively, you can use the cursor keys: bindsym $mod+Left workspace prev_on_output bindsym $mod+Shift+Left workspace prev -bindsym $mod+Shift+j workspace prev +bindsym $mod+Shift+j workspace prev_on_output bindsym $mod+Shift+Control+Left move workspace to output left bindsym $mod+Down focus down bindsym $mod+Up focus up +bindsym $mod+o focus output right + bindsym $mod+Right workspace next_on_output bindsym $mod+Shift+Right workspace next -bindsym $mod+Shift+semicolon workspace next +bindsym $mod+Shift+semicolon workspace next_on_output bindsym $mod+Shift+Control+Right move workspace to output right bindsym $mod+b workspace back_and_forth @@ -242,7 +247,8 @@ bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous -bindsym $mod+Shift+l exec "xautolock -locknow" +#bindsym $mod+Shift+l exec "xautolock -locknow" +bindsym $mod+Shift+l exec "xset s activate" diff --git a/i3wm/.config/polybar/config b/i3wm/.config/polybar/config deleted file mode 100644 index ab31469..0000000 --- a/i3wm/.config/polybar/config +++ /dev/null @@ -1,556 +0,0 @@ -;========================================================== -; -; -; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ -; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ -; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ -; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ -; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ -; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ -; -; -; To learn more about how to configure Polybar -; go to https://github.com/jaagr/polybar -; -; The README contains alot of information -; -;========================================================== - -[colors] -;background = ${xrdb:color0:#222} -background = #222 -background-alt = #444 -;foreground = ${xrdb:color7:#222} -foreground = #dfdfdf -foreground-alt = #555 -primary = #ffb52a -secondary = #e60053 -alert = #bd2c40 - -[bar/topbar] -monitor = ${env:MONITOR:eDP-1} -width = 100% -height = 40 -dpi = 96 -;offset-x = 1% -;offset-y = 1% -radius = 6.0 -fixed-center = false - -background = ${colors.background} -foreground = ${colors.foreground} - -line-size = 3 -line-color = #f00 - -border-size = 10 -border-bottom-size = 0 -border-color = #00000000 - -padding-left = 2 -padding-right = 2 - -font-0 = fixed:pixelsize=10;1 -font-1 = unifont:fontformat=truetype:size=8:antialias=false;0 -font-2 = siji:pixelsize=10;1 -font-3 = "Font Awesome 5 Brands:style=Regular:pixelsize=8;1" -font-4 = "Font Awesome 5 Free:style=Regular:pixelsize=8;1" -font-5 = "Font Awesome 5 Free:style=Solid:pixelsize=8;1" - -tray-position = right -tray-padding = 2 -;tray-transparent = true -;tray-background = #0063ff -tray-scale = 1 -tray-detached = false - -wm-restack = i3 -override-redirect = false - -scroll-up = i3wm-wsnext -scroll-down = i3wm-wsprev -cursor-click = pointer -cursor-scroll = ns-resize - -module-margin-left = 2 -module-margin-right = 2 -modules-left = hostname xwindow -modules-center = -modules-right = filesystem backlight pulseaudio xkeyboard memory cpu wlan eth ethvpn battery temperature - -[bar/topbar-second] -monitor = ${env:MONITOR:eDP-1} -width = 100% -height = 40 -dpi = 96 -;offset-x = 1% -offset-y = 50 -radius = 6.0 -fixed-center = true - -background = ${colors.background} -foreground = ${colors.foreground} - -line-size = 3 -line-color = #f00 - -border-size = 10 -border-top-size = 0 -border-bottom-size = 0 -border-color = #00000000 - -padding-left = 2 -padding-right = 2 - -font-0 = fixed:pixelsize=10;1 -font-1 = unifont:fontformat=truetype:size=8:antialias=false;0 -font-2 = siji:pixelsize=10;1 -font-3 = "Font Awesome 5 Brands:style=Regular:pixelsize=8;1" -font-4 = "Font Awesome 5 Free:style=Regular:pixelsize=8;1" -font-5 = "Font Awesome 5 Free:style=Solid:pixelsize=8;1" - -wm-restack = i3 -override-redirect = false - -scroll-up = i3wm-wsnext -scroll-down = i3wm-wsprev -cursor-click = pointer -cursor-scroll = ns-resize - -module-margin-left = 2 -module-margin-right = 2 -modules-left = i3 -modules-center = spotify -modules-right = date - -[module/hostname] -type = custom/script -interval = 256 -format = "<label> " -"format-prefix = " " -format-prefix = " ƸӜƷ " -format-prefix-foreground = ${colors.secondary} -format-padding = 0 -exec = echo "$(uname -n)" - -[module/spotify] -type = custom/script -exec = spotifycl status -tail = true -format = <label> -format-foreground = ${colors.foreground-alt} -format-underline = ${colors.primary} -click-right = playerctl play-pause -click-left = playerctl play-pause -click-middle = playerctl next -scroll-up = playerctl next -scroll-down = playerctl previous -label-maxlen = 120 -label-ellipsis = true - -[module/xwindow] -type = internal/xwindow -label = %title:0:40:...% - -[module/xkeyboard] -type = internal/xkeyboard -blacklist-0 = num lock - -format = <label-layout> -format-prefix = " " -format-prefix-foreground = ${colors.foreground} -format-prefix-underline = ${colors.secondary} - -label-layout = %name% -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 = / - -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 - -; Separator in between workspaces -; label-separator = | - -[module/i3] -type = internal/i3 -; Only show workspaces on the same output as the bar -pin-workspaces = true -strip-wsnumbers = true -format = <label-state> <label-mode> -index-sort = true -wrapping-scroll = false - -label-mode = %mode% -label-mode-padding = 2 -label-mode-foreground = #000 -label-mode-background = ${colors.primary} - -; focused = Active workspace on focused monitor -label-focused = %name% -label-focused-background = ${module/bspwm.label-focused-background} -label-focused-underline = ${module/bspwm.label-focused-underline} -label-focused-padding = ${module/bspwm.label-focused-padding} - -; unfocused = Inactive workspace on any monitor -label-unfocused = %name% -label-unfocused-padding = ${module/bspwm.label-occupied-padding} - -; visible = Active workspace on unfocused monitor -label-visible = %name% -label-visible-background = ${self.label-focused-background} -label-visible-underline = ${self.label-focused-underline} -label-visible-padding = ${self.label-focused-padding} - -; urgent = Workspace with urgency hint set -label-urgent = %name% -label-urgent-background = ${module/bspwm.label-urgent-background} -label-urgent-padding = ${module/bspwm.label-urgent-padding} - -; Separator in between workspaces -; label-separator = | - -[module/line-l] -type = custom/text -content = "____[ " -content-foreground = ${colors.primary} - -[module/line-r] -type = custom/text -content = " ]____" -content-foreground = ${colors.primary} - -[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/backlight] -type = internal/backlight -card = intel_backlight -format = <label> <ramp> -label = "" - -ramp-0 = 🌕 -ramp-1 = 🌔 -ramp-2 = 🌓 -ramp-3 = 🌒 -ramp-4 = 🌑 - -bar-width = 10 -bar-indicator = | -bar-indicator-foreground = #fff -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/xbacklight] -type = internal/xbacklight - -format = <label> <bar> -label = - -bar-width = 10 -bar-indicator = | -bar-indicator-foreground = #fff -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 = 2 -format-prefix = " " -format-prefix-foreground = ${colors.foreground} -format-underline = #f90000 -label = %percentage:2%% - -[module/memory] -type = internal/memory -interval = 2 -format-prefix = " " -format-prefix-foreground = ${colors.foreground} -format-underline = #4bffdc -label = %percentage_used%% - -[module/wlan] -type = internal/network -interface = wlp3s0 -interval = 3.0 -accumulate-stats = true - -format-connected-prefix = " " -format-connected = <label-connected> -format-connected-underline = #9f78e1 -label-connected = %essid% %local_ip% ↓%downspeed% ↑%upspeed% (%signal%) - -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-foreground = ${colors.foreground-alt} - -[module/eth] -type = internal/network -interface = eno1 -interval = 3.0 -accumulate-stats = true - -format-connected-underline = #55aa55 -format-connected-prefix = " " -format-connected-prefix-foreground = ${colors.foreground} -label-connected = %local_ip% ↓%downspeed% ↑%upspeed% ↕%linkspeed% - -format-disconnected = -;format-disconnected = <label-disconnected> -;format-disconnected-underline = ${self.format-connected-underline} -;label-disconnected = %ifname% disconnected -;label-disconnected-foreground = ${colors.foreground-alt} - -[module/ethvpn] -type = internal/network -interface = tun0 -interval = 3.0 -accumulate-stats = true - -format-connected-underline = #55aa55 -format-connected-prefix = "" -format-connected-prefix-foreground = ${colors.foreground} -label-connected = %local_ip% %local_ip6% - -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 = -date-alt = " %Y-%m-%d" - -time = %H:%M:%S -time-alt = %H:%M:%S - -format-prefix = -format-prefix-foreground = ${colors.foreground} -format-underline = #0a6cf5 - -label = %date% %time% - -[module/pulseaudio] -type = internal/pulseaudio - -format-volume = <label-volume> <bar-volume> -label-volume = %percentage%% -label-volume-foreground = ${root.foreground} - -label-muted = -label-muted-foreground = #666 - -bar-volume-width = 10 -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} - -ramp-volume-0 = -ramp-volume-1 = - -[module/alsa] -type = internal/alsa - -format-volume = <label-volume> <bar-volume> -label-volume = VOL -label-volume-foreground = ${root.foreground} - -format-muted-foreground = ${colors.foreground-alt} -label-muted = - -bar-volume-width = 10 -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/battery] -type = internal/battery -time-format = %H:%M -battery = BAT0 -adapter = AC -full-at = 89 - -format-charging = <animation-charging> <label-charging> -format-charging-underline = #ffb52a -label-charging = %percentage%% | %time% - -format-discharging = <animation-discharging> <label-discharging> -format-discharging-underline = ${self.format-charging-underline} -label-discharging = %percentage%% | %time% - -format-full = -format-full-foreground = ${colors.foreground} -format-full-underline = ${self.format-charging-underline} - -ramp-capacity-0 = -ramp-capacity-1 = -ramp-capacity-2 = -ramp-capacity-3 = -ramp-capacity-4 = -ramp-capacity-foreground = ${colors.foreground-alt} - -animation-charging-0 = -animation-charging-1 = -animation-charging-2 = -animation-charging-3 = -animation-charging-4 = -animation-charging-foreground = ${colors.foreground} -animation-charging-framerate = 750 - -animation-discharging-0 = -animation-discharging-1 = -animation-discharging-2 = -animation-discharging-3 = -animation-discharging-4 = -animation-discharging-foreground = ${colors.foreground} -animation-discharging-framerate = 1000 - -[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-c% -label-warn = %temperature-c% -label-warn-foreground = ${colors.secondary} - -ramp-0 = -ramp-1 = -ramp-2 = -ramp-foreground = ${colors.foreground} - -[module/powermenu] -type = custom/menu - -expand-right = true - -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-0-2 = sleep -menu-0-2-exec = systemctl suspend - -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 - -[settings] -screenchange-reload = true -;compositing-background = xor -;compositing-background = screen -;compositing-foreground = source -;compositing-border = over - -[global/wm] -margin-top = 5 -margin-bottom = 5 - -; vim:ft=dosini diff --git a/i3wm/.config/polybar/launch.sh b/i3wm/.config/polybar/launch.sh deleted file mode 100755 index c45e085..0000000 --- a/i3wm/.config/polybar/launch.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env sh - -# Terminate already running bar instances -killall -q polybar - -# Wait until the processes have been shut down -while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done - - -# Launch bar1 and bar2 -MONITOR=$(polybar -m|tail -n1|sed -e 's/:.*$//g') polybar topbar & -sleep 1 -MONITORS=$(polybar -m|sed -e 's/:.*$//g') -while read -r monitor; do - MONITOR=$monitor polybar topbar-second & - sleep 1 -done <<< $MONITORS - -echo "Bars launched..." diff --git a/i3wm/.local/bin/rofi_goto_workspace b/i3wm/.local/bin/rofi_goto_workspace deleted file mode 100755 index 35e8762..0000000 --- a/i3wm/.local/bin/rofi_goto_workspace +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - -NAME=`rofi_workspace_prompt` -i3-msg workspace $NAME diff --git a/i3wm/.local/bin/rofi_moveto_workspace b/i3wm/.local/bin/rofi_moveto_workspace deleted file mode 100755 index 9cc0b9d..0000000 --- a/i3wm/.local/bin/rofi_moveto_workspace +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - -NAME=`rofi_workspace_prompt` -i3-msg move container to workspace $NAME diff --git a/i3wm/.local/bin/rofi_workspace_prompt b/i3wm/.local/bin/rofi_workspace_prompt deleted file mode 100755 index f59d1fa..0000000 --- a/i3wm/.local/bin/rofi_workspace_prompt +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -echo `i3-msg -t get_workspaces | jq '.[].name' | sed 's/\"//g' | rofi -dmenu` diff --git a/i3wm/.local/bin/spotifycl b/i3wm/.local/bin/spotifycl deleted file mode 100755 index ffee9f0..0000000 --- a/i3wm/.local/bin/spotifycl +++ /dev/null @@ -1,207 +0,0 @@ -#!/usr/bin/env python - -# MIT License -# -# Copyright (c) 2018 Andreas Backx -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - - -import os -import socket -import sys -import time -import traceback -from concurrent.futures import ThreadPoolExecutor - -import click -import dbus -import dbus.mainloop.glib -import spotipy -import spotipy.util as util -from dbus.mainloop.glib import DBusGMainLoop -from gi.repository import GLib -from spotipy import SpotifyException -from spotipy.oauth2 import SpotifyClientCredentials - -inactive_color = '%{F#6E6E6E}' -active_color = '%{F#CECECE}' -default_color = '%{F-}' - -server_address = '/tmp/spotifycl-socket' - - -class Spotify: - - SPOTIFY_BUS = 'org.mpris.MediaPlayer2.spotify' - SPOTIFYD_BUS = 'org.mpris.MediaPlayer2.spotifyd' - SPOTIFY_OBJECT_PATH = '/org/mpris/MediaPlayer2' - - PLAYER_INTERFACE = 'org.mpris.MediaPlayer2.Player' - PROPERTIES_INTERFACE = 'org.freedesktop.DBus.Properties' - - SAVE_REMOVE = b'save' - - def __init__(self): - DBusGMainLoop(set_as_default=True) - self.session_bus = dbus.SessionBus() - self.last_output = '' - self.empty_output = True - - # Last shown metadata - self.last_title = None - # Whether the current song is added to the library - self.saved_track = False - # Whether to ignore the update - self.ignore = False - - def monitor(self): - self.setup_properties_changed() - self.freedesktop = self.session_bus.get_object( - "org.freedesktop.DBus", - "/org/freedesktop/DBus" - ) - self.freedesktop.connect_to_signal( - "NameOwnerChanged", - self.on_name_owner_changed, - arg0=self.SPOTIFYD_BUS - ) - - executor = ThreadPoolExecutor(max_workers=2) - executor.submit(self._start_glib_loop) - executor.submit(self._start_server) - - def _start_glib_loop(self): - loop = GLib.MainLoop() - loop.run() - - def _start_server(self): - try: - os.unlink(server_address) - except OSError: - if os.path.exists(server_address): - raise - sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - sock.bind(server_address) - sock.listen(5) - - @property - def metadata_status(self): - spotify_properties = dbus.Interface( - self.spotify, - dbus_interface=Spotify.PROPERTIES_INTERFACE - ) - metadata = spotify_properties.Get( - Spotify.PLAYER_INTERFACE, - 'Metadata' - ) - playback_status = spotify_properties.Get( - Spotify.PLAYER_INTERFACE, - 'PlaybackStatus' - ) - return metadata, playback_status - - def output(self, line): - if not line: - self.empty_output = True - if line != self.last_output: - print(line, flush=True) - self.last_output = line - - def setup_spotify(self): - try: - self.spotify = self.session_bus.get_object( - Spotify.SPOTIFY_BUS, - Spotify.SPOTIFY_OBJECT_PATH - ) - except dbus.DBusException: - self.spotify = self.session_bus.get_object(Spotify.SPOTIFYD_BUS, Spotify.SPOTIFY_OBJECT_PATH) - - def setup_properties_changed(self): - try: - self.setup_spotify() - self.spotify.connect_to_signal( - 'PropertiesChanged', - self.on_properties_changed - ) - - if self.empty_output: - metadata, playback_status = self.metadata_status - self.output_playback_status( - data={ - 'Metadata': metadata, - 'PlaybackStatus': playback_status, - } - ) - - except dbus.DBusException: - self.output('') - - def output_playback_status(self, data, retry=False): - if self.ignore: - return - - metadata = data['Metadata'] - artists = metadata['xesam:artist'] - artist = artists[0] if artists else None - - if not artist: - self.output('') - return - - title = metadata['xesam:title'] - playback_status = data['PlaybackStatus'] - same_song = title == self.last_title - - color = active_color if playback_status == 'Playing' else inactive_color - # divider = '+' if same_song and self.saved_track else '-' - self.output(f'{color}{artist} - {title}{default_color}') - - if not same_song: - self.last_title = title - - def on_properties_changed(self, interface, data, *args, **kwargs): - self.output_playback_status(data) - - def on_name_owner_changed(self, name, old_owner, new_owner): - if name == self.SPOTIFY_BUS: - if new_owner: - # Spotify was opened. - self.setup_properties_changed() - else: - # Spotify was closed. - self.spotify = None - self.output('') - - -@click.group() -def cli(): - """Script for listening to Spotify over dbus and adding tracks to your library.""" - pass - - -@cli.command() -def status(): - """Follow the status of the currently playing song on Spotify.""" - spotify = Spotify() - spotify.monitor() - - -if __name__ == '__main__': - cli() diff --git a/i3wm/.local/share/config-files/polybar b/i3wm/.local/share/config-files/polybar deleted file mode 120000 index 87fad9e..0000000 --- a/i3wm/.local/share/config-files/polybar +++ /dev/null @@ -1 +0,0 @@ -../../../.config/polybar/config
\ No newline at end of file |
