【Ubuntu】デスクトップ情報表示アプリ「conky」をいじってみた

※アフィリエイト広告を使用しています。

スポンサーリンク

こんにちは。
今回は、Linuxいじりはじめて数日ですが、デスクトップ情報表示アプリ「conky」をいじってみましたので、ご紹介させてください。

昔のWindowsで言うところの「Samurize」みたいなアプリだと思っていただければと思います。

それではどうぞ。

追記(2025,03,14):
Steamに限らず、ゲーム全般が重い(カクつく)ので、検証をしました。

スポンサーリンク

私の環境と来歴

今私は、試験的にWindowsとLinuxのデュアルブートでPCを構築しています。
いつMicrosoftを見限っても良いように準備を進めている段階です。
というか、Android、iOSの台頭でWindowsのシェア確実に減りましたよね。

使ってるディストリビューションは「Ubuntu 24.04.2 LTS」になります。
PCスペックは、

  • Ryzen7 2700X
  • 32GB RAM
  • Geforce RTX 4060 8GB

あたりです。

Linuxの来歴ですが、WindowsXPの頃から時節「無料のOSがあるらしい、、、!」と駆り立てられて導入、しかしとっつきにくさからすぐにWindowsへ戻る日々を過ごしていました。
Android、iOSなどを触るうちにWindows以外のOSへの抵抗が薄れてきたのもあり、ジャンクPCにLinuxを入れて遊んだりもしましたが、スペックが低かったのもあり熱中はせず。
ひょんなことから職場のファイルサーバー(Samba)の保守担当になり、本腰を入れてLinuxと向き合う。
20台くらいのWindowsPCに向けたファイルサーバーの管理をしていました。
退職してからはWindows一辺倒で今日に至ります。
今回も2025年3月9日にLinuxを触り始めて、今3月13日なので4日しか経ってないです。素人です。

要は「触ったことあるけど詳しくはない」ってレベルです。

スポンサーリンク

早速ですが、私のconkyと.conkyrcファイル

私のデスクトップ(マルチディスプレイの拡張側)をドン!

conky部分を切り取った画像をドン!

そして、私の.conkyrcファイルの中身をドン!
インストール方法や自動起動などは他のブログ様が親切丁寧に解説しておりますので、そちらをご参照くださいませ。

-- Conky, a system monitor https://github.com/brndnmtthws/conky
--
-- This configuration file is Lua code. You can write code in here, and it will
-- execute when Conky loads. You can use it to generate your own advanced
-- configurations.
--
-- Try this (remove the `--`):
--
--   print("Loading Conky config")
--
-- For more on Lua, see:
-- https://www.lua.org/pil/contents.html

conky.config = {
    alignment = 'top_right',
    xinerama_head = 1,
    background = false,
    border_width = 1,
    cpu_avg_samples = 2,
    default_color = 'white',
    default_outline_color = 'white',
    default_shade_color = 'white',
    double_buffer = true,
    draw_borders = false,
    draw_graph_borders = true,
    draw_outline = false,
    draw_shades = false,
    extra_newline = false,
    font = 'DejaVu Sans Mono:size=12',
    gap_x = 10,
    gap_y = 10,
    minimum_height = 5,
    minimum_width = 300,
    maximum_width = 300,
    net_avg_samples = 2,
    no_buffers = true,
    out_to_console = false,
    out_to_ncurses = false,
    out_to_stderr = false,
    out_to_x = true,
    own_window = true,
    own_window_class = 'Conky',
    own_window_type = 'desktop',
    own_window_transparent = false,
    own_window_argb_value = 50,
    own_window_argb_visual = true,
    own_window_hints = 'undercorated,below,sticky,skip_taskbar,skip_pager',
    show_graph_range = false,
    show_graph_scale = false,
    stippled_borders = 0,
    update_interval = 1.0,
    uppercase = false,
    use_spacer = 'none',
    use_xft = true,
}

