openboxをカスタマイズする

2021年版,書きましたので,そちらもご参照ください。 

silverbirch.hateblo.jp

PCは,とにかく軽くて軽快に動作するのが一番だと思っていろいろ試してきました。私の愛機は,iMac Late 2009なので,購入からほぼ丸9年が経過しております。

その間,OSがアップデートされるたびに,動作がなんとなくもっさりした感じになり,9年前に購入したときのSnow Leopardに比べて,OSが何かめざましく進化したような印象もなく,だったらSnow Leopardのままでいいのではないかという素朴な疑問が・・・。

そんな折,ふと目にしたネット上の記事で,軽量なLinuxディストリビューションを試してみる気になり,まずはVirtualBoxにインストールしてみました。確か,とにかく「軽い」をキーワードに検索して,watOS R8だったかな?

驚いたことに,仮想環境上のwatOSの方が,ホストOSのOS Xよりも動きが軽快・・・。ゲストOSの方が軽いとはありえなくないか? watOS,何か決定的に使い勝手が悪いということもなく,OS Xは一体何にリソースを使っているのでしょう???

そうやって始まったLinux遍歴。VirtualBox上のLubuntu,軽いけど見た目が悪すぎるな・・・→Xubutu,ネイティブに動かしたいな・・・→Xubuntuとのデュアルブート,なんかArch Linuxかっこよっさそうだな・・・→Arch Linux,パッケージをアップデートすると頻繁に不具合がでるな・・・,→Xubuntu,といろいろ遍歴を重ね,現在は

  • macOS(めったに起動しない)
  • Arch Linux + LXQt (メイン)
  • Xubuntu (Archで不具合が出たときに,不具合が修正されるまで避難)

というトリプルブート構成になっております。OS Xのもっさりに頭にきてメモリを造設して12GB積んでいるせいか,Linuxの方はまったくキビキビそのもので,40代後半の私,死ぬまでにPCを買い換えなければならないことが出てくるのだろうかという不安さえ覚えます。SSDに買えたいなぁとかいうプチな欲望はあるものの,超現役で使えるこのiMacを捨てるのが忍びないです。

それで,ここからが本題で,軽さを追求していくと,デスクトップ環境も要らなくない?という発想に行き着くわけです。LXDEやLXQtはウィンドウマネージャにopenboxを使っていますが,これはデスクトップ環境なしで使えます。ディスプレーマネージャでデスクトップ環境ではなく,openboxのセッションを選んでログインすると,openboxセッションで起動します。

パネルも,デスクトップ上にファイルやフォルダを置く(表示させる?)こともできません。GUIのアプリケーションはデスクトップ画面上で右クリックすると現れるメニューを使って起動しますが,このメニュー,自分で項目を追加しないといけません。親切にデスクトップファイルを解析して,メニューとして表示してはくれないのですね。

ただ,ちょっとカスタマイズしたら,見栄えも良くなり,操作も慣れてしまえばシンプルでむしろごちゃごちゃしてなくていいかも!と思い,最近はもっぱらopenboxです。こんな感じです。

 

カスタマイズ後のデスクトップ

f:id:liveonprana:20181107133548j:plain

 

f:id:liveonprana:20181112124949j:plain

実にスッキリ!

起動が早い!デスクトップマネージャのログイン画面が表示されるまで30秒,ログイン後数秒で起動が完了します。

以下,Arch Linuxでのカスタマイズ記録です。

openboxセッションでログイン

デスクトップマネージャの画面でopenboxを選んでログインするだけ。lubuntu,LXDE,LXQtなんぞをインストールしていると,openboxもインストールされているので,何もせずにセッションにopenboxが出てくるはずです。

壁紙

壁紙の変更は,デスクトップ上で右クリックして,設定用のGUIを呼び出すというのが,古今東西普遍的なユーザーインターフェースだと思いますが,openboxでそれをやるとメニューが出てくるだけなのですね。デスクトップ画面設定用のGUIで壁紙を選んでも反映されません。壁紙を描写しているデスクトップ環境が動いてないからでしょうか?

 そこで,X ウィンドウ向けの高速で軽量なデスクトップ壁紙ブラウザ・設定プログラムであるnitrogenをインストールします。

