{ config, pkgs, ... }: { imports = [ ./01_windows.nix ./02_scripts.nix ]; home.file.".config/eww/eww.yuck".text = '' ;; ─────────────────────────────────────────────────────────────────────────── ;; °˖* ૮( • ᴗ 。)っ🍸 pewdiepie/archdaemon/dionysh ;; shhheersh ;; EWW HUD config, some stuff duct taped, some stuff glued ;; vers. 1.0-nix ;; ─────────────────────────────────────────────────────────────────────────── ;; === Windows ─────────────────────────────────────────────────────────────── (include "./windows/ascii/visualizer_window.yuck") (include "windows/ascii/audio_status.yuck") (include "windows/sys/four_boxes.yuck") (include "windows/sys/workspace_window_text.yuck") (include "windows/bar/cpu_ram_storage_bars.yuck") (include "windows/sys/active_workspace.yuck") (include "windows/sys/orange_workspace.yuck") (include "windows/sys/power_cooling_header_text.yuck") (include "windows/sys/power_mode_text.yuck") (include "windows/sys/right_fan_data.yuck") (include "windows/net/ascii_decor_frame.yuck") (include "windows/net/net_bars.yuck") (include "windows/net/right_internet_text.yuck") (include "windows/misc/welcome_text.yuck") ;; === Variables ───────────────────────────────────────────────────────────── (defvar max_fan_rpm "5000") (defvar ascii_decor1 " - - -- -- - - -- -- - - -- -- - - -- -- - - -- -- - - ") ;; === Workspace Status ────────────────────────────────────────────────────── (defpoll ws1 :interval "1s" "bash ~/.config/eww/scripts/sys/sys_workspace.sh | grep ws1= | cut -d= -f2 || echo 'null'") (defpoll ws2 :interval "1s" "bash ~/.config/eww/scripts/sys/sys_workspace.sh | grep ws2= | cut -d= -f2 || echo 'null'") (defpoll ws3 :interval "1s" "bash ~/.config/eww/scripts/sys/sys_workspace.sh | grep ws3= | cut -d= -f2 || echo 'null'") (defpoll ws4 :interval "1s" "bash ~/.config/eww/scripts/sys/sys_workspace.sh | grep ws4= | cut -d= -f2 || echo 'null'") (defpoll current_workspace :interval "0.5s" "hyprctl activeworkspace -j | jq -r '.id' || echo 'null'") ;; === Power & Voltage ─────────────────────────────────────────────────────── (defpoll gpu_voltage :interval "5s" "bash ~/.config/eww/scripts/sys/sys_gpu_voltage.sh || echo 'null'") (defpoll cpu_voltage :interval "5s" "bash ~/.config/eww/scripts/sys/sys_cpu_voltage.sh || echo 'null'") (defpoll dc_voltage :interval "10s" "bash ~/.config/eww/scripts/sys/sys_dc_voltage.sh || echo 'null'") (defpoll power_mode :interval "10s" "bash ~/.config/eww/scripts/sys/sys_power_mode.sh || echo 'null'") (defpoll power_draw :interval "5s" "sensors | grep -m 1 'power1:' | awk '{print $2 \" \"$3}' || echo 'N/A'") ;; === CPU & GPU Stats ─────────────────────────────────────────────────────── (defpoll cpu :interval "10m" "lscpu | grep 'Model name' | cut -d ':' -f2 | xargs || echo 'null'") (defpoll gpu :interval "10m" "lspci | grep -i vga | cut -d ':' -f3 || echo 'null'") (defpoll cpu_usage :interval "2s" "top -bn1 | grep 'Cpu(s)' | awk '{print int($2 + $4)}' || echo 'null'") (defpoll cpu_bar :interval "2s" "bash ~/.config/eww/scripts/bar/bar_render.sh $(top -bn1 | grep 'Cpu(s)' | awk '{print int($2 + $4)}') || echo 'null'") (defpoll gpu_usage :interval "2s" "nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits || echo 'N/A'") (defpoll cpu_temp :interval "5s" "sensors | grep 'Tctl' | awk '{print $2}' || echo 'N/A'") (defpoll gpu_temp :interval "5s" "nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits || echo 'N/A'") ;; Fan RPM values (defpoll cpu_fan_rpm :interval "5s" "sensors | grep -i 'cpu_fan' | awk '{print $2 \" RPM\"}' || echo 'null'") (defpoll gpu_fan_rpm :interval "5s" "sensors | grep -i 'gpu_fan' | awk '{print $2 \" RPM\"}' || echo 'null'") ;; Fan ASCII spinners (defpoll cpu_fan_ascii :interval "0.2s" "bash ~/.config/eww/scripts/sys/sys_fan_spin.sh cpu || echo 'null'") (defpoll gpu_fan_ascii :interval "0.2s" "bash ~/.config/eww/scripts/sys/sys_fan_spin.sh gpu || echo 'null'") ;; === Memory & Storage ────────────────────────────────────────────────────── (defpoll ram_info :interval "5s" "free -h | awk '/Mem:/ {print $3\" / \"$2}' || echo 'null'") (defpoll ram_percent :interval "5s" "free | awk '/Mem:/ {printf \"%d\", $3/$2 * 100}' || echo 'null'") (defpoll ram_bar :interval "5s" "bash ~/.config/eww/scripts/bar/bar_render.sh $(free | awk '/Mem:/ {printf(\"%.0f\", $3/$2 * 100)}') || echo 'null'") (defpoll ram :interval "5s" "free -h | awk '/Mem:/ {print $3 \"/\" $2}' || echo 'null'") (defpoll disk :interval "10s" "df -h / | awk 'NR==2 {print $3 \"/\" $2}' || echo 'null'") (defpoll storage_percent :interval "5s" "df / | awk 'NR==2 {print int($3*100/$2)}' || echo 'null'") (defpoll storage_bar :interval "5s" "bash ~/.config/eww/scripts/bar/bar_render.sh $(df / | awk 'NR==2 {print int($3*100/$2)}') || echo 'null'") ;; === Networking ──────────────────────────────────────────────────────────── (defpoll upload_speed :interval "3s" "bash ~/.config/eww/scripts/net/net_upload.sh || echo 'null'") (defpoll upload_bar :interval "3s" "bash ~/.config/eww/scripts/net/net_upload.sh | xargs bash ~/.config/eww/scripts/net/net_upload_bar.sh || echo 'null'") (defpoll download_speed :interval "3s" "bash ~/.config/eww/scripts/net/net_download.sh || echo 'null'") (defpoll download_bar :interval "3s" "bash ~/.config/eww/scripts/net/net_download.sh | xargs bash ~/.config/eww/scripts/net/net_download_bar.sh || echo 'null'") (defpoll ping_ms :interval "5s" "bash ~/.config/eww/scripts/net/net_ping.sh || echo 'null'") (defpoll ping_bar :interval "5s" "bash ~/.config/eww/scripts/net/net_ping.sh | xargs bash ~/.config/eww/scripts/net/net_ping_latency.sh || echo 'null'") (defpoll vpn_status_text :interval "5s" "bash ~/.config/eww/scripts/net/net_vpn_status.sh || echo 'null'") (defpoll vpn_bar :interval "5s" "bash ~/.config/eww/scripts/net/net_vpn.sh | xargs bash ~/.config/eww/scripts/net/net_vpn_bar.sh || echo 'null'") ;; === Time & Date ─────────────────────────────────────────────────────────── (defpoll welcome_date :interval "30s" "date '+%A, %d %B %Y' || echo 'null'") (defpoll weekday_str :interval "10s" "date +%A || echo 'null'") (defpoll datetime_str :interval "10s" "date '+%H:%M • %d %B %Y' || echo 'null'") (defpoll weather_forecast :interval "30m" "curl -s 'wttr.in?format=%C+%t' || echo 'N/A'") ;; === System Info ─────────────────────────────────────────────────────────── (defpoll os :interval "10m" "uname -o || echo 'null'") (defpoll desktop :interval "10m" "echo $XDG_CURRENT_DESKTOP || echo 'null'") (defpoll wm :interval "10m" "echo $XDG_SESSION_TYPE || echo 'null'") (defpoll shell :interval "10m" "basename $SHELL || echo 'null'") (defpoll USER :interval "10m" "whoami || echo 'null'") (defpoll install-age :interval "1h" "uptime -s | xargs -I{} date -d {} +%s | xargs -I{} echo $(( ($(date +%s) - {}) / 86400 ))' days' || echo 'null'") (defpoll since-boot :interval "5s" "uptime -s || echo 'null'") (defpoll uptime_full :interval "0.5s" "awk '{sec=int($1); ms=substr(sprintf(\"%.3f\", $1 - sec), 3); printf \"%02d:%02d:%02d.%s\\n\", sec/3600, (sec%3600)/60, sec%60, ms}' /proc/uptime || echo 'null'") (defpoll centered-name :interval "10m" "echo $USER@$(hostname) || echo 'null'") (defpoll battery_time :interval "10s" "upower -i $(upower -e | grep BAT) 2>/dev/null | awk ' /state:/ { state = $2 } /time to empty/ { print $4 \" \"$5 } /time to full/ { full = $4 \" \"$5 } END { if (state == \"discharging\") exit 0; else if (state == \"charging\") print \"Re-establishing\"; else print \"N/A\" }' || echo 'null'") ;; === ASCII Widgets & Feeds === (defpoll visualizer_gen :interval "0.2s" "cat /tmp/visualizer.txt || echo 'null'") (defpoll visualizer_content :interval "0.2s" "cat /tmp/visualizer.txt || echo '----------------------------standby--------------------------'") (defpoll reactor_gen :interval "0.5s" "cat /tmp/reactor_frame.txt || echo 'null'") (defpoll reactor_ascii :interval "0.5s" "cat /tmp/reactor_frame.txt || echo 'standby'") (defpoll reactor_core_layout :interval "1s" "bash ~/.config/eww/scripts/ascii/ascii_core_layout.sh && cat /tmp/core_layout.txt || echo 'standby'") (defpoll live_log_gen :interval "5s" "bash ~/.config/eww/scripts/ascii/ascii_live_log.sh || echo 'null'") (defpoll live_text :interval "5s" "cat /tmp/live_text.txt || echo '--------------…'") (defpoll ascii_audio_status :interval "2s" "bash ~/.config/eww/scripts/audio/audio_cava_status.sh || echo 'null'") ;; === Widgets ──────────────────────────────────────────────────────────────────── (defwidget audio-visualizer [] (box :class "outer-frame" (box :class "inner-frame" (box :class "visualizer-container" (label :text visualizer_content :markup true :class "visualizer-text"))))) ''; home.file.".config/eww/eww.scss".text = '' // ───────────────────────────────────────────────────────────────────────── // °˖* ૮( • ᴗ 。)っ🍸 pewdiepie/archdaemon/dionysh // shhheersh // EWW HUD style // vers. 1.0-nix // ───────────────────────────────────────────────────────────────────────── // ── Visualizer ─────────────────────────────────────────────────────────── .visualizer-container { background-color: transparent; } .visualizer { color: #08c0d0; // Nord Cyan font-family: monospace; background-color: transparent; font-size: 9px; } .visualizer-container { border-radius: 2px; background: linear-gradient(to top, rgba(25,25,25,0.5), rgba(25,25,25,0)); padding: 4px; } .visualizer-text { font-family: monospace; font-size: 8px; color: #56b6c2; } // ── Windows ────────────────────────────────────────────────────────────── window { background-color: transparent; box-shadow: none; border: none; } .window { background-color: transparent; } // ── Pixel ASCII ────────────────────────────────────────────────────────── .pixel-container { background-color: transparent; padding: 2px; } .pixel-ascii { font-family: monospace; font-size: 6px; color: #e5c07b; background-color: transparent; } // ── Color Classes ──────────────────────────────────────────────────────── .red_1 { color: #ff6c6b; } .green_1 { color: #9cdef2; } .blue_1 { color: #61afef; } .yellow_1 { color: #9cdef2; } .red_2 { color: #ff6c6b; } .green_2 { color: #98c379; } .blue_2 { color: #61afef; } .yellow_2 { color: #fab387; } // ── Frames ─────────────────────────────────────────────────────────────── .outer-frame { border: 2px solid #61afef; border-radius: 3px; padding: 4px; background-color: transparent; min-width: 350px; } .inner-frame { border: 2px solid #56b6c2; border-radius: 1px; padding: 6px; //background-color: rgba(25, 25, 25, 0.4); } .module-frame { border: 2px solid #61afef; border-radius: 2px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; min-height: 10px; min-width: 140px; } .module-frame { border: 2px solid #61afef; border-radius: 2px; margin: 5px; padding: 1px; min-height: 10px; min-width: 140px; background-image: linear-gradient(to left, rgba(0,0,0,0.4), rgba(0,0,0,0)); transition: all 0.2s ease-in-out; } .module-frame2 { border: 2px solid #61afef; border-radius: 2px; margin: 5px; padding: 1px; min-height: 10px; min-width: 10px; background-image: linear-gradient(to left, rgba(0,0,0,0.4), rgba(0,0,0,0)); transition: all 0.2s ease-in-out; } .module-frame:hover { border-color: #88c0d0; background-image: linear-gradient(to left, rgba(136, 192, 208, 0.1), rgba(0, 0, 0, 0)); box-shadow: 0 0 8px rgba(136, 192, 208, 0.4); } // ── Labels & Stats ─────────────────────────────────────────────────────── .label-primary { font-size: 14px; font-weight: bold; color: #9cdef2; } .label-primary2 { font-size: 9px; font-weight: bold; color: #9cdef2; border: 2px solid #61afef; border-radius: 2px; margin-bottom: 50px; margin-left: 27px; margin-right: 4px; margin-top: 5px; padding: 1px; min-height: 10px; min-width: 50px; border: none; } .label-secondary { font-size: 8px; color: #888; } .internet-clean-box { background: transparent; border: none; box-shadow: none; padding: 0; } .stats-label { font-size: 10px; font-weight: bold; color: #56b6c2; letter-spacing: 1px; } .stats-label2 { font-size: 10px; font-weight: bold; color: #56b6c2; letter-spacing: 1px; } .stats-label3 { font-size: 10px; margin-left: 87px; font-weight: bold; color: #56b6c2; letter-spacing: 1px; } .stats-box { border-radius: 12px; min-height: 10px; min-width: 100px; } // ── RAM & Bars ─────────────────────────────────────────────────────────── .ascii-bar-frame { border: 1px solid #61afef; border-radius: 4px; margin: 4px; padding: 4px; min-width: 220px; font-size: 10px; } .ram-bar { font-size: 20px; font-family: monospace; color: #9cdef2; letter-spacing: 4px; padding: 2px 2px; } .ram-bar2 { color: #9cdef2; letter-spacing: 1.5px; padding: 1px 1px; font-size: 10px; } .ram-bar4 { color: #9cdef2; letter-spacing: 1.5px; padding: 1px 1px; font-size: 10px; } // ── Date & Time ────────────────────────────────────────────────────────── .day-time-container { padding: 1em; border-radius: 12px; border: 2px solid #88c0d0; } .weekday-container { border: 2px solid #3b4252; border-radius: 12px; padding: 16px; min-width: 200px; } .weekday-text { font-size: 34px; font-weight: bold; color: #fab387; } .time-text { font-size: 18px; color: #a3be8c; margin-top: 6px; } // ── Welcome ────────────────────────────────────────────────────────────── .welcome-box { background-color: rgba(25,25,25,0.6); border: 2px solid #88c0d0; border-radius: 8px; padding: 12px 20px; margin-top: 10px; } .welcome-text { font-size: 18px; font-weight: bold; color: #9cdef2; } .welcome-sub { font-size: 12px; color: #eceff4; margin-top: 4px; } .welcome-label { color: #56b6c2; font-size: 12px; font-weight: bold; } .welcome-value { color: #9cdef2; font-size: 12px; font-weight: bold; letter-spacing: 1px; } // ── Shades & Animations ────────────────────────────────────────────────── .shade2 { background: linear-gradient(to right, black 3px, rgba(19,19,19,0) 15%); } .shade { background-color: #9cdef2; } $window_visible: true; .animated { transition: opacity 0.4s ease, transform 0.4s ease; opacity: 1; } @if not $window_visible { .animated { opacity: 0; pointer-events: none; } } // ── Fans ───────────────────────────────────────────────────────────────── .fan-ascii { font-family: "JetBrainsMono Nerd Font", monospace; font-size: 15px; color: #88c0d0; letter-spacing: 3px; transition: color 0.3s ease, transform 0.3s ease; } .fan-frame, .fan-frame2 { padding: 0; margin: 2px; font-size: 10px; min-height: 31.2px; margin-bottom: 15px; margin-top: 15px; margin-left: 5px; } .fan-rpm { font-size: 10px; color: #9cdef2; } .fan-rpm2 { font-size: 11px; min-width: 30px; color: #9cdef2; padding: 0; } // ── Workspaces ─────────────────────────────────────────────────────────── .workspace-ascii { font-family: monospace; font-size: 14px; color: #61afef; } .workspace-ascii-highlight { font-family: monospace; font-size: 20px; font-weight: bold; color: #9cdef2; } // ── Terminal & Reactor ─────────────────────────────────────────────────── .terminal-feed { font-family: monospace; font-size: 12px; color: #08c0d0; padding-left: 8px; } .reactor-ascii { font-family: monospace; font-size: 4px; color: #9cdef2; font-weight: bold; min-height: 140px; min-width: 280px; } .ascii-core-status { font-family: monospace; font-size: 10px; border-radius: 0px; color: #9cdef2; } .ascii-core-status2 { font-family: monospace; font-size: 14px; padding: 4px; border-radius: 0px; color: #9cdef2; } .log-line { font-family: monospace; font-size: 10px; color: #9cdef2; padding: 4px; } .ascii-decor1 { font-family: monospace; font-size: 12px; color: #9cdef2; letter-spacing: 1px; padding: 6px; margin: 4px; font-size: 10px; } // ── Info Panels ────────────────────────────────────────────────────────── .data-row { background-color: transparent; padding: 2px; } .info-left { background-color: #1e1e1e; min-width: 1px; border: 2px solid #61afef; border-radius: 1px; } .info-left2 { min-height: 1px; } .info-right-box { background-color:#fab387; min-height: 31.2px; margin-bottom: 15px; min-width: 26px; } .info-right-text { font-size: 13px; font-weight: bold; color: #1e1e1e; } // ── Power ──────────────────────────────────────────────────────────────── .power-label { font-size: 12px; color: #fab387; font-family: monospace; } .power-label2 { font-size: 12px; color: #c4ecf0; font-family: monospace; } .power-label3 { font-size: 12px; color: #61afef; font-family: monospace; } .power-value { font-size: 10px; color: #9cdef2; font-family: monospace; margin: 5px; } .power-header { font-size: 10px; font-weight: bold; color:#56b6c2; padding: 4px 8px; min-width: 150px; } .power-header-alt { font-size: 6px; font-weight: bold; color: #61afef; padding: 4px 8px; letter-spacing: 1px; min-width: 15px; } ''; home.file.".config/eww/eww-state.yml".text = '' window_visible: true ''; }