diff --git a/modules/wm/hyprland/config/eww/eww.scss b/modules/wm/hyprland/config/eww/eww.scss index fd3f5f5..954c2d1 100644 --- a/modules/wm/hyprland/config/eww/eww.scss +++ b/modules/wm/hyprland/config/eww/eww.scss @@ -3,11 +3,6 @@ font-family: "JetBrains Mono"; } // WINDOW RELATED CSS -.bg { - background-color: #1E222A; - border: 2px solid #80A0C0; -} - window { background: #2e3440; color: #ebcb8b; @@ -20,7 +15,7 @@ window { font-size: 1.25rem; } .cpu { - padding: 19px; + padding: 19px 1px; } // METRIC LOOKS @@ -46,12 +41,8 @@ window { } // POWERMENU -.bigpowermenu { - font-size: 3rem; -} - -.quicksettings { - font-size: 1.75rem; +.power { + padding: 0px 9px; } // WIDGET MISC SETTINGS diff --git a/modules/wm/hyprland/config/eww/eww_variables.yuck b/modules/wm/hyprland/config/eww/eww_variables.yuck index e0fadeb..bfb8fc0 100644 --- a/modules/wm/hyprland/config/eww/eww_variables.yuck +++ b/modules/wm/hyprland/config/eww/eww_variables.yuck @@ -14,14 +14,30 @@ (defpoll time :interval "1s" :initial-value "" - "date +'%H:%M:%S'" + + `date +'%H:%M:%S'` +) + +(defpoll workspace + :interval "1s" + :initial-value "" + + `hyprctl activeworkspace -j | jq '.name' | sed -e 's/"//g'` +) + +(defpoll clients + :interval "1s" + :initial-value "" + + `hyprctl clients -j | jq '.[].address' | wc -l` ) (defpoll TODAY :interval "1s" `date +'%d %b %y'`) (defpoll distro :interval "12h" `nixos-version | sed -r 's/^(.....).*?\\((.*?)\\)/NixOS \\1/'`) -(defpoll music_current :interval "1s" "mpc current") -(defpoll ssid :interval "1s" "iwgetid -r || echo 'Disconnected'") +(defpoll sound + :interval "1s" + :initial-value "images/sound-lo.svg" -;;;; App list LISTEN VAR -(defpoll search_listen :interval "5m" "scripts/search_items.txt") + `./scripts/volume.sh` +) diff --git a/modules/wm/hyprland/config/eww/eww_widgets.yuck b/modules/wm/hyprland/config/eww/eww_widgets.yuck index 5056378..fb10b50 100644 --- a/modules/wm/hyprland/config/eww/eww_widgets.yuck +++ b/modules/wm/hyprland/config/eww/eww_widgets.yuck @@ -11,8 +11,22 @@ ;;;; Background Black Holder Widget -(defwidget bg [] - (box :class "bg-box" :orientation "v" :space-evenly false)) +(defwidget power [] + (centerbox :class "bg-box" + (box :orientation "h" :space-evenly false :valign "center" :halign "start" :spacing 5 + (button :onclick "kitty -T 'confirm-script' ~/.config/eww/scripts/confirm.sh 'shutdown now' &" (image :path "images/shutdown.svg")) + (button :onclick "kitty -T 'confirm-script' ~/.config/eww/scripts/confirm.sh 'reboot' &" (image :path "images/reboot.svg")) + (button :onclick "hyprlock" (image :path "images/lock.svg")) + ) + + "" + + (box :orientation "h" :space-evenly false :valign "center" :halign "end" :spacing 5 + (button :onclick "kitty pulsemixer &" (image :path {sound} )) + (button :onclick "" (image :path "images/ethernet.svg")) + ) + ) +) ;;;; User information fetch widget @@ -23,18 +37,19 @@ ;; Tags for values (box :orientation "h" :space-evenly "false" :spacing 10 - (box :orientation "v" :class "fetch" :spacing 2 - (label :style "font-family: 'archcraft'; color: #b48ead;" :halign "end" :text "") - (label :style "color: #ebcb8b;" :halign "end" :text "缾") - (label :style "color: #80a0c0;" :halign "end" :text "") - (label :style "color: #b48ead;" :halign "end" :text "")) + (box :orientation "v" :class "fetch" :spacing 2 + (image :path "images/workspace.svg") + (image :path "images/window.svg") + (image :path "images/date.svg") + (image :path "images/time.svg") + ) ;; Fetch Values - (box :orientation "v" :class "fetch" - (label :style "color: #b48ead;" :halign "start" :text ": ${distro}") - (label :style "color: #ebcb8b;" :halign "start" :text ": Hyprland") - (label :style "color: #80a0c0;" :halign "start" :text ": ${TODAY}") - (label :style "color: #b48ead;" :halign "start" :text ": ${time}") + (box :orientation "v" :class "fetch" + (label :style "color: #b48ead;" :halign "start" :text " Workspace ${workspace}") + (label :style "color: #ebcb8b;" :halign "start" :text " ${clients} Windows") + (label :style "color: #80a0c0;" :halign "start" :text " ${TODAY}") + (label :style "color: #b48ead;" :halign "start" :text " ${time}") )))) ;;;; System Information Widget @@ -51,7 +66,7 @@ ;;;; Random Quote Widget -(defwidget quote[] +(defwidget quote [] (box :class "quote" :orientation "v" :space-evenly false :halign "center" :valign "center" (label :class "quote-text" :text "${quote_text}" :wrap true))) @@ -71,49 +86,3 @@ ) ) -;;;; Rofi style search -(defwidget searchapps [] - (eventbox :onhoverlost "eww close searchapps" - (box :orientation "v" :space-evenly false :class "search-win" :halign "top" :valign "top" - (box :orientation "h" :space-evenly false :class "searchapps-bar" :halign "top" :valign "top" - (label :class "search-label" :text "") - (input :class "search-bar" :onchange "~/.config/eww/scripts/search.sh {}")) - (literal :halign "center" :valign "center" :class "app-container" :content search_listen)))) - -;;;; Rofi style powermenu -(defwidget bigpowermenu [] - (box :orientation "h" :space-evenly false :class "bigpowermenu" :halign "center" :valign "center" :spacing 20 - (button :style "color: #d8dee9;" :class "shutdown" :onrightclick "systemctl poweroff" "") - (button :style "color: #e5e9f0;" :class "reboot" :onrightclick "systemctl reboot" "") - (button :style "color: #eceff4;" :class "lock" :onrightclick "bsplock" "") - (button :style "color: #e8e8e8;" :class "suspend" :onrightclick "mpc -q pause & amixer set Master mute & systemctl suspend" "") - (button :style "color: #ffffff;" :class "logout" :onrightclick "bspc quit" ""))) - -;;;; Music Player -(defwidget musicplayer [] - - (box :orientation "v" :space-evenly false :class "musicplayer" :halign "center" :valign "center" :hexpand true :vexpand true - (label :class "label-control" :text "${music_current}" :halign "center" :limit-width 50 :show-truncated true :hexpand true :vexpand true) - (box :orientation "h" :space-evenly false :class "controls" :halign "center" :valign "center" :spacing 20 - (button :style "color: #d8dee9;" :onclick "mpc -q toggle && notify-send -u low -t 1800 ${music_current}" "懶") - (button :style "color: #e5e9f0;" :onclick "mpc -q stop" "") - (button :style "color: #eceff4;" :onclick "mpc -q next && notify-send -u low -t 1800 ${music_current}" "") - (button :style "color: #e8e8e8;" :onclick "mpc -q prev && notify0send -u low -t 1800 ${music_current}" "")))) - -(defwidget network [] - - (box :orientation "v" :space-evenly false :class "network" :halign "center" :valign "center" :hexpand true :vexpand true - (label :class "label-control" :text "${ssid}" :halign "center" :limit-width 50 :show-truncated true :hexpand true :vexpand true) - (box :orientation "h" :space-evenly false :class "controls" :halign "center" :valign "center" :spacing 20 - (button :style "color: #d8dee9;" :onclick "sh ~/.config/eww/scripts/airplane_mode.sh" "") - (button :style "color: #e5e9f0;" :onclick "alacritty --class 'alacritty-float,alacritty-float' -e bmon &" "") - (button :style "color: #eceff4;" :onclick "alacritty --class 'alacritty-float,alacritty-float' -e nmtui &" "") - (button :style "color: #e8e8e8;" :onclick "nm-connection-editor &" "")))) - -(defwidget screenshot [] - - (box :orientation "v" :space-evenly false :class "network" :halign "center" :valign "center" :hexpand true :vexpand true - (label :class "label-control" :text " Screenshot" :halign "center" :limit-width 50 :show-truncated true :hexpand true :vexpand true) - (box :orientation "h" :space-evenly false :class "controls" :halign "center" :valign "center" :spacing 20 - (button :style "color: #d8dee9;" :onclick "eww close screenshot && ~/.config/eww/scripts/screenshot 'SCREEN'" "") - (button :style "color: #e5e9f0;" :onclick "eww close screenshot && ~/.config/eww/scripts/screenshot 'SELECT'" "")))) diff --git a/modules/wm/hyprland/config/eww/eww_windows.yuck b/modules/wm/hyprland/config/eww/eww_windows.yuck index 2707c78..eaefafc 100644 --- a/modules/wm/hyprland/config/eww/eww_windows.yuck +++ b/modules/wm/hyprland/config/eww/eww_windows.yuck @@ -1,140 +1,72 @@ ; -> WINDOWS FOR EWW WIDGETS <- ; -;;;; IMPORTS (include "/home/horseman/.config/eww/eww_widgets.yuck") -;;;; Fetch widget window - (defwindow fetch :wm-ignore: true :monitor 0 :windowtype "dock" - :geometry (geometry :x "20px" - :y "65px" + :geometry (geometry :x "10px" + :y "70px" :width "170px" :height "200px" :anchor "top left") (uinfo)) -;;;; System information window - (defwindow sys :class "cpu-win" :wm-ignore true :monitor 0 :windowtype "dock" - :geometry (geometry :x "200px" - :y "275px" + :geometry (geometry :x "190px" + :y "280px" :width "170px" - :height "48px" + :height "140px" :anchor "top left") (sys)) -;;;; Random Quotes - (defwindow quote :wm-ignore true :monitor 0 :windowtype "dock" - :geometry (geometry :x "200px" - :y "65px" + :geometry (geometry :x "190px" + :y "70px" :width "170px" :height "200px" :anchor "top left") (quote)) -;;;; Quicksettings window - (defwindow quicksettings :wm-ignore true :monitor 0 :windowtype "dock" - :geometry (geometry :x "20px" - :y "275px" + :geometry (geometry :x "10px" + :y "280px" :width "170px" - :height "50px" + :height "65px" :anchor "top left") (quicksettings)) -;;;; Favorite applications - (defwindow appbar :wm-ignore true :monitor 0 :windowtype "dock" - :geometry (geometry :x "20" - :y "335px" + :geometry (geometry :x "10px" + :y "355px" :width "170px" - :height "74px" + :height "65px" :anchor "top left") (appbar)) -;;;; Background Container Window -(defwindow bg +(defwindow power :class "bg" :wm-ignore true :monitor 0 :windowtype "dock" - :geometry (geometry :x "5px" - :y "40px" - :width "380px" - :height "800px" + :geometry (geometry :x "10px" + :y "10px" + :width "350px" + :height "50px" :anchor "top left") -(bg)) +(power)) -;;;; Searching Windows - -(defwindow searchapps - :wm-ignore: true - :monitor 0 - :windowtype "normal" - :geometry (geometry :x "40%" - :y "30%" - :width "20%" - :height "50%" - :anchor "top left") -(searchapps)) - -(defwindow bigpowermenu - :wm-ignore true - :monitor 0 - :windowtype "dock" - :geometry (geometry :x "0px" - :y "0%" - :width "20%" - :height "10%" - :anchor "center center") -(bigpowermenu)) - -(defwindow musicplayer - :wm-ignore true - :monitor 0 - :windowtype "dock" - :geometry (geometry :x "0px" - :y "0%" - :width "20%" - :height "10%" - :anchor "center center") -(musicplayer)) - -(defwindow network - :wm-ignore true - :monitor 0 - :windowtype "dock" - :geometry (geometry :x "0px" - :y "0%" - :width "20%" - :height "10%" - :anchor "center center") -(network)) - -(defwindow screenshot - :wm-ignore true - :monitor 0 - :windowtype "dock" - :geometry (geometry :x "0px" - :y "0%" - :width "20%" - :height "10%" - :anchor "center center") -(screenshot)) diff --git a/modules/wm/hyprland/config/eww/images/date.svg b/modules/wm/hyprland/config/eww/images/date.svg new file mode 100644 index 0000000..1863327 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/date.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/ethernet.svg b/modules/wm/hyprland/config/eww/images/ethernet.svg new file mode 100644 index 0000000..9210426 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/ethernet.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/gpu.svg b/modules/wm/hyprland/config/eww/images/gpu.svg index 0889b0e..da72db6 100644 --- a/modules/wm/hyprland/config/eww/images/gpu.svg +++ b/modules/wm/hyprland/config/eww/images/gpu.svg @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/lock.svg b/modules/wm/hyprland/config/eww/images/lock.svg new file mode 100644 index 0000000..0519545 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/lock.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/reboot.svg b/modules/wm/hyprland/config/eww/images/reboot.svg new file mode 100644 index 0000000..669977c --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/reboot.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/shutdown.svg b/modules/wm/hyprland/config/eww/images/shutdown.svg new file mode 100644 index 0000000..f49d95c --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/shutdown.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/sound-hi.svg b/modules/wm/hyprland/config/eww/images/sound-hi.svg new file mode 100644 index 0000000..2ac61ac --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/sound-hi.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/sound-lo.svg b/modules/wm/hyprland/config/eww/images/sound-lo.svg new file mode 100644 index 0000000..1b6950f --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/sound-lo.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/sound-off.svg b/modules/wm/hyprland/config/eww/images/sound-off.svg new file mode 100644 index 0000000..7f611c1 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/sound-off.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/time.svg b/modules/wm/hyprland/config/eww/images/time.svg new file mode 100644 index 0000000..092283e --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/time.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/modules/wm/hyprland/config/eww/images/wifi-1.svg b/modules/wm/hyprland/config/eww/images/wifi-1.svg new file mode 100644 index 0000000..0971d4c --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/wifi-1.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/wifi-2.svg b/modules/wm/hyprland/config/eww/images/wifi-2.svg new file mode 100644 index 0000000..613bdca --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/wifi-2.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/wifi-3.svg b/modules/wm/hyprland/config/eww/images/wifi-3.svg new file mode 100644 index 0000000..58a03a2 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/wifi-3.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/wifi-4.svg b/modules/wm/hyprland/config/eww/images/wifi-4.svg new file mode 100644 index 0000000..6bd1354 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/wifi-4.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/wifi-off.svg b/modules/wm/hyprland/config/eww/images/wifi-off.svg new file mode 100644 index 0000000..0b6b816 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/wifi-off.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/images/window.svg b/modules/wm/hyprland/config/eww/images/window.svg new file mode 100644 index 0000000..82c7f75 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/window.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/modules/wm/hyprland/config/eww/images/workspace.svg b/modules/wm/hyprland/config/eww/images/workspace.svg new file mode 100644 index 0000000..0b7f489 --- /dev/null +++ b/modules/wm/hyprland/config/eww/images/workspace.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/modules/wm/hyprland/config/eww/scripts/airplane_mode.sh b/modules/wm/hyprland/config/eww/scripts/airplane_mode.sh deleted file mode 100644 index 9d8f064..0000000 --- a/modules/wm/hyprland/config/eww/scripts/airplane_mode.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -status=$(nmcli n) -if [[ "$status" == "enabled" ]]; then - nmcli n off -else - nmcli n on -fi diff --git a/modules/wm/hyprland/config/eww/scripts/confirm.sh b/modules/wm/hyprland/config/eww/scripts/confirm.sh new file mode 100755 index 0000000..5c9b8f0 --- /dev/null +++ b/modules/wm/hyprland/config/eww/scripts/confirm.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +read -t 10 -p "Are you sure? Doing it anyway in 10 seconds" input + +if [ $(($?)) = 0 ]; then + $1 +fi diff --git a/modules/wm/hyprland/config/eww/scripts/open.sh b/modules/wm/hyprland/config/eww/scripts/open.sh index ee3ea0a..c50aa90 100755 --- a/modules/wm/hyprland/config/eww/scripts/open.sh +++ b/modules/wm/hyprland/config/eww/scripts/open.sh @@ -2,4 +2,4 @@ eww update hostname="$(hostname)" -eww open-many --toggle quote quicksettings appbar fetch sys +eww open-many --toggle quote quicksettings appbar fetch sys power diff --git a/modules/wm/hyprland/config/eww/scripts/quote.sh b/modules/wm/hyprland/config/eww/scripts/quote.sh deleted file mode 100755 index a09a123..0000000 --- a/modules/wm/hyprland/config/eww/scripts/quote.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -echo "\"The futility of lighting birthday candles to immediately blow them out is one reason why I find children's birthday parties unpractical.\"" diff --git a/modules/wm/hyprland/config/eww/scripts/screenshot b/modules/wm/hyprland/config/eww/scripts/screenshot deleted file mode 100644 index 42ba104..0000000 --- a/modules/wm/hyprland/config/eww/scripts/screenshot +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash - -time=`date +%Y-%m-%d-%I-%M-%S` -geometry=`xrandr | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'` -dir="`xdg-user-dir PICTURES`/Screenshots" -file="Screenshot_${time}_${geometry}.png" - -# notify -notify_user () { - if [[ -e "$dir/$file" ]]; then - dunstify -u low --replace=699 -i /usr/share/archcraft/icons/dunst/picture.png "Saved in $dir" - else - dunstify -u low --replace=699 -i /usr/share/archcraft/icons/dunst/picture.png "Screenshot Deleted." - fi -} - -# take shots -shotnow () { - cd ${dir} && sleep 0.5 && maim -u -f png "$file" && viewnior ${dir}/"$file" - notify_user -} - -shotarea () { - cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l "$file" && viewnior ${dir}/"$file" - notify_user -} - -if [[ ! -d "$dir" ]]; then - mkdir -p "$dir" -fi - -chosen="$1" -case $chosen in - "SCREEN") - shotnow - ;; - "SELECT") - shotarea - ;; -esac - diff --git a/modules/wm/hyprland/config/eww/scripts/search.sh b/modules/wm/hyprland/config/eww/scripts/search.sh deleted file mode 100644 index 8837eed..0000000 --- a/modules/wm/hyprland/config/eww/scripts/search.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -list=$(ls /usr/bin/ | grep -m 10 -i "$1") -buf="" -for l in $list ; do - buf="$buf (button :class \"item\" :onclick \"$l &\" \"$l\")" -done -echo "(box :orientation \"v\" :spacing 5 :class \"apps\" :halign \"center\" :valign \"center\" $buf)" > ~/.config/eww/scripts/search_items.txt - diff --git a/modules/wm/hyprland/config/eww/scripts/uptime.sh b/modules/wm/hyprland/config/eww/scripts/uptime.sh deleted file mode 100755 index cbd2bd2..0000000 --- a/modules/wm/hyprland/config/eww/scripts/uptime.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -uptime=$(($(date +%s) - $(date +%s -d "$(last reboot | head -n 1 | sed -e 's/reboot system boot ...... //; s/still running//')"))); - -echo $((uptime / 3600 % 60))h $((uptime / 60 % 60))m diff --git a/modules/wm/hyprland/config/eww/scripts/volume.sh b/modules/wm/hyprland/config/eww/scripts/volume.sh new file mode 100755 index 0000000..3f018e1 --- /dev/null +++ b/modules/wm/hyprland/config/eww/scripts/volume.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +volume=$(($(wpctl get-volume @DEFAULT_SINK@ | sed -r 's/Volume: (0|1)\.(..)/\1\2/; s/^(0)//g'))) + +if (( $volume == 0 )); then + echo 'images/sound-off.svg' + exit 0 +fi + +if (( $volume < 20 )); then + echo 'images/sound-lo.svg' + exit 0 +fi + +echo 'images/sound-hi.svg' diff --git a/modules/wm/hyprland/default.nix b/modules/wm/hyprland/default.nix index 221aaff..ce50780 100644 --- a/modules/wm/hyprland/default.nix +++ b/modules/wm/hyprland/default.nix @@ -36,6 +36,7 @@ in { fortune python312Packages.gpustat hyprshot + pulsemixer ]; services.logind.extraConfig = ''