Ubuntu 12.10でConkyを設定する

※2013年10月3日、ビデオカードの温度を表示する(RADEON + オープンソースドライバー編)を更新。



Conkyはデスクトップに貼り付くシステムモニター。

インストール

端末で以下のように行う。

sudo apt-get install conky 

CPUの温度を表示したい場合はlm-sensorsもインストールする。

HDDの温度を表示したい場合はhddtempもインストールする。

sudo apt-get install hddtemp 

インストール中にデーモンについて聞かれるので、Tabキーを押してはいを選び、Enterキーを押す。

自動起動

Conkyはログイン時に自動起動しないので、自力で自動起動するように設定する。
端末で以下を実行。

bash -c "echo '[Desktop Entry]'$'\n''Type=Application'$'\n''Exec=conky -p 15'$'\n''Hidden=false'$'\n''NoDisplay=false'$'\n''X-GNOME-Autostart-enabled=true'$'\n''Name=Conky' > ~/.config/autostart/conky.desktop" 

ConkyがCompizよりも先に起動すると表示が変になるので、上記の設定ではログイン後15秒経ってから起動するようになっている。

設定

設定は~/.conkyrcという隠しファイルを自力で作成して行う。

gedit ~/.conkyrc

公式サイトにサンプルや使用できる変数の一覧などがあるので、それらを参考にする。

Conkyに表示される情報は、.conkyrcのTEXTと書かれた行より下に設定を記述するようになっている。

TEXTの書式について
  • 変数の前には$を付ける。例えばCPU使用率を表示したい場合は$cpu%と書けば○○%と表示される。
  • 変数にオプションを付けたい場合は{}で括る。例えば${color blue}と書くと以降の文字色が青になる。
  • スペースや改行はそのまま表示に反映される。
  • 色の指定は、色の名前か16進数で行う。

文字の色を変更する
${color lightgrey}Temp
${color}${hr}
  • ${color}とだけ記述すると以降の文字の色がdefault_colorになる。文字だけでなく罫線にも有効。使用できる色は/etc/X11/rgb.txtか、こちらのページを参考にする。

文字の表示を変更する
${font Ubuntu:bold:size=20}Networking${font}
  • フォント名を記述すると、その部分のフォントが変更される。使用できるフォント名はfc-listコマンドで調べることが出来る。
  • 文字の大きさは:size=数値で変更できる。
  • 太字にしたい場合は:bold、斜体にしたい場合は:italicと記述する。
  • ${font}とだけ記述すると標準設定に戻る。

Conkyの背景に画像を表示する
${image ~/.conky/background.png -p 0,0 -s 1920x1080}
  • 一つ目の引数は背景にしたい画像のパス。
  • その画像を表示する位置は、-p 数値,数値で指定可能。たぶん省略可能。
  • その画像のサイズは-s 数値x数値で指定可能。たぶん省略可能。

CPUの使用率を表示する
CPU1: ${cpu cpu1}% ${alignr}${cpubar cpu1 5,250}
CPU2: ${cpu cpu2}% ${alignr}${cpubar cpu2 5,250}
${color blue}${cpugraph cpu1 10,160 0000ff 00ff00}${alignr}${color blue}${cpugraph cpu2 10,160 0000ff 00ff00}${color}
  • 全CPUの使用率を纏めて表示したい場合は${cpu}と書けばよいらしい。
  • $alignrは、それ以降を右に寄せて表示する変数。
  • cpubarの二つ目のオプションは高さ,幅
  • cpugraphの三つ目と四つ目のオプションはグラフ内の色の指定。四つ目から三つ目に色が変化する。

CPUの温度を表示する
CPU1: ${execi 90 sensors | grep 'Physical id 0' | cut -c18-21}℃

CORE1: ${execi 90 sensors | grep 'Core 0' | cut -c18-21}℃
CORE2: ${execi 90 sensors | grep 'Core 1' | cut -c18-21}℃
  • 事前にlm-sensorsをインストールして設定しておく必要がある。
  • 上記の設定では90秒ごとに温度をチェックする。
  • cut以降の数字は、lm-sensorsが返した文字列をgrepした文字列の何文字目から何文字目まで表示するかの設定。上記の設定では18文字目〜21文字目を表示する。環境によって数値は異なる。
  • 参考ページ:lm-sensors で CPU 温度の確認

ビデオカードの温度を表示する(RADEON + Catalyst編)
GPU ${texeci 60 aticonfig --odgt | grep 'Temperature' | cut -c 43-47}℃

ビデオカードの温度を表示する(RADEON + オープンソースドライバー編)
GPU: ${execi 60 sensors | awk 'BEGIN {line = -1} {if ($0 ~ /radeon-pci-0200/) { line=NR+2;} if (NR == line) {print substr($2,2,4)}}'} ℃
  • Ubuntu標準のドライバーを使用している場合は、lm-sensorsを使って温度を取得する。

メモリの使用率を表示する
RAM Usage:  ${mem}/${memmax} - ${memperc}%${alignr}${membar 5,70}
Swap Usage: ${swap}/${swapmax} - ${swapperc}%${alignr}${swapbar 5,70}
  • 上の行はメモリの総量と使用中のメモリ量を表示する。
  • 下の行はスワップの総量と使用中のスワップ量を表示する。
  • membarとswapbarの二つ目のオプションは高さ,幅

