- symon 20170224.33(in MELPA)
- tiny graphical system monitor
概要
1日のレビュー当初から大幅に進化し、
グラフィカル化した上、表示内容をカスタマイズできるようになりました!!
symon.el はEmacsで動く グラフィカル システムモニターです。
GNU/LinuxとWindowsとCygwinに対応しています。
現時点ではMac未対応ですが、
コードを読めば対応できるようになっています。
一定時間Emacsを操作しないと、図のように
メモリ使用量 、 CPU使用率 、 バッテリ残量 、
*受信・送信パケット量*(NEW) を表示します。
デフォルトでは2秒間(symon-delay)操作しない場合に
3秒間隔(symon-refresh-rate)で表示します。
グラフの大きさについては、以下の変数を設定し、
「実行方法」にあるように別のEmacsで表示テストをしてください。
- symon-sparkline-height
- symon-sparkline-width
- symon-sparkline-ascent
- symon-sparkline-thickness
そしてお気に入りの設定を見付け次第、init.elに加えましょう。
Fig1: 古いスクリーンショット
Fig2: 新しいスクリーンショット
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてsymonを使う方は
以下のコマンドを実行します。
M-x package-install symon
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name symon
設定 150210061315.symon.el(以下のコードと同一)
(require 'symon) ;;; 表示する情報 (setq symon-monitors ;; 現在時刻も追加! (cons 'symon-current-time-monitor (cond ((memq system-type '(gnu/linux cygwin)) '(symon-linux-memory-monitor symon-linux-cpu-monitor symon-linux-network-rx-monitor symon-linux-network-tx-monitor)) ((memq system-type '(windows-nt)) '(symon-windows-memory-monitor symon-windows-cpu-monitor symon-windows-network-rx-monitor symon-windows-network-tx-monitor))))) ;;; グラフの高さ(pixel) (setq symon-sparkline-height 20) ;;; グラフの長さ(pixel) (setq symon-sparkline-width 80) ;;; グラフの位置 (setq symon-sparkline-ascent 100) ;;; グラフの太さ (setq symon-sparkline-thickness 2) ;; (symon-display) (symon-mode 1)
実行方法
$ wget http://rubikitch.com/f/150210061315.symon.el $ emacs -Q -f package-initialize -l 150210061315.symon.el
他の情報も表示したい
システムモニターといえば、他の情報も表示したくなるかもしれません。
表示内容は symon-monitors 変数で設定します。
内容を定義するには define-symon-monitor マクロを使います。
キーワードがいろいろ使えます。
- index
- 見出し
- unit
- 単位
- sparkline
- グラフの表示
- fetch
- 値(デフォルトで百分率)
- setup
- 初期化処理(symon-mode有効時に実行)
- cleanup
- 後片付け処理(symon-mode無効時に実行)
- annotation
- 追加情報文字列
- lower-bound
- fetchの最小値(デフォルト0)
- upper-bound
- fetchの最大値(デフォルト100)
GNU/Linuxでのバッテリ残量は以下のように定義されています。
(define-symon-monitor symon-linux-battery-monitor :index "BAT:" :unit "%" :sparkline t :fetch (when battery-status-function (read (cdr (assoc ?p (funcall battery-status-function))))))
一方、グラフを使わない情報についてはdisplayキーワードを使います。
現在時刻を表示するモニタは以下のように定義されています。
(define-symon-monitor symon-current-time-monitor :display (format-time-string "%H:%M"))
このようにdisplayに書かれた内容を評価して表示します。
よって、Emacsの状態をモニタするのは、上の例をパクればいいだけです。
モードラインじゃ狭すぎて表示しきれない場合に対応できます。
mode-line-format と同じフォーマットの変数
symon-additional-info-format を用意し、設定すれば、
第二のモードラインのように使えます。
(defvar symon-additional-info-format nil) (define-symon-monitor symon-additional-info-monitor :display (format-mode-line symon-additional-info-format)) (push 'symon-additional-info-monitor symon-monitors) (setq symon-additional-info-format '("" (auto-fill-function "Fill")))
他のシステムに対応させるには
Macにも対応させるには、
- symon-darwin-memory-monitor
- symon-darwin-cpu-monitor
- symon-darwin-network-rx-monitor
- symon-darwin-network-tx-monitor
関数を定義し、
symon-monitors 変数に
((memq system-type '(darwin)) '(symon-darwin-memory-monitor symon-darwin-cpu-monitor symon-darwin-network-rx-monitor symon-darwin-network-tx-monitor))
の項目を書き加えます。
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。