Debian noroot 環境に plank を導入する

# はじめに

[Debian noroot][DBNR] とは、 [Android OS][ANDR] 上において root 権限を取ることなく [Debian 環境][DEBI]を構築するためのアプリケーションです。 

CPU の性能とメモリ容量が潤沢にある [Android OS][ANDR] 端末であれば、 [Debian noroot][DBNR] の導入によって [Android OS][ANDR] 端末上で非常に軽快な [Debian 環境][DEBI]を実現することが出来ます。

[Debian][DEBI]のデスクトップ環境において、 Dock ランチャーソフトウェアを導入する事は、通常頻繁に使用するソフトウェアの起動を容易にする等、デスクトップ環境の利便性の向上に関して非常に有用となります。

ここで、[Debian][DEBI]のデスクトップ環境において、軽量な Dock ランチャーソフトウェアの１つとして [plank][PLNK] が挙げられます。

しかし、 [Debian Jessie][DEBI] をベースにした [Debian noroot 環境][DBNR]においては、 [plank][PLNK] を導入するための適切な deb パッケージが存在しません。

そこで、 [plank][PLNK] をソースコードからビルドし、[MATE 環境][MATE]の起動時において自動起動を行うように設定した所、[Debian noroot 環境][DBNR]上における各種デスクトップ環境において [plank][PLNK] を使用する事が出来るようになりました。

本稿では、 [Debian noroot 環境][DBNR]における [plank][PLNK] の導入手法について述べます。

本稿では最初に、 "[plank の導入][CHAP01]" の章において、軽量な Dock ランチャーソフトウェアである [plank][PLNK] の [Debian noroot 環境][DBNR]への導入手法について述べます。

次に、 "[デスクトップ環境への導入][CHAP02]" の章において、[前章][CHAP01]で導入した [plank][PLNK] を [Debian noroot 環境][DBNR]上の各種デスクトップ環境へ導入する手法について述べます。

そして、 "[plank の問題点][CHAP03]" の章において、現時点での [Debian noroot 環境][DBNR]に導入した [plank][PLNK] の問題点について述べます。

最後に、 "[結論][CHAP04]" の章において、本稿の結論について述べます。

# plank の導入

本章においては、最初に、 "[plank に依存するパッケージの導入][SEC0101]" の節において、 [Debian noroot 環境][DBNR]に [plank][PLNK] を導入する際に、予め導入するべき [plank][PLNK] の依存パッケージの導入について述べます。

次に、 "[plank の実行ファイル等のビルド][SEC0102]" の節において、 [plank][PLNK] 本体のソースコードの取得と、 [Debian noroot 環境][DBNR]上で [plank][PLNK] 本体のソースコードから [plank][PLNK] の実行ファイル等のビルドを行う手法について述べます。

最後に、 "[plank のインストール][SEC0103]" の節において、[前節][SEC0102]においてソースコードからビルドした [plank][PLNK] の実行ファイル等を [Debian noroot 環境][DBNR]上にインストールする手法について述べます。

## plank に依存するパッケージの導入

まず最初に、 [Debian noroot 環境][DBNR]において [plank][PLNK] をビルドする上で、 [plank][PLNK] に依存する [Debian][DEBI] パッケージの導入を以下の通りに行います。

```
$ sudo apt-get install automake gnome-common intltool pkg-config valac libbamf3-dev libdbusmenu-gtk3-dev libgdk-pixbuf2.0-dev libgee-dev libglib2.0-dev libgtk-3-dev libwnck-3-dev libx11-dev libgee-0.8-dev
```

また、上記に加えて、パッケージ ```xstow``` の導入も以下の通りに併せて行います。これは、ソースコードからビルドした [plank][PLNK] の実行ファイル等をディレクトリ ```/usr/local``` 以下に導入する際に [plank][PLNK] の実行ファイル等の管理を容易にする為です。

```
$ sudo apt-get install xstow
```

## plank の実行ファイル等のビルド

次に、 [plank][PLNK] 本体のソースコードを[plank の公式ページ][PLNK]より取得します。なお本稿では、 [plank][PLNK] のバージョン 0.11.4 のソースコードである ```plank-0.11.4.tar.xz``` を以下の通りに取得します。

[plank][PLNK] のソースコードの取得が完了した後は、 [plank][PLNK] のソースコードである ```plank-0.11.4.tar.xz``` を適切なディレクトリに展開します。

