WSL + Openbox でミニマルなデスクトップ環境を構築する


## この記事の目的
* XLaunch を使用していて、Multiple windowsだと全画面に表示されてしまいウィンドウサイズが調整できないアプリがあるので One large windowで稼働したい
* でもXfce 4ほどのリッチなGUIは要らない。スペック的に余裕がない
* そんなミニマリストなあなたにOpenbox

## 前提条件
自分で調べてね

* WSL2をインストールしている
* XLaunch をインストールしている
* UbuntuのWSLパッケージをストアからインストール済である。

XLaunchのコンフィグは以下のものを使用しました。

```config.xlaunch 
<?xml version="1.0" encoding="UTF-8"?>
<XLaunch WindowMode="Windowed" ClientMode="NoClient" LocalClient="False" Display="0" LocalProgram="xcalc" RemoteProgram="xterm" RemotePassword="" PrivateKey="" RemoteHost="" RemoteUser="" XDMCPHost="" XDMCPBroadcast="False" XDMCPIndirect="False" Clipboard="True" ClipboardPrimary="True" ExtraParams="-ac -nowgl -xkblayout jp" Wgl="True" DisableAC="False" XDMCPTerminate="False"/>
```

## 1.とりあえずアップデートする

UNIXアカウントを作成したらとりあえずアップデートしましょう。

```
sudo apt update -y
sudo apt upgrade -y
```
## 2. X Window Managerの設定

まだX Window Managerはインストールしていないんですが、先に設定してしまいます。

```
echo 'export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '\''{print $2}'\''):0.0' >> ~/.profile
```

## 3. 日本語化
別に英語でも良いという方は飛ばしてもらって構いません。

```
sudo apt -y install language-pack-ja manpages-ja manpages-ja-dev fonts-noto-cjk fonts-noto-cjk-extra
```

* language-pack-ja manpages-ja manpages-ja-dev - Ubuntuの日本語ファイル
* fonts-noto-cjk fonts-noto-cjk-extra - フォント

インストールが完了したら日本語に設定します

```
sudo update-locale LANG=ja_JP.UTF8
```

再起動(Ctrl + Dで閉じます)後、localeコマンドを入力して日本語になっているか確認してください。

## 4. Openbox導入
いよいよ今回のメインであるOpenboxをインストールします。

インストールの前にスーパユーザ権限を取得します。（なぜかそうしないとopenboxがうまくインストールされない）

```
sudo su
sudo apt install -y libgl1-mesa-dev xorg-dev x11-common xdotool openbox
```

* libgl1-mesa-dev xorg-dev x11-common - WSL上でX Window Managerを使用するのに必要なプログラム（らしい）
* xdotool - X Window Managerをコマンド上で制御するために必要なプログラム
* openbox - 今回のメイン

インストールが終わったら一回再起動(Ctrl + Dを2回ぐらい押す)して、Openboxを起動してみましょう。
その前にあらかじめXLaunchをOne large windowで起動しているか確認してください。

```
openbox-session
```

コンソールでは緑文字でMessageという文字が出てきて何かが起動しているなというのがわかると思います。
XLaunchの画面上では何も変化がありませんが、右クリックをするとメニューが出てくると思います。これがOpenboxです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567899/1134280d-477e-d1f6-7dfe-8f0dd5b0ba9b.png)

ここでデスクトップランチャーが欲しいと思った方や壁紙が欲しいと思った方は今すぐこの記事を閉じてxfce4をインストールしましょう。


ここまでの状態ではまだメニューはハリボテで何もできないので、ターミナルエミュレータを導入します。

## 5. Terminal emulatorを入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567899/4a1aa54d-ce87-ef50-44b7-738051a2ea38.png)

メニュー最上段のTerminal emulatorを選択するとこのようなエラーが出てしまい起動できません。
原因はターミナルエミュレータが入っていないからです。なのでターミナルエミュレータを導入します。

ターミナルエミュレータについてはお好みで入れてください。 kterm, xterm, gnome-terminal, xfce-terminal いろいろあります。

