mirror of
https://github.com/GeorgeSG/dotfiles.git
synced 2026-09-10 02:48:44 +00:00
Switch to dotbot
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
(defpoll mediastatus :interval "1s" "./lib/media-status.sh")
|
||||
(defpoll audio-sinks :interval "1s" "pactl -f json list sinks")
|
||||
(defpoll audio-info :initial "{}" :interval "1s" "pactl -f json info")
|
||||
(defpoll volume-level :interval "1s" "./lib/get-volume-level.sh")
|
||||
|
||||
(defwidget media-tray-item []
|
||||
(box :orientation "h" :space-evenly false :halign "end" :class "media-tray-item"
|
||||
(eventbox
|
||||
:cursor "pointer"
|
||||
:class "interactive"
|
||||
:onscroll "./lib/change-volume.sh {}"
|
||||
:onclick "eww open --toggle media-menu"
|
||||
:onmiddleclick "playerctl play-pause"
|
||||
|
||||
(box :class "volume-tray-icon"
|
||||
(label :class "volume-icon" :text {volume-level > 66 ? "" : volume-level > 0 ? "" : ""})
|
||||
(label :text "${volume-level}%")
|
||||
))
|
||||
)
|
||||
)
|
||||
|
||||
(defwidget audio-source-selector []
|
||||
(box :orientation "v" :valign "start" :class "audio-source-selector"
|
||||
(box :class "title"
|
||||
(label :halign "start" :text "output source")
|
||||
)
|
||||
|
||||
(for sink in audio-sinks
|
||||
(eventbox :cursor "pointer"
|
||||
(button
|
||||
:halign "start"
|
||||
:class "audio-source interactive ${sink.name == audio-info.default_sink_name ? "active" : ""}"
|
||||
:onclick "pactl set-default-sink ${sink.index}"
|
||||
" ${sink.description}"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defwidget media-player []
|
||||
(box :orientation "v" :space-evenly false :class "media-player" :valign "top"
|
||||
(label :class "title" :text "${mediastatus.artist} - ${mediastatus.title}" :show-truncated false)
|
||||
(label :class "album" :text "${mediastatus.album}" :show-truncated false)
|
||||
(box :class "media-cover" :style "background: url('${mediastatus.artUrl}'); background-size: cover;" :height 300)
|
||||
|
||||
(box :class "media-controls" :spacing 12 :space-evenly false :halign "center"
|
||||
(eventbox :cursor "pointer"
|
||||
(button :class "media-button" :class "media-button shuffle ${mediastatus.shuffle == "On" ? "active" : ""}" :onclick "playerctl shuffle toggle" "")
|
||||
)
|
||||
|
||||
(eventbox :cursor "pointer"
|
||||
(button :class "media-button" :onclick "playerctl previous" "")
|
||||
)
|
||||
|
||||
(eventbox :cursor "pointer"
|
||||
(button
|
||||
:class "media-button ${mediastatus.status == "Playing" ? "pause" : "play"}"
|
||||
:onclick "./lib/media-play-pause.sh"
|
||||
"${mediastatus.status == "Playing" ? "" : ""}"
|
||||
)
|
||||
)
|
||||
|
||||
(eventbox :cursor "pointer"
|
||||
(button :class "media-button" :onclick "playerctl next" "")
|
||||
)
|
||||
|
||||
(eventbox :cursor "pointer"
|
||||
(button
|
||||
:class "media-button loop ${mediastatus.loop != "None" ? "active" : ""}"
|
||||
:onclick "playerctl loop ${mediastatus.loop == "Playlist" ? "track" : mediastatus.loop == "Track" ? "none" : "playlist"}"
|
||||
"${mediastatus.loop == "Track" ? "" : ""}"
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defwindow media-menu
|
||||
:monitor 0
|
||||
:namespace "media-menu"
|
||||
:stacking "overlay"
|
||||
:geometry (geometry :x "8px" :y "8px" :width "400px" :anchor "top right")
|
||||
:wm-ignore false
|
||||
:focusable false
|
||||
(box :class "eww-overlay media-menu" :orientation "v" :space-evenly false
|
||||
(media-player)
|
||||
(audio-source-selector)
|
||||
|
||||
(eventbox :cursor "pointer"
|
||||
(button :class "interactive btn" :halign "start" :onclick "eww open --toggle media-menu & pavucontrol &" " Open PulseAudio control")
|
||||
)
|
||||
|
||||
; TODO: For some reason audio-info is null if I don't invoke it outside the for. Investigate.x
|
||||
(label :class "hidden" :text "Default: ${audio-info.default_sink_name}")
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user