2021/04/25

M1 mac 用のSoC温度モニタ作った

ないなら作る.

Intel mac では bitbar(今はxbar)[1] と smcFanControl を使ってツールバーにCPUの温度を表示していた[2]. しかし smcFanControl は M1 mac には非対応なので使えない.

ということで, M1 mac で温度モニタできるようにする. xbar をそのまま利用するのであれば, コマンドラインから温度が取れればOK. ソースコードは以下.

sensor.m - gist.github.com

M1 mac で温度モニタするツールは先駆者がいたので[3], それをもとに "SOC" の温度だけ抜き出して, 平均を取るようにした. ソースコードでいうと L. 148-166 の dumpValues の中身を変更した. Object C なんてなんもわからん. シェルが得意であればもとのソースコードのままシェルで整形できるんだろうな.

あとはコンパイルして

$ clang -Wall -v sensor.m -framework IOKit -framework Foundation -o sensor

シンボリックリンク作るだけ.

$ ln ./sensor /usr/local/bin/sensor

温度取るほうでほとんど整形してあるので, xbar で値を表示するスクリプトは単位つけるだけ. 拡張子の前の 20s は更新間隔. 20秒にしてある.

temp_scan.20s.sh

#!/bin/bash
LABEL="℃"
data=$(/usr/local/bin/sensor)
echo "${data}$LABEL"

xbar を起動して設定からスクリプト (temp_scan.20s.sh) があるディレクトリを選択する.

0 件のコメント:

コメントを投稿