もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

Ubuntu15.10でterminologyを使う

ふと、mikutterをBot的に使うために必要最低限のパッケージで構成したコンテナを作りたいなと思いました。

ベースは Ubuntu Server15.10(大好き)。

vnc経由で軽量なウインドウマネージャと適当なターミナルを使えるようにして、後はmikutterのインストールかなと。

ウインドウマネージャはFluxbox。ターミナルはUbuntu15.04からパッケージ化された未来的オシャレ端末terminologyにしました。

そこでちょびっとハマった時のメモです。

terminologyがFluxboxのメニューに出てこない!

次のコマンドでFluxboxとterminologyをインストールしました。

apt-get install fluxbox terminology

しかし、Fluxboxのメニューにterminologyが追加されませんでした。

試しに別のターミナルxterm、gnome-terminalを入れるとメニュー登録される。
逆にデスクトップ環境XFCE4を導入するとterminologyがメニューにちゃんといる。

謎。

UbuntuにおけるGUIメニューシステム

調べてみると、Ubuntuにはアプリケーションをデスクトップ環境のメニューに追加する仕組みが大きく2系統あることがわかりました。

freedesktop.org

デスクトップ環境を設計する上で、守ったほうがいいお約束をfreedesktop.orgと言う団体がまとめています。
このお約束に沿っていれば、例えばGTK製アプリとQtアプリで連携が取れるようになったり、各種設定ファイルがGnomeKDEで共有出来たりします。

ランチャーのメニュー項目についてもfreedesktop.orgに規定があり、アプリケーションはメニュー項目を定義した*.desktopファイルを用意することで、freedesktop準拠のデスクトップ環境のメニューにアプリケーションを登録できます。

先ほどのXFCE4も freedesktop.org準拠のデスクトップ環境です。

Debian Menu System

とは言え、昔ながらのデスクトップ環境(とかランチャー付きのウインドウマネージャ)はfreedesktop.orgに準拠していないものも多いです。

これらのデスクトップ環境では、ユーザ自身がメニュー定義を編集してアプリケーションを登録する必要があります。

それはさすがに面倒だよねということで、Debian系のディストリビューションにはDebian Menu Systemと言う仕組みがあります。

これはfreedesktop.orgのdesktopファイルと同等に、アプリケーション提供側がメニューファイルを用意します。
そしてupdate-menuコマンドでメニューファイルを元に各種デスクトップ環境用のメニュー定義が生成できるというものです。

古き良きBlackbokの流れを組むFluxboxはこっちのグループです。

つまり

今回のterminologyのパッケージにはfreedesktop.orgのterminology.desktopは収録されていたけれど、Debian Menu Systemのメニューファイルが入っていなかったのが原因です。

対策

Debian Menu Systemのメニューファイルを書きました。

/usr/share/menu/terminology

?package(terminology): \
        needs="X11" \
        section="Applications/Terminal Emulators" \
        title="Terminology" \
        command="/usr/bin/terminology" \

めっちゃかっこいい

無事、Fluxboxでterminologyが起動できました。
カーソルが怪しい青白の光を放っていたり、ベルの代わりに赤色灯が回ったりします。
Fluxboxのテーマともあつらえたように合ってますね。かっこいい。

f:id:moguno:20160214222225p:plain