mirror of
https://github.com/kristoferssolo/solorice.git
synced 2025-10-21 20:10:34 +00:00
Update 2025-05-06 Update 2025-05-09 Update 2025-05-11 Update 2025-05-13 Update 2025-05-18 Update 2025-05-19 Update 2025-05-24 Update 2025-05-27 Update 2025-05-29 Update 2025-05-31
581 lines
16 KiB
Plaintext
581 lines
16 KiB
Plaintext
;; Variables
|
|
(defpoll clock_hour :interval "1m" "date +%H")
|
|
(defpoll clock_minute :interval "2s" "date +%M")
|
|
(defpoll clock_second :interval "1s" "date +%S")
|
|
(defpoll clock_date :interval "1h" "date +%d.%m.%Y")
|
|
(defpoll clock_day :interval "1h" "date +%A")
|
|
(defpoll volume_percent :interval "3s" "amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
|
|
(defpoll mic_percent :interval "3s" "amixer -D pulse sget Capture | grep 'Left:' | awk -F'[][]' '{ print $2 }' | tr -d '%'")
|
|
(defpoll brightness_percent :interval "5s" "brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}' | tr -d '%'")
|
|
(defpoll memory :interval "10s" "scripts/memory")
|
|
(defpoll memory_used_mb :interval "1m" "scripts/mem-ad used")
|
|
(defpoll memory_total_mb :interval "1m" "scripts/mem-ad total")
|
|
(defpoll memory_free_mb :interval "1m" "scripts/mem-ad free")
|
|
(defvar vol_reveal false)
|
|
(defvar br_reveal false)
|
|
(defvar music_reveal false)
|
|
(defvar wifi_rev false)
|
|
(defvar time_rev false)
|
|
(deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/workspace")
|
|
(deflisten current_workspace :initial "1" "bash ~/.config/eww/scripts/get-active-workspace")
|
|
(deflisten window :initial "..." "bash ~/.config/eww/scripts/get-window-title")
|
|
|
|
(defvar eww "eww")
|
|
|
|
|
|
(defpoll COL_WLAN :interval "1m" "~/.config/eww/scripts/wifi --COL")
|
|
(defpoll ESSID_WLAN :interval "1m" "~/.config/eww/scripts/wifi --ESSID")
|
|
(defpoll WLAN_ICON :interval "1m" "~/.config/eww/scripts/wifi --ICON")
|
|
|
|
|
|
(defpoll song :interval "2s" "~/.config/eww/scripts/music_info --song")
|
|
(defpoll song_artist :interval "2s" "~/.config/eww/scripts/music_info --artist")
|
|
(defpoll current_status :interval "1s" "~/.config/eww/scripts/music_info --time")
|
|
(defpoll song_status :interval "2s" "~/.config/eww/scripts/music_info --status")
|
|
(defpoll cover_art :interval "2s" "~/.config/eww/scripts/music_info --cover")
|
|
|
|
(defpoll calendar_day :interval "20h" "date '+%d'")
|
|
(defpoll calendar_year :interval "20h" "date '+%Y'")
|
|
|
|
;; widgets
|
|
|
|
(defwidget wifi []
|
|
(eventbox
|
|
:onhover "${eww} update wifi_rev=true"
|
|
:onhoverlost "${eww} update wifi_rev=false"
|
|
(box
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
:space-evenly "false"
|
|
(button
|
|
:class "module-wifi"
|
|
:onclick "networkmanager_dmenu"
|
|
:wrap "false"
|
|
:limit-width 12
|
|
:style "color: ${COL_WLAN};" WLAN_ICON)
|
|
(revealer
|
|
:transition "slideright"
|
|
:reveal wifi_rev
|
|
:duration "350ms"
|
|
(label
|
|
:class "module_essid"
|
|
:text ESSID_WLAN
|
|
:orientation "h"
|
|
)))))
|
|
|
|
|
|
(defwidget workspaces []
|
|
(eventbox
|
|
:onscroll "bash ~/.config/eww/scripts/change-active-workspace {} ${current_workspace}"
|
|
:class "workspaces"
|
|
(box :space-evenly true
|
|
:halign "start"
|
|
:space-evenly true
|
|
:spacing 5
|
|
(label
|
|
:text "${workspaces}${current_workspace}"
|
|
:visible false)
|
|
(for workspace in workspaces
|
|
(eventbox :onclick "hyprctl dispatch workspace ${workspace.id}"
|
|
(box :class "workspace-entry ${workspace.windows > 0 ? "occupied" : "empty"}"
|
|
(label :text "${workspace.id}" :class "workspace-entry ${workspace.id == current_workspace ? "current" : ""}" )
|
|
))))))
|
|
|
|
|
|
(defwidget bat []
|
|
(button
|
|
:class "bat_module"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
:onclick "bash ~/.config/eww/scripts/pop system"
|
|
(circular-progress
|
|
:value "${EWW_BATTERY.BAT0.capacity}"
|
|
:class "batbar"
|
|
:thickness 4
|
|
(box
|
|
:class "iconbat iconbat__${EWW_BATTERY.BAT0.status} ${EWW_BATTERY.BAT0.capacity < 20 ? "iconbat__low" : ""}"
|
|
:interval "5m"
|
|
:limit-width 2
|
|
:tooltip "Battery on ${EWW_BATTERY.BAT0.capacity}%"
|
|
:show_truncated false
|
|
:wrap false
|
|
;; "${EWW_BATTERY.BAT0.status == "Charging" ? "" :
|
|
;; EWW_BATTERY.BAT0.capacity > 90 ? "" :
|
|
;; EWW_BATTERY.BAT0.capacity > 70 ? "" :
|
|
;; EWW_BATTERY.BAT0.capacity > 40 ? "" :
|
|
;; EWW_BATTERY.BAT0.capacity > 20 ? "" :
|
|
;; ""}"
|
|
))))
|
|
|
|
|
|
(defwidget mem []
|
|
(button
|
|
:class "mem_module"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
:onclick "bash ~/.config/eww/scripts/pop system"
|
|
(circular-progress
|
|
:value memory
|
|
:class "membar"
|
|
:thickness 4
|
|
(box
|
|
:class "iconmem"
|
|
:limit-width 2
|
|
:tooltip "Using ${memory}% ram"
|
|
:show_truncated false
|
|
:wrap false
|
|
))))
|
|
|
|
|
|
|
|
(defwidget sep []
|
|
(box :class "module-2" :vexpand "false" :hexpand "false"
|
|
(label :class "separ" :text "|")))
|
|
|
|
(defwidget clock_module []
|
|
(eventbox :onhover "${eww} update time_rev=true"
|
|
:onhoverlost "${eww} update time_rev=false"
|
|
(box :class "module" :space-evenly "false" :orientation "h" :spacing "3"
|
|
(label :text "${clock_hour}:${clock_minute}:${clock_second}" :class "clock_time")
|
|
(revealer :transition "slideleft"
|
|
:reveal time_rev
|
|
:duration "350ms"
|
|
(button :class "clock_date"
|
|
:onclick "bash ~/.config/eww/scripts/pop calendar" "${clock_date}, ${clock_day}"
|
|
)
|
|
))))
|
|
|
|
(defwidget volume []
|
|
(eventbox :onhover "${eww} update vol_reveal=true"
|
|
:onhoverlost "${eww} update vol_reveal=false"
|
|
(box :class "module-2" :space-evenly "false" :orientation "h" :spacing "3"
|
|
(button :onclick "scripts/pop audio" :class "volume_icon" "🔈")
|
|
(revealer :transition "slideleft"
|
|
:reveal vol_reveal
|
|
:duration "350ms"
|
|
(scale
|
|
:class "volbar"
|
|
:value volume_percent
|
|
:orientation "h"
|
|
:tooltip "${volume_percent}%"
|
|
:max 100
|
|
:min 0
|
|
:onchange "amixer -D pulse sset Master {}%" )))))
|
|
|
|
(defwidget bright []
|
|
(eventbox
|
|
:onhover "${eww} update br_reveal=true"
|
|
:onhoverlost "${eww} update br_reveal=false"
|
|
(box
|
|
:class "module-2"
|
|
:space-evenly "false"
|
|
:orientation "h"
|
|
:spacing "3"
|
|
(label
|
|
:text "☼"
|
|
:class "bright_icon"
|
|
:tooltip "brightness")
|
|
(revealer
|
|
:transition "slideleft"
|
|
:reveal br_reveal
|
|
:duration "350ms"
|
|
(scale
|
|
:class "brightbar"
|
|
:value brightness_percent
|
|
:orientation "h"
|
|
:tooltip "${brightness_percent}%"
|
|
:max 100
|
|
:min 0
|
|
:onchange "brightnessctl set {}%" )))))
|
|
|
|
|
|
|
|
;; Music
|
|
(defwidget music []
|
|
(eventbox
|
|
:onhover "${eww} update music_reveal=true"
|
|
:onhoverlost "${eww} update music_reveal=false"
|
|
(box
|
|
:class "module-2"
|
|
:orientation "h"
|
|
:space-evenly "false"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
(box
|
|
:class "song_cover_art"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
:style "background-image: url('${cover_art}');")
|
|
(button
|
|
:class "song"
|
|
:wrap "true"
|
|
:onclick "~/.config/eww/scripts/pop music" song)
|
|
(revealer
|
|
:transition "slideright"
|
|
:reveal music_reveal
|
|
:duration "350ms"
|
|
(box
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
:oreintation "h"
|
|
(button :class "song_btn_prev" :onclick "~/.config/eww/scripts/music_info --prev" "")
|
|
(button :class "song_btn_play" :onclick "~/.config/eww/scripts/music_info --toggle" song_status)
|
|
(button :class "song_btn_next" :onclick "~/.config/eww/scripts/music_info --next" ""))))))
|
|
|
|
|
|
|
|
(defwidget left []
|
|
(box :orientation "h"
|
|
:space-evenly false
|
|
:halign "end"
|
|
:class "left_modules"
|
|
(music)
|
|
(bright)
|
|
(volume)
|
|
(wifi)
|
|
(sep)
|
|
(bat)
|
|
(mem)
|
|
(sep)
|
|
(clock_module)))
|
|
|
|
|
|
(defwidget right []
|
|
(box
|
|
:orientation "h"
|
|
:space-evenly false
|
|
:halign "start"
|
|
:class "right_modules"
|
|
(workspaces)))
|
|
|
|
|
|
(defwidget center []
|
|
(box
|
|
:orientation "h"
|
|
:space-evenly false
|
|
:halign "center"
|
|
:class "center_modules"
|
|
(window)))
|
|
|
|
(defwidget bar_1 []
|
|
(box
|
|
:class "bar"
|
|
:orientation "h"
|
|
(right)
|
|
(center)
|
|
(left)
|
|
))
|
|
|
|
(defwindow bar
|
|
:monitor 0
|
|
:exclusive true
|
|
:geometry (geometry
|
|
:x "0%"
|
|
:y "0%"
|
|
:width "100%"
|
|
:height "10px"
|
|
:anchor "top center")
|
|
:reserve (struts :side "top" :distance "4%")
|
|
:stacking "fg"
|
|
:windowtype "dock"
|
|
(bar_1))
|
|
|
|
(defwindow bar-1
|
|
:monitor 1
|
|
:exclusive true
|
|
:geometry (geometry
|
|
:x "0%"
|
|
:y "0%"
|
|
:width "100%"
|
|
:height "10px"
|
|
:anchor "top center")
|
|
:reserve (struts :side "top" :distance "4%")
|
|
:stacking "fg"
|
|
:windowtype "dock"
|
|
(bar_1))
|
|
|
|
(defwidget system []
|
|
(box
|
|
:class "sys_win"
|
|
:orientation "v"
|
|
:space-evenly "false"
|
|
:hexpand "false"
|
|
:vexpand "false"
|
|
:spacing 0
|
|
(box
|
|
:class "sys_bat_box"
|
|
:orientation "h"
|
|
:space-evenly "false"
|
|
(circular-progress
|
|
:value "${EWW_BATTERY.BAT0.capacity}"
|
|
:class "sys_bat"
|
|
:thickness 9
|
|
(label
|
|
;; :text "${EWW_BATTERY.BAT0.status == "Charging" ? "" :
|
|
;; EWW_BATTERY.BAT0.capacity > 90 ? "" :
|
|
;; EWW_BATTERY.BAT0.capacity > 70 ? "" :
|
|
;; EWW_BATTERY.BAT0.capacity > 40 ? "" :
|
|
;; EWW_BATTERY.BAT0.capacity > 20 ? "" :
|
|
;; ""}"
|
|
:interval "5m"
|
|
:class "sys_icon_bat ${EWW_BATTERY.BAT0.capacity} syst_icon_bat__${EWW_BATTERY.BAT0.status} ${EWW_BATTERY.BAT0.capacity < 20 ? "sys_icon_bat__low" : ""}"
|
|
:limit-width 2
|
|
:show_truncated false
|
|
:wrap false))
|
|
(box
|
|
:orientation "v"
|
|
:space-evenly "false"
|
|
:spacing 0
|
|
:hexpand "false"
|
|
:vexpand "false"
|
|
(label
|
|
:text "Battery"
|
|
:halign "start"
|
|
:class "sys_text_bat"
|
|
:limit-width 9
|
|
:show_truncated false
|
|
:wrap false)
|
|
(label
|
|
:text "${EWW_BATTERY.BAT0.capacity}%"
|
|
:halign "start"
|
|
:class "sys_text_bat_sub"
|
|
:limit-width 22
|
|
:show_truncated false
|
|
:wrap false)
|
|
(label
|
|
:text "${EWW_BATTERY.BAT0.status}"
|
|
:halign "start"
|
|
:class "sys_text_bat_sub"
|
|
:limit-width 22
|
|
:show_truncated false
|
|
:wrap false)))
|
|
(label
|
|
:text ""
|
|
:class "sys_sep"
|
|
:halign "center")
|
|
(box
|
|
:class "sys_mem_box"
|
|
:orientation "h"
|
|
:space-evenly "false"
|
|
:halign "start"
|
|
(circular-progress
|
|
:value memory
|
|
:class "sys_mem"
|
|
:thickness 9
|
|
(label
|
|
:class "sys_icon_mem"
|
|
:limit-width 2
|
|
:show_truncated false
|
|
:wrap false
|
|
:angle 0.0))
|
|
(box
|
|
:orientation "v"
|
|
:space-evenly "false"
|
|
:spacing 0
|
|
:hexpand "false"
|
|
:vexpand "false"
|
|
(label
|
|
:text "Memory"
|
|
:halign "start"
|
|
:class "sys_text_mem"
|
|
:limit-width 9
|
|
:show_truncated false
|
|
:wrap false)
|
|
(label
|
|
:text "${memory_used_mb}/${memory_total_mb}mb"
|
|
:halign "start"
|
|
:class "sys_text_mem_sub"
|
|
:limit-width 22
|
|
:show_truncated false
|
|
:wrap false)
|
|
(label
|
|
:text "${memory_free_mb}mb free"
|
|
:halign "start"
|
|
:class "sys_text_mem_sub"
|
|
:limit-width 22
|
|
:show_truncated false
|
|
:wrap false)))))
|
|
|
|
(defwidget cal []
|
|
(box
|
|
:class "cal"
|
|
:orientation "v"
|
|
(box
|
|
:class "cal-in"
|
|
(calendar
|
|
:class "cal"
|
|
:day calendar_day
|
|
:year calendar_year))))
|
|
|
|
(defwindow calendar
|
|
:monitor 0
|
|
:geometry (geometry
|
|
:x "0px"
|
|
:y "10px"
|
|
:anchor "top right"
|
|
:width "270px"
|
|
:height "60px")
|
|
(cal))
|
|
|
|
|
|
|
|
(defwidget audio []
|
|
(box :class "audio-box" :orientation "v" :space-evenly "false" :vexpand "false" :hexpand "false"
|
|
(box :halign "v" :space-evenly "false" :hexpand "false" :vexpand "false"
|
|
(box :class "speaker_icon" :orientation "v")
|
|
(box :orientation "v" :halign "center" :vexpand "false" :hexpand "false"
|
|
(label :class "speaker_text" :text "speaker" :valign "center" :halign "left" )
|
|
(box :class "speaker_bar" :halign "center" :vexpand "false" :hexpand "false"
|
|
(scale :value volume_percent
|
|
:space-evenly "false"
|
|
:orientation "h"
|
|
:onchange "amixer -D pulse sset Master {}%"
|
|
:tooltip "volume on ${volume_percent}%"
|
|
:max 100
|
|
:min 0))))
|
|
(label
|
|
:text ""
|
|
:class "audio_sep"
|
|
:halign "center")
|
|
(box
|
|
:halign "v"
|
|
:space-evenly "false"
|
|
:hexpand "false"
|
|
:vexpand "false"
|
|
(box
|
|
:class "mic_icon"
|
|
:orientation "v")
|
|
(box
|
|
:orientation "v"
|
|
:halign "center"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
(label
|
|
:class "mic_text"
|
|
:text "mic"
|
|
:valign "center"
|
|
:halign "left" )
|
|
(box
|
|
:class "mic_bar"
|
|
:halign "center"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
(scale
|
|
:value mic_percent
|
|
:space-evenly "false"
|
|
:orientation "h"
|
|
:tooltip "mic on ${mic_percent}%"
|
|
:onchange "amixer -D pulse sset Capture {}%"
|
|
:max 100
|
|
:min 0))))))
|
|
|
|
(defwindow audio_ctl
|
|
:monitor 0
|
|
:geometry (geometry
|
|
:x "10px"
|
|
:y "10px"
|
|
:anchor "top right"
|
|
:width "280px"
|
|
:height "60px")
|
|
(audio))
|
|
|
|
|
|
(defwindow system
|
|
:monitor 0
|
|
:geometry (geometry
|
|
:x "10px"
|
|
:y "10px"
|
|
:anchor "top right"
|
|
:width "290px"
|
|
:height "120px")
|
|
(system))
|
|
|
|
|
|
|
|
;; Music
|
|
(defwidget music_pop []
|
|
(box
|
|
:class "music_pop"
|
|
:orientation "h"
|
|
:space-evenly "false"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
(box
|
|
:class "music_cover_art"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
:style "background-image: url('${cover_art}');")
|
|
(box
|
|
:orientation "v"
|
|
:spacing 20
|
|
:space-evenly "false"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
(label
|
|
:halign "center"
|
|
:class "music"
|
|
:wrap "true"
|
|
:limit-width 13
|
|
:text song)
|
|
(label
|
|
:halign "center"
|
|
:class "music_artist"
|
|
:wrap "true"
|
|
:limit-width 15
|
|
:text song_artist)
|
|
(box
|
|
:orientation "h"
|
|
:spacing 15
|
|
:halign "center"
|
|
:space-evenly "false"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
(button :class "music_btn_prev" :onclick "~/.config/eww/scripts/music_info --prev" "")
|
|
(button :class "music_btn_play" :onclick "~/.config/eww/scripts/music_info --toggle" song_status)
|
|
(button :class "music_btn_next" :onclick "~/.config/eww/scripts/music_info --next" ""))
|
|
(box
|
|
:class "music_bar"
|
|
:halign "center"
|
|
:vexpand "false"
|
|
:hexpand "false"
|
|
:space-evenly "false"
|
|
(scale
|
|
:onscroll "mpc -q seek {}"
|
|
:min 0
|
|
:active "true"
|
|
:max 100
|
|
:value current_status)))))
|
|
|
|
|
|
;; music
|
|
(defwindow music_win
|
|
:monitor 0
|
|
:stacking "fg"
|
|
:focusable "false"
|
|
:screen 1
|
|
:geometry (geometry
|
|
:x "10px"
|
|
:y "10px"
|
|
:width 428
|
|
:height 104
|
|
:anchor "top center")
|
|
(music_pop))
|
|
|
|
(defwidget window []
|
|
(box :class "window"
|
|
(label :text "${window}")))
|
|
|
|
(defwidget activate-linux []
|
|
(box
|
|
:orientation "v"
|
|
:halign "start"
|
|
:valign "start"
|
|
(label :xalign 0 :markup "<span font_size=\"large\">Activate Linux</span>")
|
|
(label :xalign 0 :text "Go to Settings to activate Linux")))
|
|
|
|
(defwindow activate-linux
|
|
:monitor 0
|
|
:stacking "fg"
|
|
:geometry (geometry :x "8px" :y "64px" :width "420px" :anchor "bottom right")
|
|
(activate-linux))
|