feat(eww): add spotify widget
This commit is contained in:
parent
330dfa896f
commit
002c7ded92
7 changed files with 163 additions and 1 deletions
|
@ -5,5 +5,6 @@
|
||||||
@import "colors.scss";
|
@import "colors.scss";
|
||||||
@import "date/date.scss";
|
@import "date/date.scss";
|
||||||
@import "powermenu/powermenu.scss";
|
@import "powermenu/powermenu.scss";
|
||||||
|
@import "playerinfo/playerinfo.scss";
|
||||||
@import "quick-settings/quick-settings.scss";
|
@import "quick-settings/quick-settings.scss";
|
||||||
@import "traybuttons/traybuttons.scss";
|
@import "traybuttons/traybuttons.scss";
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
(include "variables.yuck")
|
(include "variables.yuck")
|
||||||
(include "date/date.yuck")
|
(include "date/date.yuck")
|
||||||
(include "powermenu/powermenu.yuck")
|
(include "powermenu/powermenu.yuck")
|
||||||
|
(include "playerinfo/playerinfo.yuck")
|
||||||
(include "closer/closer.yuck")
|
(include "closer/closer.yuck")
|
||||||
(include "quick-settings/quick-settings.yuck")
|
(include "quick-settings/quick-settings.yuck")
|
||||||
(include "traybuttons/traybuttons.yuck")
|
(include "traybuttons/traybuttons.yuck")
|
||||||
|
|
42
config/eww/playerinfo/playerinfo.scss
Normal file
42
config/eww/playerinfo/playerinfo.scss
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
.playerinfo {
|
||||||
|
padding: 10px;
|
||||||
|
min-width: 400px;
|
||||||
|
border-radius: 15px;
|
||||||
|
border-top: 2px solid $contrastbg;
|
||||||
|
border-bottom: 2px solid $contrastbg;
|
||||||
|
transition: background 250ms;
|
||||||
|
.top {
|
||||||
|
font-size: 23px;
|
||||||
|
}
|
||||||
|
.metadata {
|
||||||
|
.title{
|
||||||
|
font-weight: 500;
|
||||||
|
transition: text 250ms;
|
||||||
|
}
|
||||||
|
.artist{
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 15px;
|
||||||
|
transition: text 250ms;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bottom {
|
||||||
|
font-size: 30px;
|
||||||
|
padding: 0 10px 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pausebutton {
|
||||||
|
transition: background 250ms;
|
||||||
|
padding: 14px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.playing {
|
||||||
|
transition: all ease .2s;
|
||||||
|
border-radius: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paused {
|
||||||
|
border-radius: 26px;
|
||||||
|
transition: all ease .2s;
|
||||||
|
padding: 14px 14px 14px 18px;
|
||||||
|
}
|
||||||
|
}
|
83
config/eww/playerinfo/playerinfo.yuck
Normal file
83
config/eww/playerinfo/playerinfo.yuck
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
(defpoll player :interval "1s" "echo spotify")
|
||||||
|
(defpoll music_cover :interval "1s" "$EWW_PATH/music.sh cover") ;done
|
||||||
|
(defvar music_accent "rgb(0,0,0)") ;done
|
||||||
|
(defvar button_accent "rgb(0,0,0)") ;done
|
||||||
|
(defvar button_text "rgb(255,255,255)") ;done
|
||||||
|
(defpoll music_status :interval "1s" "playerctl -p spotify status")
|
||||||
|
(defpoll title :interval "1s" "playerctl -p spotify metadata title")
|
||||||
|
(defpoll artist :interval "1s" "playerctl -p spotify metadata artist")
|
||||||
|
|
||||||
|
(defwidget playerinfo []
|
||||||
|
(centerbox :class "playerinfo"
|
||||||
|
:style "background: radial-gradient(circle, rgba(0, 0, 0, 0.4) 30%, ${music_accent}), url(\"${music_cover}\");
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;"
|
||||||
|
:orientation "v"
|
||||||
|
(box :class "top"
|
||||||
|
:halign "start"
|
||||||
|
:valign "start"
|
||||||
|
:style "color: ${button_accent};"
|
||||||
|
"${player == 'spotify' ? '' : '爵' }"
|
||||||
|
)
|
||||||
|
(box :class "center"
|
||||||
|
:orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
(box :class "metadata"
|
||||||
|
:orientation "v"
|
||||||
|
:halign "start"
|
||||||
|
:valign "center"
|
||||||
|
:hexpand true
|
||||||
|
(label :limit-width 25 :halign "start" :text title :class "title")
|
||||||
|
(label :limit-width 25 :halign "start" :text artist :class "artist")
|
||||||
|
)
|
||||||
|
(centerbox :orientation "v"
|
||||||
|
(label)
|
||||||
|
(eventbox :class "pausebutton ${music_status == 'Playing' ? 'playing' : 'paused'}"
|
||||||
|
:halign "end"
|
||||||
|
:style "background-color: ${button_accent};
|
||||||
|
color: ${button_text};"
|
||||||
|
:onclick "playerctl -p spotify play-pause"
|
||||||
|
:cursor "pointer"
|
||||||
|
|
||||||
|
(label :text "${music_status == 'Playing' ? ' ' : ''}"
|
||||||
|
:width 40
|
||||||
|
:height 40
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(label)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(box :class "bottom"
|
||||||
|
:style "color: ${button_accent};"
|
||||||
|
(eventbox :valign "end"
|
||||||
|
:halign "start"
|
||||||
|
:onclick "playerctl -p spotify previous & $EWW_PATH/music.sh cover"
|
||||||
|
:class "previousbutton"
|
||||||
|
:cursor "pointer"
|
||||||
|
""
|
||||||
|
)
|
||||||
|
(eventbox :valign "end"
|
||||||
|
:halign "end"
|
||||||
|
:onclick "playerctl -p spotify next & $EWW_PATH/music.sh cover"
|
||||||
|
:class "nextbutton"
|
||||||
|
:cursor "pointer"
|
||||||
|
""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(defwindow playerinfo
|
||||||
|
:monitor 0
|
||||||
|
:stacking "overlay"
|
||||||
|
:exclusive "ignore"
|
||||||
|
:focusable "false"
|
||||||
|
:geometry (geometry :x "800px"
|
||||||
|
:y "10px"
|
||||||
|
:width "0px"
|
||||||
|
:height "0px"
|
||||||
|
:anchor "bottom left"
|
||||||
|
)
|
||||||
|
(playerinfo)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ startup() {
|
||||||
|
|
||||||
"$HYPR_PATH"/osk-toggle.sh getState &
|
"$HYPR_PATH"/osk-toggle.sh getState &
|
||||||
"$EWW_PATH"/on-release.sh &
|
"$EWW_PATH"/on-release.sh &
|
||||||
|
"$EWW_PATH"/music.sh accents &
|
||||||
input-emulator start mouse -n &
|
input-emulator start mouse -n &
|
||||||
|
|
||||||
if grep -q "$FILE"; then
|
if grep -q "$FILE"; then
|
||||||
|
|
34
config/eww/scripts/music.sh
Executable file
34
config/eww/scripts/music.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
get_accents() {
|
||||||
|
accents="$(coloryou /tmp/cover.jpg | sed 's/,//g' | sed 's/}//' | sed 's/'\''//g')"
|
||||||
|
music_accent=$(echo "$accents" | awk '{ print $2 }')
|
||||||
|
eww update music_accent="$music_accent"
|
||||||
|
|
||||||
|
button_accent=$(echo "$accents" | awk '{ print $4 }')
|
||||||
|
eww update button_accent="$button_accent"
|
||||||
|
|
||||||
|
button_text=$(echo "$accents" | awk '{ print $6 }')
|
||||||
|
eww update button_text="$button_text"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_cover() {
|
||||||
|
existing_file="/tmp/cover.jpg"
|
||||||
|
new_image_url=$(playerctl -p spotify metadata mpris:artUrl)
|
||||||
|
existing_hash=$(md5sum "$existing_file" | awk '{print $1}')
|
||||||
|
|
||||||
|
# Download the new image only if the hashes are different
|
||||||
|
if [[ "$(wget -qO- "$new_image_url" | md5sum | awk '{print $1}')" != "$existing_hash" ]]; then
|
||||||
|
wget -qO "$existing_file" "$new_image_url"
|
||||||
|
get_accents
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "/tmp/cover.jpg" ]]; then
|
||||||
|
echo "/tmp/cover.jpg"
|
||||||
|
else
|
||||||
|
echo "randomfile"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ "$1" == "accents" ]] && get_accents
|
||||||
|
[[ "$1" == "cover" ]] && get_cover
|
|
@ -101,7 +101,7 @@
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Heart Toggle
|
;; Heart Toggle
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
(defvar heart-ts "default")
|
(defvar heart-ts "false")
|
||||||
(defvar heart-run-off "false")
|
(defvar heart-run-off "false")
|
||||||
(defwidget heart-toggle-on []
|
(defwidget heart-toggle-on []
|
||||||
(eventbox :class "toggle-on"
|
(eventbox :class "toggle-on"
|
||||||
|
|
Loading…
Reference in a new issue