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.scss b/extensions/eww/eww.scss
new file mode 100644
index 0000000..3c47527
--- /dev/null
+++ b/extensions/eww/eww.scss
@@ -0,0 +1,447 @@
+/** EWW.SCSS
+Created by saimoom **/
+*{
+ all: unset;
+ font-family: feather;
+ font-family: DaddyTimeMono NF;
+}
+
+/** General **/
+.bar_class {
+ background-color: #0f0f17;
+ border-radius: 16px;
+}
+.module {
+ margin: 0px 0px 0px 0px;
+ border-radius: 10px 16px 0px 10px;
+}
+
+/** tooltip!! **/
+tooltip.background {
+ background-color: #0f0f17;
+ font-size: 18;
+ border-radius: 10px;
+ color: #bfc9db;
+}
+
+tooltip label {
+ margin: 6px;
+}
+
+
+/** Widgets **/
+
+.clock_time_sep {
+ font-size: 16;
+ color: #bfc9db;
+ margin: 0px 4px 1px 4px;
+}
+.clock_time_class, .clock_minute_class {
+ font-size: 23;
+}
+.clock_date_class {
+ font-size: 18;
+ margin: 0px 20px 0px -1px;
+ color: #d7beda;
+}
+.clock_minute_class {
+ margin: 0px 20px 0px 3px;
+ color: #bfc9db;
+}
+
+.clock_time_class {
+ color: #bfc9db;
+ font-weight: bold;
+ margin: 0px 5px 0px 0px;
+}
+
+
+.membar {
+ color: #e0b089;
+ background-color: #38384d;
+ border-radius: 10px;
+}
+.batbar {
+ color: #afbea2;
+ background-color: #38384d;
+ border-radius: 10px;
+}
+.brightbar trough highlight {
+ background-image: linear-gradient(to right, #e4c9af 30%, #f2cdcd 50%, #e0b089 100% *50);
+ border-radius: 10px;
+}
+.volbar trough highlight {
+ background-image: linear-gradient(to right, #afcee0 30%, #a1bdce 50%, #77a5bf 100% *50);
+ border-radius: 10px;
+}
+.volume_icon {
+ font-size: 22;
+ color: #a1bdce;
+ margin: 0px 10px 0px 10px;
+}
+
+
+.module_essid {
+ font-size: 18;
+ color: #a1bdce;
+ margin: 0px 10px 0px 0px;
+}
+.module-wif {
+ font-size: 22;
+ color: #a1bdce;
+ border-radius: 100%;
+ margin: 0px 10px 0px 5px;
+}
+
+.iconmem {
+ color: #e0b089;
+}
+.iconbat {
+ color: #afbea2;
+}
+.iconbat, .iconmem {
+ font-size: 15;
+ margin: 10px;
+}
+.bright_icon {
+ font-size: 22;
+ color: #e4c9af;
+ margin: 0px 10px 0px 10px;
+}
+
+
+.separ {
+ color: #3e424f;
+ font-weight: bold;
+ font-size: 22px;
+ margin: 0px 8px 0px 8px;
+ }
+
+.mem_module {
+ background-color: #0f0f17;
+ border-radius: 16px;
+ margin: 0px 10px 0px 3px;
+ }
+.bat_module {
+ background-color: #0f0f17;
+ border-radius: 16px;
+ margin: 0px 10px 0px 10px;
+ }
+
+
+scale trough {
+ all: unset;
+ background-color: #22242b;
+ box-shadow: 0 2px 3px 2px #06060b;
+ border-radius: 16px;
+ min-height: 10px;
+ min-width: 70px;
+ margin: 0px 10px 0px 0px;
+}
+
+.works {
+font-size: 27px;
+font-weight: normal;
+margin: 5px 0px 0px 20px;
+background-color: #0f0f17;
+}
+
+.0 , .01, .02, .03, .04, .05, .06,
+.011, .022, .033, .044, .055, .066{
+ margin: 0px 10px 0px 0px;
+}
+
+/* Unoccupied */
+.0 {
+color: #3e424f;
+}
+
+/* Occupied */
+.01, .02, .03, .04, .05, .06 {
+ color: #bfc9db;
+}
+
+/* Focused */
+.011, .022, .033, .044, .055, .066 {
+ color: #a1bdce;
+}
+
+
+.song_cover_art {
+ background-size: cover;
+ background-position: center;
+ min-height: 24px;
+ min-width: 24px;
+ margin: 10px;
+ border-radius: 100px;
+}
+
+.song {
+ color: #a1bdce;
+ font-size : 18px;
+ font-weight : bold;
+ margin : 3px 5px 0px 0px;
+}
+
+.song_btn_play {
+ color: #a1bdce;
+ font-size : 28px;
+ margin : 3px 0px 0px 5px;
+
+}
+
+
+.song_btn_prev, .song_btn_next {
+ color: #bfc9db;
+ font-size : 24px;
+ margin : 3px 0px 0px 5px;
+
+}
+// Calendar
+.cal {
+ background-color: #0f0f17;
+ font-family: JetBrainsMono Nerd Font;
+ font-size: 18px;
+ font-weight: normal;
+
+.cal-in {
+ padding: 0px 10px 0px 10px;
+ color: #bfc9db;
+
+.cal {
+ &.highlight {
+ padding: 20px;
+ }
+
+ padding: 5px 5px 5px 5px;
+ margin-left: 10px;
+ }
+ }
+}
+
+calender {
+ color: #bfc9db;
+}
+calendar:selected {
+ color: #a1bdce;
+}
+
+calendar.header {
+color: #a1bdce;
+font-weight: bold;
+}
+
+calendar.button {
+color: #afbea2;
+}
+
+calendar.highlight {
+color: #a1bdce;
+font-weight: bold;
+}
+
+calendar:indeterminate {
+color: #bfc9db;
+}
+
+
+
+
+
+
+
+.sys_sep {
+ color: #38384d;
+ font-size: 18;
+ margin: 0px 10px 0px 10px;
+}
+.sys_text_bat_sub, .sys_text_mem_sub {
+ font-size: 16;
+ color: #bbc5d7;
+ margin: 5px 0px 0px 25px;
+}
+.sys_text_bat, .sys_text_mem {
+ font-size: 21;
+ font-weight: bold;
+ margin: 14px 0px 0px 25px;
+}
+.sys_icon_bat, .sys_icon_mem {
+ font-size: 30;
+ margin: 30px;
+}
+.sys_win {
+ background-color: #0f0f17;
+}
+.sys_bat {
+ color: #afbea2;
+ background-color: #38384d;
+ border-radius: 10px;
+}
+.sys_mem {
+ color: #e4c9af;
+ background-color: #38384d;
+ border-radius: 10px;
+}
+.sys_icon_bat, .sys_text_bat {
+ color: #afbea2;
+}
+.sys_icon_mem, .sys_text_mem {
+ color: #e4c9af;
+}
+.sys_bat_box {
+ border-radius: 16px;
+ margin: 15px 10px 10px 20px;
+ }
+.sys_mem_box {
+ border-radius: 16px;
+ margin: 10px 10px 15px 20px;
+ }
+
+
+
+
+
+
+
+.music_pop {
+ background-color: #0f0f17;
+ border-radius: 16px;
+}
+ .music_cover_art {
+ background-size: cover;
+ background-position: center;
+ min-height: 100px;
+ box-shadow: 5px 5px 5px 5px #06060b;
+ min-width: 170px;
+ margin: 20px;
+ border-radius: 20px;
+}
+
+.music {
+ color: #a1bdce;
+ font-size : 20px;
+ font-weight : bold;
+ margin : 20px 0px 0px -15px;
+}
+
+.music_artist {
+ color: #bbc5d7;
+ font-size : 16px;
+ font-weight : normal;
+ margin : 0px 0px 0px 0px;
+}
+
+.music_btn_prev, .music_btn_play, .music_btn_next {
+ font-family: Iosevka Nerd Font;
+}
+.music_btn_prev {
+ color: #bbc5d7;
+ font-size : 32px;
+ font-weight : normal;
+ margin: 0px 0px 0px 0px;
+}
+.music_btn_play {
+ color: #a1bdce;
+ font-size : 48px;
+ font-weight : normal;
+ margin: 0px 0px 0px 0px;
+}
+.music_btn_next {
+ color: #bbc5d7;
+ font-size : 32px;
+ font-weight : normal;
+ margin: 0px 0px 0px 0px;
+}
+
+.music_bar scale trough highlight {
+ all: unset;
+ background-image: linear-gradient(to right, #afcee0 30%, #a1bdce 50%, #77a5bf 100% *50);
+ border-radius: 24px;
+}
+.music_bar scale trough {
+ all: unset;
+ background-color: #232232;
+ box-shadow: 0 6px 5px 2px #06060b;
+ border-radius: 24px;
+ min-height: 13px;
+ min-width: 190px;
+ margin : -10px 10px 20px 0px;
+}
+
+.audio-box {
+ background-color: #0f0f17;
+ border-radius: 16px;
+}
+.speaker_icon {
+ background-size: cover;
+ background-image: url('images/speaker.png');
+ background-position: center;
+ min-height: 70px;
+ min-width: 75px;
+ margin: 10px 20px 5px 20px;
+ border-radius: 12px;
+}
+
+.speaker_text {
+ color: #a1bdce;
+ font-size : 26px;
+ font-weight : bold;
+ margin: 20px 0px 0px 0px;
+}
+
+.speaker_bar scale trough highlight {
+ all: unset;
+ background-image: linear-gradient(to right, #afcee0 30%, #a1bdce 50%, #77a5bf 100% *50);
+ border-radius: 24px;
+}
+.speaker_bar scale trough {
+ all: unset;
+ background-color: #232232;
+ box-shadow: 0 6px 5px 2px #06060b;
+ border-radius: 24px;
+ min-height: 13px;
+ min-width: 120px;
+ margin : 0px 0px 5px 0px;
+}
+
+
+
+
+.mic_icon {
+ background-size: cover;
+ background-image: url('images/mic.png');
+ background-position: center;
+ min-height: 70px;
+ min-width: 75px;
+ margin: 5px 20px 20px 20px;
+ border-radius: 12px;
+}
+
+.mic_text {
+ color: #a1bdce;
+ font-size : 26px;
+ font-weight : bold;
+ margin: 0px 0px 0px 0px;
+}
+
+.mic_bar scale trough highlight {
+ all: unset;
+ background-image: linear-gradient(to right, #afcee0 30%, #a1bdce 50%, #77a5bf 100% *50);
+ border-radius: 24px;
+}
+.mic_bar scale trough {
+ all: unset;
+ box-shadow: 0 6px 5px 2px #06060b;
+ background-color: #232232;
+ border-radius: 24px;
+ min-height: 13px;
+ min-width: 120px;
+ margin : 0px 0px 20px 0px;
+}
+
+.audio_sep {
+ color: #38384d;
+ font-size: 18;
+ margin : 0px 0px 0px 0px;
+}
+
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))
+
diff --git a/extensions/eww/images/mic.png b/extensions/eww/images/mic.png
new file mode 100644
index 0000000..d77f315
--- /dev/null
+++ b/extensions/eww/images/mic.png
Binary files differ
diff --git a/extensions/eww/images/music.png b/extensions/eww/images/music.png
new file mode 100644
index 0000000..11804f5
--- /dev/null
+++ b/extensions/eww/images/music.png
Binary files differ
diff --git a/extensions/eww/images/profile.png b/extensions/eww/images/profile.png
new file mode 100644
index 0000000..0190a36
--- /dev/null
+++ b/extensions/eww/images/profile.png
Binary files differ
diff --git a/extensions/eww/images/speaker.png b/extensions/eww/images/speaker.png
new file mode 100644
index 0000000..79e005b
--- /dev/null
+++ b/extensions/eww/images/speaker.png
Binary files differ
diff --git a/extensions/eww/launch_bar b/extensions/eww/launch_bar
new file mode 100755
index 0000000..51f2a1d
--- /dev/null
+++ b/extensions/eww/launch_bar
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+## Files and cmd
+FILE="$HOME/.cache/eww_launch.xyz"
+EWW="$HOME/.local/bin/eww/eww -c $HOME/.config/eww/bar"
+
+## Run eww daemon if not running already
+if [[ ! `pidof eww` ]]; then
+ ${EWW} daemon
+ sleep 1
+fi
+
+## Open widgets
+run_eww() {
+ ${EWW} open-many \
+ bar
+
+}
+
+## Launch or close widgets accordingly
+if [[ ! -f "$FILE" ]]; then
+ touch "$FILE"
+ run_eww && bspc config -m LVDS-1 top_padding 49
+else
+ ${EWW} close-all && killall eww
+ rm "$FILE"
+fi
diff --git a/extensions/eww/scripts/battery b/extensions/eww/scripts/battery
new file mode 100755
index 0000000..0540a1b
--- /dev/null
+++ b/extensions/eww/scripts/battery
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+battery() {
+ BAT=`ls /sys/class/power_supply | grep BAT | head -n 1`
+ cat /sys/class/power_supply/${BAT}/capacity
+}
+battery_stat() {
+ BAT=`ls /sys/class/power_supply | grep BAT | head -n 1`
+ cat /sys/class/power_supply/${BAT}/status
+}
+
+if [[ "$1" == "--bat" ]]; then
+ battery
+elif [[ "$1" == "--bat-st" ]]; then
+ battery_stat
+fi
+
diff --git a/extensions/eww/scripts/mem-ad b/extensions/eww/scripts/mem-ad
new file mode 100755
index 0000000..1e4cf89
--- /dev/null
+++ b/extensions/eww/scripts/mem-ad
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+
+total="$(free -m | grep Mem: | awk '{ print $2 }')"
+used="$(free -m | grep Mem: | awk '{ print $3 }')"
+
+free=$(expr $total - $used)
+
+if [ "$1" = "total" ]; then
+ echo $total
+elif [ "$1" = "used" ]; then
+ echo $used
+elif [ "$1" = "free" ]; then
+ echo $free
+fi
diff --git a/extensions/eww/scripts/memory b/extensions/eww/scripts/memory
new file mode 100755
index 0000000..217c834
--- /dev/null
+++ b/extensions/eww/scripts/memory
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}')
diff --git a/extensions/eww/scripts/music_info b/extensions/eww/scripts/music_info
new file mode 100755
index 0000000..ffafe87
--- /dev/null
+++ b/extensions/eww/scripts/music_info
@@ -0,0 +1,98 @@
+#!/bin/bash
+# scripts by adi1090x
+
+## Get data
+STATUS="$(mpc status)"
+COVER="/tmp/.music_cover.png"
+MUSIC_DIR="$HOME/Music"
+
+## Get status
+get_status() {
+ if [[ $STATUS == *"[playing]"* ]]; then
+ echo ""
+ else
+ echo "奈"
+ fi
+}
+
+## Get song
+get_song() {
+ song=`mpc -f %title% current`
+ if [[ -z "$song" ]]; then
+ echo "Offline"
+ else
+ echo "$song"
+ fi
+}
+
+## Get artist
+get_artist() {
+ artist=`mpc -f %artist% current`
+ if [[ -z "$artist" ]]; then
+ echo ""
+ else
+ echo "$artist"
+ fi
+}
+
+## Get time
+get_time() {
+ time=`mpc status | grep "%)" | awk '{print $4}' | tr -d '(%)'`
+ if [[ -z "$time" ]]; then
+ echo "0"
+ else
+ echo "$time"
+ fi
+}
+get_ctime() {
+ ctime=`mpc status | grep "#" | awk '{print $3}' | sed 's|/.*||g'`
+ if [[ -z "$ctime" ]]; then
+ echo "0:00"
+ else
+ echo "$ctime"
+ fi
+}
+get_ttime() {
+ ttime=`mpc -f %time% current`
+ if [[ -z "$ttime" ]]; then
+ echo "0:00"
+ else
+ echo "$ttime"
+ fi
+}
+
+## Get cover
+get_cover() {
+ ffmpeg -i "${MUSIC_DIR}/$(mpc current -f %file%)" "${COVER}" -y &> /dev/null
+ STATUS=$?
+
+ # Check if the file has a embbeded album art
+ if [ "$STATUS" -eq 0 ];then
+ echo "$COVER"
+ else
+ echo "images/music.png"
+ fi
+}
+
+## Execute accordingly
+if [[ "$1" == "--song" ]]; then
+ get_song
+elif [[ "$1" == "--artist" ]]; then
+ get_artist
+elif [[ "$1" == "--status" ]]; then
+ get_status
+elif [[ "$1" == "--time" ]]; then
+ get_time
+elif [[ "$1" == "--ctime" ]]; then
+ get_ctime
+elif [[ "$1" == "--ttime" ]]; then
+ get_ttime
+elif [[ "$1" == "--cover" ]]; then
+ get_cover
+elif [[ "$1" == "--toggle" ]]; then
+ mpc -q toggle
+elif [[ "$1" == "--next" ]]; then
+ { mpc -q next; get_cover; }
+elif [[ "$1" == "--prev" ]]; then
+ { mpc -q prev; get_cover; }
+fi
diff --git a/extensions/eww/scripts/pop b/extensions/eww/scripts/pop
new file mode 100755
index 0000000..aef82e8
--- /dev/null
+++ b/extensions/eww/scripts/pop
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+calendar() {
+LOCK_FILE="$HOME/.cache/eww-calendar.lock"
+EWW_BIN="$HOME/.local/bin/eww/eww"
+
+run() {
+ ${EWW_BIN} -c $HOME/.config/eww/bar open calendar
+}
+
+# Open widgets
+if [[ ! -f "$LOCK_FILE" ]]; then
+ ${EWW_BIN} -c $HOME/.config/eww/bar close system music_win audio_ctl
+ touch "$LOCK_FILE"
+ run && echo "ok good!"
+else
+ ${EWW_BIN} -c $HOME/.config/eww/bar close calendar
+ rm "$LOCK_FILE" && echo "closed"
+fi
+}
+
+
+system() {
+LOCK_FILE_MEM="$HOME/.cache/eww-system.lock"
+EWW_BIN="$HOME/.local/bin/eww/eww"
+
+run() {
+ ${EWW_BIN} -c $HOME/.config/eww/bar open system
+}
+
+# Open widgets
+if [[ ! -f "$LOCK_FILE_MEM" ]]; then
+ ${EWW_BIN} -c $HOME/.config/eww/bar close calendar music_win audio_ctl
+ touch "$LOCK_FILE_MEM"
+ run && echo "ok good!"
+else
+ ${EWW_BIN} -c $HOME/.config/eww/bar close system
+ rm "$LOCK_FILE_MEM" && echo "closed"
+fi
+}
+
+
+music() {
+LOCK_FILE_SONG="$HOME/.cache/eww-song.lock"
+EWW_BIN="$HOME/.local/bin/eww/eww"
+
+run() {
+ ${EWW_BIN} -c $HOME/.config/eww/bar open music_win
+}
+
+# Open widgets
+if [[ ! -f "$LOCK_FILE_SONG" ]]; then
+ ${EWW_BIN} -c $HOME/.config/eww/bar close system calendar
+ touch "$LOCK_FILE_SONG"
+ run && echo "ok good!"
+else
+ ${EWW_BIN} -c $HOME/.config/eww/bar close music_win
+ rm "$LOCK_FILE_SONG" && echo "closed"
+fi
+}
+
+
+
+audio() {
+LOCK_FILE_AUDIO="$HOME/.cache/eww-audio.lock"
+EWW_BIN="$HOME/.local/bin/eww/eww"
+
+run() {
+ ${EWW_BIN} -c $HOME/.config/eww/bar open audio_ctl
+}
+
+# Open widgets
+if [[ ! -f "$LOCK_FILE_AUDIO" ]]; then
+ ${EWW_BIN} -c $HOME/.config/eww/bar close system calendar music
+ touch "$LOCK_FILE_AUDIO"
+ run && echo "ok good!"
+else
+ ${EWW_BIN} -c $HOME/.config/eww/bar close audio_ctl
+ rm "$LOCK_FILE_AUDIO" && echo "closed"
+fi
+}
+
+
+if [ "$1" = "calendar" ]; then
+calendar
+elif [ "$1" = "system" ]; then
+system
+elif [ "$1" = "music" ]; then
+music
+elif [ "$1" = "audio" ]; then
+audio
+fi
diff --git a/extensions/eww/scripts/wifi b/extensions/eww/scripts/wifi
new file mode 100755
index 0000000..5d7cc59
--- /dev/null
+++ b/extensions/eww/scripts/wifi
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+status=$(nmcli g | grep -oE "disconnected")
+essid=$(nmcli c | grep wlp2s0 | awk '{print ($1)}')
+
+if [ $status ] ; then
+ icon=""
+ text=""
+ col="#575268"
+
+else
+ icon=""
+ text="${essid}"
+ col="#a1bdce"
+fi
+
+
+
+if [[ "$1" == "--COL" ]]; then
+ echo $col
+elif [[ "$1" == "--ESSID" ]]; then
+ echo $text
+elif [[ "$1" == "--ICON" ]]; then
+ echo $icon
+fi
+
diff --git a/extensions/eww/scripts/workspace b/extensions/eww/scripts/workspace
new file mode 100755
index 0000000..f202ef1
--- /dev/null
+++ b/extensions/eww/scripts/workspace
@@ -0,0 +1,56 @@
+#!/bin/sh
+workspaces() {
+
+ws1="1"
+ws2="2"
+ws3="3"
+ws4="4"
+ws5="5"
+ws6="6"
+
+# Unoccupied
+un="0"
+
+# check if Occupied
+o1=$(bspc query -D -d .occupied --names | grep "$ws1" )
+o2=$(bspc query -D -d .occupied --names | grep "$ws2" )
+o3=$(bspc query -D -d .occupied --names | grep "$ws3" )
+o4=$(bspc query -D -d .occupied --names | grep "$ws4" )
+o5=$(bspc query -D -d .occupied --names | grep "$ws5" )
+o6=$(bspc query -D -d .occupied --names | grep "$ws6" )
+
+# check if Focused
+f1=$(bspc query -D -d focused --names | grep "$ws1" )
+f2=$(bspc query -D -d focused --names | grep "$ws2" )
+f3=$(bspc query -D -d focused --names | grep "$ws3" )
+f4=$(bspc query -D -d focused --names | grep "$ws4" )
+f5=$(bspc query -D -d focused --names | grep "$ws5" )
+f6=$(bspc query -D -d focused --names | grep "$ws6" )
+
+ic_1=""
+ic_2=""
+ic_3=""
+ic_4=""
+ic_5=""
+ic_6=""
+if [ $f1 ]; then
+ ic_1=""
+elif [ $f2 ]; then
+ ic_2=""
+elif [ $f3 ]; then
+ ic_3=""
+elif [ $f4 ]; then
+ ic_4=""
+elif [ $f5 ]; then
+ ic_5=""
+elif [ $f6 ]; then
+ ic_6=""
+fi
+
+echo "(box :class \"works\" :orientation \"h\" :spacing 5 :space-evenly \"false\" (button :onclick \"bspc desktop -f $ws1\" :class \"$un$o1$f1\" \"$ic_1\") (button :onclick \"bspc desktop -f $ws2\" :class \"$un$o2$f2\" \"$ic_2\") (button :onclick \"bspc desktop -f $ws3\" :class \"$un$o3$f3\" \"$ic_3\") (button :onclick \"bspc desktop -f $ws4\" :class \"$un$o4$f4\" \"$ic_4\") (button :onclick \"bspc desktop -f $ws5\" :class \"$un$o5$f5\" \"$ic_5\") (button :onclick \"bspc desktop -f $ws6\" :class \"$un$o6$f6\" \"$ic_6\"))"
+
+}
+workspaces
+bspc subscribe desktop node_transfer | while read -r _ ; do
+workspaces
+done