diff --git a/i3blocks/cpu_gpu_monitor.sh b/i3blocks/cpu_gpu_monitor.sh index b543e08..9cc1c5c 100755 --- a/i3blocks/cpu_gpu_monitor.sh +++ b/i3blocks/cpu_gpu_monitor.sh @@ -1,40 +1,15 @@ #!/bin/bash -# CPU Temperature -cpu_temp=$(sensors | awk '/^Tctl:/ {print $2}' | tr -d '+°C') -if [ -z "$cpu_temp" ]; then - cpu_temp="N/A" -fi +# CPU Metrics +cpu_metrics=$(bash /home/kuchy/i3-configuration/i3blocks/cpu_monitor.sh) +cpu_temp=$(echo "$cpu_metrics" | awk -F', ' '{print $1}' | awk -F': ' '{print $2}') +cpu_load=$(echo "$cpu_metrics" | awk -F', ' '{print $2}' | awk -F': ' '{print $2}') +cpu_color=$(echo "$cpu_metrics" | awk -F', ' '{print $3}' | awk -F': ' '{print $2}') -# CPU Load (1-minute average) -cpu_load=$(awk '{print $1}' /proc/loadavg) -if [ -z "$cpu_load" ]; then - cpu_load="N/A" -fi - -# GPU Temperature -gpu_temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits 2>/dev/null) -if [ -z "$gpu_temp" ]; then - gpu_temp="N/A" -fi - -# GPU Load -gpu_load=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits 2>/dev/null) -if [ -z "$gpu_load" ]; then - gpu_load="N/A" -fi - -# Colors for CPU Load -cpu_color="#FFFFFF" # Default color -if [[ "$cpu_load" != "N/A" ]]; then - if (( $(echo "$cpu_load < 1.0" | bc -l) )); then - cpu_color="#50FA7B" # Green - elif (( $(echo "$cpu_load < 2.0" | bc -l) )); then - cpu_color="#F1FA8C" # Yellow - else - cpu_color="#FF5555" # Red - fi -fi +# GPU Metrics +gpu_metrics=$(bash /home/kuchy/i3-configuration/i3blocks/gpu_monitor.sh) +gpu_temp=$(echo "$gpu_metrics" | awk -F', ' '{print $1}' | awk -F': ' '{print $2}') +gpu_load=$(echo "$gpu_metrics" | awk -F', ' '{print $2}' | awk -F': ' '{print $2}') # Colors for GPU Load gpu_color="#FFFFFF" # Default color @@ -49,7 +24,7 @@ if [[ "$gpu_load" != "N/A" ]]; then fi # Output -echo -e " CPU: ${cpu_temp}°C, Load: ${cpu_load} |  GPU: ${gpu_temp}°C, Load: ${gpu_load}%" +echo -e " CPU: ${cpu_temp}, Load: ${cpu_load} |  GPU: ${gpu_temp}, Load: ${gpu_load}" echo echo "#FFFFFF" # Default color for fallback (ignored if markup is enabled) diff --git a/i3blocks/cpu_monitor.sh b/i3blocks/cpu_monitor.sh new file mode 100755 index 0000000..0232dfa --- /dev/null +++ b/i3blocks/cpu_monitor.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# CPU Temperature +cpu_temp=$(sensors | awk '/^Tctl:/ {print $2}' | tr -d '+°C') +if [ -z "$cpu_temp" ]; then + cpu_temp=$(sensors | awk '/^Package id 0:/ {print $3}' | tr -d '+°C') +fi +if [ -z "$cpu_temp" ]; then + cpu_temp="N/A" +fi + +# CPU Load (1-minute average) +cpu_load=$(awk '{print $1}' /proc/loadavg) +if [ -z "$cpu_load" ]; then + cpu_load="N/A" +fi + +# Colors for CPU Load +cpu_color="#FFFFFF" # Default color +if [[ "$cpu_load" != "N/A" ]]; then + # Add logic to change color based on load + : +fi + +echo "CPU Temp: $cpu_temp°C, CPU Load: $cpu_load, Color: $cpu_color" \ No newline at end of file diff --git a/i3blocks/gpu_monitor.sh b/i3blocks/gpu_monitor.sh new file mode 100755 index 0000000..f72c936 --- /dev/null +++ b/i3blocks/gpu_monitor.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Function to get NVIDIA GPU metrics +get_nvidia_metrics() { + gpu_temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits 2>/dev/null) + if [ -z "$gpu_temp" ]; then + gpu_temp="N/A" + fi + + gpu_load=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits 2>/dev/null) + if [ -z "$gpu_load" ]; then + gpu_load="N/A" + fi + + echo "GPU Temp: $gpu_temp°C, GPU Load: $gpu_load%" +} + +# Function to get Intel GPU metrics +get_intel_metrics() { + gpu_load=$(cat /sys/class/drm/card0/device/gpu_busy_percent 2>/dev/null) + if [ -z "$gpu_load" ]; then + gpu_load="N/A" + fi + + gpu_temp=$(sensors | awk '/^temp1:/ {print $2; exit}' | tr -d '+°C') + if [ -z "$gpu_temp" ]; then + gpu_temp="N/A" + fi + + echo "GPU Temp: $gpu_temp°C, GPU Load: $gpu_load%" +} + +# Detect GPU type and get metrics +if lspci | grep -i nvidia > /dev/null; then + get_nvidia_metrics +elif lspci | grep -i vga | grep -i intel > /dev/null; then + get_intel_metrics +else + echo "No supported GPU found." +fi \ No newline at end of file diff --git a/install.sh b/install.sh index 7e918f6..1ab80be 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,6 @@ #!/bin/sh -sudo pacman -S --needed ttf-dejavu noto-fonts ttf-font-awesome bc +yes | sudo pacman -S --needed ttf-dejavu noto-fonts ttf-font-awesome bc intel-gpu-tools jq +sudo setcap cap_perfmon+ep /usr/bin/intel_gpu_top cp -r i3blocks ~/.config/ cp -r i3 ~/.config/ i3-msg reload