BetterTouchTool で Touch Bar にCPU使用率とメモリ使用率を表示させてみた

Mac

Touch Barカスタマイズは楽しい

このブログやYouTubeチャンネルでも何度も紹介している「BetterTouchTool」が神アプリすぎてとても楽しい。
知れば知るほどあまりになんでも出来すぎて大丈夫なのかと思ってしまう。

  • トラックパッドやマジックマウスのジェスチャーの種類を劇的に増やす
  • キーボードショートカットを登録する
  • Touch Barを自由にカスタマイズできる
  • ウィンドウスナップ機能
  • キーシーケンスによるスニペット挿入機能
    (できることはスニペット挿入だけではないけど、これが便利!)
  • クリップボード履歴

主なものだけでもこれだけの機能を一つのアプリが実現しているってすごいことだと思う。

Touch Barに情報表示させたい

中でもTouch Barのカスタマイズは最高のおもちゃ(笑)で、自分好みにスッキリと美しい外観を作りたくて意地になってしまう。Windows XPが出てすぐの頃にそのデスクトップカスタマイズにハマっていた頃を思い出すような気さえする。

今回はTouch BarにCPUの使用率とメモリ利用率を表示させてみた。
これらの情報はこれまではStatsというアプリを使用してメニューバーに表示させていたのだが、メニューバーよりも目に留まりやすいTouch Barに表示したい欲が沸々と湧いてきたのです。

あらかじめ完成形をご披露しておきましょう。こんな感じです。

Pythonを使ってYouTubeのチャンネル登録者数と閲覧総数を取得して表示するってのもしてあります。こちらの方法はちょっと手が込んでいるし、インストールするツール類もお手軽ってわけにはいかない。

今回のCPUとメモリ使用率表示は、ツールのインストール等はまったく不要でおこなえるので安心してほしい。

シェルスクリプトを調べたおす

とりあえずBetterTouchToolに仕込むことは今は忘れて、普通CPU(とメモリ)使用率を出すにはターミナルでUNIXのコマンドを使う。まずは下記のブログにあった「ps」コマンドを使用してみた。

タッチバーにCPU使用率を表示する! - Qiita
この記事を読む事で出来るもの😎 CPU使用率が見えちゃいます!!! 実用性高いしイケてますよね〜〜🥴 下準備 ・BetterTouchToolをインストール!! ・Mac神アプリ!BetterTouchTool...

このブログでは「CPU使用率」と銘打っているけど、コマンドの内容はメモリ使用率になっているので注意。コマンドの「mem」となっている部分を「cpu」に変更すること。

ところがなんだか妙に高い使用率で納得できなかったので、さらに調査を進めるとこんな情報が出てきた。

psコマンドによる取得できる CPU、メモリ使用率は、「プロセスの生存期間中に実行に利用した時間のパーセンテージで表される」です。よって、psコマンドで取得した使用率は、その瞬間のものではなく、あくまでプロセスが生存中に使用したリソースの時間です。そのため、すべてのプロセスの合計を計算すると 100 を超えてしまうことがあります。あくまで目安的にお使いください。CPU 使用率の場合は、厳密にはtopコマンドを使用する方が良いでしょう。

https://ottan.xyz/posts/2018/11/touchbar-macbookpro-bettertouchtool-7084/

なんだ道理で常に100を超えた数値が出ているわけだ。常に100を超えているなんて見ているだけで精神衛生上良くない。せっかくTouch Barに美しく表示しようかというのに、心臓に悪い数値を常時表示とか冗談じゃない。早死にしてしまう。

もうこれはこの情報にも登場する「top」コマンドを調べ倒すしかない!

というわけで、調べたのだけれど、そもそもMacのアプリで言うと、アクティビティモニタのような役割をするコマンドで、スッキリと「使用率:XX %」ってだけを表示するだけのコマンドじゃない。コマンドを打って返ってくる大量の文字列をなんとか操作してパーセンテージだけを手に入れないといけない。

ここでも調べまくった。こんなところや

TOPのCPU使用率とかを集計する | ハックノート
PSのCPU使用率は負荷調査には支えないので、TOPのほうでやってます。 プロセスが複数にわかれるものを集計して表示。 ``` RubyのCPU使用率集計 (top -d 0 -n 1 -c -b; echo "";) | grep Ruby | grep -v "grep" | awk '{a += ;} END...

こんなところ

How to get CPU utilization in % in terminal (mac)
Ive seen the same question asked on linux and windows but not mac (terminal). Can anyone tell me how to get the current processor utilization in %, so an exampl...

を見ながら、あーだこーだして、やっとそれらしき率を表示することができた。

こんなん出ましたけど(古っ)

苦節1.5時間くらい。僕が出した答えがこれ。topコマンドを先頭にgrepとawkを数珠繋ぎ。多少ブサイクなのはご愛嬌。コマンド得意な方はもっとスマートな書き方教えてください (笑)

top -l 2 | grep -E "^CPU" | grep -E -o "\d+\.\d*% user, \d+\.\d*% sys" | awk '{s+=$1} END {print s "%"}'

これで恐らくは正しそうな感じ。

というのも、常に変化している値なので正解がわからないのだ。一応、ターミナルでawkよりも前の部分のコマンドを実行してから、下のコマンド全文を実行して足し算の比較を何度もおこなって「正しそうである」という結論に至った (笑)

上のコマンドはCPU使用率で、メモリ使用率は最初の「ps」コマンドを使用したもので大丈夫そうだ。
ちなみにメモリ使用率のコマンドは以下。

ps -A -o %mem | awk '{s+=$1} END {print s "%"}'

コマンドはわかった!BTTへの仕込みだ!

これらをBetterTouchToolに仕込む。

「タッチバーウィジェット」の「シェルスクリプト」にCPU使用率のコマンドを仕込む
シェルスクリプトが実行されて使用率がしっかり出切るまでの表示で、ボタンが伸び縮みしてしまってみっともないのでボタン幅は「固定幅」にしてある

メモリ使用率はこのCPU使用率のボタンを作ってから、それをコピーペーストしてコマンド部分など必要なところを書き換えて作ると手間が省ける。

最後にもう一度、今度は大きなスクリーンショットをどうぞ (笑)

いい感じでしょ?

皆さんもぜひどうぞ。

コメント

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