```
  $ cd /path/to/build   # (ここに、 /path/to/build は、 plank の実行ファイル等をビルドするための作業ディレクトリ。)
  $ wget https://launchpad.net/plank/1.0/0.11.4/+download/plank-0.11.4.tar.xz
  $ tar -Jxvf plank-0.11.4.tar.xz
```

そして、カレントディレクトリを ```./plank-0.11.4``` に移動して、以下の通りにソースコードから実行ファイル等をビルドします。

ここで、[plank][PLNK] のインストール先となるディレクトリは、[前節][SEC0101]で述べた ```xstow``` によって [plank][PLNK] の管理を容易にする為に ```/usr/local/opt/plank-0.11.4``` とします。

```
  $ cd ./plank-0.11.4
  $ ./configure --prefix=/usr/local/opt/plank-0.11.4 --disable-silent-rules
  $ make
```

## plank のインストール

[前節][SEC0102]によって、正常に [plank][PLNK] の実行ファイル等のビルドが完了した後は、コマンド ```make install``` を実行して、 [plank][PLNK] の実行ファイル等を ```/usr/local/opt/plank-0.11.4``` にインストールします。

```
  $ make install
```

そして、カレントディレクトリを ```/usr/local/opt``` に移動して以下のコマンドを実行します。コマンド ```xstow -v ./plank-0.11.4``` の実行により、 [plank][PLNK] の実行ファイル等のシンボリックリンクがディレクトリ ```/usr/local``` 以下に張られます。

```
  $ cd /usr/local/opt
  $ xstow -v ./plank-0.11.4
...(略)...
  $
```

最後に、以下の通りに ```plank``` コマンドを実行して、正常に [plank][PLNK] が起動する事を確認します。

```
$ plank
```

なお、もし [plank][PLNK] のソースコードをコンパイルする事が煩わしい場合や何らかの問題で困難である場合は、次に示す URL に置かれているシェルスクリプトを用いて、以下のように [plank][PLNK] のソースコードのダウンロード及びビルドとインストールを自動的に行っても構いません。