conky.text = [[
${color grey}Info:$color ${scroll 23 Conky $conky_version - $sysname $nodename $kernel $machine}
$hr
$alignc${font Sans:size=40:style=Bold}${time %k:%M:%S}${font}
$alignc${font Sans:size=18}${time %Y/%m/%d (%a)}${font}
$hr
${color grey}Uptime:$color $uptime
$hr
${exec cat /proc/cpuinfo | grep 'model name' | sed -e 's/model name.*: //' | uniq | cut -c 1-27}
${color grey}Frequency (in GHz):$color $freq_g GHz
${color grey}CPU Usage:$color${cpu} % $alignr${color}${cpugraph cpu0 18,150 fd7e00 ffffff -l}
# $alignc${cpugauge cpu1 25,50}  ${cpugauge cpu2 25,50}  ${cpugauge cpu3 25,50}  ${cpugauge cpu4 25,50}
# ${alignc}${color grey}1:${color}${cpu cpu1}%  ${color grey}2:${color}${cpu cpu2}%  ${color grey}3:${color}${cpu cpu3}%  ${color grey}4:${color}${cpu cpu4}%
# $alignc${cpugauge cpu5 25,50}  ${cpugauge cpu6 25,50}  ${cpugauge cpu7 25,50}  ${cpugauge cpu8 25,50}
# ${alignc}${color grey}5:${color}${cpu cpu5}%  ${color grey}6:${color}${cpu cpu6}%  ${color grey}7:${color}${cpu cpu7}%  ${color grey}8:${color}${cpu cpu8}%
${color grey}CPU1: $color${cpubar cpu1 6,70}$alignr${color grey}CPU2:$color ${cpubar cpu2 6,70}
${color grey}CPU3:$color ${cpubar cpu3 6,70}$alignr${color grey}CPU4:$color ${cpubar cpu4 6,70}
${color grey}CPU5:$color ${cpubar cpu5 6,70}$alignr${color grey}CPU6:$color ${cpubar cpu6 6,70}
${color grey}CPU7:$color ${cpubar cpu7 6,70}$alignr${color grey}CPU8:$color ${cpubar cpu8 6,70}
$hr
${color grey}RAM Usage:$color $mem/$memmax
${color grey}RAM: ${color}$memperc % $alignr${membar 6,150}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc%
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${exec nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
${color grey}GPU: ${color}${exec nvidia-smi --query-gpu clocks.current.memory --format csv,noheader} / ${exec nvidia-smi --query-gpu clocks.max.memory --format csv,noheader}
${color grey}VRAM: $color${exec nvidia-smi --query-gpu memory.used --format csv,noheader} / ${exec nvidia-smi --query-gpu memory.total --format csv,noheader}
${color grey}VRAM usage:$color ${execbar echo `expr "(100/"$(nvidia-smi | grep % | cut -c 47-51)")"*$(nvidia-smi | grep % | cut -c 36-40 | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l` 20,600}
$hr
${color grey}CPU temp: $color$alignr${execi 1 sensors | grep 'CPUTIN' | cut -c 26-32}
${color grey}CPU FAN: $color$alignr${execi 1 sensors | grep 'fan2' | cut -c 20-31}
${color grey}M/B temp:$color$alignr${execi 1 sensors | grep 'AUXTIN0' | cut -c 26-32}
${color grey}GPU temp:$alignr$color${nvidia temp}${font Sans}℃$font
$hr
${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed enp34s0}${color grey} - Down:$color ${downspeed enp34s0}
${upspeedgraph enp34s0 18,130 fd7e00 ffffff} $alignr${downspeedgraph enp34s0 18,130 fd7e00 ffffff}
$hr
${color grey}Top5 Processes:(CPU% MEM%)${color}
${top name 1} ${top cpu 1} ${top mem 1}
${top name 2} ${top cpu 2} ${top mem 2}
${top name 3} ${top cpu 3} ${top mem 3}
${top name 4} ${top cpu 4} ${top mem 4}
${top name 5} ${top cpu 5} ${top mem 5}
${if_running rhythmbox}
$hr
${color grey}${font Sans}NowPlaying:$color
$alignc${exec rhythmbox-client --no-start --print-playing-format='%aa'}
$alignc${font Sans:size=20:style=bold}${scroll 11 2 ${exec rhythmbox-client --no-start --print-playing-format='%tt'}}${font}
$alignc${exec rhythmbox-client --no-start --print-playing-format='%te / %td'}
${endif}
]]

Luaに対応していると見えるのですが、私には何を言ってるかさっぱり分かりません(目そらし)
実際触ったことがないので、書式などサッパリです。
グラフィカルに情報表示されている方々はすごいなと思います。

次からは、既に情報提供をされているサイト様のリンクを貼りながら、てこずったポイントをご紹介できればと思います。

スポンサーリンク

てこずりポイント1: グラボの情報表示(NVIDIA)

${exec nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
${color grey}GPU: ${color}${exec nvidia-smi --query-gpu clocks.current.memory --format csv,noheader} / ${exec nvidia-smi --query-gpu clocks.max.memory --format csv,noheader}
${color grey}VRAM: $color${exec nvidia-smi --query-gpu memory.used --format csv,noheader} / ${exec nvidia-smi --query-gpu memory.total --format csv,noheader}
${color grey}VRAM usage:$color ${execbar echo `expr "(100/"$(nvidia-smi | grep % | cut -c 47-51)")"*$(nvidia-smi | grep % | cut -c 36-40 | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l` 20,600}

日本語の情報サイトを探してみたのですが、グラボ(私の場合NVIDIA)の情報表示(チップ名とか、メモリ使用量とか)する情報がなかなかヒットしませんでした。

調べているうちに、nvidia-smiというのと、conkyコマンドの$execを活用すれば良いというところまで突き止めました。
あとはこちらのサイト(英語です)の該当部分をまるっとコピペしたり、

conky with nvidia-smi
conky with nvidia-smi. GitHub Gist: instantly share code, notes, and snippets.
Conky configuration to display video card memory usage in Nvidia cards
Conky configuration to display video card memory usage in Nvidia cards - .conkyr...

こちらのリファレンス?でnvidiaコマンドがあることが判明して温度だけ拝借したり、

Conky Objects

しました。

ただ、現状でもVRAM usage:の数値バーの部分がうまく動いてる自信が無いです。

てこずりポイント2: 温度とファン回転数

${color grey}CPU temp: $color$alignr${execi 1 sensors | grep 'CPUTIN' | cut -c 26-32}
${color grey}CPU FAN: $color$alignr${execi 1 sensors | grep 'fan2' | cut -c 20-31}
${color grey}M/B temp:$color$alignr${execi 1 sensors | grep 'AUXTIN0' | cut -c 26-32}
${color grey}GPU temp:$alignr$color${nvidia temp}${font Sans}℃$font

こちらはもうまるっとコピペです。

参考にしたサイト様。

Conkyのカスタマイズ その4 - あーだこーだ
Conkyは下手に凝っていじりだすと、時間を忘れて大変なことになるので、とりあ...
ConkyにマルチCPUのコア温度とファン速度を表示する|PCで遊んだ日々の備忘録
マルチコアCPUを2基搭載したマザーボードにおいて、それぞれのコア温度とファン速度をハードウェア監視アプリを使って Ubuntu 18 GNOMEデスクトップの...

端末からsensorsを入れて、表示して、該当する項目をconkyに入力していきました。

てこずりポイント3: rhythmboxとの同期

${if_running rhythmbox}
$hr
${color grey}${font Sans}NowPlaying:$color
$alignc${exec rhythmbox-client --no-start --print-playing-format='%aa'}
$alignc${font Sans:size=20:style=bold}${scroll 11 2 ${exec rhythmbox-client --no-start --print-playing-format='%tt'}}${font}
$alignc${exec rhythmbox-client --no-start --print-playing-format='%te / %td'}
${endif}

こちらは日本語では1件しか情報が出てこなかったのですが、そのままコピペではうまく動かなかったので少し修正を加えてあります。

参考にしたサイト様。

第391回 ConkyでデスクトップPCの情報をモニタリングする | gihyo.jp
Conkyとはデスクトップ上で動作する、高いカスタマイズ性を誇るシステムモニターツールです。今週のレシピではConkyの使い方とカスタマイズ例を紹介します。

ここのサイトすごいですよ。
rhythmbox同期以外の情報もすごく丁寧に詳しく書かれているので、conkyをいじるなら一読の価値あります。
追記:
というか、こちらの水野源(みずのはじめ)さんという方、本当にすごい方でした、、、Linuxの書籍まで出版されている方でした。

さて、問題の「うまく動かなかった」部分について。
–print-playingという引数を渡しているのですが、これを入力しているとconkyが起動している間、常にrhythmboxも起動してしまいました。
rhythmboxを終了してもまた起動してしまう状態です。

そこで、こちらのサイト様(英語です)

rhythmbox info in conky working with Unity/Compiz/Nautilus
rhythmbox info in conky working with Unity/Compiz/Nautilus - project0407

に書いてある、–no-startに書き換えたところ、rhythmbox起動中は音楽情報表示、rhythmboxを終了したら表示が消えるようになりました。

追記:
–no-startにしても時節conky起動中にrhythmboxが終了出来ない(終了しても再び起動してしまう)になりました。
conkyの更新タイミングにrhythmboxの終了タイミングが掛かるとうまく終了出来ないような?
何度かrhythmbox終了を試みると消えます(conkyでのrhythmbox表示欄も消えます)

【追記】Linuxとゲームとconky

Linux導入直後はSteamゲームが重くなかったのですが、conkyをゴリゴリにセッティングしてからゲームがカクつくようになりました。
(検証ゲーム:Wizardry Variants Daphne)

画像のようにconky構成を縮小(.conkyrcファイルのTEXT項目を「# 」(シャープ、スペース、スペースなくてもいいかも)でコメントアウト)しながら検証しました。

1行ずつ検証した訳ではないですが、現状で時刻、日付、CPU、RAM、GPU、rhythmboxを表示する分にはゲームへの影響が最小限だということが分かりました。
これらはお使いのPC性能により上下するものだと思うので、つよつよPCを使ってる方はもっと表示出来るでしょうし、ジャンクPCに導入している方はconkyとゲーム自体相性が良くないかもしれません。

これWindowsにあった「Samurize」でも似た症状あったので気付けました。
あれも表示項目増やしたり、更新間隔短くするとゲームとか重くなったんですよね。

おわりに

そんなわけで私のconkyでした。
WindowsのSamurizeもそうでしたが、こういうの入れてるとゲームがカクつくような気がします。
もう少し様子を見てみますが、明らかにconky由来でゲームプレイに支障が出ているなら利用中止も考慮しようと思います。

、、、かっこいいんですけどねw

それでは。

コメント

タイトルとURLをコピーしました