読者です 読者をやめる 読者になる 読者になる

本しゃぶり

骨しゃぶりの本と何かを繋げるブログ

闇の通知デスクトップ〜究極のデスクトップを求めて

作ったもの

f:id:honeshabri:20140530210819p:plain

はてなユーザーid:honeshabriさんのデスクトップはカスタマイズにありがちな問題を解決したものとなっています。一生懸命カスタマイズをしても、結局ブラウザを開きっぱなしで意味が無い。また、凝ったデザインの時計やカレンダーをセットしても目線はついメニューバーへ行く。そんな経験は人種にかかわらず誰もが通る道です。しかしその道の先にこそ究極のデスクトップがあるのです。彼のデスクトップはそのゴールの一つと言えるでしょう。

honeshabriさんは常に情報が表示されるようにするために『GeekTool』のフロート機能を使うことにしました。そして邪魔にならないために表示させる情報は絞り、ミニマルに徹することにしました。「メモ」「天気」「CPU使用率」「空きメモリ」の4つです。

Macで同じようなデスクトップを作成したい、と思う方は下記が必要です。



  • 壁紙:任意のもの。どうせ見ません。
  • メモ:GeekToolでテキストファイルを表示。テキストファイルはメモ用Twitterアカウントで更新されるようになっています。(連携にはIFTTTを使用。)
  • 天気:GeekToolで天気画像を表示。みんなやりたがるので方法はググればすぐに分かります。また、気温や明日の天気はメモにも表示されます。
  • CPU使用率:キャラクターの肌の色で判断します。これはGeekToolで行っています。ギークレットはオリジナルのものです。
  • 空きメモリ:キャラクターの表情で判断します。表情を変えるのはもちろんGeekToolで。
  • キャラクター:『ToLOVEる』から金色の闇。以前に使ったやつの再利用だそうです。
  • メニューバー:セカンドディスプレイなので設定で消せます。

honeshabriさんによると、キャラクターの状態によるシステム監視については「慣れればわかる」とのことでした。自分で設定したものなので当然でしょう。キャラクターを使うことにこだわらず、アイコンなどに差し替えれば他人に見られても引かれる危険性は減ると思われます。

GeekToolやギークレットの設定がうまく行かないという方はGeekToolガイドデスクトップスレッドを参考にしてみてください。大抵の方は英語を見ただけでそっ閉じします。

あらゆるシステム状況を監視するデスクトップを作ってみたら、一番システムに負担をかけているのはGeekToolだった、という方はぜひブコメ教えてください。Twitter連携して広めるのもお忘れなく!

honeshabri (原文/訳:骨しゃぶり)


解説

というわけで久しぶりにGeekToolで遊んだから究極のデスクトップを求めてっぽく書いた。最近新作が全然ないのは人気が無いからなのだろうか。本家では今でも更新されているのに。まあそれは置いといて軽く解説していく。

ギークレットはこんな感じにセットされている。

f:id:honeshabri:20140530224002p:plain

中央にあるのがCPUとメモリの監視用。これ自体は何も表示しない。そして右隅には奥から順に「ホワイトボード画像」「天気アイコン」「テキスト」「CPU使用率(キャラの体)」「空きメモリ(キャラの表情)」が重なり合っている。画像をキレイに重ね合わせるには、まずレイヤー機能のあるペイントソフトで完成状態を作り、それを別々にpngで保存。そしてGeekToolで配置する時にサイズと座標を同じ数値にしてやればいい。

続いて個々の要素について説明していく。

ホワイトボード

上で説明したように、ホワイトボードには天気アイコンとメモが表示されている。まずはこれについて。ホワイトボード表示のきっかけは、この記事で作った壁紙を見ていて「どうせ見せるならパンツより役に立つものを見せろよな」と思ったから。

天気アイコンはGeekToolだけでも表示可能だが、実はこれもIFTTTを利用している。理由はIFTTTによるDropboxの連携で何ができるかやってみたかったからだ。レシピはこれ。
IFTTT Recipe: weather icon connects weather to dropbox

Dropboxに入った天気アイコンをGeekToolで参照するという形だ。が、残念ながらこれだけではうまくいかない。IFTTTで同名ファイルが追加されるときちんと別名で保存されるのだ。なのでAutomatorのフォルダアクションで移動させている。マジで無駄。

さらにIFTTTの天気は俺の住んでいるところをカバーしていない。仕方がないので近所の市の天気を表示させているのだが、そのせいで外は晴れているのに表示はThunderstormsになっていることがある。画面より外見たほうが賢い気がする。

メモのレシピはこれ。 IFTTT Recipe: tweet log connects twitter to dropbox

Twitterを利用しているおかげで外出先でもメモのチェックや追加ができる。ついでにツイートをテキストファイルだけではなく、Evernoteにも吐き出すようにしているので検索性もそれなりに高い。多分そのうち役に立つ。

CPU使用率

ただキャラが突っ立ているだけというのも面白く無いので意味をもたせることにした結果が、システム状態による外見の変化だ。CPU使用率は肌の色で判断する。使用率が高まると赤くなっていく。こうした理由は単純にCPU使用率が高まると熱くなり、ファンが回り始めるからだ。人間だって頭を使いすぎると熱を出す。実にわかりやすい。

