友之介的つぶやきブログ

PCやらプログラムやらぶつぶつ言ってます

ジェネリックモニターの設定

f:id:tomonosuke01:20150201115352p:plain

Xfceジェネリックモニターを使うと標準出力したものが簡単にパネルに出力さらるようなので、下記サイトを参考に色々試してみました。

http://goodies.xfce.org/projects/panel-plugins/xfce4-genmon-plugin



日本語の解説さいとがあまりないので、少し解説を書くと。

<txt></txt>
実際にパネルに表示される。テキストです。
コマンド使って表示したい、テキストを作り出力する感じですね。

  • <img></img>

パネルに表示される、画像です。
アイコン等を主に表示します。
グラフィックで変化させたい場合(電源残量、無線の状況)こちらを利用するみたいです。

  • <tool></tool>

ツールチップです。

  • <bar></bar>

パーセント用のバーです。
0〜100で指定すると、小さな縦のバーが表示されます。

  • <click></click>

クリックしたとき実行する、コマンドを描きます。


個人的に使ってるのをサンプル代わりに載せておきます。

CPU情報

クロック、使用率、温度を取得しています。

クロックはコアの中で最大のものを使用してます。

#!/bin/dash
echo "<img>/usr/share/icons/hicolor/22x22/devices/sensors-applet-cpu.png</img>"
cpu_feq=$(cat /proc/cpuinfo | grep "cpu MHz" | sed 's/.*: //' | awk '{if(feq < $1) feq = $1} END{print feq}')
cpu_user=$(mpstat 1 1 | grep 平均値: | awk '{ for(i=3;i<NF-1;i++){x+=$i}print x }' | cut -f1 -d".")
cpu_temp=$(sensors | grep "Physical id 0:" | sed 's/\ \ */ /g' | cut -f4 -d" " | sed 's/^+//' | cut -f1 -d".")
printf "<txt>%4dMHz %2s%% %2s°C</txt>\n" $cpu_feq $cpu_user $cpu_temp
echo "<tool>CPU</tool>"
 

 

GPU情報

クロック、メモリ転送クロック、温度を取得。

nvidianvidia-settingsコマンドで情報取得

#!/bin/dash
echo "<img>/usr/share/icons/hicolor/22x22/devices/sensors-applet-gpu.png</img>"
gpu_temp=$(nvidia-settings -q gpucoretemp -t)

nvidia-settings -q GPUCurrentClockFreqsString  -t | sed "s/, */,/g" | awk -F, -v gpu_temp=$gpu_temp '
BEGIN {
    printf("<txt>")
}
{
    for (i = 1; i < NF; i++) {
        split($i, data, "=")
        if (data[1] == "nvclock") {
            printf(" %4dMHz", data[2])
        } else if (data[1] == "memTransferRate") {
            printf(" %4dMHz", data[2])
        }
    }
}
END {
    printf(" %2d°C</txt>\n", gpu_temp)
}
'

echo "<tool>GPU</tool>"

 

メモリ情報

使用率、温度を取得

温度の方はマザーボードにセンサー用のポートがあったのでそちらを使用してます。

#!/bin/dash
echo "<img>/usr/share/icons/hicolor/22x22/devices/sensors-applet-memory.png</img>"
mem_total=$(free | grep Mem: | sed 's/\ \ */ /g'  | cut -f2 -d" ")
mem_used=$(free | grep Mem: | sed 's/\ \ */ /g'  | cut -f3 -d" ")
mem_used_r=$(expr $mem_used \* 100 \/ $mem_total)
mem_temp=$(sensors | grep "PECI Agent 0:" | sed 's/\ \ */ /g' | cut -f4 -d" " | sed 's/^+//' | cut -f1 -d".")
printf "<txt>%2s%% %2s°C</txt>\n" $mem_used_r $mem_temp
echo "<tool>memory</tool>"

 

ファン情報

sensorsコマンドで回転数を取得するだけの簡単なお仕事です。

#!/bin/dash
echo "<img>/usr/share/icons/hicolor/22x22/devices/sensors-applet-fan.png</img>"
sensors | grep "fan[0-9]:" | sed 's/\ \ */ /g' | awk '
BEGIN { printf("<txt>") }
($2 > 0) { printf(" %4d", $2) }
END { print "</txt>" }
'
echo "<tool>FAN</tool>"