自分がお気に入りのLinux mint cinnamon Editionにはdeskletというガジェット機能があります。 こいつの開発手法が国内国外問わず殆どないため、試行錯誤しながら現在学んでいるのですが。 ある程度分かってきたのでメモを残していこうと思います。 とりあえずいつか自作deskletを一般リリースしたいものだ。

deskletとは

deskletとはwindows7まであったデスクトップガジェットみたいなもの。 あれはセキュリティ的な理由から排除されてしまいましたが。 MacのDashboardとは違いデスクトップに常駐するので、別スクリーンに切り替えても当然表示されています。

言語

deskletはJavaScriptとCSSで書かれています。 cinnamonのベースとなるGNOME3のgnome extensionがJavaScriptで書かれていますし、その延長線にあるものですね。 そのためWebの知識があれば飲み込みは早いです。

インタープリタ

deskletはCJSというツールで実行されます。 こいつはGNOME3のGJSをベースに拡張されたもの。 元々はSpiderMonky、Firefoxのエンジンがベースですが。 そのためCommonJSのrequireなんかは使えないですが、ES6あたりの記法はだいたいサポートされている感じですね。

Shell Toolkit

deskletではこいつを使ってGPUレンダリングします。 書き方はswingとかに近く、Buttonオブジェクトをコンテナにバインドする、という感じ。 ただこいつだけじゃなくてClutterおよびGtkも知ってないと色々こんがらがります。 ClutterというGPUレンダリングオブジェクトを継承したものなので。 とりあえずまずはこんなものか。 次回に続く。 第二回