- build-plank.sh (最新版)
    - [**https://git.io/debian-noroot-build-plank.sh**][SH01]

```shell-session
  $ bash -c "$(wget -q -O - https://git.io/debian-noroot-build-plank.sh)"
  ...(略)...
  $ plank    # (plank の動作確認を行う。)
```

# デスクトップ環境への導入

本章では、[前章][CHAP01]で述べた手法でインストールした [plank][PLNK] を [Debian noroot 環境][DBNR]上の各種デスクトップ環境の起動時において自動的に起動するように設定する手法について述べます。

まず、 "[MATE への導入][SEC0201]" の節において、 [Linux MINT][MINT] において採用されているデスクトップ環境である [MATE][MATE] に [plank][PLNK] を導入する手法について述べます。

次に、 "[LXDE への導入][SEC0202]" の節において、軽量なデスクトップ環境の１つである [LXDE][LXDE] に [plank][PLNK] を導入する手法について述べます。

最後に、 "[xfce4 への導入][SEC0203]" の節において、 [Debian noroot 環境][DBNR]におけるデフォルトのデスクトップ環境である [xfce4][XFCE] に [plank][PLNK] を導入する手法について述べます。

なお、以降で述べる設定手法で示す各画像において表示されている [plank][PLNK] については、 [plank][PLNK] の動作確認時において [plank][PLNK] の各種設定を修正したものであり、デフォルトの [plank][PLNK] の表示とは若干異なることに留意して下さい。

## MATE への導入

まず、 [plank][PLNK] をデスクトップ環境 [MATE][MATE] において自動的に起動するように設定する手法について述べます。

- まず最初に、以下の画像のようにして **[設定]** のメニューを開き、  **[コントロールセンター]** の項目を選択します。
![(Setting of MATE)][IMG01]
- 次に、以下の画像のように **[コントロールセンター]** のパネルにおいて、 **[自動起動するアプリ]** のボタンをクリックします。
![(ControllCenterof MATE)][IMG02]
- そして、以下の画像のように **[自動起動するアプリの設定]** のウィンドウにおいて、 **[追加]**のボタンをクリックします。
![(Auto start app of MATE)][IMG03]
- その後、以下の画像のように **[自動起動するプログラムの編集]** のウィンドウにおいて、 [plank][PLNK] の自動起動についての各項目を指定します。ここで、[plank][PLNK] の実行ファイルの絶対パスは、必ず ```/usr/local/bin/plank``` とする必要があります。
![(Add Plank to Auto start app)][IMG04]

以上の設定が完了した後、 [Debian noroot 環境][DBNR]を再起動して、以下の画像の通りに [plank][PLNK] が自動的に起動する事を確認します。

![(Plank in MATE)][IMG05]

## LXDE への導入

次に、 [plank][PLNK] を軽量なデスクトップ環境 [LXDE][LXDE] において自動的に起動するように設定する手法について述べます。

- まず最初に、以下の画像のようにして **[設定]** のメニューを開き、  **[LXSession のデフォルトのアプリケーション]** の項目を選択します。
![(LXSession default app of LXDE)][IMG06]
- ここで、 **[LXSession Configuration]** のウィンドウが開くので **[Autostart]** の項目を選択します。  
![(LXSession Configuration of LXDE)][IMG07]
- すると、以下の画像のように **Manual Autostart Application** のリストの末尾に **[追加]** のボタンと、その右隣にてテキストエリアが表示されているので、ここでテキストエリア内に ```@plank``` と入力して **[追加]** ボタンを押します。
![(LXSession Configuration of LXDE)][IMG08]
- **[追加]** ボタンを押した後、以下の画像のように **Manual Autostart Application** のリストの末尾に ```@plank``` が登録されていることを確認します。
![(LXSession Configuration of LXDE)][IMG09]

以上の設定が完了した後、 [Debian noroot 環境][DBNR]を再起動して、 [plank][PLNK] が自動的に起動する事を確認します。

## fxce4 への導入

そして、[plank][PLNK] を [Debian noroot 環境][DBNR]のデフォルトのデスクトップ環境である [fxce4 環境][FXCE]において自動的に起動するように設定する手法について述べます。

- まず最初に、以下の画像のようにして **[設定]** のメニューを開き、 **[セッションと起動]** の項目を選択します。
![(Setting Manager of fxce4)][IMG10]
- そして、以下の画像のように **[セッションと起動]** のウィンドウにおいて、**[自動開始アプリケーション]** の項目を選択します。
![(Session and Start of fxce4)][IMG11]
- すると、以下の画像のように自動起動するアプリケーションの一覧が表示されます。ここで、未だ [plank][PLNK] が一覧に登録されていない場合は **[追加]** ボタンを押し、登録されている場合は [plank][PLNK] が登録されている行をクリックして **[編集]** ボタンを押します。
![(Session and Start of fxce4)][IMG12]
- その後、以下の画像のように **[アプリケーションの編集]** のウィンドウにおいて、 [plank][PLNK] の自動起動についての各項目を指定します。ここで、[plank][PLNK] の実行ファイルの絶対パスは、必ず ```/usr/local/bin/plank``` とする必要があります。
![(Edit app of fxce4)][IMG13]

以上の設定が完了した後、 [Debian noroot 環境][DBNR]を再起動して、 [plank][PLNK] が自動的に起動する事を確認します。

# plank に関する問題点

本章において、 [plank][PLNK] について、現時点で判明してい問題点について述べます。

まず、何らかの理由で [plank][PLNK] のプロセスに SIGKILL 等の SIGTERM でないシグナルが送られる事により異常終了した場合等において、再度 [plank][PLNK] を起動した場合に以下のエラーメッセージを出力して [plank][PLNK] が起動しない場合があります。

```
  $ plank
  ...(略)...
  [ERROR 01:22:33.123456] [Utils:42] GSettingsSchema 'net.launchpad.plank' not found
  Trace/breakpoint trap
  $
```

この場合は以下のコマンドの実行により、 [plank][PLNK] が起動しない問題を回避します。

```
  $ sudo glib-compile-schemas /usr/local/share/glib-2.0/schemas
```

上記のコマンドの実行によっても、問題が回避できない場合は、 [plank][PLNK] のビルド及びインストールを再度行って下さい。

# 結論

本稿では、 "[plank の導入][CHAP01]" の章において、 [Debian noroot 環境][DBNR]上で、 [plank][PLNK] のソースコードから、実行ファイル等をビルドし、ディレクトリ ```/usr/local``` 以下にインストールする手法について示しました。

そして、 "[デスクトップ環境への導入][CHAP02]" の章において、 "[plank の導入][CHAP01]" の章でインストールした [plank][PLNK] を、 [Debian noroot 環境][DBNR]上で動作する各種デスクトップ環境の起動時に自動的に起動させるように設定を行う手法について示しました。

以上で示した手法によって [Debian noroot 環境][DBNR]へ [plank][PLNK] を導入することにより、 [Debian noroot 環境][DBNR]の起動時に軽量な Dock ランチャーソフトウェアである [plank][PLNK] が自動的に起動して、高頻度で使用するソフトウェアの起動が容易になることが示されました。

また、デスクトップ環境 [MATE][MATE] が導入された [Debian noroot 環境][DBNR]において、 [plank][PLNK] を左端の中央に配置する設定を行うことにより、 Unity ライクなデスクトップ環境の外観が実現でき、多くの PC 端末と同様の快適性を持つデスクトップ環境が実現できることが判りました。

# 謝辞

本稿の記述に当たって、 [Android OS][ANDR] 端末上で非常に軽快な [Debian 環境][DEBI]を実現することを可能にした [Debian noroot 環境][DBNR]の開発者である [pelya 氏][PELY]に心より感謝致します。

なお、 [plank][PLNK] 本体をソースコードから実行ファイル等へビルドし、インストールを行う手法に関しては、[techbar 氏][BEAR]による "[Installing Plank Dock on Debian Jessie | Techbear][BAR1]" を参考にしました。 [techbar 氏][BEAR]に心より感謝致します。

そして最後に、 [Debian noroot 環境][DBNR]と [Android OS][ANDR] 及び [Debian 環境][DEBI]の全ての事に関わる全ての皆様に心より感謝致します。

<!-- 各章のリンク一覧 -->

[CHAP01]:#plank-の導入
[CHAP02]:#デスクトップ環境への導入
[CHAP03]:#plank-に関する問題点
[CHAP04]:#結論
[SEC0101]:#plank-に依存するパッケージの導入
[SEC0102]:#plank-の実行ファイル等のビルド
[SEC0103]:#plank-のインストール
[SEC0201]:#mate-への導入
[SEC0202]:#lxde-への導入
[SEC0203]:#fxce4-への導入

<!-- 外部リンク一覧 -->

[QRAN]:https://z80oolong.hatenadiary.jp/ 
[DBNR]:https://play.google.com/store/apps/details?id=com.cuntubuntu&hl=ja 
[ANDR]:https://www.android.com/intl/ja_jp/ 
[DEBI]:https://www.debian.org/index.ja.html 
[MINT]:https://www.linuxmint.com/
[PLNK]:https://launchpad.net/plank
[LXDE]:https://lxde.org/
[XFCE]:https://xfce.org/
[MATE]:https://mate-desktop.org/
[SH01]:https://git.io/debian-noroot-build-plank.sh
[PELY]:https://github.com/pelya
[BEAR]:https://techbear.co/author/TechBear/
[BAR1]:https://techbear.co/installing-plank-dock-on-debian-jessie/
[IMG01]:https://qiita-image-store.s3.amazonaws.com/0/86258/67c6b346-30bd-c656-cd75-e6118f629297.jpeg
[IMG02]:https://qiita-image-store.s3.amazonaws.com/0/86258/c2821f9d-a559-151f-e182-0973f7d95539.jpeg
[IMG03]:https://qiita-image-store.s3.amazonaws.com/0/86258/e52f0f6a-8a12-725b-bccf-8e2f12ca4c96.jpeg
[IMG04]:https://qiita-image-store.s3.amazonaws.com/0/86258/7717346a-5d63-2438-20ca-17f90a33ba21.jpeg
[IMG05]:https://qiita-image-store.s3.amazonaws.com/0/86258/e44bc95b-6547-f517-d7da-dec79200de40.jpeg
[IMG06]:https://qiita-image-store.s3.amazonaws.com/0/86258/820b14b7-cf21-b205-addb-e0d34302541a.jpeg
[IMG07]:https://qiita-image-store.s3.amazonaws.com/0/86258/6c3198f4-de5a-6429-5b08-737381dc1956.jpeg
[IMG08]:https://qiita-image-store.s3.amazonaws.com/0/86258/3820c2a1-938d-53d1-2888-711315a13765.jpeg
[IMG09]:https://qiita-image-store.s3.amazonaws.com/0/86258/928d319e-1a53-58f2-cc0a-4a1d7a6f57a0.jpeg
[IMG10]:https://qiita-image-store.s3.amazonaws.com/0/86258/fa4d18f8-8036-346e-d138-9babcc231212.jpeg
[IMG11]:https://qiita-image-store.s3.amazonaws.com/0/86258/0639569e-92fc-18d6-5378-686082c96dfc.jpeg
[IMG12]:https://qiita-image-store.s3.amazonaws.com/0/86258/6f49d9b9-f2e3-fd54-2958-fef332d7207f.jpeg
[IMG13]:https://qiita-image-store.s3.amazonaws.com/0/86258/6528a3ed-3506-c1e8-6d93-ca058561db90.jpeg