From a8318e723c3daa511819d4b34c436efcabd61737 Mon Sep 17 00:00:00 2001 From: hesam-init Date: Sat, 29 Jun 2024 12:45:38 +0330 Subject: [PATCH] refactor: eww configs --- hypr-configs/hyprland/eww/eww.scss | 4 +- hypr-configs/hyprland/eww/formatter/fennel.py | 58 +++ .../eww/{format.py => formatter/yuck.py} | 0 .../hyprland/eww/scss/widgets/clock.scss | 0 .../styles.scss => scss/windows/vbar.scss} | 0 hypr-configs/hyprland/eww/setups/sidebar.yuck | 2 +- .../hyprland/eww/src/widgets/export.yuck | 0 .../hyprland/eww/src/widgets/vbar/main.yuck | 336 ------------------ .../hyprland/eww/src/windows/vbar/main.yuck | 335 +++++++++++++++++ 9 files changed, 396 insertions(+), 339 deletions(-) create mode 100644 hypr-configs/hyprland/eww/formatter/fennel.py rename hypr-configs/hyprland/eww/{format.py => formatter/yuck.py} (100%) create mode 100644 hypr-configs/hyprland/eww/scss/widgets/clock.scss rename hypr-configs/hyprland/eww/{src/widgets/vbar/styles.scss => scss/windows/vbar.scss} (100%) create mode 100644 hypr-configs/hyprland/eww/src/widgets/export.yuck delete mode 100644 hypr-configs/hyprland/eww/src/widgets/vbar/main.yuck create mode 100644 hypr-configs/hyprland/eww/src/windows/vbar/main.yuck diff --git a/hypr-configs/hyprland/eww/eww.scss b/hypr-configs/hyprland/eww/eww.scss index c8eb3f6..e225a12 100644 --- a/hypr-configs/hyprland/eww/eww.scss +++ b/hypr-configs/hyprland/eww/eww.scss @@ -1,8 +1,8 @@ -@import "./scss/themes/oxocarbon.scss"; +@import "./scss/themes/catppuccin.scss"; @import "./scss/global.scss"; -@import "./src/widgets/vbar/styles.scss"; +@import "./scss/windows/vbar.scss"; @import "./src/control-panel/styles.scss"; diff --git a/hypr-configs/hyprland/eww/formatter/fennel.py b/hypr-configs/hyprland/eww/formatter/fennel.py new file mode 100644 index 0000000..ca2e864 --- /dev/null +++ b/hypr-configs/hyprland/eww/formatter/fennel.py @@ -0,0 +1,58 @@ +import sys + +def format_fennel(code): + # Remove leading/trailing whitespace + code = code.strip() + + # Split the code into lines + lines = code.split('\n') + + # Initialize variables + formatted_lines = [] + indent_level = 0 + + for line in lines: + # Remove leading/trailing whitespace from each line + line = line.strip() + + # Decrease indent for closing parentheses at the start of a line + while line.startswith(')'): + indent_level = max(0, indent_level - 1) + line = line[1:].lstrip() + + # Add the formatted line + formatted_lines.append(' ' * indent_level + line) + + # Increase indent for opening parentheses + indent_level += line.count('(') - line.count(')') + + # Ensure indent level doesn't go negative + indent_level = max(0, indent_level) + + # Join the formatted lines + formatted_code = '\n'.join(formatted_lines) + + return formatted_code + +def main(): + if len(sys.argv) != 2: + print("Usage: python fennel_formatter.py ") + sys.exit(1) + + input_file = sys.argv[1] + + try: + with open(input_file, 'r') as file: + fennel_code = file.read() + except FileNotFoundError: + print(f"Error: File '{input_file}' not found.") + sys.exit(1) + except IOError: + print(f"Error: Unable to read file '{input_file}'.") + sys.exit(1) + + formatted_code = format_fennel(fennel_code) + print(formatted_code) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/hypr-configs/hyprland/eww/format.py b/hypr-configs/hyprland/eww/formatter/yuck.py similarity index 100% rename from hypr-configs/hyprland/eww/format.py rename to hypr-configs/hyprland/eww/formatter/yuck.py diff --git a/hypr-configs/hyprland/eww/scss/widgets/clock.scss b/hypr-configs/hyprland/eww/scss/widgets/clock.scss new file mode 100644 index 0000000..e69de29 diff --git a/hypr-configs/hyprland/eww/src/widgets/vbar/styles.scss b/hypr-configs/hyprland/eww/scss/windows/vbar.scss similarity index 100% rename from hypr-configs/hyprland/eww/src/widgets/vbar/styles.scss rename to hypr-configs/hyprland/eww/scss/windows/vbar.scss diff --git a/hypr-configs/hyprland/eww/setups/sidebar.yuck b/hypr-configs/hyprland/eww/setups/sidebar.yuck index 4d13921..ac2ff1d 100644 --- a/hypr-configs/hyprland/eww/setups/sidebar.yuck +++ b/hypr-configs/hyprland/eww/setups/sidebar.yuck @@ -1,4 +1,4 @@ -(include "./src/widgets/vbar/main.yuck") +(include "./src/windows/vbar/main.yuck") (defwindow bar :geometry (geometry diff --git a/hypr-configs/hyprland/eww/src/widgets/export.yuck b/hypr-configs/hyprland/eww/src/widgets/export.yuck new file mode 100644 index 0000000..e69de29 diff --git a/hypr-configs/hyprland/eww/src/widgets/vbar/main.yuck b/hypr-configs/hyprland/eww/src/widgets/vbar/main.yuck deleted file mode 100644 index d67ffcf..0000000 --- a/hypr-configs/hyprland/eww/src/widgets/vbar/main.yuck +++ /dev/null @@ -1,336 +0,0 @@ -(defwidget vbar [] - (box - :orientation "h" - :space-evenly false - :vexpand true - :height "1080" - - (revealer - :transition "slideleft" - :reveal revealControlpanel - (control_widget)) - (centerbox - :class "vbar" - :orientation "v" - - ;; :space-evenly true - (top) - (middle) - (bottom) - ))) - - (defwidget top [] (box - :orientation "v" - :space-evenly false - :valign "start" - :vexpand false - (home) - (workspaces) - (hiddenctl) - )) - - (defwidget middle [] - (box - :orientation "v" - :space-evenly false - :valign "center" - :vexpand false - :class "center_modules" - :height "180" - (playerctl) - )) - - (defwidget bottom [] - (box - :orientation "v" - :space-evenly false - :valign "end" - :class "bottom_modules" - :vexpand false - :hexpand false - ; (systemtray) - (sliders) - (clock) - ; (battery) - )) - - (defwidget workspaces [] - (eventbox - :cursor "pointer" - :onscroll "./scripts/workspace/set-active {} ${current_workspace}" - :onhover "${EWW_CMD} update show_no_of_windows=true" - :onhoverlost "${EWW_CMD} update show_no_of_windows=false" - (box - :class "workspaces" - :space-evenly false - :orientation "v" - - (for workspace in {workspacesjson} - (button - :onclick "hyprctl dispatch workspace ${workspace.id}" - (box - :height 30 - :class "workspace ${workspace.id == current_workspace ? "workspacethingactive" : "workspacething"}" - - (revealer - :reveal { workspace.id == current_workspace } - :transition "slideup" - :duration 500 - - (box - :height 45 - ) - ) - ) - - ) - ) - ) - ) - ) - - (defwidget home [] - (box - :class "widget" - :hexpand false - :vexpand false - (eventbox - ;; :onclick "~/.config/eww/meowidgets/scripts/launch" - ;; :onclick "~/.config/eww/meowayland/scripts/launch" - ;; :onclick "./scripts/pop control" - :onclick "${EWW_CMD} update revealControlpanel=${ !revealControlpanel }" - :onrightclick "${EWW_CMD} open wallpaperselect --toggle" - :cursor "pointer" - (label :text "" :halign "center" :class "launchicon" :style "padding: 2px 0px;")))) - - (defwidget systemtray [] - (box - :class "widget" - :space-evenly false - :valign "end" - :orientation "v" - (eventbox - :onclick "${EWW_CMD} update revealSystray=${!revealSystray}" - (label :angle {!revealSystray ? 90 : 270} :class "revealtouch" :tooltip "reveal systray" :text "")) - - (revealer - :reveal revealSystray - :transition "slideup" - (systray - :icon_size 6 - :prepend-new true - )) - )) - - (defwidget clock [] - (eventbox - :cursor "pointer" - :onclick "${EWW_CMD} open calendar --toggle" - (box - :orientation "v" - :space-evenly false - :class "widget clock" - - (label :text thour) - (label :text tmin) - (label :text tpm)))) - - (defwidget battery [] - (box - :orientation "v" - :space-evenly false - :class "widget" - (overlay - (scale - :class "${EWW_BATTERY.BAT0.status == 'Charging' ? 'charging': bat0 < 16 ? 'dying': 'normal'} bat_scale" - :value "${bat0}" - :orientation "v" - :max 100 - :min 0 - :active false - :flipped true) - (label - :class "lightning" - :visible {EWW_BATTERY.BAT0.status == "Charging"} - :text "󱐋")) - (label :text "${EWW_BATTERY.BAT0.capacity}%" :limit-width 3 :show-truncated false))) - - (defwidget hiddenctl [] - (eventbox - :cursor "pointer" - :onclick {reveal3 ? "${EWW_CMD} update reveal3=false" : "${EWW_CMD} update reveal3=true"} - (box - :orientation "v" - :class "widget" - :space-evenly false - (revealer - :reveal reveal3 - :transition "slideup" - :duration "500ms" - (box - :class "touch" - :orientation "v" - :spacing 5 - (button :onclick "swaymsg kill" - (label :class "icon" :text "󰅙")) - (button :onclick "wofi --show=drun -i -I" - (label :class "icon" :text "󰀻")) - (button :onclick "./scripts/touchkey.sh" - (label :class "icon" :text "󰌌")))) - (label :angle {reveal3 ? 90 : 270} :class "revealtouch" :tooltip "touch control" :text "") - (revealer - :reveal {!reveal3} - :transition "slidedown" - ;; (tasklist))))) - )))) - - (defwidget playerctl [] - (eventbox - :cursor "pointer" - (box - :class "playerctl widget" - :orientation "v" - :space-evenly true - :spacing 6 - - (eventbox - :onclick "${EWW_CMD} open music --toggle" - (image :path { pcover == "" ? "./assets/image/emptympd.png" : pcover } :image-width 20 :image-height 20)) - (button :onclick "playerctl previous" - (label :class "picon" :text "󰒮")) - (button :onclick "playerctl play-pause" - (label :class "picon" :text { pstatus == "Playing" ? "" : "" })) - (button :onclick "playerctl next" - (label :class "picon" :text "󰒭")) - ))) - - (defwidget sliders [] - (box - :class "widget" - :orientation "v" - :space-evenly false - :spacing 5 - :valign "end" - (button :onclick "alacritty -e nmtui" :tooltip wifi_essid - (label :class "icon" :style "font-size: 18px;" :text wifi_icon)) - - (reveal_on_hover - :var revealVolume - :varname "revealVolume" - (box - :orientation "v" - :space-evenly false - :class "sound" - (label :class "icon" :text {volumemute == 'false' ? "󰕾" : "󰖁"}) - ;; {volumemute == 'no' ? volume : " Muted"}) - ) - (scale - :class "volslide" - :value volume - :onchange "pactl set-sink-volume @DEFAULT_SINK@ {}%" - :orientation "v" - :tooltip "${volume}%" - :max 101 - :min 0 - :flipped true)) - - (reveal_on_hover - :var revealMicrophone - :varname "revealMicrophone" - (box - :orientation "v" - :space-evenly false - :class "sound" - (label :class "icon" :text {volumemute == 'false' ? "" : "󰖁"})) - (scale - :class "volslide" - :value mic_volume - :onchange "pactl set-source-volume @DEFAULT_SOURCE@ {}%" - :orientation "v" - :tooltip "${mic_volume}%" - :max 101 - :min 0 - :flipped true)) - - (reveal_on_hover - :var revealBrightness - :varname "revealBrightness" - (box - :orientation "v" - :space-evenly false - :class "bright" - (label :class "icon" :text "󰃞")) - (scale - :class "brislide" - :onchange "brightnessctl set {}%" - :value brightness - :orientation "v" - :tooltip "${brightness}%" - :max 100 - :min 0 - :flipped true)) - )) - - ;; other windows - (defwindow calendar - :geometry (geometry :x "0" - :y "0" - :width "100" - :height "35" - :anchor "bottom left") - :stacking "overlay" - :monitor 0 - (box - :class "popup" - (box - :class "unbarwidget" - (calendar :day calendar_day :year calendar_year :class "cal")))) - - (defwindow music - :geometry (geometry :x "0" - :y "0" - :width "440" - :height "200" - :anchor "center left") - :stacking "overlay" - :monitor 0 - (box - :class "popup" - (box - :orientation "h" - :class "unbarwidget" - :space-evenly false - :spacing 20 - (image :style "margin: 5px;" :image-height 190 :image-width 190 :path { pcover == "" ? "./assets/image/emptympd.png" : pcover }) - (box - :orientation "v" - :space-evenly false - :width 210 - :height 200 - (scroll - :hscroll true - :vscroll false - (label :class "mtitle" :text psong)) - (scroll - :hscroll true - :vscroll false - (label :class "mauthor" :text partist)) - (box - :orientation "h" - :class "mpd_controls" - :style "margin-top: 10px;" - (button :onclick "playerctl previous" - (label :text "󰒮")) - (button :style "padding-right: 3px;" :onclick "playerctl play-pause" - (label :text { pstatus == "Playing" ? "" : ""} )) - (button :onclick "playerctl next" (label :text "󰒭"))) - (scale - :class "seektime" - :value { ptime.position } - :orientation "h" - ;; :onchange "playerctl position {}" - :min 0 - :max { ptime.duration } - :tooltip { ptime.readable })) - ))) - \ No newline at end of file diff --git a/hypr-configs/hyprland/eww/src/windows/vbar/main.yuck b/hypr-configs/hyprland/eww/src/windows/vbar/main.yuck new file mode 100644 index 0000000..e8851ee --- /dev/null +++ b/hypr-configs/hyprland/eww/src/windows/vbar/main.yuck @@ -0,0 +1,335 @@ +(defwidget vbar [] + (box + :orientation "h" + :space-evenly false + :vexpand true + :height "1080" + + (revealer + :transition "slideleft" + :reveal revealControlpanel + (control_widget)) + (centerbox + :class "vbar" + :orientation "v" + + ;; :space-evenly true + (top) + (middle) + (bottom) + ))) + +(defwidget top [] (box + :orientation "v" + :space-evenly false + :valign "start" + :vexpand false + (home) + (workspaces) + (hiddenctl) + )) + +(defwidget middle [] + (box + :orientation "v" + :space-evenly false + :valign "center" + :vexpand false + :class "center_modules" + :height "180" + (playerctl) + )) + +(defwidget bottom [] + (box + :orientation "v" + :space-evenly false + :valign "end" + :class "bottom_modules" + :vexpand false + :hexpand false + ; (systemtray) + (sliders) + (clock) + ; (battery) + )) + +(defwidget workspaces [] + (eventbox + :cursor "pointer" + :onscroll "./scripts/workspace/set-active {} ${current_workspace}" + :onhover "${EWW_CMD} update show_no_of_windows=true" + :onhoverlost "${EWW_CMD} update show_no_of_windows=false" + (box + :class "workspaces" + :space-evenly false + :orientation "v" + + (for workspace in {workspacesjson} + (button + :onclick "hyprctl dispatch workspace ${workspace.id}" + (box + :height 30 + :class "workspace ${workspace.id == current_workspace ? "workspacethingactive" : "workspacething"}" + + (revealer + :reveal { workspace.id == current_workspace } + :transition "slideup" + :duration 500 + + (box + :height 45 + ) + ) + ) + + ) + ) + ) + ) + ) + +(defwidget home [] + (box + :class "widget" + :hexpand false + :vexpand false + (eventbox + ;; :onclick "~/.config/eww/meowidgets/scripts/launch" + ;; :onclick "~/.config/eww/meowayland/scripts/launch" + ;; :onclick "./scripts/pop control" + :onclick "${EWW_CMD} update revealControlpanel=${ !revealControlpanel }" + :onrightclick "${EWW_CMD} open wallpaperselect --toggle" + :cursor "pointer" + (label :text "" :halign "center" :class "launchicon" :style "padding: 2px 0px;")))) + +(defwidget systemtray [] + (box + :class "widget" + :space-evenly false + :valign "end" + :orientation "v" + (eventbox + :onclick "${EWW_CMD} update revealSystray=${!revealSystray}" + (label :angle {!revealSystray ? 90 : 270} :class "revealtouch" :tooltip "reveal systray" :text "")) + + (revealer + :reveal revealSystray + :transition "slideup" + (systray + :icon_size 6 + :prepend-new true + )) + )) + +(defwidget clock [] + (eventbox + :cursor "pointer" + :onclick "${EWW_CMD} open calendar --toggle" + (box + :orientation "v" + :space-evenly false + :class "widget clock" + + (label :text thour) + (label :text tmin) + (label :text tpm)))) + +(defwidget battery [] + (box + :orientation "v" + :space-evenly false + :class "widget" + (overlay + (scale + :class "${EWW_BATTERY.BAT0.status == 'Charging' ? 'charging': bat0 < 16 ? 'dying': 'normal'} bat_scale" + :value "${bat0}" + :orientation "v" + :max 100 + :min 0 + :active false + :flipped true) + (label + :class "lightning" + :visible {EWW_BATTERY.BAT0.status == "Charging"} + :text "󱐋")) + (label :text "${EWW_BATTERY.BAT0.capacity}%" :limit-width 3 :show-truncated false))) + +(defwidget hiddenctl [] + (eventbox + :cursor "pointer" + :onclick {reveal3 ? "${EWW_CMD} update reveal3=false" : "${EWW_CMD} update reveal3=true"} + (box + :orientation "v" + :class "widget" + :space-evenly false + (revealer + :reveal reveal3 + :transition "slideup" + :duration "500ms" + (box + :class "touch" + :orientation "v" + :spacing 5 + (button :onclick "swaymsg kill" + (label :class "icon" :text "󰅙")) + (button :onclick "wofi --show=drun -i -I" + (label :class "icon" :text "󰀻")) + (button :onclick "./scripts/touchkey.sh" + (label :class "icon" :text "󰌌")))) + (label :angle {reveal3 ? 90 : 270} :class "revealtouch" :tooltip "touch control" :text "") + (revealer + :reveal {!reveal3} + :transition "slidedown" + ;; (tasklist))))) + )))) + +(defwidget playerctl [] + (eventbox + :cursor "pointer" + (box + :class "playerctl widget" + :orientation "v" + :space-evenly true + :spacing 6 + + (eventbox + :onclick "${EWW_CMD} open music --toggle" + (image :path { pcover == "" ? "./assets/image/emptympd.png" : pcover } :image-width 20 :image-height 20)) + (button :onclick "playerctl previous" + (label :class "picon" :text "󰒮")) + (button :onclick "playerctl play-pause" + (label :class "picon" :text { pstatus == "Playing" ? "" : "" })) + (button :onclick "playerctl next" + (label :class "picon" :text "󰒭")) + ))) + +(defwidget sliders [] + (box + :class "widget" + :orientation "v" + :space-evenly false + :spacing 5 + :valign "end" + (button :onclick "alacritty -e nmtui" :tooltip wifi_essid + (label :class "icon" :style "font-size: 18px;" :text wifi_icon)) + + (reveal_on_hover + :var revealVolume + :varname "revealVolume" + (box + :orientation "v" + :space-evenly false + :class "sound" + (label :class "icon" :text {volumemute == 'false' ? "󰕾" : "󰖁"}) + ;; {volumemute == 'no' ? volume : " Muted"}) + ) + (scale + :class "volslide" + :value volume + :onchange "pactl set-sink-volume @DEFAULT_SINK@ {}%" + :orientation "v" + :tooltip "${volume}%" + :max 101 + :min 0 + :flipped true)) + + (reveal_on_hover + :var revealMicrophone + :varname "revealMicrophone" + (box + :orientation "v" + :space-evenly false + :class "sound" + (label :class "icon" :text {volumemute == 'false' ? "" : "󰖁"})) + (scale + :class "volslide" + :value mic_volume + :onchange "pactl set-source-volume @DEFAULT_SOURCE@ {}%" + :orientation "v" + :tooltip "${mic_volume}%" + :max 101 + :min 0 + :flipped true)) + + (reveal_on_hover + :var revealBrightness + :varname "revealBrightness" + (box + :orientation "v" + :space-evenly false + :class "bright" + (label :class "icon" :text "󰃞")) + (scale + :class "brislide" + :onchange "brightnessctl set {}%" + :value brightness + :orientation "v" + :tooltip "${brightness}%" + :max 100 + :min 0 + :flipped true)) + )) + +;; other windows +(defwindow calendar + :geometry (geometry :x "0" + :y "0" + :width "100" + :height "35" + :anchor "bottom left") + :stacking "overlay" + :monitor 0 + (box + :class "popup" + (box + :class "unbarwidget" + (calendar :day calendar_day :year calendar_year :class "cal")))) + +(defwindow music + :geometry (geometry :x "0" + :y "0" + :width "440" + :height "200" + :anchor "center left") + :stacking "overlay" + :monitor 0 + (box + :class "popup" + (box + :orientation "h" + :class "unbarwidget" + :space-evenly false + :spacing 20 + (image :style "margin: 5px;" :image-height 190 :image-width 190 :path { pcover == "" ? "./assets/image/emptympd.png" : pcover }) + (box + :orientation "v" + :space-evenly false + :width 210 + :height 200 + (scroll + :hscroll true + :vscroll false + (label :class "mtitle" :text psong)) + (scroll + :hscroll true + :vscroll false + (label :class "mauthor" :text partist)) + (box + :orientation "h" + :class "mpd_controls" + :style "margin-top: 10px;" + (button :onclick "playerctl previous" + (label :text "󰒮")) + (button :style "padding-right: 3px;" :onclick "playerctl play-pause" + (label :text { pstatus == "Playing" ? "" : ""} )) + (button :onclick "playerctl next" (label :text "󰒭"))) + (scale + :class "seektime" + :value { ptime.position } + :orientation "h" + ;; :onchange "playerctl position {}" + :min 0 + :max { ptime.duration } + :tooltip { ptime.readable })) + )))