diff --git a/README.md b/README.md
index a925ada..dad8326 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-
-
-
+
+
+
## Setup Overview
@@ -22,9 +22,9 @@ Based on [end-4/dots-hyprland](https://github.com/end-4/dots-hyprland) but witho
## Eww
-- **"main"**, modified from [syndrizzle/hotfiles](https://github.com/syndrizzle/hotfiles/tree/bspwm) without notification center.
-- **"lyrics"**, dependent on api from [akashrchandran/spotify-lyrics-api](https://github.com/akashrchandran/spotify-lyrics-api) and [a small program](https://github.com/Uyanide/spotify-lyrics) from myself.
-- weather API from [Openweather](https://openweathermap.org/), requires API Key and two systemd files in `.utils/`
+- `main`, main dashboard, modified from [syndrizzle/hotfiles](https://github.com/syndrizzle/hotfiles/tree/bspwm) without notification center.
+- `lyrics`, scrolling lyrics player, dependents on api from [akashrchandran/spotify-lyrics-api](https://github.com/akashrchandran/spotify-lyrics-api) and [a small program](https://github.com/Uyanide/spotify-lyrics) from myself (which also happens to be my frist Golang program :D).
+- `lyrics-single`, similars to `lyrics`, but limited to a single line and therefore fits well in statusbar.
## Grub theme
@@ -36,7 +36,7 @@ Gathered from internet, based on I don't know who (such config files had
## Fonts
-Not unified, combination of:
+including:
- MesloLGM Nerd Font (& Mono)
- Maple Mono Normal CN
diff --git a/backgrounds b/backgrounds
index 8ee8748..7bc6ddc 160000
--- a/backgrounds
+++ b/backgrounds
@@ -1 +1 @@
-Subproject commit 8ee874807dec500361040c91605c8fc62ac3d4fe
+Subproject commit 7bc6ddcff6bd0c7d68b2837655dd51c033694767
diff --git a/eww/Lyrics/eww.scss b/eww/Lyrics/eww.scss
index 36c592a..1ab9899 100644
--- a/eww/Lyrics/eww.scss
+++ b/eww/Lyrics/eww.scss
@@ -9,14 +9,25 @@
border: 2px solid $blue;
}
+.lyrics-window-single {
+ background-color: rgba(30, 30, 46, 0.6);
+ border-radius: 14px;
+ border: 2px solid $blue;
+}
+
.lyrics-box {
- margin: 20px;
+ margin: 20px 10px 0 20px;
min-width: 500px;
+ min-height: 70px;
+ background-color: $gray-alt;
+ border-radius: 15px;
+ padding: 10px;
+ box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
}
.lyrics-box-single {
- margin: 10px;
- min-width: 300px;
+ margin: 5px 0px 5px 10px;
+ min-width: 634px;
}
.lyrics-text {
@@ -27,19 +38,17 @@
.lyrics-text-single {
color: $fg;
- font-size: 14px;
- font-family: 'Noto Sans', sans-serif;
+ font-size: 15px;
+ font-family: 'Maple Mono Normal NF CN', 'Maple Mono CN', monospace;
+ min-height: 29px;
}
.control-box {
+ margin: 20px 10px 0 0;
padding: 6px;
min-height: 90px;
}
-.control-box-single {
- min-height: 40px;
-}
-
.offset-minus,
.offset-reset,
.offset-plus,
@@ -52,7 +61,9 @@
}
.offset-minus-single,
-.offset-plus-single {
+.offset-plus-single,
+.offset-reset-single,
+.info-single {
padding: 0px 6px;
margin: 0;
font-family: 'MesloLGM Nerd Font Mono';
@@ -70,10 +81,94 @@
color: $yellow;
}
-.offset-reset {
+.offset-reset,
+.offset-reset-single {
color: $green;
}
.offset-clear {
color: $red;
}
+
+.info-single {
+ color: $cyan;
+}
+
+.offset-minus:hover,
+.offset-reset:hover,
+.offset-plus:hover,
+.offset-clear:hover,
+.offset-minus-single:hover,
+.offset-plus-single:hover,
+.offset-reset-single:hover,
+.lyrics-info:hover,
+.info-single:hover,
+.player-prev:hover,
+.player-next:hover,
+.player-pp:hover {
+ color: $fg;
+}
+
+.player-music-slider-box {
+ padding: 12px;
+ margin: 10px 0 20px 20px;
+ border-radius: 15px;
+ background-color: $gray-alt;
+ box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
+ min-height: 16px;
+}
+
+.player-music-slider trough {
+ background-color: $gray;
+}
+
+.player-music-slider highlight {
+ background-color: $blue;
+ padding: 3px;
+}
+
+.player-music-slider {
+ min-width: 200px;
+}
+
+.player-controls-box {
+ margin: 10px 0 20px 20px;
+}
+
+.player-pp,
+.player-next,
+.player-prev,
+.lyrics-info {
+ padding: 0px 6px;
+ margin: 0px 4px 0px 4px;
+ font-family: 'MesloLGM Nerd Font Mono';
+ font-size: 25px;
+ min-width: 16px;
+ color: $fg-alt;
+}
+
+.lyrics-info {
+ color: $cyan;
+}
+
+.offset-box {
+ padding: 11px;
+ margin: 10px 20px 20px 10px;
+ border-radius: 15px;
+ background-color: $gray-alt;
+ box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
+}
+
+.offset-label {
+ color: $fg-alt;
+ font-size: 15px;
+ font-family: 'Maple Mono Normal NF CN', 'Maple Mono CN', monospace;
+ margin-right: 10px;
+}
+
+.offset-value {
+ color: $fg;
+ font-size: 15px;
+ font-family: 'Maple Mono Normal NF CN', 'Maple Mono CN', monospace;
+ margin-right: 10px;
+}
diff --git a/eww/Lyrics/eww.yuck b/eww/Lyrics/eww.yuck
index 9b67bdd..a5d03a7 100644
--- a/eww/Lyrics/eww.yuck
+++ b/eww/Lyrics/eww.yuck
@@ -1,31 +1,64 @@
-(defpoll lyriclines :interval "500ms" "~/.local/bin/spotify-lyrics print -l 3 -f \"$HOME/.local/state/eww/lyrics/offset\" 2> temp.log")
-(deflisten lyricline "~/.local/bin/spotify-lyrics listen -l 1 -f \"$HOME/.local/state/eww/lyrics/offset\" 2> temp.log")
+(defpoll lyriclines :interval "500ms" "~/.local/bin/spotify-lyrics print -l 3 -f \"$HOME/.local/state/eww/lyrics/offset\"")
+(deflisten lyricline "~/.local/bin/spotify-lyrics listen -l 1 -f \"$HOME/.local/state/eww/lyrics/offset\"")
+(defpoll position :interval "1s" "~/.local/bin/spotify-lyrics position")
+(defpoll length :interval "1s" "~/.local/bin/spotify-lyrics length")
+(defpoll offset :interval "1s" "cat $HOME/.local/state/eww/lyrics/offset")
+(defvar hover false)
(defwidget lyrics []
- (box :class "lyrics-window" :space-evenly "false" :orientation "h"
- (box :class "lyrics-box" :vexpand "false" :hexpand "false" :valign "center" :space-evenly "false" :orientation "v"
- (label :class "lyrics-text"
- :vexpand "false" :hexpand "false" :space-evenly "false"
- :halign "start"
- :text lyriclines
+ (box :class "lyrics-window" :space-evenly "false" :orientation "v"
+ (box :class "lyrics-container" :space-evenly "false" :orientation "h"
+ (box :class "lyrics-box" :vexpand "false" :hexpand "false" :valign "center" :space-evenly "true" :orientation "v"
+ (label :class "lyrics-text"
+ :vexpand "false" :hexpand "false" :space-evenly "false"
+ :halign "start"
+ :text lyriclines
+ )
+ )
+ (box :class "control-box" :vexpand "false" :hexpand "false" :space-evenly "true" :orientation "v"
+ (box :class "control-row-1" :space-evenly "false" :orientation "h"
+ (button :class "offset-plus" :onclick "Lyrics/scripts/lyric-offset.py +500" "")
+ (button :class "offset-minus" :onclick "Lyrics/scripts/lyric-offset.py -500" "")
+ )
+ (box :class "control-row-1" :space-evenly "false" :orientation "h"
+ (button :class "offset-reset" :onclick "Lyrics/scripts/lyric-offset.py" "")
+ (button :class "offset-clear" :onclick "Lyrics/scripts/lyric-clear.sh" "")
+ )
)
)
- (box :class "control-box" :vexpand "false" :hexpand "false" :space-evenly "true" :orientation "v"
- (box :class "control-row-1" :space-evenly "false" :orientation "h"
- (button :class "offset-minus" :onclick "Lyrics/scripts/lyric-offset.py -500" "")
- (button :class "offset-plus" :onclick "Lyrics/scripts/lyric-offset.py +500" "")
+ (box :class "player-controls" :space-evenly "false" :orientation "h"
+ (box :class "player-music-slider-box"
+ :vexpand "false" :hexpand "false" :valign "center" :space-evenly "false" :orientation "h"
+ (eventbox :onhover "eww update hover=true"
+ :onhoverlost "eww update hover=false"
+ :cursor "pointer"
+ :space-evenly "false"
+ (scale :orientation "h" :class "player-music-slider"
+ :min 0 :max length :value position
+ :onchange { hover ? "~/.local/bin/spotify-lyrics set-position {}" : "" })
+ )
)
- (box :class "control-row-1" :space-evenly "false" :orientation "h"
- (button :class "offset-reset" :onclick "Lyrics/scripts/lyric-offset.py" "")
- (button :class "offset-clear" :onclick "Lyrics/scripts/lyric-clear.sh" "")
+ (box :class "player-controls-box"
+ :vexpand "false" :hexpand "false" :valign "center" :space-evenly "false" :orientation "h"
+ (button :class "player-prev" :onclick "playerctl prev --player=spotify" "")
+ (button :class "player-pp" :onclick "playerctl play-pause --player=spotify" "")
+ (button :class "player-next" :onclick "playerctl next --player=spotify" "")
+ (button :class "lyrics-info" :onclick "ghostty -e '\"$HOME/.local/bin/spotify-lyrics\" fetch | less' &" "")
+ )
+ (box :class "offset-box"
+ :vexpand "false" :hexpand "true" :valign "center" :halign "center" :space-evenly "false" :orientation "h"
+ (label :class "offset-label" :text "Offset (ms): ")
+ (label :class "offset-value" :text offset)
)
)
)
)
(defwidget lyrics-single []
- (box :class "lyrics-window" :space-evenly "false" :orientation "h"
- (box :class "lyrics-box-single" :vexpand "false" :hexpand "false" :valign "center" :space-evenly "false" :orientation "v"
+ (box :class "lyrics-window-single" :space-evenly "false" :orientation "h"
+ (box :class "lyrics-box-single"
+ :vexpand "false" :hexpand "false"
+ :valign "center" :space-evenly "false" :orientation "v"
(label :class "lyrics-text-single"
:vexpand "false" :hexpand "false" :space-evenly "false"
:halign "start"
@@ -34,8 +67,10 @@
)
(box :class "control-box-single" :vexpand "false" :hexpand "false" :space-evenly "true" :orientation "v"
(box :class "control-row-1-single" :space-evenly "false" :orientation "h"
- (button :class "offset-minus-single" :onclick "Lyrics/scripts/lyric-offset.py -500" "")
+ (button :class "info-single" :onclick "ghostty -e '\"$HOME/.local/bin/spotify-lyrics\" fetch | less' &" "")
(button :class "offset-plus-single" :onclick "Lyrics/scripts/lyric-offset.py +500" "")
+ (button :class "offset-reset-single" :onclick "Lyrics/scripts/lyric-offset.py" "")
+ (button :class "offset-minus-single" :onclick "Lyrics/scripts/lyric-offset.py -500" "")
)
)
)
@@ -53,6 +88,6 @@
:windowtype "normal"
:wm-ignore true
:monitor 0
- :geometry (geometry :anchor "top right")
+ :geometry (geometry :x 1100 :y -49)
(lyrics-single)
)
\ No newline at end of file
diff --git a/eww/Lyrics/scripts/lyric-show.sh b/eww/Lyrics/scripts/lyric-show.sh
new file mode 100644
index 0000000..13f4793
--- /dev/null
+++ b/eww/Lyrics/scripts/lyric-show.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+
diff --git a/eww/Main/eww.scss b/eww/Main/eww.scss
index a8641e0..5c497e3 100644
--- a/eww/Main/eww.scss
+++ b/eww/Main/eww.scss
@@ -5,19 +5,19 @@
.main-window {
background-color: $bg;
- font-family: 'Font Awesome 6 Free';
+ font-family: 'Font Awesome 6 Free', FontAwesome;
border-radius: 20px;
border: 2px solid $blue;
}
.date-box {
- background-color: $gray-alt;
+ // background-color: $gray-alt;
margin: 20px 20px 0px 20px;
min-width: 290px;
padding: 20px 10px 20px 10px;
border-radius: 15px;
color: $fg;
- box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
+ // box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
}
.time {
@@ -118,11 +118,11 @@
}
.fortune-box {
- background-color: $gray-alt;
+ // background-color: $gray-alt;
margin: 20px 20px 0px 0px;
padding: 20px 35px 20px 25px;
border-radius: 15px;
- box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
+ // box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
}
.fortune-header {
@@ -218,11 +218,11 @@
.music-controls-box {
margin: 20px 20px 0px 20px;
- background-color: $gray-alt;
+ // background-color: $gray-alt;
padding: 0px 23px 0px 23px;
border-radius: 15px;
text-shadow: 0px 0px 10px rgba(0, 0, 0, 1);
- box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
+ // box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
}
.music-next,
@@ -243,10 +243,10 @@
.profile-stuff-box {
margin: 20px 20px 20px 20px;
- background-color: $gray-alt;
+ // background-color: $gray-alt;
border-radius: 15px;
padding: 15px 20px 15px 20px;
- box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
+ // box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
}
.profile-img {
@@ -255,7 +255,7 @@
background-size: cover;
background-position: center;
min-width: 90px;
- box-shadow: 0px 0px 10px rgba(0, 0, 0, 1);
+ box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
}
.profile-stuff {
@@ -266,6 +266,6 @@
}
.profile-name {
- font-family: 'Fira Sans Semibold', 'Font Awesome 6 Free', FontAwesome;
+ font-family: 'Font Awesome 6 Free', FontAwesome;
font-weight: bold;
}