右クリックすると,ターミナルだけはデフォルトでメニューにあると思います。ターミナルから sudo pacman -S nitrogen でインストールして,nitrogenとだけタイプしてコマンドを実行すると,壁紙を選ぶGUIがたちがあります。

Preferenceボタンをクリックして設定ダイアログを開き,Addボタンで壁紙の画像ファイルがあるディレクトリを追加して,OKボタンをクリックすると,最初の画面で画像が選択できるようになります。後は,選んでApplyをクリックするだけ。

ただし,これだけだと,起動時はいつも真っ黒の画面なので,前に表示させた壁紙の画像を回復させるnitrogen --restoreコマンドを実行する必要があります。面倒なので,後述するautostartに記述します。

オートスタート

~/.config/openbox/autostart に起動させたいアプリケーションを記述せよ,ということだそうで。

私の場合,

xinput --set-prop 'USB Optical Mouse Mouse' 'libinput Natural Scrolling Enabled' 1
setxkbmap -model jp106 -layout jp,us &
nitrogen --restore &
fcitx &
dbus-launch dropbox start &
onedrive --syncronize &
amixer sset Master 0%

としております。上から順番に,マウスホイールの方向を逆にする,キーボードのレイアウトを日本語にする,壁紙のリストア,fcitxの起動,ドロップボックスの起動,OneDriveの起動,スピーカーのボリュームをゼロに(いきなり動画を再生されて恥ずかしいので),にしています。

メニュー

これが一番面倒でしょうか。メニューは~/config/openbox/menu.xmlを編集します。

構造は,

<openbox_menu>

  <menu id="apps-accessories-menu" label="Accessories">

    <item label="ラベル">

      <action name="Execute">

        <command>command</command>

      </action>

    </item>

  </menu>

  ・・・・・・・・・・

<menu id="root-menu" label="Openbox 3">
  <separator label="Applications" />

  <menu id="apps-accessories-menu"/>
  <menu id="apps-editors-menu"/>
  <menu id="apps-graphics-menu"/>
  <menu id="apps-net-menu"/>
  <menu id="apps-office-menu"/>
  <menu id="apps-multimedia-menu"/>
  <menu id="apps-term-menu"/>
  <menu id="apps-fileman-menu"/>

  <separator label="System" />
  <menu id="system-menu"/>
  <separator />
  <item label="Log Out">
   <action name="Exit">
     <prompt>yes</prompt>
   </action>
  </item>
</menu>

</openbox_menu>

 みたいになっていて,

<menu id="root-menu" label="Openbox 3">・・・</menu>の間に,右クリックした際に表示されるルートメニュー,上の方にある<menu id="apps-accessories-menu" label="Accessories">・・・</menu>の間に,それぞれの項目のサブメニューを記述するのだろうというのは想像できます。

ただ,これを全部手作業でやるのは面倒ですし,ObmenuというGUIの設定ツールもありますが,それも面倒なので,既存のLXDEなどのメニューからリストを取得して自動で表示させるようにします。

archlinux-xdg-menuパッケージをインストールする必要があります。

まず,

<!-- <menu id="apps-accessories-menu"/>
<menu id="apps-editors-menu"/>
<menu id="apps-graphics-menu"/>
<menu id="apps-net-menu"/>
<menu id="apps-office-menu"/>
<menu id="apps-multimedia-menu"/>
<menu id="apps-term-menu"/>
<menu id="apps-fileman-menu"/> -->

既存のルートメニューのところを<!-- -->で囲ってコメントアウトします。

次に,

<menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/lxde-applications.menu" />

を挿入します。これは,/etc/xdg/menus/ディレクトリ内のLXDEのメニューを参照して,メニューを表示させるものです。