ギークレットはこんな感じ。

free=`top -l 2 | grep "CPU usage" | tail -1 | awk '{printf "%.0f", $7+0}'`  
let usedCPU=100-$free  

CPUpic=アドレス/cpu.png  
CPUlevel=`expr ${usedCPU}  / 20`  

cp -a アドレス/cpu${CPUlevel}.png $CPUpic  

unset usedCPU  
unset CPUpic  
unset CPUlevel  

使用率の段階によって変えるcpu*.png(*は0~5)という画像ファイルを用意しておき、それをCPU使用率に合わせてcpu.pngという名前でコピーを行う。そして別に用意したギークレットで表示させるというわけだ。もっとうまい方法がある気もするが、知識がないので分からない。しょせんこれも既存のやつを何となく変えただけだし。正直もっといい方法があるなら知りたい。

空きメモリ

CPU使用率を肌で表現するのはすぐに考えついたのだが、メモリについては少し悩んだ。最初はキャラが金色の闇なので、メモリ使用量に応じてトランスさせようかと考えた。しかし他のキャラに変更したくなった時にまた考えるハメになる。それは嫌なので普遍的な表現にしたい。そこで表情を変化させることにした。だが顔全体を変えるのは面倒なので「目」だけにする。目は口ほどにモノを言う。二次キャラは目が大きいからなおさらだ。これで十分だろう。

続いて問題になるのが「メモリの使用量が多い時どんな顔をすればいいかわからない」というものだ。同じコンセプトの先行例であるMacFaceでもスキンの作者によってその辺は違っていた。なので俺が考える。メモリ管理の仕組みから出発し、原理原則に基づいた表情変化を決める。

メモリの使用量を監視する目的は、スピード維持のためであり、空き容量の確保を目的とする。そしてメモリの空き容量が減ると遅くなってしまうため、人はメモリを解放することでスピードを戻そうとする。このメモリ解放だが、単純にアプリを終了させて確保する方法と、メモリ解放アプリを用いて開放させる方法が主である。この内メモリ解放アプリで解放しているメモリとはどのようなものなのか。

MavericksでわかりにくくなってしまったのでMountain Lionの表示で説明する。

f:id:honeshabri:20140531205359p:plain

空き:使われていない RAM のサイズです。

固定中:Mac のドライブに移動できない RAM の情報 。固定中メモリのサイズは、実行中のアプリケーションによって異なります。

現在使用中:RAM 内にあり、最近使われた情報です。

現在非使用中:この情報は最近使われて RAM 内にありますが、現在は使われていません。

アクティビティモニタでシステムメモリを表示し、RAM の使用サイズを確認する (OS X Mountain Lion 以前)

この中で解放されるのは「現在非使用中」のメモリ、つまり以前使っていたアプリによる残りカスみたいなものだ*1。この残りカスを捨てるのがメモリ解放アプリの役割なのである。したがってメモリ管理に適した表情とは以下となる。

活動することで生成された不要物が蓄積され、活動の邪魔になっていく表情

これを段階的に表現できればいいわけだが、こんな面倒そうなのを手本も無しに作れるか。なのでググってみる。さすがはgoogle先生。ちゃんと見つけ出してくれた。

トイレの前でデフェンスしまくった結果 by 夏樹テル on pixiv

ネットは広大だわ。俺の考えをそのまま絵にしてくれている人がちゃんといる。というわけでこの方向で作ることにした。とは言っても俺に絵を描くスキルは無いのでコラで済ませる。ここでアニメのメインキャラを使用した意味が出る。様々な表情の素材がたっぷりある。

表情が決まったところでギークレットを貼る。

freeMem=`top -l 1 | awk '/PhysMem/ {print $6}' | sed s/M// `     
limitMem=3072  
MEMpic=アドレス/mem.png  

if ${limitMem} -le ${freeMem} ; then  
     MEMlevel=0  
else  
     MEMlevel=`expr \( ${limitMem} - ${freeMem} - 1 \) / \( ${limitMem} / 5 \) + 1`  
fi  

cp -a アドレス/mem${MEMlevel}.png ${MEMpic}  

unset freeMem  
unset limitMem  
unset MEMlevel  
unset MEMpic   

やっていることは基本的にCPUのと同じ。俺のMacの場合だいたい3GB空いていれば快適なので、それからどれくらい足りないかわかるようにした。

できた

というわけでCPU使用率と空きメモリの組み合わせで6パターンを一覧にしてみた。

f:id:honeshabri:20140531220925p:plain

まあいいんじゃあないかな。

使ってみた

負荷をかけるような作業をすると辛そうな顔になるので、PCの負担が「数値」でなく「心」で理解できる。 悪くない。

今回修正をするためにペイントソフトを使っていると、メモリを食うので表情がどんどん辛そうになっていく。「すまぬ、すまぬ」と思いながらあとちょっと我慢してくれと作業をしていたらペイントソフトが落ちた。彼女はさっきと違い、スッキリとした表情をしていた。

S.H.フィギュアーツ 金色の闇

S.H.フィギュアーツ 金色の闇

*1:非使用領域の内容は再利用することもあるが、それも含めてこのアナロジーは間違っていない。シドニアの騎士を見ろ。