今回は一例としてlxterminalを導入してみます。まず、openboxが開いている状態だと何もできないのでメニュー>ExitでOpenboxを終了させます。

```
sudo apt install -y lxterminal
```

インストール後、openbox-sessionで起動すればターミナルエミュレータをメニューから選択するとlxterminalが起動すると思います。
仮に起動できない場合や、後で別のターミナルエミュレータを入れて切り替えたい場合は、次のコマンドを入力してデフォルトのターミナルエミュレータを変更してください。

```
sudo update-alternatives --config x-terminal-emulator
```

## 6. CUIアプリケーションを起動できるようにする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567899/cc6d25c9-c801-98eb-51fb-7b24db3d2632.png)

openboxのメニューでApplications > Development > Python を開こうとするとevteが無いと怒られます。
デフォルトの設定ではメニューに登録されたCUIアプリケーションは全て上記のエラーにより起動できません。なので設定を変更します。

```
sudo nano /usr/bin/obamenu
```

obamenuのコンフィグ13行目にあるterminal_stringを"evte -e"から "x-terminal-emulator -e"に書き換えます。この部分は自分の好みのターミナルを直接指定してもらっても構いません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567899/aa73ade4-3504-c555-2aba-9900fe398ded.png)

Ctrl + Oで書き込み、Ctrl + Xで終了します。
そしたら、メニュー > Reconfigureを押してください。これで設定の適用は完了です。
Python 3.8を選択するとデフォルトのターミナルエミュレータ、または自分で指定したお好みのターミナルエミュレータでCUIアプリケーションが起動できるようになっています。

## 7.Openbox起動時にターミナルエミュレータが起動するようにする
ミニマリストのみなさんはターミナルを使用する機会が多いと思うのでopenbox-session入力後にターミナルが自動で立ち上がるようにします。

```
sudo nano /etc/xdg/openbox/autostart
```

一番下に次の記述を追加します。

```
x-terminal-emulator &
```

これで設定は完了です。以降、openbox-sessionでopenboxを起動するたびにTerminal emulatorが起動します。

基本的なOpenboxの導入はこれで終了です。以降はメニューのハリボテやエラーの解消方法について掲載しています。

## 8. Web browser
Terminal emulatorの下にWeb browserなる項目がありますが、ウェブブラウザをインストールしていないので押しても起動しません。解決方法は２つあります。

* なにかしらのウェブブラウザをインストールする
* Web browserの項目をメニューから消す

前者の場合は簡単です。例えばFirefoxなら

```
sudo apt install -y firefox
```
これでインストールできます。(Chromiumの導入方法は若干面倒なので自分で調べてね）
後者のメニュー編集については２つ下の項目で解説します。



## 9. 正当なメニューファイルを見つけることができませんでした
openbox-sessionのコマンドを入力するとWSLプロンプト上で正当なメニューファイルが無いというメッセージが表示されています。

Openboxではデフォルトの設定だとDebian OSのメニューを表示するように設定されています。ただし、メニューファイルをインストールしていないためメニューファイルを見つけることができません。

メニューファイルをインストールするには次のコマンドを実行します

```
sudo apt install -y menu
```

例えばx11-appsパッケージ収録のアプリケーションを使用したい場合はメニューを入れることをおすすめしますが、特に使う機会が無い場合は入れる必要は無いと思うのでこの警告は無視して大丈夫だと思います。
## 10. メニューを編集する
メニューを編集するには次のコマンドを入力します。

```
sudo nano /etc/xdg/openbox/menu.xml
```

先程紹介したWeb browserの項目を消すには次の記述を削除します。

```
<item label = "Web browser">
 <action name="Execute"><execute>x-www-browser</execute></action>
</item>
```

メニューにCUIアプリケーションを追加したい場合は、次の記述を参考に各自設定してください。

```
<item label = "gnuplot">
 <action name="Execute"><execute>x-terminal-emulator -e gnuplot</execute></action>
</item>
```

Openboxの説明は以上です。
日本語IMEの設定やPulseaudioの設定は一般的なWSL+Ubuntuと同じ方法で導入可能です。