cpufreqdのプロファイル手動切り替え/モード切り替え用システムトレイツールをC言語のGTK+で作り直し
以前「cpufreqdの手動プロファイル変更ツールをシステムトレイ常駐型に」でPyGTKを使用してcpufreqd-manual-systrayというシステムトレイツールを作成していたのだが、これはcpufreqdに付属しているcpufreqd-getとcpufreqd-setというコマンドを利用するものだった。
これらのソースを見ていたら、cpufreqdはUNIXドメインソケット*1による遠隔コントロールインターフェースを持っていて、上記コマンド群はそれを利用してコマンドを送っているだけということが分かった。
そこで、最近見つけたValaを利用してcpufreqd-manual-systrayと同等のツールを作成しようとしたのだが、(バージョン0.7.2の時点では)Vala標準のバインディングではソケット関係の処理がうまく移植できなかった*2ため、予定を変更してC言語で直接作成することにした。
コード本体からビルドシステムなどに渡り色々と面倒ではあったが、libnotifyのバルーン通知も含め一通りの機能を付けて完成させることには成功し、アプリケーション名をcpufreqd-iconとして
http://kakurasan.ehoh.net/software/cpufreqd-icon/
で公開した。
一番変わった点はアイコンのメニューを出す度に毎回プロファイル一覧をソケットから取得し、現在アクティブな項目の情報も含めてメニューを作成しているところで、デーモン側の状態変化に対応できるようになった。毎回一覧を取ってメニューを生成してはいるものの、動作は軽い。
使用するには
- /etc/cpufreqd.confで「enable_remote=1」の設定が記述されている
- 同ファイル内の「remote_group」に書かれているグループにユーザが属している
の条件を満たす必要がある。
(2014/9/22)GNIOと関連URLのリンク先を修正
関連URL:
- Manpage of UNIX
- docs.sun.com/app/docs/doc/819-0392/portmapper-51908?a=view - Solaris 10 Software Developer Collection プログラミングインタフェース 付録 A UNIX ドメインソケット (リンク切れ)
- libnotify APIリファレンス
*1:同一マシン上のプロセスどうしでの通信に使用できる特殊なファイル
*2:http://web.archive.org/web/20090614174108/http://live.gnome.org/Vala/GNIOSample のGNIOというライブラリが使えそうではあったのだが、依存パッケージが増えるのと2009年5月現在でのリリース版がないのとで使用しないことに