switch to hyprland, kitty, remove old KDE apps, add eww
Change-Id: Idbac14bf4ee5fd885a2417859847d719b57fd8e0
Reviewed-on: https://git.clicks.codes/c/Coded/nixConfig/+/370
Reviewed-by: Samuel Shuert <coded@clicks.codes>
Tested-by: Samuel Shuert <coded@clicks.codes>
diff --git a/extensions/eww/eww.yuck b/extensions/eww/eww.yuck
new file mode 100644
index 0000000..27eb4c4
--- /dev/null
+++ b/extensions/eww/eww.yuck
@@ -0,0 +1,350 @@
+;; Variables
+(defpoll clock_time :interval "5m" "date +\%I")
+(defpoll clock_minute :interval "5s" "date +\%M")
+(defpoll clock_date :interval "10h" "date '+%d/%m'")
+(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 battery :interval "15s" "./scripts/battery --bat")
+(defpoll battery_status :interval "1m" "./scripts/battery --bat-st")
+(defpoll memory :interval "15s" "scripts/memory")
+(defpoll memory_used_mb :interval "2m" "scripts/mem-ad used")
+(defpoll memory_total_mb :interval "2m" "scripts/mem-ad total")
+(defpoll memory_free_mb :interval "2m" "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 workspace "scripts/workspace")
+
+(defvar eww "$HOME/.local/bin/eww/eww -c $HOME/.config/eww/bar")
+
+
+(defpoll COL_WLAN :interval "1m" "~/.config/eww/bar/scripts/wifi --COL")
+(defpoll ESSID_WLAN :interval "1m" "~/.config/eww/bar/scripts/wifi --ESSID")
+(defpoll WLAN_ICON :interval "1m" "~/.config/eww/bar/scripts/wifi --ICON")
+
+
+(defpoll song :interval "2s" "~/.config/eww/bar/scripts/music_info --song")
+(defpoll song_artist :interval "2s" "~/.config/eww/bar/scripts/music_info --artist")
+(defpoll current_status :interval "1s" "~/.config/eww/bar/scripts/music_info --time")
+(defpoll song_status :interval "2s" "~/.config/eww/bar/scripts/music_info --status")
+(defpoll cover_art :interval "2s" "~/.config/eww/bar/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-wif" :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 []
+ (literal :content workspace))
+
+
+(defwidget bat []
+ (box :class "bat_module" :vexpand "false" :hexpand "false"
+ (circular-progress :value battery
+ :class "batbar"
+ :thickness 4
+ (button
+ :class "iconbat"
+ :limit-width 2
+ :tooltip "battery on ${battery}%"
+ :show_truncated false
+ :onclick "$HOME/.config/eww/bar/scripts/pop system"
+ :wrap false
+ ""))))
+
+
+(defwidget mem []
+ (box :class "mem_module" :vexpand "false" :hexpand "false"
+ (circular-progress :value memory
+ :class "membar"
+ :thickness 4
+ (button
+ :class "iconmem"
+ :limit-width 2
+ :tooltip "using ${memory}% ram"
+ :onclick "$HOME/.config/eww/bar/scripts/pop system"
+ :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_time :class "clock_time_class" )
+ (label :text "" :class "clock_time_sep" )
+ (label :text clock_minute :class "clock_minute_class")
+ (revealer :transition "slideleft"
+ :reveal time_rev
+ :duration "350ms"
+ (button :class "clock_date_class"
+ :onclick "$HOME/.config/eww/bar/scripts/pop calendar" clock_date
+ )
+ ))))
+
+(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/bar/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/bar/scripts/music_info --prev" "")
+ (button :class "song_btn_play" :onclick "~/.config/eww/bar/scripts/music_info --toggle" song_status)
+ (button :class "song_btn_next" :onclick "~/.config/eww/bar/scripts/music_info --next" ""))))))
+
+
+
+(defwidget left []
+ (box :orientation "h"
+ :space-evenly false
+ :halign "end"
+ :class "left_modules"
+(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"
+(music)))
+
+(defwidget bar_1 []
+ (box :class "bar_class"
+ :orientation "h"
+ (right)
+ (center)
+ (left)
+ ))
+
+(defwindow bar
+ :geometry (geometry :x "0%"
+ :y "9px"
+ :width "98%"
+ :height "30px"
+ :anchor "top center")
+ :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 battery
+ :class "sys_bat"
+ :thickness 9
+ (label :text ""
+ :class "sys_icon_bat"
+ :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 "${battery}%"
+ :halign "start"
+ :class "sys_text_bat_sub"
+ :limit-width 22
+ :show_truncated false
+ :wrap false)
+ (label :text "${battery_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 :text ""
+ :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
+ :geometry (geometry :x "-20px"
+ :y "7%"
+ :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
+ :geometry (geometry :x "-20px"
+ :y "7%"
+ :anchor "top right"
+ :width "280px"
+ :height "60px")
+(audio))
+
+
+(defwindow system
+ :geometry (geometry :x "-20px"
+ :y "7%"
+ :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/bar/scripts/music_info --prev" "")
+ (button :class "music_btn_play" :onclick "~/.config/eww/bar/scripts/music_info --toggle" song_status)
+ (button :class "music_btn_next" :onclick "~/.config/eww/bar/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 :stacking "fg" :focusable "false" :screen 1
+ :geometry (geometry :x "0" :y "7%" :width 428 :height 104 :anchor "top center")
+ (music_pop))
+