diff --git a/hypr/hyprpaper.conf b/hypr/hyprpaper.conf index 9b1235c..2671fde 100644 --- a/hypr/hyprpaper.conf +++ b/hypr/hyprpaper.conf @@ -1,4 +1,4 @@ # preload = ~/Pictures/red_moon/red_moon-latte.jpg -preload = ~/Pictures/wallpapers/rem-latte.jpg +preload = ~/Pictures/wallpapers/rem.jpg # wallpaper = ,~/Pictures/red_moon/red_moon-latte.jpg -wallpaper = ,~/Pictures/wallpapers/rem-latte.jpg +wallpaper = ,~/Pictures/wallpapers/rem.jpg diff --git a/waybar/config.jsonc b/waybar/config.jsonc index f615569..55b8b2d 100644 --- a/waybar/config.jsonc +++ b/waybar/config.jsonc @@ -2,13 +2,11 @@ { "layer": "top", "position": "top", - "height": 50, + "height": 36, "modules-left": [ "hyprland/workspaces" ], "modules-center": [ - "tray", - "clock" ], "modules-right": [ // "custom/bluetooth-audio", @@ -16,11 +14,17 @@ "custom/mem", "custom/cpu", "custom/gpu", + "custom/disk-root", + "custom/disk-gdrive", + "custom/disk-data", + "custom/disk-games", // "network", - "custom/gpu-screen-recorder", - "custom/gamemode", "custom/audio-output", "wireplumber", + "tray", + "custom/gpu-screen-recorder", + "custom/gamemode", + "clock" ], "hyprland/workspaces": { "format": "{icon}", @@ -70,7 +74,7 @@ "return-type": "json", "exec": "~/.config/waybar/scripts/bluetooth_audio.sh", "interval": 3, - "on-click": "~/.config/waybar/scripts/bluetooth_audio.sh disconnect" + "on-click": "~/.config/waybar/scripts/bluetooth_audio.sh disconnect & disown" }, "pulseaudio": { @@ -85,7 +89,7 @@ "car": "", "default": ["", ""] }, - "on-click": "pavucontrol" + "on-click": "pavucontrol & disown" }, "tray": { "icon-size": 18, @@ -94,7 +98,7 @@ "custom/power": { "format": "", "tooltip": false, - "on-click": "~/.config/hypr/scripts/powermenu.sh" + "on-click": "~/.config/hypr/scripts/powermenu.sh & disown" }, "custom/tlp": { "format": "{}", @@ -119,42 +123,44 @@ "return-type": "json", "exec": "~/.config/waybar/scripts/pixelbuds_pro_control.sh", "interval": 5, - "on-click": "~/.config/waybar/scripts/pixelbuds_pro_control.sh connect", - "on-click-right": "~/.config/waybar/scripts/pixelbuds_pro_control.sh cycle_anc" + "on-click": "~/.config/waybar/scripts/pixelbuds_pro_control.sh connect & disown", + "on-click-right": "~/.config/waybar/scripts/pixelbuds_pro_control.sh cycle_anc & disown" }, "custom/audio-output": { "format": "{}", "return-type": "json", "exec": "/home/narl/.config/waybar/scripts/audio.sh show", - "on-click": "/home/narl/.config/waybar/scripts/audio.sh cycle", + "on-click": "/home/narl/.config/waybar/scripts/audio.sh cycle & disown", "interval": 1 }, "custom/gamemode": { "format": "{}", "return-type": "json", "exec": "~/.config/waybar/scripts/gamemode_status.sh", - "on-click": "~/.config/hypr/scripts/gamemode.sh", + "on-click": "~/.config/hypr/scripts/gamemode.sh & disown", "interval": 1 }, "custom/gpu-screen-recorder": { "format": "{}", "return-type": "json", "exec": "~/.config/waybar/scripts/gpu-screen-recorder-status.sh", - "on-click-right": "~/.config/hypr/scripts/replay-ctrl.sh save", - "on-click-middle": "nautilus ~/Videos/replay", - "on-click": "~/.config/waybar/scripts/toggle-replay.sh", + "on-click-right": "~/.config/hypr/scripts/replay-ctrl.sh save & disown", + "on-click-middle": "nautilus ~/Videos/replay & disown", + "on-click": "~/.config/waybar/scripts/toggle-replay.sh & disown", "interval": 1 }, "custom/gpu": { "format": "{}", "return-type": "json", "exec": "~/.config/waybar/scripts/gpu_info.sh", + "on-click": "lact gui & disown", "interval": 3 }, "custom/cpu": { "format": "{}", "return-type": "json", "exec": "~/.config/waybar/scripts/cpu_info.sh", + "on-click": "zenmonitor & disown", "interval": 3 }, "custom/mem": { @@ -162,5 +168,35 @@ "return-type": "json", "exec": "~/.config/waybar/scripts/memory.sh", "interval": 3 + }, + "custom/btrfs": { + "format": "{}", + "exec": "~/.config/waybar/scripts/btrfs.sh", + "return-type": "json", + "interval": 30 + }, + "custom/disk-root": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/scripts/disk_info.sh /", + "interval": 30 + }, + "custom/disk-gdrive": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/scripts/disk_info.sh ~/gdrive", + "interval": 30 + }, + "custom/disk-data": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/scripts/disk_info.sh ~/data", + "interval": 30 + }, + "custom/disk-games": { + "format": "{}", + "return-type": "json", + "exec": "~/.config/waybar/scripts/disk_info.sh ~/games", + "interval": 30 } } diff --git a/waybar/scripts/btrfs.sh b/waybar/scripts/btrfs.sh new file mode 100755 index 0000000..7e88fd5 --- /dev/null +++ b/waybar/scripts/btrfs.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Get BTRFS filesystems +btrfs_filesystems=$(df -hT | grep btrfs) + +# Initialize variables +total_used=0 +total_size=0 + +# Process each BTRFS filesystem +while read -r line; do + size_str=$(echo "$line" | awk '{print $3}') + used_str=$(echo "$line" | awk '{print $4}') + + size=$(echo "$size_str" | sed 's/[GT]//') + used=$(echo "$used_str" | sed 's/[GT]//') + + if [[ $size_str == *T ]]; then + size=$(awk -v s="$size" 'BEGIN {print s*1024}') + fi + if [[ $used_str == *T ]]; then + used=$(awk -v u="$used" 'BEGIN {print u*1024}') + fi + + total_size=$(awk -v total="$total_size" -v size="$size" 'BEGIN {print total+size}') + total_used=$(awk -v total="$total_used" -v used="$used" 'BEGIN {print total+used}') + +done <<< "$btrfs_filesystems" + +# Calculate usage percentage +usage_percentage=$(awk -v used="$total_used" -v total="$total_size" 'BEGIN {printf "%.0f", (used/total)*100}') + +# Set class based on usage +if [ "$usage_percentage" -gt 95 ]; then + class="max" +elif [ "$usage_percentage" -gt 80 ]; then + class="high" +else + class="normal" +fi + +text="$(printf "%.0f" $total_used)G / $(printf "%.0f" $total_size)G" + +# Manually construct the JSON output +echo "{\"text\": \"$text\", \"tooltip\": \"\", \"class\": \"$class\"}" diff --git a/waybar/scripts/cpu_info.sh b/waybar/scripts/cpu_info.sh index e8a35b4..03ed2bc 100755 --- a/waybar/scripts/cpu_info.sh +++ b/waybar/scripts/cpu_info.sh @@ -5,7 +5,7 @@ TEXT="$(printf "%.1f" $(echo "$USAGE"))% $(printf "%.1f" $(echo "scale=2; $TEMP" CPU=$(lscpu | grep 'Model name' | awk -F': ' '{print $2}' | sed 's/^[ \t]*//') # TOOLTIP=$(ps -eo %cpu,comm --sort=-%cpu | head -n 6 | sed '1d' | awk '{output = output sprintf("%.1f%%\t%s\\n", $1, $2)} END {printf "%s", output}') # TOOLTIP=$(ps -eo %cpu,comm --sort=-%cpu | head -n 6 | sed '1d' | awk -v ncores=$(nproc) '{printf "%.1f%%\t%s\n", $1/ncores, $2}') -TOOLTIP=$(ps -eo %cpu,comm --sort=-%cpu | head -n 6 | sed '1d' | awk -v ncores=$(nproc) '{printf "%.1f%%\t%s\\n", $1/ncores, $2}') +# TOOLTIP=$(ps -eo %cpu,comm --sort=-%cpu | head -n 6 | sed '1d' | awk -v ncores=$(nproc) '{printf "%.1f%%\t%s\\n", $1/ncores, $2}') # TOOLTIP=$(top -b -n 1 | sed '1,7d' | head -n 5 | awk '{output = output sprintf("%.1f%%\t%s\\n", $9, $12)} END {printf "%s", output}') CLASS="" @@ -18,4 +18,5 @@ else CLASS="normal" fi -echo "{\"text\":\"CPU: $TEXT\", \"tooltip\": \"$TOOLTIP\", \"class\":\"$CLASS\"}" +# echo "{\"text\":\"CPU: $TEXT\", \"tooltip\": \"$TOOLTIP\", \"class\":\"$CLASS\"}" +echo "{\"text\":\"CPU: $TEXT\", \"class\":\"$CLASS\"}" diff --git a/waybar/scripts/disk_info.sh b/waybar/scripts/disk_info.sh new file mode 100755 index 0000000..855b584 --- /dev/null +++ b/waybar/scripts/disk_info.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +if [ -z "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +MOUNTPOINT=$1 + +# Get disk usage info +USED=$(df -h --output=used "$MOUNTPOINT" | sed '1d' | awk '{print $1}') +TOTAL=$(df -h --output=size "$MOUNTPOINT" | sed '1d' | awk '{print $1}') +PERCENTAGE=$(df --output=pcent "$MOUNTPOINT" | sed '1d' | tr -d '%' | awk '{print $1}') + +# Set class based on usage +CLASS="normal" +if [ "$PERCENTAGE" -gt 95 ]; then + CLASS="max" +elif [ "$PERCENTAGE" -gt 80 ]; then + CLASS="high" +fi + +# Create tooltip with more details +TOOLTIP=$(df -h "$MOUNTPOINT" | sed '1d' | awk '{printf "Used: %s\nTotal: %s\nFree: %s", $3, $2, $4}') + +# Output JSON for Waybar using jq +jq -n -c \ + --arg text "$1 $USED/$TOTAL" \ + --arg tooltip "$TOOLTIP" \ + --arg class "$CLASS" \ + '{"text": $text, "tooltip": $tooltip, "class": $class}' diff --git a/waybar/scripts/memory.sh b/waybar/scripts/memory.sh index 1d67d2f..fd9ffbf 100755 --- a/waybar/scripts/memory.sh +++ b/waybar/scripts/memory.sh @@ -1,6 +1,6 @@ #!/bin/sh -TOOLTIP=$(ps -eo rss,comm --sort=-rss | head -n 6 | sed '1d' | awk '{output = output sprintf("%.2f GB\t%s\\n", $1/1024/1024, $2)} END {printf "%s", output}') +# TOOLTIP=$(ps -eo rss,comm --sort=-rss | head -n 6 | sed '1d' | awk '{output = output sprintf("%.2f GB\t%s\\n", $1/1024/1024, $2)} END {printf "%s", output}') TOTAL=$(awk '/MemTotal/ {printf "%.2f\n", $2/1024/1024}' /proc/meminfo) USED=$(awk '/MemTotal/ {total=$2} /MemAvailable/ {available=$2} END {printf "%.2f\n", (total-available)/1024/1024}' /proc/meminfo) RATIO=$(echo "$USED/ $TOTAL" | bc -l) @@ -15,4 +15,5 @@ else CLASS="normal" fi -printf '{"text": "%s/%sGB", "tooltip": "%s", "class": "%s"}' "$USED" "$TOTAL" "$TOOLTIP" "$CLASS" +# printf '{"text": "%s/%sGB", "tooltip": "%s", "class": "%s"}' "$USED" "$TOTAL" "$TOOLTIP" "$CLASS" +printf '{"text": "%s/%sGB", "class": "%s"}' "$USED" "$TOTAL" "$CLASS" diff --git a/waybar/style.css b/waybar/style.css index f338d7f..53f51bb 100644 --- a/waybar/style.css +++ b/waybar/style.css @@ -21,9 +21,6 @@ window#waybar.hidden { opacity: 0.5; } -#workspaces { -} - #workspaces button { all: initial; /* Remove GTK theme values (waybar #1351) */ @@ -32,8 +29,8 @@ window#waybar.hidden { box-shadow: inset 0 -3px transparent; /* Use box-shadow instead of border so the text isn't offset */ padding: 6px 18px; - margin: 6px 3px; - border-radius: 4px; + margin: 0px 3px; + border-radius: 10px; background-color: @base; color: @subtext0; } @@ -68,12 +65,17 @@ window#waybar.hidden { #network, #clock, #tray, +#custom-disk-root, +#custom-disk-gdrive, +#custom-disk-games, +#custom-disk-data, #custom-pixelbuds_pro, #custom-bluetooth-audio, #custom-audio-output, +#custom-btrfs, #custom-gpu-screen-recorder { - border-radius: 4px; - margin: 6px 3px; + border-radius: 10px; + margin: 0px 3px; padding: 6px 12px; background-color: @base; color: @text; @@ -134,8 +136,8 @@ window#waybar.hidden { #custom-gpu-screen-recorder.recording, #custom-gamemode.active { - color: @blue; - border-bottom: 3px solid @blue; + color: @maroon; + border-bottom: 3px solid @maroon; } #custom-tlp { @@ -178,23 +180,39 @@ window#waybar.hidden { #custom-gpu.max, #custom-cpu.max, -#custom-mem.max { +#custom-mem.max, +#custom-btrfs.max, +#custom-disk-root.max, +#custom-disk-gdrive.max, +#custom-disk-games.max, +#custom-disk-data.max { color: @maroon; /* border-bottom: 3px solid @maroon; */ } #custom-gpu.high, #custom-gpu.high, -#custom-mem.high { +#custom-mem.high, +#custom-btrfs.high, +#custom-disk-root.high, +#custom-disk-gdrive.high, +#custom-disk-games.high, +#custom-disk-data.high { color: @yellow; /* border-bottom: 3px solid @yellow; */ } #memory, -#cpu, +#cpu, +#disk, #custom-gpu.normal, #custom-cpu.normal, -#custom-mem.normal { +#custom-mem.normal, +#custom-btrfs.normal, +#custom-disk-root.normal, +#custom-disk-gdrive.normal, +#custom-disk-games.normal, +#custom-disk-data.normal { color: @blue; /* border-bottom: 3px solid @mauve; */ } @@ -226,7 +244,7 @@ window#waybar.hidden { } tooltip { - border-radius: 8px; + border-radius: 10px; padding: 15px; background-color: @base; }