自分のPCの壁紙を作っている

このエントリはWCDI Advent Calendar 2018 – Adventarの24日目の記事です。

クリスマスらしいことをしていないことに気づいたので、昨日はスーパーで大きいチキンを2つ買って食べました。冷たかったですが私は元気です。

macBookを修理に出した時にデータが全て吹き飛んでしまったので、パーティションを切り直してLinux(ArchLinux)とのデュアルブートにしました。

自分はAwesomeというWMを常用していたので、これを使っているのですが、このWMを前に使っていたThinkpad X220とは画面の解像度も合わないので、以前作ったテーマは完全に放棄してまた作り直しから入っています。

壁紙はデフォルト

その一環で、壁紙が欲しくなりました。

なので壁紙(?)を制作しています。おとといから。

完成する頃には年を越して、さらに(現在の学生の身分から)卒業して書く機会を失いそうなので、今のうちに書いておきます。

画像の上にいろいろ乗っている検索バーとかも全部「壁紙」?です

Vue.js + Electronで動作しています。

Vue.jsの特徴である「コンポーネント」として分けて開発することで拡張を容易にしながら、
Electronの特徴である「Webアプリケーションでありながらファイル入出力ができる」「node.jsでできることが大体できる」点を使って、サクサクっと開発しています。

ちゃんと分けてる

Angular.js・Reactでは重量すぎて開発効率に難があり、Polymerはまだ不安定なのでVue.jsを選択し、Webの枠を飛び越えて、 /sys の中身を使ったコンポーネントを作成したい・・・などと考えた結果Electronでの実装に至りました。

Webを使った理由は、「GTKを直接+ラッパーを使って触りたくない病」「Qtを直接+ラッパーを使って触りたくない病」にかかってしまった影響です。
C++使いたくない・・・PythonでPyQtとか使いたくない・・・

ただ単に画像を貼るだけではなく、ウィジェット的な機能も与えたかったので
ウィジェットは一つのビュー、ならコンポーネントとして扱えれば楽じゃない?という発想もありました。

ウィジェットの例
ちゃんと入力もできますし、検索ボタンを押すとブラウザが開いて検索できます。

とりあえず寝る前に眠くなるまで開発したり、移動中の暇な時間に開発したりして、日進月歩で開発を勧めています。

だいたい「あっ、今これ見たいな・・・」と思った時にコマンドを叩いて、「これいつでも見れると良いな」と思ったものをプログラムに起こすという手順で作っています。

(京王ライナーに乗りながら、「椅子に座ってパソコンを見ながら次の駅がわかると良いな」と思ってコンポーネントを作成(してそのまま放置)したり、電源が使えない環境で「今どのくらい電力を使ってるんだろう」というのが気になってコンポーネントを作成(これは完成)したり・・・)

開発途中で完全に止まっている図

なので見ての通り実装してある機能に明らかな偏りがあります。
実際これを書きながら「あっバッテリー残量ないじゃん」とか「メモ帳の機能ほしいなあ」とか「CPUはあるけどメモリの使用率はないよね?」とか思ってます。

コンポーネントとしての考え方をちゃんと使い始めたのもほんの5時間前からで、それも同僚にぶん殴られるような使い方をしているので今後改修していきます。

そもそもvue.jsを触ったのは2回目で、しかも前の知識がすっぽり抜けてしまっているので仕方がないですね。(???)

とまあ私事を話してまいりましたが、機能についてここで説明するのもアホらしいですし、エンジニアならコードで対話しろ!という私の思惑があるので、
以下のリポジトリにコードを置いていきました。

足りない・欲しい機能があればIssueを、実装した機能があればPull Requestを飛ばしてもらえると喜びます。あと開発中に癒やされるCC0な画像があればそれも歓迎です。癒やされながら開発します。
以上、ご査収の程よろしくお願い致します。

https://github.com/acque2two/acwall

(人様にお見せできる状態になるまではコードは手元で管理しますが、いい感じになってくればpushします・・・

このソースはGPLです。

Leave a Reply

Your email address will not be published. Required fields are marked *