feat: made gpu temperature info work for intel gpu

This commit is contained in:
Krzysztof Rudnicki 2024-11-15 13:47:40 +01:00
parent 7c167fb30b
commit 50ed6f1c38
4 changed files with 77 additions and 36 deletions

View File

@ -1,40 +1,15 @@
#!/bin/bash #!/bin/bash
# CPU Temperature # CPU Metrics
cpu_temp=$(sensors | awk '/^Tctl:/ {print $2}' | tr -d '+°C') cpu_metrics=$(bash /home/kuchy/i3-configuration/i3blocks/cpu_monitor.sh)
if [ -z "$cpu_temp" ]; then cpu_temp=$(echo "$cpu_metrics" | awk -F', ' '{print $1}' | awk -F': ' '{print $2}')
cpu_temp="N/A" cpu_load=$(echo "$cpu_metrics" | awk -F', ' '{print $2}' | awk -F': ' '{print $2}')
fi cpu_color=$(echo "$cpu_metrics" | awk -F', ' '{print $3}' | awk -F': ' '{print $2}')
# CPU Load (1-minute average) # GPU Metrics
cpu_load=$(awk '{print $1}' /proc/loadavg) gpu_metrics=$(bash /home/kuchy/i3-configuration/i3blocks/gpu_monitor.sh)
if [ -z "$cpu_load" ]; then gpu_temp=$(echo "$gpu_metrics" | awk -F', ' '{print $1}' | awk -F': ' '{print $2}')
cpu_load="N/A" gpu_load=$(echo "$gpu_metrics" | awk -F', ' '{print $2}' | awk -F': ' '{print $2}')
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
# Colors for GPU Load # Colors for GPU Load
gpu_color="#FFFFFF" # Default color gpu_color="#FFFFFF" # Default color
@ -49,7 +24,7 @@ if [[ "$gpu_load" != "N/A" ]]; then
fi fi
# Output # Output
echo -e "<span color=\"$cpu_color\"> CPU: ${cpu_temp}°C, Load: ${cpu_load}</span> | <span color=\"$gpu_color\"> GPU: ${gpu_temp}°C, Load: ${gpu_load}%</span>" echo -e "<span color=\"$cpu_color\"> CPU: ${cpu_temp}, Load: ${cpu_load}</span> | <span color=\"$gpu_color\"> GPU: ${gpu_temp}, Load: ${gpu_load}</span>"
echo echo
echo "#FFFFFF" # Default color for fallback (ignored if markup is enabled) echo "#FFFFFF" # Default color for fallback (ignored if markup is enabled)

25
i3blocks/cpu_monitor.sh Executable file
View File

@ -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"

40
i3blocks/gpu_monitor.sh Executable file
View File

@ -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

View File

@ -1,5 +1,6 @@
#!/bin/sh #!/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 i3blocks ~/.config/
cp -r i3 ~/.config/ cp -r i3 ~/.config/
i3-msg reload i3-msg reload