ネットワークの使用率を表示する
⇩ ${downspeed eth0} k/s ${alignr}${totaldown eth0} total
⇧ ${upspeed eth0} k/s ${alignr}${totalup eth0} total
${color 8844ee}${downspeedgraph eth0 10,160 ff0000 0000ff} ${alignr}${color 22ccff}${upspeedgraph eth0 10,160 0000ff ff0000}${color}
  • ネットワークデバイスが複数ある場合はeth1とかになると思われる。無線LANの場合はwlan0とか。

ドライブの容量と使用率を表示する
/     ${fs_bar 10,50 /} | ${fs_used /} / ${fs_size /} | ${fs_used_perc /}%
Files ${fs_bar 10,50 /mnt/Files} | ${fs_used /mnt/Files} / ${fs_size /mnt/Files} | ${fs_used_perc /mnt/Files}%
  • マウント先を指定することで個別に表示可能。

ドライブへの読み込み・書き込みを表示する
/   : ${diskio /dev/sda1}${alignr}${diskiograph /dev/sda1 10,100 104E8B 0077ff 750}
ALL : ${diskio}${alignr}${diskiograph 10,100 104E8B 0077ff 750}
  • デバイス名を指定することで個別に表示可能。
  • diskiographの最後のオプションはグラフの大きさ。数字を大きくすればするほどY軸の値が大きくなる。
  • 読み込みと書き込みを別々に表示したい場合はdiskio_read変数とdiskio_write変数を使用する。

HDDの温度を表示する (その1)
HDD1 ${texeci 300 hddtemp /dev/sda | cut -f2-3 -d" " | tr -d "°C"}℃
  • 事前に端末で sudo chmod u+s /usr/sbin/hddtemp というコマンドを実行しておく必要がある。
  • cutコマンドのオプションは、環境に合わせて変更する必要がある。

HDDの温度を表示する (その2)
HDD1 ${texeci 300 nc 127.0.0.1 7634 | cut -c11-26}℃
HDD2 ${texeci 300 nc 127.0.0.1 7634 | cut -c40-60}℃
  • 事前にhddtempをインストールしてデーモンとして起動しておく必要がある。
  • 二つ目の引数の数字が更新間隔。上記の設定では300秒ごとに更新する。
  • nc 127.0.0.1 7634の部分が温度を取得するコマンド(と引数)。7634という数値はポート番号で、/etc/default/hddtempを編集することで変更可能。
  • ncコマンドで表示される文字列は、メーカー名や型番、温度がくっついた状態なので、cutコマンドの-cオプションを使って必要な部分を切り出す。上記の設定では11文字目〜26文字目、40文字目〜60文字目を表示する。環境によって数値は異なる。
  • 参考ページ:ubulog: ubuntuでHDDの温度を計る

CPUを使用しているアプリケーションを表示する
Name               PID    CPU%   MEM%
${color ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
  • CPU負荷の高いアプリケーションランキング。10位まで表示可能。

メモリを使用しているアプリケーションを表示する
Mem usage
${color ddaa00} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color lightgrey} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color lightgrey} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
  • メモリ消費量の多いアプリケーションランキング。10位まで表示可能。

以下は私が使用してるconkyrcのサンプル。

# http://1204lts.blogspot.jp/2012/12/ubuntuconky-conky-gray.html

use_xft yes
xftfont Ricty:size=12
alignment bottom_right
background no
border_width 1
default_color white
default_outline_color grey
default_shade_color grey
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
gap_x 5
gap_y 5
minimum_size 900 40
double_buffer yes
out_to_console no
own_window yes
own_window_class Conky
own_window_type normal
own_window_transparent no
own_window_argb_visual yes
own_window_argb_value 155
own_window_colour 1B0D18
own_window_hints below,sticky,skip_taskbar,skip_pager
stippled_borders no
update_interval 1.0
uppercase no
use_spacer none
show_graph_scale no
show_graph_range no

TEXT
${alignr}R ${diskio_read sda1} W ${diskio_write sda1} | ${fs_used_perc /}% | ${fs_used /} / ${fs_size /} ${fs_bar 10,50 /}     /
${alignr}R ${diskio_read} W ${diskio_write} ${diskiograph 10,50 104E8B 00BFFF 750}
${texeci 300 hddtemp /dev/sdc | cut -f2-3 -d" " | tr -d "°C"}℃
CPU0: ${execi 70 sensors | grep 'Physical id 0' | cut -c18-21}℃ | CPU1: ${execi 80 sensors | grep 'Core 0' | cut -c18-21}℃ | CPU2: ${execi 90 sensors | grep 'Core 1' | cut -c18-21}℃ | GPU: ${texeci 60 aticonfig --odgt | grep 'Temperature' | cut -c 43-47}℃ | ⇩${totaldown eth0} | ⇧${totalup eth0} ${alignr}${uptime}



更新履歴
※2013年6月15日、次の三つを更新。CPUの使用率を表示するビデオカードの温度を表示するHDDの温度を表示する
※2012年12月13日、次の三つを更新。文字の表示を変更するConkyの背景に画像を表示するビデオカードの温度を表示する(RADEON編)
※2012年12月5日、自動起動を修正。通りかかった人さん、ご指摘ありがとうございます。