【おしらせ】

2025,08 サイトリニューアルの関係でページのリンク切れが多発しています。
サイドバーやメニューのカテゴリ一覧から辿っていただければ99%のページは閲覧可能になっています。
お手数おかけします。

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

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

スポンサーリンク

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

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

それではどうぞ。

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

追記(2025,03,22):
Bluetoothデバイス名とバッテリー残量(%)が表示出来るようになりました。

追記(2025,04,09):
NVIDIA GPUに限りますが、VRAM使用率をパーセント表示出来るようになりました。

追記(2025,05,04):
conkyを起動してるとどうにもゲームがカクつく問題の原因を探りました。

スポンサーリンク

私の環境と来歴

今私は、試験的に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部分を切り取った画像をドン!
※上と変わってます。バージョン2ってことで。

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

画面のスクショ、conky部分のスクショ、以下のコード、それぞれ表記が違うのですが、下記のコードは2025年5月12日現在、最新のものになります。
適切にコメントアウトなどを入れています。

-- 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 = true,
    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 = [[
#############
# Time&Date #
#############
# ${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
############
# CPU info #
############
${exec cat /proc/cpuinfo | grep 'model name' | sed -e 's/model name.*: //' | uniq | cut -c 1-27}
${color grey}Frequency (in GHz):${alignr}$color $freq_g GHz
${color grey}CPU Usage:$color${cpu} % $alignr${color}${cpugraph cpu0 18,150 888888 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
############
# RAM info #
############
${color grey}RAM: ${alignr}$color $mem/$memmax
${color grey}RAM Usage: ${alignr}${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
############
# GPU info #
############
${execi 101 nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
# ${color grey}GPU: ${alignr}${color}${execi 17 nvidia-smi --query-gpu clocks.current.memory --format csv,noheader} / ${execi 19 nvidia-smi --query-gpu clocks.max.memory --format csv,noheader}
# ${color grey}VRAM: $color ${alignr}${execi 11 nvidia-smi --query-gpu memory.used --format csv,noheader} / ${execi 13 nvidia-smi --query-gpu memory.total --format csv,noheader}
${color grey}VRAM Usage:$color${execi 4 echo "scale=0; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}% $alignr${execibar 7 6,150 echo "scale=1; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}
$hr
##############
# Temp & Fan #
##############
${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
##########
# Strage #
##########
${color grey}File systems:
${color grey}/ $alignr$color${fs_used /} / ${fs_size /}
$alignr${fs_used_perc /}% ${fs_bar 6,150 /}
${color grey}/LDocuments $alignr$color${fs_used /mnt/LDocuments/} / ${fs_size /mnt/LDocuments/}
$alignr${fs_used_perc /mnt/LDocuments/}% ${fs_bar 6,150 /mnt/LDocuments/}
${color grey}/Steam $alignr$color${fs_used /mnt/Steam/} / ${fs_size /mnt/Steam/}
$alignr${fs_used_perc /mnt/Steam/}% ${fs_bar 6,150 /mnt/Steam/}
$hr
###########
# Process #
###########
${color grey}Top3 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}
$hr
###########
# Network #
###########
${color grey}Networking:
Up:$color ${upspeed enp34s0}${alignr}${color grey}Down:$color ${downspeed enp34s0}
${upspeedgraph enp34s0 18,130 fd7e00 ffffff} $alignr${downspeedgraph enp34s0 18,130 fd7e00 ffffff}
#############
# Bluetooth #
#############
${if_match "${texeci 5 bluetoothctl info 68:6C:E6:4C:C6:59 | grep Connected | awk '{print $2}'}" == "yes"}$hr
${color grey}Bluetooth Device:
$color${execi 10 bluetoothctl info | grep 'Name' | cut -c 8-31}
${color grey}Battery: $color${execi 10 bluetoothctl info | grep 'Battery Percentage' | awk -F '[^0-9]+' '{print $4}'} % $alignr${execibar 10 6,120 bluetoothctl info | grep 'Battery Percentage' | awk -F '[^0-9]+' '{print $4}'}
##############
# Music info #
##############
${endif}${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)2025/04/09追記

${exec nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
${color grey}GPU: ${alignr}${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 ${alignr}${exec nvidia-smi --query-gpu memory.used --format csv,noheader} / ${exec nvidia-smi --query-gpu memory.total --format csv,noheader}
${color grey}VRAM %:$color ${exec echo "scale=1; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}% $alignr${execbar 6,150 echo "scale=1; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}

日本語の情報サイトを探してみたのですが、グラボ(私の場合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:の数値バーの部分がうまく動いてる自信が無いです。

2025,04,09追記
本当に手こずりましたが、どうにかカタチになったと思います。
nvidia-smiから「%」で引っ掛けて、数値フィールドn番目同士(VRAM使用量と、VRAM最大量)を計算させることで、VRAM使用率をパーセントで表示させる事に成功しました。
更に、Linuxコマンドの割り算オプション「scale」を使用することで、小数点第1位で切り捨て?をします。正直scale=0で小数点無くても良いですねw
これをexecbarに適用することで、無事数値バーも動くようになりました。

余談ですが、–query-gpu引数には様々なオプションがあるので、見たい方はコマンドで、

nvidia-smi --help-query-gpu

と入力すると、膨大な量のオプションを見ることが出来ると思います。参考サイト(PDF)

2025,05,04追記:
これだけnvidia-smiにアクセスが集中すると、ゲームがカクつきます。
対策を残しておいたので、この記事の最後の方の追記を見てもらえればと思います。

コメントアウトした(私の環境ではゲームがカクつかない)コード載せておきますね。

############
# GPU info #
############
${execi 101 nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
# ${color grey}GPU: ${alignr}${color}${execi 17 nvidia-smi --query-gpu clocks.current.memory --format csv,noheader} / ${execi 19 nvidia-smi --query-gpu clocks.max.memory --format csv,noheader}
# ${color grey}VRAM: $color ${alignr}${execi 11 nvidia-smi --query-gpu memory.used --format csv,noheader} / ${execi 13 nvidia-smi --query-gpu memory.total --format csv,noheader}
${color grey}VRAM Usage:$color${execi 4 echo "scale=0; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}% $alignr${execibar 7 6,150 echo "scale=1; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}
$hr

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

##############
# Temp & Fan #
##############
${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

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

参考にしたサイト様。

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

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

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

##############
# Music info #
##############
${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表示欄も消えます)

2025,04,14 追記 プレイフォーマットの情報

参考サイト(英語)

rhythmbox-client -help

とコマンドを打てば、めぼしい情報は手に入るのですが、フォーマット情報だけ見つからなかったので上記参考サイト(英語)を置いておきます。

これで間違えてアーティスト名とか消しちゃっても大丈夫!?

てこずりポイント4: Bluetoothバッテリー表示

${if_match "${texeci 5 bluetoothctl info 68:6C:E6:4C:C6:59 | grep Connected | awk '{print $2}'}" == "yes"}$hr
$color${exec bluetoothctl info | grep 'Name' | cut -c 8-31}
${color grey}BT Battery: $alignr$color${exec bluetoothctl info | grep 'Battery Percentage' | cut -d' ' -f4} %
# ${execbar bluetoothctl info | grep 'Battery Percentage' | cut -c 28-30}
${endif}

4つ目はBluetoothデバイスの名前とバッテリー残量表示です。
※断片的な情報でやってるのでまだ完動してないです。自己責任、ブラッシュアップしてどうぞ。

if_matchでBluetooth機器がMACアドレス?で差別化してコネクテッドになってる場合に領域を表示します。
情報の取得はbluetoothctlコマンドのinfoを使用しました。
なぜかは知りませんがexecじゃなくてtexeciで論理文書いたら動きました。
参考サイト(英語、82行目の説明部分)

Nameはそのまま、Bluetooth機器のデバイス名が出ます。
箱コンのデバイス名がかっこよかったので表示させてるだけです。

Batteryはgrepのcutコマンドを勉強して、スペースを区切り文字にして、4つ目の領域(バッテリー数値)を表示させています。
させていますが、括弧が付いちゃってます。
grep ‘Battery Percentage’ | cut 丸括弧から丸括弧閉じの間の文字、とか出来ればきれいに表示出来るし、コメントアウトしてあるexecbarでメーター表示も出来るんですけどね、、、
一応bluetoothctl infoの該当行を載せておきますが、awkでも難しいような、、、

Battery Percentage: 0x64 (100)

(100)が動くと0x64も動くと思うのでawkとprint $hogeでは誤作動しそうなんですよね。
※仮説ですが、0x64はどう動いても数値のフィールドは変わらないんじゃないか説を唱えます。

学が浅くて申し訳ないです。

追記:
一応awkにしてexecbarも実装したバージョンもコード載せときます。

#############
# Bluetooth #
#############
${if_match "${texeci 5 bluetoothctl info 68:6C:E6:4C:C6:59 | grep Connected | awk '{print $2}'}" == "yes"}$hr
${color grey}Bluetooth Device:
$color${execi 10 bluetoothctl info | grep 'Name' | cut -c 8-31}
${color grey}Battery: $color${execi 10 bluetoothctl info | grep 'Battery Percentage' | awk -F '[^0-9]+' '{print $4}'} % $alignr${execibar 10 6,120 bluetoothctl info | grep 'Battery Percentage' | awk -F '[^0-9]+' '{print $4}'}
${endif}

ダメだったらまた試行錯誤します。

2025,04,21 追記
awkとexecbarで試運転させていますが、バッテリ100%〜40%くらいまで普通に動いている様子です。
上記の書式で大丈夫みたいです。

【追記】Linuxとゲームとconky

※この見出しの情報は若干古い、というか確定情報ではなかったりするので、次の追記見出しまで読み飛ばしてもらっても大丈夫です。

Linux導入直後はSteamゲームが重くなかったのですが、conkyをゴリゴリにセッティングしてからゲームがカクついたり、大丈夫だったりしました。
(検証ゲーム:Wizardry Variants Daphne、Wizardry 狂王の試練場、Monster Hunter Worlds)

Wizardry Variants Daphne

移動中や街は大丈夫なんですが、戦闘中に時節固まります。
1秒〜3秒くらい固まるので「フリーズか?」と思うのですが、待ってると動き始めます。

ちなみにconkyを完全に終了(killall conky)してからゲームを起動したら、戦闘中に固まることが一回もありませんでした。

conkyの情報量によって固まる比率、具合が変わるかと思ったのですが、そうでもないみたいです。
縮小情報でも固まりますし、モリモリに情報載せてても意外と持ちこたえる事もあります。

nProtectが相性悪いんですかね。

追記:
ゲーム内設定で画質を「速度優先」にしたら多少マシになりました(conky情報モリモリ時)
conky無しで快適に遊ぶか、conky縮小表示で我慢するか、conkyモリモリで画質「速度優先」でほどほどに遊ぶか、選択ですね。

さらに追記:
conkyの描画部分が見えなくなればカクつきが緩和されるかと思い、WIZダフネの画面(フルスクリーン)をサブディスプレイに移動(Super+Shift+矢印)したもののあまり意味はなく。
conkyが動いてない状態じゃないと快適動作は見込めませんでした。

conkyをキルするシェルスクリプトを作って、実行するだけでconkyが消えるようにしました。
音楽プレイヤーの一時停止/再生みたいに、1ファイルで停止、再開が出来るとラクそうなんですけどね。

#!/usr/bin/bash

killall conky

上記をkill_conky.shとでもして保存して、プログラムとして実行させればいちいち端末を叩かなくてもconkyを消すことが出来ます。

Wizardry 狂王の試練場

検証に挙げたゲームの中では一番最近遊んでます。
そして一番conkyセッティングをモリモリにしています。

どうやら、Top プロセスなどの、1秒毎に結構な範囲の再描写が掛かるとカクつくようです。
プロセス名表示をつけるとゲームがビクビクカクカクしました。
逆にプロセス名表示をコメントアウトすると、比較的スムーズに動作しました。

conkyと関係あるかは分かりませんが、時節Bluetoothの接続不良が出て、パッドの操作が変に連打される時がありました(Xboxコントローラー)

Monster Hunter Worlds

ワイルズじゃないです。ワールドです。
先述のWIZダフネはターン制コンバットゲームなのでカクつきがあってもまぁいいやで済んだのですが、アクションゲームでカクつきが起こったら一大事ですので、MHWでも検証してみました。

モリモリにconky情報を載せてプレイしてみましたが、これといってカクつきはありませんでした。
単純にマシンパワーをゴリゴリ使ってるといった印象。

ゲームのオープニングから最初のクエストクリアまでしかプレイしてないので、実際大型モンスターの狩猟などになったらどうなるかは不明です。

追記:conkyとゲームその2

conky起動中にどうにもゲームがカクつく(重い)原因を探りました。
参考検索ワード「conky game stutter」

参考URL

[Solved] Conky causes stuttering in OpenGL applications / Newbie Corner / Arch Linux Forums
Conky / Bugs / #305 Conky with xft enable causes stuttered opengl/video playback

いずれも英語です。

原因として述べられているものその0
(端末)killall conkyでconkyを止めれば万事解決。
それはそう。
そんなことは分かっていますが、そうでもしないと収まらなさそうで困っていました。

原因として述べられているものその1
conkyrcのconfig側のオプション「use_xft」をtrueからfalseにすると直るよ、との情報。
こちらはかなり改善はしましたが、完全にカクつきが無くなる訳ではありませんでした。
あと、フォントのカスタマイズが無効?になるので、日本語フォントが使えなかったり、老眼だと見づらいくらいの小さいフォントに統一されたりであまり良いものではありませんでした。

原因として述べられているものその2
nvidia-smi使いすぎじゃね?っていうもの。
これはガッツリ効果ありました。

普段がこれくらいのGPU情報表示でカクついていて、

チップ名、ヘルツ、最大ヘルツ?、VRAM、最大VRAM、それらの計算値、計算バーで大量にnvidia-smiを使っています。

ここまでコメントアウト(非表示)にしたら、カクつきが全くなくなりました。

チップ名だけ。

そこで閃いたのですが、nvidia-smi部分をexecではなくexeciのインターバル付きにして、それぞれnvidia-smiへのアクセスタイミングをずらせば良いんじゃないか?という事でかいたスクリプトがこちら。

${execi 101 nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
${color grey}GPU: ${alignr}${color}${execi 17 nvidia-smi --query-gpu clocks.current.memory --format csv,noheader} / ${execi 19 nvidia-smi --query-gpu clocks.max.memory --format csv,noheader}
${color grey}VRAM: $color ${alignr}${execi 11 nvidia-smi --query-gpu memory.used --format csv,noheader} / ${execi 13 nvidia-smi --query-gpu memory.total --format csv,noheader}
${color grey}VRAM Usage:$color${execi 4 echo "scale=0; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}% $alignr${execibar 7 6,150 echo "scale=1; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}

それぞれ、名前(ボードのチップ名)は101秒、ほか素数っぽい秒数での更新に変えてみました。
しかしこれではゲームのカクつきは収まりませんでした。

ここからやるべくは、不要箇所のコメントアウトです。
私の場合は、駆動ヘルツとかVRAMの数値はいらなくて、パーセントとバーが見えれば十分だったので、そこだけ表示(もちろんインターバルでnvidia-smiへのアクセスタイミングをずらす)するようにしました。
こちらです。

############
# GPU info #
############
${execi 101 nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
# ${color grey}GPU: ${alignr}${color}${execi 17 nvidia-smi --query-gpu clocks.current.memory --format csv,noheader} / ${execi 19 nvidia-smi --query-gpu clocks.max.memory --format csv,noheader}
# ${color grey}VRAM: $color ${alignr}${execi 11 nvidia-smi --query-gpu memory.used --format csv,noheader} / ${execi 13 nvidia-smi --query-gpu memory.total --format csv,noheader}
${color grey}VRAM Usage:$color${execi 4 echo "scale=0; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}% $alignr${execibar 7 6,150 echo "scale=1; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}
$hr

これで最低限の情報は表示しつつ、ゲームのカクつきは最小限にとどめることが出来ました。
画像にするとこんな感じです。

インターバル4秒と7秒なので、、、28秒?ごとにカクつく可能性はありますが、それくらいならまぁ、我慢できるかなと思います。

(検証ゲーム:Wizardry Variants Daphne , Albion Online)

追記:Debian + KDE + Waylandで表示させてる.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 = true,
    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: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 = 'normal',
    own_window_transparent = false,
    own_window_argb_value = 80,
    own_window_argb_visual = true,
    own_window_hints = 'undecorated,below,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 = [[
#############
# Time&Date #
#############
# ${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
############
# CPU info #
############
${exec cat /proc/cpuinfo | grep 'model name' | sed -e 's/model name.*: //' | uniq | cut -c 1-27}
${color grey}Frequency (in GHz):${alignr}$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
############
# RAM info #
############
${color grey}RAM: ${alignr}$color $mem/$memmax
${color grey}RAM Usage: ${alignr}${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
############
# GPU info #
############
${execi 101 nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
# ${color grey}GPU: ${alignr}${color}${execi 17 nvidia-smi --query-gpu clocks.current.memory --format csv,noheader} / ${execi 19 nvidia-smi --query-gpu clocks.max.memory --format csv,noheader}
# ${color grey}VRAM: $color ${alignr}${execi 11 nvidia-smi --query-gpu memory.used --format csv,noheader} / ${execi 13 nvidia-smi --query-gpu memory.total --format csv,noheader}
${color grey}VRAM Usage:$color${execi 4 echo "scale=0; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}% $alignr${execibar 7 6,150 echo "scale=1; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}
$hr
##############
# Temp & Fan #
##############
${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${exec nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader}${font Sans}℃$font
$hr
##########
# Strage #
##########
${color grey}File systems:
${color grey}/ $alignr$color${fs_used /} / ${fs_size /}
$alignr${fs_used_perc /}% ${fs_bar 6,150 /}
${color grey}/LDocuments $alignr$color${fs_used /mnt/LDocuments/} / ${fs_size /mnt/LDocuments/}
$alignr${fs_used_perc /mnt/LDocuments/}% ${fs_bar 6,150 /mnt/LDocuments/}
${color grey}/Steam $alignr$color${fs_used /mnt/Steam/} / ${fs_size /mnt/Steam/}
$alignr${fs_used_perc /mnt/Steam/}% ${fs_bar 6,150 /mnt/Steam/}
$hr
###########
# Process #
###########
${color grey}Top3 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}
$hr
###########
# Network #
###########
${color grey}Networking:
Up:$color ${upspeed enp34s0}${alignr}${color grey}Down:$color ${downspeed enp34s0}
${upspeedgraph enp34s0 18,130 fd7e00 ffffff} $alignr${downspeedgraph enp34s0 18,130 fd7e00 ffffff}
#############
# Bluetooth #
#############
${if_match "${texeci 5 bluetoothctl info 68:6C:E6:4C:C6:59 | grep Connected | awk '{print $2}'}" == "yes"}$hr
${color grey}Bluetooth Device:
$color${execi 10 bluetoothctl info | grep 'Name' | cut -c 8-31}
${color grey}Battery: $color${execi 10 bluetoothctl info | grep 'Battery Percentage' | awk -F '[^0-9]+' '{print $4}'} % $alignr${execibar 10 6,120 bluetoothctl info | grep 'Battery Percentage' | awk -F '[^0-9]+' '{print $4}'}
##############
# Music info #
##############
${endif}${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}]]

RADEONに換装しました

Debian + KDE + Wayland + RADEON対応の.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 = true,
    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 = 'normal',
    own_window_transparent = false,
    own_window_argb_value = 80,
    own_window_argb_visual = true,
    own_window_hints = 'undecorated,below,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 = [[
#############
# Time&Date #
#############
# ${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
############
# CPU info #
############
${exec cat /proc/cpuinfo | grep 'model name' | sed -e 's/model name.*: //' | uniq | cut -c 1-27}
${color grey}Frequency (in GHz):${alignr}$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
############
# RAM info #
############
${color grey}RAM: ${alignr}$color $mem/$memmax
${color grey}RAM Usage: ${alignr}${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
############
# GPU info #
############
# ${execi 101 nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits}$color
# ${color grey}GPU: ${alignr}${color}${execi 17 nvidia-smi --query-gpu clocks.current.memory --format csv,noheader} / ${execi 19 nvidia-smi --query-gpu clocks.max.memory --format csv,noheader}
# ${color grey}VRAM: $color ${alignr}${execi 11 nvidia-smi --query-gpu memory.used --format csv,noheader} / ${execi 13 nvidia-smi --query-gpu memory.total --format csv,noheader}
# ${color grey}VRAM Usage:$color${execi 4 echo "scale=0; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}% $alignr${execibar 7 6,150 echo "scale=1; (100*"$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $6}')")"/$(nvidia-smi | grep % | awk -F '[^0-9]+' '{print $7}' | sed -e 's/^[ \t]*//' | sed -e 's/[ \t]*$//') | bc -l}
##############
# Radeon GPU #
##############
${execi 65000 glxinfo | grep 'OpenGL renderer string:' | awk '{print $4" "$5" "$6" "$7'}}
${color grey}Usage: ${color}${exec cat /sys/class/drm/card0/device/gpu_busy_percent}% $alignr${execibar 7 6,150 cat /sys/class/drm/card0/device/gpu_busy_percent}
$hr
##############
# Temp & Fan #
##############
${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}
#AMD GPU
${color grey}GPU temp:$color$alignr${execi 1 sensors | grep 'edge' | cut -c 16-22}
#NVIDIA GPU
#${color grey}GPU temp:$alignr$color${nvidia temp}${font Sans}℃$font
$hr
##########
# Strage #
##########
${color grey}File systems:
${color grey}/ $alignr$color${fs_used /} / ${fs_size /}
$alignr${fs_used_perc /}% ${fs_bar 6,150 /}
${color grey}/LDocuments $alignr$color${fs_used /mnt/LDocuments/} / ${fs_size /mnt/LDocuments/}
$alignr${fs_used_perc /mnt/LDocuments/}% ${fs_bar 6,150 /mnt/LDocuments/}
${color grey}/Steam $alignr$color${fs_used /mnt/Steam/} / ${fs_size /mnt/Steam/}
$alignr${fs_used_perc /mnt/Steam/}% ${fs_bar 6,150 /mnt/Steam/}
$hr
###########
# Process #
###########
${color grey}Top3 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}
$hr
###########
# Network #
###########
${color grey}Networking:
Up:$color ${upspeed enp34s0}${alignr}${color grey}Down:$color ${downspeed enp34s0}
${upspeedgraph enp34s0 18,130 fd7e00 ffffff} $alignr${downspeedgraph enp34s0 18,130 fd7e00 ffffff}
#############
# Bluetooth #
#############
${if_match "${texeci 5 bluetoothctl info 68:6C:E6:4C:C6:59 | grep Connected | awk '{print $2}'}" == "yes"}$hr
${color grey}Bluetooth Device:
$color${execi 10 bluetoothctl info | grep 'Name' | cut -c 8-31}
${color grey}Battery: $color${execi 10 bluetoothctl info | grep 'Battery Percentage' | awk -F '[^0-9]+' '{print $4}'} % $alignr${execibar 10 6,120 bluetoothctl info | grep 'Battery Percentage' | awk -F '[^0-9]+' '{print $4}'}
##############
# Music info #
##############
${endif}${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}]]

書き換えた場所はRadeon GPU部分と、Temp & Fanの部分です。

##############
# Radeon GPU #
##############
${execi 65000 glxinfo | grep 'OpenGL renderer string:' | awk '{print $4" "$5" "$6" "$7'}}
${color grey}Usage: ${color}${exec cat /sys/class/drm/card0/device/gpu_busy_percent}% $alignr${execibar 7 6,150 cat /sys/class/drm/card0/device/gpu_busy_percent}
$hr
##############
# Temp & Fan #
##############
${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}
#AMD GPU
${color grey}GPU temp:$color$alignr${execi 1 sensors | grep 'edge' | cut -c 16-22}
#NVIDIA GPU
#${color grey}GPU temp:$alignr$color${nvidia temp}${font Sans}℃$font
$hr

参考までにどうぞ。

おわりに

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

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

それでは。

コメント

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