在Ubuntu系统的i3窗口管理器状态栏中显示GPU温度的实现方法咨询
在Ubuntu系统的i3窗口管理器状态栏中显示GPU温度的实现方法
嘿,我来帮你搞定在i3状态栏显示GPU温度的问题!根据Ubuntu环境下不同的GPU类型(NVIDIA/AMD/Intel核显),我整理了几种实用的方法,你可以按需选择:
方法1:针对NVIDIA显卡(最直接的方案)
如果你的GPU是NVIDIA的,用nvidia-smi工具就能轻松获取温度,步骤如下:
- 先确认
nvidia-smi可用:打开终端执行nvidia-smi,如果提示命令不存在,就安装NVIDIA驱动:
安装完成后重启一下系统,sudo apt update && sudo apt install nvidia-driver-$(ubuntu-drivers devices | grep recommended | awk '{print $3}')nvidia-smi就能正常使用了。 - 编辑i3status的配置文件,路径是
~/.config/i3status/config(如果没有这个文件,先从默认配置复制一份:cp /etc/i3status/config ~/.config/i3status/config) - 在配置文件的
order区域里添加一个新条目,比如"exec nvidia_gpu_temp",然后在配置文件下方添加这个模块的定义:order += "exec nvidia_gpu_temp" ... exec nvidia_gpu_temp { command = "echo 'GPU: '$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits)'°C'" interval = 10 # 每10秒更新一次温度数据 label = "" } - 保存配置后,按下
Mod+Shift+C重新加载i3的配置,你就能在状态栏看到GPU温度了。
方法2:针对AMD显卡/Intel核显(用lm-sensors工具)
对于AMD显卡或者Intel核显,lm-sensors是更通用的硬件传感器检测工具:
- 安装lm-sensors:
sudo apt update && sudo apt install lm-sensors - 运行传感器检测命令,一路按回车确认默认选项即可:
sensors-detect - 现在执行
sensors命令,找到GPU对应的温度条目,比如AMD卡可能会显示amdgpu-pci-XXXX开头的模块,里面的temp1就是GPU温度;Intel核显的话可能在coretemp-XXXX模块里。 - 为了更准确获取数值,你可以用
sensors -u查看具体的传感器路径,比如类似/sys/class/hwmon/hwmon2/temp1_input(这个文件里的数值是毫摄氏度,需要除以1000得到实际温度)。 - 编辑i3status配置文件,添加自定义exec模块:
注意:把order += "exec amd_intel_gpu_temp" ... exec amd_intel_gpu_temp { command = "echo 'GPU: '$(cat /sys/class/hwmon/hwmon2/temp1_input | awk '{print $1/1000}')'°C'" interval = 10 label = "" }hwmon2替换成你自己系统中对应的hwmon编号,确保路径正确。
方法3:用i3blocks实现更灵活的自定义(适合多GPU类型场景)
如果你想要更灵活的状态栏自定义,i3blocks是个不错的选择:
- 安装i3blocks:
sudo apt install i3blocks - 编辑i3的主配置文件
~/.config/i3/config,找到status_command那一行,把它改成:status_command i3blocks - 创建i3blocks的配置文件
~/.config/i3blocks/config,添加GPU温度的配置块:
这个脚本会自动检测系统中的GPU类型,然后输出对应的温度,你可以根据自己的实际情况调整grep的匹配关键词。[gpu_temp] command=if command -v nvidia-smi >/dev/null 2>&1; then echo "GPU: $(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits)°C"; else echo "GPU: $(sensors | grep -A 1 'amdgpu\|coretemp' | grep 'temp1' | awk '{print $2}')"; fi interval=10 label= - 按下
Mod+Shift+C重新加载i3配置,状态栏就会显示GPU温度了。
备注:内容来源于stack exchange,提问作者banderlog013
相关产品推荐
相关产品推荐

