diff --git a/README.md b/README.md index b14c51e..6771aaa 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ ## Programs + Editor: nvim + Image-Viewer: viewnior -+ Info: [fet.sh](https://github.com/6gk/fet.sh) ++ Info: [fet.sh](https://github.com/6gk/fet.sh) and neofetch + Launcher: dmenu + Pdf-Viewer: epdfview + Screenshots: Flameshot @@ -22,7 +22,6 @@ + [vim-plug](https://github.com/junegunn/vim-plug) + fzf -+ [Adapta-Nokto-Eta-Maia](https://github.com/adapta-project/adapta-gtk-theme) GTK-Theme ### Nvim LSP @@ -37,5 +36,6 @@ To get a siji icon: `clone, ./install.sh, ./view.sh, echo "\ue002"` -![Laptop](screenshots/laptop.png) ![PC](screenshots/pc.png) +![Code](screenshots/code.png) +![Laptop](screenshots/laptop.png) diff --git a/files/.config/i3/config b/files/.config/i3/config index a244ae7..2dba916 100644 --- a/files/.config/i3/config +++ b/files/.config/i3/config @@ -91,6 +91,7 @@ mode "Open" { bindsym s exec spotify bindsym d exec discord; exec Discord bindsym c exec gsimplecal + bindsym p exec pavucontrol bindsym Escape mode "default" bindsym Return mode "default" @@ -146,14 +147,14 @@ bindsym $mod+Shift+9 move container to workspace number $ws9 bindsym $mod+Shift+0 move container to workspace number $ws10 # ============================== Monitor -set $monitor_1 "DP-3" -set $monitor_2 "DP-1" +workspace $ws1 output left +workspace $ws10 output right -workspace $ws1 output $monitor_1 -workspace $ws10 output $monitor_2 +bindsym $mod+Ctrl+1 move workspace to output left +bindsym $mod+Ctrl+2 move workspace to output right -bindsym $mod+Ctrl+1 move workspace to output $monitor_2 -bindsym $mod+Ctrl+2 move workspace to output $monitor_1 +bindsym $mod+Ctrl+Left move workspace to output left +bindsym $mod+Ctrl+Right move workspace to output right # ============================== Design # Remove title diff --git a/files/.config/polybar/config b/files/.config/polybar/config index 5d5627e..d1ac2c3 100644 --- a/files/.config/polybar/config +++ b/files/.config/polybar/config @@ -25,6 +25,7 @@ padding-right = 1 separator = / modules-left = i3 xwindow +modules-center = spotify modules-right = network volume backlight battery date tray-position = right @@ -39,7 +40,7 @@ wm-restack = i3 [bar/desktop] inherit = bar/laptop -modules-right = networkupdown volume date +modules-right = update_yay networkupdown volume date [bar/desktop_second] inherit = bar/desktop @@ -163,3 +164,16 @@ interval = 3.0 accumulate-stats = true unknown-as-up = true label-connected =  %upspeed%  %downspeed% + +[module/update_yay] +type = custom/script +exec = ~/.config/polybar/scripts/yay_updates.sh +format-prefix = " " +click-left = alacritty -e yay -Syu +interval = 60 + +[module/spotify] +type = custom/script +interval = 1 +format-prefix = " " +exec = python ~/.config/polybar/scripts/spotify_status.py -f '{artist}: {song}' diff --git a/files/.config/polybar/scripts/hostname.sh b/files/.config/polybar/scripts/hostname.sh deleted file mode 100755 index c27cab3..0000000 --- a/files/.config/polybar/scripts/hostname.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -echo "$USER@$HOSTNAME" diff --git a/files/.config/polybar/scripts/ip.sh b/files/.config/polybar/scripts/ip.sh deleted file mode 100755 index ead5dee..0000000 --- a/files/.config/polybar/scripts/ip.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -PUBLIC_IP=`wget http://ipecho.net/plain -O - -q ; echo` -WLO1=`hostname -I | awk '{print $1}'` -SSID=`iwgetid -r` - -echo "$PUBLIC_IP - $WLO1 - $SSID" - diff --git a/files/.config/polybar/scripts/load.sh b/files/.config/polybar/scripts/load.sh deleted file mode 100755 index ce16602..0000000 --- a/files/.config/polybar/scripts/load.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -function load() { - echo -n "$(cat /proc/loadavg | awk -F ' ' '{print $1,$2,$3}')" -} - -load diff --git a/files/.config/polybar/scripts/song.sh b/files/.config/polybar/scripts/song.sh deleted file mode 100755 index ba2254a..0000000 --- a/files/.config/polybar/scripts/song.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -length=20 - -function scroll () { - prefix="$1" - scrolling="$2" - temp="$(echo "$scrolling"| sed "s/^\(.\{$length\}\)\(.*\)$/\1[\2]/"| sed "s/\[ *\]$//"| sed "s/\[.*\]$//")" - suffix="$3" - if [ "$(echo -n $scrolling |wc -c)" -gt $length ]; then - echo "$prefix%{T7}$temp%{T-}$suffix" - sleep 0.5 - - zscroll -l $length \ - --delay 0.2 \ - --before-text "$prefix%{T7}" \ - --after-text "%{T-}$suffix" \ - --scroll-padding " " \ - --update-check true "echo '$(get_title)'" & - - wait - else - echo "$prefix%{T8} $temp %{T-}$suffix" - fi -} # - -function get_artist () { - echo "$(playerctl -p spotify metadata --format "{{ artist }}"| sed -e "s/[[(]....*[])]*//g" | sed "s/ *$//"| sed "s/^\(.\{$length\}[^ ]*\)\(.*\)$/\1[\2]/"| sed "s/\[ *\]$//"| sed "s/\[.*\]$/.../")" -} # - -function get_title () { - echo "$(playerctl -p spotify metadata --format "{{title}}" | sed 's/'\''/\\'\''/g')" -} # - -[ ! -z "$(playerctl -p spotify status 2>/dev/null)" ] \ - && artist=$(get_artist) \ - && title=$(get_title) \ - && ([ -z "$artist$title" ] && scroll "" "Spotify is not connected on this pc" "" || scroll "%{F#79e6f3}$artist%{F#FFF} [" "$title" "]%{F-}" ) \ - || exit 1 diff --git a/files/.config/polybar/scripts/spotify.sh b/files/.config/polybar/scripts/spotify.sh index 79a0cee..4084d6c 100755 --- a/files/.config/polybar/scripts/spotify.sh +++ b/files/.config/polybar/scripts/spotify.sh @@ -3,7 +3,7 @@ main() { if ! pgrep -x spotify >/dev/null; then echo ""; exit - fi + fi cmd="org.freedesktop.DBus.Properties.Get" domain="org.mpris.MediaPlayer2" diff --git a/files/.config/polybar/scripts/spotify_status.py b/files/.config/polybar/scripts/spotify_status.py new file mode 100755 index 0000000..7199f4e --- /dev/null +++ b/files/.config/polybar/scripts/spotify_status.py @@ -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) diff --git a/files/.config/polybar/scripts/yay_updates.sh b/files/.config/polybar/scripts/yay_updates.sh new file mode 100755 index 0000000..ff43d2e --- /dev/null +++ b/files/.config/polybar/scripts/yay_updates.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +yay -Qu | wc -l diff --git a/files/.config/polybar/typescript b/files/.config/polybar/typescript new file mode 100644 index 0000000..628b059 --- /dev/null +++ b/files/.config/polybar/typescript @@ -0,0 +1,1411 @@ +Script started on 2020-09-30 19:11:47+02:00 [TERM="alacritty" TTY="/dev/pts/0" COLUMNS="251" LINES="71"] +% nazarick ~/.config/polybar [master ]  [?2004h nazarick ~/.config/polybar [master ]  <<< nazarick ~/.config/polybar [master ]  sscscrriipscriptscripts[?2004l +% nazarick ~/.config/polybar/scripts [master ]  [?2004hl[?2004l +total 12K +-rwxr-xr-x 1 marc marc 1,2K 30. Sep 18:46 song.sh* +-rwxr-xr-x 1 marc marc 914 30. Sep 18:46 spotify.sh* +-rwxr-xr-x 1 marc marc 27 30. Sep 19:08 yay_updates.sh* +% nazarick ~/.config/polybar/scripts [master ]  [?2004hl[?2004l +total 12K +-rwxr-xr-x 1 marc marc 1,2K 30. Sep 18:46 song.sh* +-rwxr-xr-x 1 marc marc 914 30. Sep 18:46 spotify.sh* +-rwxr-xr-x 1 marc marc 27 30. Sep 19:08 yay_updates.sh* +% nazarick ~/.config/polybar/scripts [master ]  [?2004hv rrm -rf ssoonng.sh  [?2004l +% nazarick ~/.config/polybar/scripts [master ]  [?2004hl[?2004l +total 8,0K +-rwxr-xr-x 1 marc marc 914 30. Sep 18:46 spotify.sh* +-rwxr-xr-x 1 marc marc 27 30. Sep 19:08 yay_updates.sh* +% nazarick ~/.config/polybar/scripts [master ]  [?2004hvvivim sspotify.sh  [?2004l +[?1049h[?1h=]11;?[?2004h[?25h[?25l(B[?1004h[?25h[?25l1 (B#!/bin/sh(B +(B 1 (B +(B 2 (Bmain() {(B +(B 3 (B (Bif !(B pgrep (B-x(B spotify (B>(B/dev/null(B;(B (Bthen(B +(B 4 (B (Becho(B (B"";(B (Bexit(B +(B 5 (B (Bfi(B··(B +(B 6 (B +(B 7 (B (Bcmd(B=(B"(Borg.freedesktop.DBus.Properties.Get(B"(B +(B 8 (B (Bdomain(B=(B"(Borg.mpris.MediaPlayer2(B"(B +(B 9 (B (Bpath(B=(B"(B/org/mpris/MediaPlayer2(B"(B +(B 10 (B +(B 11 (B (Bmeta(B=(B$((Bdbus-send --print-reply --dest=(B${domain}(B.spotify \(B +(B 12 (B /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:(B${domain}(B.Player string:Metadata(B)(B +(B 13 (B +(B 14 (B (Bartist(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:artist"/,+2s/^ +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B (B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'(B (B|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B)(B +(B 15 (B (Balbum(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:album"/,+2s/^ +variant +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B)(B +(B 16 (B (Btitle(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:title"/,+2s/^ +variant +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B (B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B)(B +(B 17 (B +(B 18 (B (Becho(B (B"(B${*(B:-(B%artist% - %title%(B}(B"(B (B|(B (Bsed(B (B"(Bs/%artist%/(B$artist(B/g;s/%title%/(B$title(B/g;s/%album%/(B$album(B/g(B"(Bi (B|(B (Bsed(B (B"(Bs/(B\&(B/(B\&(B/g(B"(B (B|(B (Bsed(B (B"(Bs#(B\/(B#\/#g"(B +(B 19 (B +(B 20 (B}(B +(B 21 (B +(B 22 (Bmain (B"(B$@(B"(B +(B~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +(Bspotify.sh1,1 All]112[2 q]112[2 q(B1 (B#!/bin/sh(B +(B 1 (B +(B 2 (Bmain() {(B +(B 3 (B (Bif !(B pgrep (B-x(B spotify (B>(B/dev/null(B;(B (Bthen(B +(B 4 (B (Becho(B (B"";(B (Bexit(B +(B 5 (B (Bfi(B··(B +(B 6 (B +(B 7 (B (Bcmd(B=(B"(Borg.freedesktop.DBus.Properties.Get(B"(B +(B 8 (B (Bdomain(B=(B"(Borg.mpris.MediaPlayer2(B"(B +(B 9 (B (Bpath(B=(B"(B/org/mpris/MediaPlayer2(B"(B +(B 10 (B +(B 11 (B (Bmeta(B=(B$((Bdbus-send --print-reply --dest=(B${domain}(B.spotify \(B +(B 12 (B /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:(B${domain}(B.Player string:Metadata(B)(B +(B 13 (B +(B 14 (B (Bartist(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:artist"/,+2s/^ +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B (B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'(B (B|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B)(B +(B 15 (B (Balbum(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:album"/,+2s/^ +variant +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B)(B +(B 16 (B (Btitle(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:title"/,+2s/^ +variant +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B (B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B)(B +(B 17 (B +(B 18 (B (Becho(B (B"(B${*(B:-(B%artist% - %title%(B}(B"(B (B|(B (Bsed(B (B"(Bs/%artist%/(B$artist(B/g;s/%title%/(B$title(B/g;s/%album%/(B$album(B/g(B"(Bi (B|(B (Bsed(B (B"(Bs/(B\&(B/(B\&(B/g(B"(B (B|(B (Bsed(B (B"(Bs#(B\/(B#\/#g"(B +(B 19 (B +(B 20 (B}(B +(B 21 (B +(B 22 (Bmain (B"(B$@(B"(B +(B~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +~ +(Bspotify.sh 1,1 All(B +[?25h[?25l(B 1 (B#!/bin/sh(B +2 (B (B12345678 90123456781901(B2,0-1[?25h[?25l(B2 + 1 (B +3 (Bmain() {(B (B12345678 9012345678190(B3,1 [?25h[?25l(B32 + 1 (Bmain() {(B +4 (B (Bif !(B pgrep (B-x(B spotify (B>(B/dev/null(B;(B (Bthen(B (B12345678 901234567819(B4[?25h[?25l(B432 + 1 (B (Bif !(B pgrep (B-x(B spotify (B>(B/dev/null(B;(B (Bthen(B +5 (B (Becho(B (B"";(B (Bexit(B (B12345678 9012345678(B5[?25h[?25l(B5432 + 1 (B (Becho(B (B"";(B (Bexit(B +6 (B (Bfi(B··(B (B12345678 901234567(B6[?25h[?25l]112[6 q[?25h[?25l(B··(B7[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B[+]6[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B5[?25h[?25l4]112[2 q[?25h[?25l(B :[?1002h[?1006h]112[2 q[?25h[?25lw[?25h[?25l [?25h[?25l[?1002l[?1006l"spotify.sh"]112[2 q[?25h[?25l23L, 912C written(B [?25h[?25l[?25h[?25l(B (B 5 (B#!/bin/sh +(B (B 4 +(B (B 3 (Bmain() { +(B (B 2 (B (Bif !(B pgrep (B-x(B spotify (B>(B/dev/null(B;(B (Bthen +(B (B 1 (B (Becho(B (B"";(B (Bexit +(B~ (B6 (B (Bfi +(B (B 1 +(B (B 2 (B (Bcmd(B=(B"(Borg.freedesktop.DBus.Properties.Get(B" +(B (B 3 (B (Bdomain(B=(B"(Borg.mpris.MediaPlayer2(B" +(B (B 4 (B (Bpath(B=(B"(B/org/mpris/MediaPlayer2(B" +(B (B 5 +(B (B 6 (B (Bmeta(B=(B$((Bdbus-send --print-reply --dest=(B${domain}(B.spotify \ +(B (B 7 (B /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:(B${domain}(B.Player string:Metadata(B) +(B (B 8 +(B (B 9 (B (Bartist(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:artist"/,+2s/^ +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B (B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'(B (B|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B) +(B (B 10 (B (Balbum(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:album"/,+2s/^ +variant +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B) +(B (B 11 (B (Btitle(B=(B$((Becho(B (B"(B$meta(B"(B (B|(B (Bsed(B -nr (B'(B/xesam:title"/,+2s/^ +variant +string "(.*)"$/\1/p(B'(B (B|(B (Btail(B (B-1(B (B|(B (Bsed(B (B'(Bs/\&/\\&/g(B'|(B (Bsed(B (B'(Bs#\/#\\/#g(B'(B) +(B (B 12 +(B (B 13 (B (Becho(B (B"(B${*(B:-(B%artist% - %title%(B}(B"(B (B|(B (Bsed(B (B"(Bs/%artist%/(B$artist(B/g;s/%title%/(B$title(B/g;s/%album%/(B$album(B/g(B"(Bi (B|(B (Bsed(B (B"(Bs/(B\&(B/(B\&(B/g(B"(B (B|(B (Bsed(B (B"(Bs#(B\/(B#\/#g" +(B (B 14 +(B (B 15 (B} +(B (B 16 +(B (B 17 (Bmain (B"(B$@(B"[?25h[?25l(B :[?1002h[?1006h]112[2 q[?25h[?25lq[?25h[?25l q [?25h[?25l[?1002l[?1006l]112[2 q[?25h[?25l]112[2 q(B[?25h[?1l>[?1049l[?2004l[?1004l[?25h% nazarick ~/.config/polybar/scripts [master ]  [?2004hrrmr   nazarick ~/.config/polybar/scripts [master ]   nazarick ~/.config/polybar/scripts [master ]  c l[?2004l +total 12K +-rwxr-xr-x 1 marc marc 912 30. Sep 19:12 spotify.sh* +-rwxr-xr-x 1 marc marc 3,6K 30. Sep 19:12 spotify_status.py* +-rwxr-xr-x 1 marc marc 27 30. Sep 19:08 yay_updates.sh* +% nazarick ~/.config/polybar/scripts [master ]  [?2004h...[?2004l +% nazarick ~/.config/polybar [master ]  [?2004hfg[?2004l +fg: no current job +% nazarick ~/.config/polybar [master ]  [?2004hfg[?2004l +fg: no current job +% nazarick ~/.config/polybar [master ]  [?2004hccd[?2004l +% nazarick ~  [?2004hfg[?2004l +fg: no current job +% nazarick ~  [?2004hfg[?2004l +fg: no current job +% nazarick ~  [?2004hfg[?2004l +fg: no current job +% nazarick ~  [?2004hfg[?2004l +fg: no current job +% nazarick ~  [?2004hvvivim [?2004l +% nazarick ~  [?2004hccd c  ..c.coon.config/.config/ppool.config/polybar/r [?2004l +% nazarick ~/.config/polybar [master ]  [?2004hvvivim ccoonnfig[?2004l +[?1049h[?1h=]11;?[?2004h[?25h[?25l(B[?1004h[?25h[?25l1 (B# vim:ft=dosini(B +(B 1 (B +(B 2 (B[colors](B +(B 3 (Bbackground(B =(B #000000(B +(B 4 (Bforeground(B =(B #ffffff(B +(B 5 (Burgent(B =(B #e06c75(B +(B 6 (B +(B 7 (B[bar/laptop](B +(B 8 (Bmonitor(B =(B ${env:MONITOR}(B +(B 9 (B +(B 10 (Bfont-0(B =(B "FiraCode Nerd Font Mono:pixelsize=9;2"(B +(B 11 (Bfont-1(B =(B "IPAGothic:fontformat=truetype:antialias=false:pixelsize=9;2"(B +(B 12 (Bfont-2(B =(B "Siji:size=7;1"(B +(B 13 (Bfont-3(B =(B "Wuncon Siji:size=7;1"(B +(B 14 (B +(B 15 (Bheight(B =(B 27px(B +(B 16 (Bwidth(B =(B 100%(B +(B 17 (B +(B 18 (Bmodule-margin-right(B =(B 1(B +(B 19 (Bmodule-margin-left(B =(B 1(B +(B 20 (B +(B 21 (Bpadding-left(B =(B 1(B +(B 22 (Bpadding-right(B =(B 1(B +(B 23 (B +(B 24 (Bseparator(B =(B /(B +(B 25 (B +(B 26 (Bmodules-left(B =(B i3 xwindow(B +(B 27 (Bmodules-right(B =(B network volume backlight battery date(B +(B 28 (B +(B 29 (Btray-position(B =(B right(B +(B 30 (Btray-padding(B =(B 1(B +(B 31 (B +(B 32 (Bforeground(B =(B ${colors.foreground}(B +(B 33 (Bbackground(B =(B ${colors.background}(B +(B 34 (B +(B 35 (Bwm-name(B =(B i3(B +(B 36 (Bwm-restack(B =(B i3(B +(B 37 (B +(B 38 (B[bar/desktop](B +(B 39 (Binherit(B =(B bar/laptop(B +(B 40 (B +(B 41 (Bmodules-right(B =(B update_yay networkupdown volume date(B +(B 42 (B +(B 43 (B[bar/desktop_second](B +(B 44 (Binherit(B =(B bar/desktop(B +(B 45 (B +(B 46 (Btray-position(B =(B none(B +(B 47 (B +(B 48 (Bmodules-right(B =(B volume date(B +(B 49 (B +(B 50 (B[module/i3](B +(B 51 (Btype(B =(B internal/i3(B +(B 52 (Bpin-workspaces(B =(B true(B +(B 53 (Bwrapping-scroll(B =(B false(B +(B 54 (Bformat(B =(B (B +(B 55 (B +(B 56 (Bws-icon-0(B =(B 1;一(B +(B 57 (Bws-icon-1(B =(B 2;二(B +(B 58 (Bws-icon-2(B =(B 3;三(B +(B 59 (Bws-icon-3(B =(B 4;四(B +(B 60 (Bws-icon-4(B =(B 5;五(B +(B 61 (Bws-icon-5(B =(B 6;六(B +(B 62 (Bws-icon-6(B =(B 7;七(B +(B 63 (Bws-icon-7(B =(B 8;八(B +(B 64 (Bws-icon-8(B =(B 9;九(B +(B 65 (Bws-icon-9(B =(B 10;十(B +(B 66 (Bws-icon-default(B =(B (B +(B 67 (B +(B 68 (Blabel-focused(B =(B "%icon%"(B +(Bconfig1,1 Top]112[2 q]112[2 q(B1 (B# vim:ft=dosini(B +(B 1 (B +(B 2 (B[colors](B +(B 3 (Bbackground(B =(B #000000(B +(B 4 (Bforeground(B =(B #ffffff(B +(B 5 (Burgent(B =(B #e06c75(B +(B 6 (B +(B 7 (B[bar/laptop](B +(B 8 (Bmonitor(B =(B ${env:MONITOR}(B +(B 9 (B +(B 10 (Bfont-0(B =(B "FiraCode Nerd Font Mono:pixelsize=9;2"(B +(B 11 (Bfont-1(B =(B "IPAGothic:fontformat=truetype:antialias=false:pixelsize=9;2"(B +(B 12 (Bfont-2(B =(B "Siji:size=7;1"(B +(B 13 (Bfont-3(B =(B "Wuncon Siji:size=7;1"(B +(B 14 (B +(B 15 (Bheight(B =(B 27px(B +(B 16 (Bwidth(B =(B 100%(B +(B 17 (B +(B 18 (Bmodule-margin-right(B =(B 1(B +(B 19 (Bmodule-margin-left(B =(B 1(B +(B 20 (B +(B 21 (Bpadding-left(B =(B 1(B +(B 22 (Bpadding-right(B =(B 1(B +(B 23 (B +(B 24 (Bseparator(B =(B /(B +(B 25 (B +(B 26 (Bmodules-left(B =(B i3 xwindow(B +(B 27 (Bmodules-right(B =(B network volume backlight battery date(B +(B 28 (B +(B 29 (Btray-position(B =(B right(B +(B 30 (Btray-padding(B =(B 1(B +(B 31 (B +(B 32 (Bforeground(B =(B ${colors.foreground}(B +(B 33 (Bbackground(B =(B ${colors.background}(B +(B 34 (B +(B 35 (Bwm-name(B =(B i3(B +(B 36 (Bwm-restack(B =(B i3(B +(B 37 (B +(B 38 (B[bar/desktop](B +(B 39 (Binherit(B =(B bar/laptop(B +(B 40 (B +(B 41 (Bmodules-right(B =(B update_yay networkupdown volume date(B +(B 42 (B +(B 43 (B[bar/desktop_second](B +(B 44 (Binherit(B =(B bar/desktop(B +(B 45 (B +(B 46 (Btray-position(B =(B none(B +(B 47 (B +(B 48 (Bmodules-right(B =(B volume date(B +(B 49 (B +(B 50 (B[module/i3](B +(B 51 (Btype(B =(B internal/i3(B +(B 52 (Bpin-workspaces(B =(B true(B +(B 53 (Bwrapping-scroll(B =(B false(B +(B 54 (Bformat(B =(B (B +(B 55 (B +(B 56 (Bws-icon-0(B =(B 1;一(B +(B 57 (Bws-icon-1(B =(B 2;二(B +(B 58 (Bws-icon-2(B =(B 3;三(B +(B 59 (Bws-icon-3(B =(B 4;四(B +(B 60 (Bws-icon-4(B =(B 5;五(B +(B 61 (Bws-icon-5(B =(B 6;六(B +(B 62 (Bws-icon-6(B =(B 7;七(B +(B 63 (Bws-icon-7(B =(B 8;八(B +(B 64 (Bws-icon-8(B =(B 9;九(B +(B 65 (Bws-icon-9(B =(B 10;十(B +(B 66 (Bws-icon-default(B =(B (B +(B 67 (B +(B 68 (Blabel-focused(B =(B "%icon%"(B +(Bconfig 1,1 Top(B +[?25h[?25l(B 68 (Btype(B =(B internal/battery(B(B67 (Bbattery(B =(B BAT0(B66 (Bapdapter(B =(B ADP1(B65 (B(B64 (Bformat-charging(B =(B (B63 (Bformat-discharging(B =(B (B62 (Bformat-full(B =(B (B61 (B(B60 (Blabel-charging(B =(B %percentage%%(B59 (Blabel-discharging(B =(B %percentage%%(B58 (Blabel-full(B =(B %percentage%%(B(B57 (B(B56 (Bramp-capacity-0(B =(B (B(B55 (Bramp-capacity-1(B =(B (B(B54 (Bramp-capacity-2(B =(B (B53 (Bramp-capacity-3(B =(B (B52 (Bramp-capacity-4(B =(B (B51 (Bramp-capacity-5(B =(B (B50 (Bramp-capacity-6(B =(B (B (B49 (Bramp-capacity-7(B =(B (B (B48 (Bramp-capacity-8(B =(B (B47 (Bramp-capacity-9(B =(B (B46 (B(B45 (Banimation-charging-0(B =(B (B44 (Banimation-charging-1(B =(B (B43 (Banimation-charging-2(B =(B (B42 (Banimation-charging-3(B =(B (B (B41 (B(B40 (Banimation-charging-framerate(B =(B 750(B39 (B(B8 (B[module/volume](B (B7 (Btype(B =(B internal/pulseaudio(B6 (Bformat-volume(B =(B (B5 (B +(Bramp-volume-0(B =(B (B3 (Bramp-volume-1(B =(B (B2 (Bramp-volume-2(B =(B (B1 (Bramp-volume-3(B =(B (B0 (Bramp-volume-4(B =(B (B29 (Bramp-headphones-0(B =(B (B28 (Bramp-headphones-1(B =(B (B27 (B(B26 (Blabel-volume(B =(B %percentage%%(B25 (Bformat-muted-prefix(B =(B " "(B24 (Blabel-muted(B =(B muted(B (B2322 (B[module/network](B (B21 (Btype(B =(B internal/network(B20 (Binterface(B =(B wlo1(B(B19 (Binterval(B =(B 3.0(B18 (Baccumulate-stats(B =(B true(B17 (Bunknown-as-up(B =(B true(B16 (Blabel-connected(B =(B  %essid%(B15 (Blabel-disconnected(B =(B no wifi(B14 (B(B13 (B[module/networkupdown](B12 (Btype(B =(B internal/network(B11 (Binterface(B =(B enp24s0(B10 (Binterval(B =(B 3.0(B (B 9 (Baccumulate-stats(B =(B true(B 8 (Bunknown-as-up(B =(B true(B 7 (Blabel-connected(B =(B  %upspeed%  %downspeed%(B 6 (B(B 5 (B[module/update_yay](B 4 (Btype(B =(B custom/script(B 3 (Bexec(B =(B ~/.config/polybar/scripts/yay_updates.sh(B 2 (Bformat-prefix(B =(B " "(B 1 (Bclick-left(B =(B alacritty -e yay -Syu +(B172 (Binterval(B =(B 60(B (B72,1 Bot[?25h[?25l]112[6 q[?25h[?25l(Bbattery(B =(B BAT0(B(Bapdapter(B =(B ADP1(B +(Bformat-charging(B =(B (Bdischarging(B =(B (Bfull(B =(B (B +(Blabel-charging(B =(B %percentage%%(Bdischarging(B =(B %percentage%%(Bfull(B =(B %percentage%%(B +(Bramp-capacity-0(B =(B (B12(B =(B (B34(B =(B (B567(B =(B (B89(B +(Banimation-charging-0(B =(B (B1(B =(B (B2(B =(B (B3(B =(B (B +(Banimation-charging-framerate(B =(B 750(B +(B[module/volume](Btype(B =(B internal/pulseaudio(Bformat-volume(B =(B (B +(Bramp-volume-0(B =(B (B1(B =(B (B234headphones-0(B =(B (B1(B +(Blabel-volume(B =(B %percentage%%(Bformat-muted-prefix(B =(B " "(B (Blabel-muted(B =(B muted(B +(B[module/network](Btype(B =(B internal/network(Binterface(B =(B wlo1(B(Bval(B =(B 3.0(B (Baccumulate-stats(B =(B true(Bunknown-as-up(B =(B true(B (Blabel-connected(B =(B  %essid%(Bdisconnected(B =(B no wifi(B +(B[module/networkupdown](Btype(B =(B internal/network(Binterface(B =(B enp24s0(B (Bval(B =(B 3.0(B(Baccumulate-stats(B =(B true(Bunknown-as-up(B =(B true(B (Blabel-connected(B =(B  %upspeed%  %downspeed%(B +(B[module/update_yay](Btype(B =(B custom/script(Bexec(B =(B ~/.config/polybar/scripts/yay_updates.sh(Bformat-prefix(B =(B " "(B(Bclick-left(B =(B alacritty -e yay -Syu(Binterval(B =(B 60(B3 (B (B[+]3[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B(B8765432160987654321509876543214098765432130987654321209876543211098765432 + 1 (B +174 (B (B4[?25h[?25l[?1002h[?1006h[?1002l[?1006l(B[]]112[2 q[?25h[?25l]112[6 q[?25h[?25l(B[](B2[?25h[?25l(Bm(B]m(B](B3[?25h[?25l(Bo(B]o(B](B4[?25h[?25l(Bd(B]d(B](B5[?25h[?25l(Bu(B]u(B](B6[?25h[?25l(Bi(B]i(B](B7[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B](B (B](B6[?25h[?25l(Bl(B]l(B](B7[?25h[?25l(Be(B]e(B](B8[?25h[?25l(B/(B]/(B](B9[?25h[?25l(B[module/](B basename Neosnippet (B (B bname Neosnippet (B (B date_english Neosnippet (B (B date_iso8601 Neosnippet (B (B datetime_iso8601 Neosnippet (B (B dd Neosnippet (B (B df Neosnippet (B (B dt Neosnippet (B (B filename Neosnippet (B (B filename_lower_camel Neosnippet (B [?25h[?25l(Bs][?25h[?25l(B-as-up(B =(B true(B (Bonnected(B =(B  %upspeed%  %downspeed(B (B/update_yay](B (Bcustom/script(B (B~/.config/polybar/scripts/yay_updat(Bprefix(B =(B " "(B (Beft(B =(B alacritty -e yay -Syu(B (Bl(B =(B 60(B  (B[(Bmodule/s(B](B10[?25h[?25l(B[module/sp][?25h[?25l(B[(Bmodule/sp(B](B1[?25h[?25l(B[module/spo][?25h[?25l(B[(Bmodule/spo(B](B2[?25h[?25l(B[module/spot][?25h[?25l(B[(Bmodule/spot(B](B3[?25h[?25l(B[module/spoti][?25h[?25l(B[(Bmodule/spoti(B](B4[?25h[?25l(B[module/spotif][?25h[?25l(B[(Bmodule/spotif(B](B5[?25h[?25l(B[module/spotify][?25h[?25l(B[(Bmodule/spotify(B](B6[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B] (B](B7[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B](B (B](B6[?25h[?25l(B[module/spotify](B5]112[2 q[?25h[?25l]112[6 q[?25h[?25l(B(B8765432160987654321509876543214098765432130987654321209876543211098765432 + 1 (B[module/spotify](B +175 (B (B5,1 [?25h[?25l(Bt(B2[?25h[?25l(B time_colon Neosnippet  typescript Path (file) [?25h[?25l(By(B (B  (B typescript Path (file) [?25h[?25l(B3[?25h[?25l(Bp[?25h[?25l(B4[?25h[?25l(Be[?25h[?25l(B5[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B·(B (B[module/spotify](B (B6[?25h[?25l(Btype(B =(B7[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B·(B8[?25h[?25l(B c(B9[?25h[?25l(B config Path (file)  config.nord Path (file) [?25h[?25l(Bu[?25h[?25l(B (Be/spotify](B (B10[?25h[?25l(Bs[?25h[?25l(B1[?25h[?25l(Bo[?25h[?25lt[?25h[?25l(B3[?25h[?25l(Bm[?25h[?25l(B4[?25h[?25l(B/(B5[?25h[?25l(B basename Neosnippet (B (B bname Neosnippet (B (B date_english Neosnippet (B (B date_iso8601 Neosnippet (B (B datetime_iso8601 Neosnippet (B (B dd Neosnippet (B (B df Neosnippet (B (B dt Neosnippet (B (B filename Neosnippet (B (B filename_lower_camel Neosnippet (B [?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (Bed(B =(B  %upspeed%  %downspeed%(B  (Be_yay](B (B/script(B (Bfig/polybar/scripts/yay_updates.sh(B  =(B " "(B (Balacritty -e yay -Syu(B   (Bfy](B (B4[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B3[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B2[?25h[?25l(B launch.sh.nord Path (file) [?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (Be/spotify](B (B1[?25h[?25l(Bt(B2[?25h[?25l(Bo(B3[?25h[?25l(Bm(B4[?25h[?25l(B/(B5[?25h[?25l(B basename Neosnippet (B (B bname Neosnippet (B (B date_english Neosnippet (B (B date_iso8601 Neosnippet (B (B datetime_iso8601 Neosnippet (B (B dd Neosnippet (B (B df Neosnippet (B (B dt Neosnippet (B (B filename Neosnippet (B (B filename_lower_camel Neosnippet (B [?25h[?25l(Bs[?25h[?25l(Bed(B =(B  %upspeed%  %downspeed%(B  (Be_yay](B (B/script(B (Bfig/polybar/scripts/yay_updates.sh(B  =(B " "(B (Balacritty -e yay -Syu(B   (Bfy](B (B6[?25h[?25l(Bc[?25h[?25l(B7[?25h[?25l(Br[?25h[?25l(B8[?25h[?25l(Bi[?25h[?25l(B9[?25h[?25l(Bp[?25h[?25l(B20[?25h[?25l(Bt[?25h[?25l(B1[?25h[?25l(Bs[?25h[?25l(B2[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B(B8765432160987654321509876543214098765432130987654321209876543211098765432 + 1 (Btype(B =(B custom/scripts(B +176 (B (B6,1 [?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B765432105987654321049876543210398765432102987654321019876543210 987654321 +(B175 (Btype(B =(B custom/scripts(B +(B~(B5,22[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B1[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B8765432160987654321509876543214098765432130987654321209876543211098765432 + 1 (Btype(B =(B custom/script(B +176 (B (B6,1 [?25h[?25l(Bi(B2[?25h[?25l(Bn(B3[?25h[?25l(Br(B4[?25h[?25l(Be(B5[?25h[?25l(Br(B6[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B5[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B4[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B3[?25h[?25l(Bt(B4[?25h[?25l(By(B5[?25h[?25l(Br(B6[?25h[?25l(Bt(B7[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B6[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B5[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B4[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B3[?25h[?25l(Bt(B4[?25h[?25l(Be(B5[?25h[?25l(Br(B6[?25h[?25l(Bv(B7[?25h[?25l(Ba(B8[?25h[?25l(Bk(B9[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B8[?25h[?25l(Bl(B9[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B·(B10[?25h[?25l(Binterval(B =(B1[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B·(B2[?25h[?25l(B 1(B3[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B·(B4[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B (B3[?25h[?25l[?1002h[?1006h[?1002l[?1006l]112[6 q[?25h[?25l(B(B8765432160987654321509876543214098765432130987654321209876543211098765432 + 1 (Binterval(B =(B 1(B +177 (B (B7,1 [?25h[?25l[?25h[?25l(B (B 68 (Bformat-discharging(B =(B +(B (B 67 (Bformat-full(B =(B +(B (B 66 +(B (B 65 (Blabel-charging(B =(B %percentage%% +(B (B 64 (Blabel-discharging(B =(B %percentage%% +(B (B 63 (Blabel-full(B =(B %percentage%% +(B (B 62 +(B (B 61 (Bramp-capacity-0(B =(B  +(B (B 60 (Bramp-capacity-1(B =(B  +(B (B 59 (Bramp-capacity-2(B =(B  +(B (B 58 (Bramp-capacity-3(B =(B  +(B (B 57 (Bramp-capacity-4(B =(B  +(B (B 56 (Bramp-capacity-5(B =(B  +(B (B 55 (Bramp-capacity-6(B =(B  +(B (B 54 (Bramp-capacity-7(B =(B  +(B (B 53 (Bramp-capacity-8(B =(B  +(B (B 52 (Bramp-capacity-9(B =(B  +(B (B 51 +(B (B 50 (Banimation-charging-0(B =(B  +(B (B 49 (Banimation-charging-1(B =(B  +(B (B 48 (Banimation-charging-2(B =(B  +(B (B 47 (Banimation-charging-3(B =(B  +(B (B 46 +(B (B 45 (Banimation-charging-framerate(B =(B 750 +(B (B 44 +(B (B 43 (B[module/volume] +(B (B 42 (Btype(B =(B internal/pulseaudio +(B (B 41 (Bformat-volume(B =(B +(B (B 40 +(B (B 39 (Bramp-volume-0(B =(B  +(B (B 38 (Bramp-volume-1(B =(B  +(B (B 37 (Bramp-volume-2(B =(B  +(B (B 36 (Bramp-volume-3(B =(B  +(B (B 35 (Bramp-volume-4(B =(B  +(B (B 34 (Bramp-headphones-0(B =(B  +(B (B 33 (Bramp-headphones-1(B =(B  +(B (B 32 +(B (B 31 (Blabel-volume(B =(B %percentage%% +(B (B 30 (Bformat-muted-prefix(B =(B " " +(B (B 29 (Blabel-muted(B =(B muted +(B (B 28 +(B (B 27 (B[module/network] +(B (B 26 (Btype(B =(B internal/network +(B (B 25 (Binterface(B =(B wlo1 +(B (B 24 (Binterval(B =(B 3.0 +(B (B 23 (Baccumulate-stats(B =(B true +(B (B 22 (Bunknown-as-up(B =(B true +(B (B 21 (Blabel-connected(B =(B  %essid% +(B (B 20 (Blabel-disconnected(B =(B no wifi +(B (B 19 +(B (B 18 (B[module/networkupdown] +(B (B 17 (Btype(B =(B internal/network +(B (B 16 (Binterface(B =(B enp24s0 +(B (B 15 (Binterval(B =(B 3.0 +(B (B 14 (Baccumulate-stats(B =(B true +(B (B 13 (Bunknown-as-up(B =(B true +(B (B 12 (Blabel-connected(B =(B  %upspeed%  %downspeed% ++ (B 11 +(B+ (B 10 (B[module/update_yay] +(B+ (B 9 (Btype(B =(B custom/script ++ (B 8 (Bexec(B =(B ~/.config/polybar/scripts/yay_updates.sh ++ (B 7 (Bformat-prefix(B =(B " " ++ (B 6 (Bclick-left(B =(B alacritty -e yay -Syu ++ (B 5 (Binterval(B =(B 60 +(B+ (B 4 +(B+ (B 3 (B[module/spotify] +(B+ (B 2 (Btype(B =(B custom/script ++ (B 1 (Binterval(B =(B 1 +(B+ (B177 [?25h[?25l(B876543261609876543251509876543241409876543231309876543221209876543211109876543 2 (Bformat-prefix(B =(B " "(B + (B 1 (Bformat(B =(B