これだと,お目当てのアプリケーションを起動させるのに数クリックが必要になるので,よく使うアプリについてはルートメニューにアイテムを追加します。

<menu id="root-menu" label="Openbox 3">
 <separator label="Applications"/>
  <item icon="/home/example_user/.icons/macOS/apps/128/Terminal.png" label="Terminal">
   <action name="Execute">
    <execute>xfce4-terminal</execute>
   </action>
  </item>
  <item icon="/home/example_user/.icons/macOS/apps/128/file-manager.png" label="File">
   <action name="Execute">
   <execute>pcmanfm</execute>
  </action>
 </item>
 <menu execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/lxde-applications.menu" id="lxde-applications" label="LXDE-applications"/>

・・・・・・

そして,ルートメニューのSystem->Reconfigure Openboxを実行して,修正を反映させると,上記のようなメニューになります。

詳しくは,ArchWiki本家のドキュメントを参照してください。

Bluetoothの調子がおかしい

Bluetoothキーボードとトラックパッドの接続にBluemanを使っていますが,openboxセッションで起動するようになったせいか,起動時に複数回パスワードの入力を求められるようになりました。そのときは面倒だなと思うくらいでしたが,そのうち接続が不安定になりはじめました。

しらべたところ,似たような症状のお話がちらほら。

github.comこの記事,難しくてよく分かりません。とりあえず,最後の

Nevermind, I figured it out. I just created a new file /etc/polkit-1/rules.d/90-blueman.rules with the content over here: https://github.com/blueman-project/blueman/wiki/PolicyKit

ポストを拠り所に,

PolicyKit · blueman-project/blueman Wiki · GitHub

のページにある

/* Allow users in wheel group to use blueman feature requiring root without authentication */
polkit.addRule(function(action, subject) {
    if ((action.id == "org.blueman.network.setup" ||
         action.id == "org.blueman.dhcp.client" ||
         action.id == "org.blueman.rfkill.setstate" ||
         action.id == "org.blueman.pppd.pppconnect") &&
        subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

を,/etc/polkit-1/rules.d/90-blueman.rulesとして保存しました。そしたら,パスワードの入力を求められることもなくなり,接続もできるようになりました。

おかしくなったのは,おそらく,しらない間に,二度とこのダイアログを表示しないにチェックを入れて,パスワードの入力をキャンセルしちゃったのではないかと想像しています。

なぜかQtアプリケーションのフォントがおかしい

これはopenboxに限った話ではないかも知れません。ふと気がつくと,ツールキットにQt4を使用しているアプリケーションのフォントが等幅フォントで表示されていて,非常に見苦しい。

GTK+とQtの見た目の統一には,QGtkStyleを使っています。GTKのフォントにはもちろんプロポーショナルフォントを指定しています。

原因はよくわからないのですが,英語版のArchWiki

If your preferred theme has inconsistent rendering after configuring Qt to use GTK+2, install gtk-theme-switch2 and choose a theme.

Qtの設定の後にGTK+2を使うのに,選択したテーマのレンダリングが一貫していないときは,gtk-theme-switch2をインストールして,テーマを選んでください。

 日本語のwikiにはない記述です。

というわけで早速パックマンしてみました。だいたいこれだけしか書いていないので,gtk-theme-switch2というものが何物でどうやって起動するのかもよく分かりませんでしたが,適当にググって,ターミナルからパッケージ名を打ち込んだら,小さいウィンドウが開いて,テーマを選ぶようになっています。これでArcを選んだら,フォントの表示は直りましたが,今度はアイコンテーマが強制的にAdwaitaに変更されている・・・。今度はlxappearaceからmacBuntu-OSを選び直して,無事思う通りの表示になったかと思うと,ふとした拍子に表示がおかしくなったり。よくわかりません。そのうち追求したいと思います。

それとQt5。環境変数QT_QPA_PLATFORMTHEMEをgtk2に設定する必要がありますが、openboxで環境変数をセットするのは~/.config/openbox/evironmentファイルです。