Chromebook で Linux GUI アプリを使うときのヒント
Chromebook には「Linux 開発環境」(Crostini)という機能があり、Linux コンテナの中で Linux 向けのアプリを動かすことができます。
アプリを利用するだけであればインストール方法を知っていれば充分ですが、アプリをインストールしたときに裏で起きていることを少しだけ知っておくといろいろ便利に使えるので、紹介してみようと思います。
この記事に書いてあること
- Chromebook の Linux 開発環境の紹介
- Linux アプリをインストールすると一般的なデスクトップ OS と同じことが起こる
- Chrome OS と Linux 開発環境は freedesktop.org の仕様に従っている
Linux 開発環境とは
Linux 開発環境は、Chrome OS(Chromebook の OS)の標準機能として搭載されている Linux アプリを動かせる環境です。Chromebook をセットアップしたときには無効になっていますが、設定を開いて有効にすれば使えるようになります。
その内部は仮想マシン内で動作する LXC コンテナになっていて、少しだけカスタマイズされた Debian が動作しています。Debian のバージョンは、執筆時点では bullseye (Debian 11) です。コンテナの名前が penguin
なので「Penguin コンテナ」とも呼ばれます。
Linux 開発環境という名前がついていますが、開発用途以外のアプリも動きます。CUI アプリだけではなく GUI アプリも動きます。私が普段よく使っている GUI アプリはこんな感じです。
- Visual Studio Code … コード エディター
- GIMP … 画像編集・加工ソフト
- Firefox … Web ブラウザ
- QGIS … 地理情報システム ソフト
- Audacity … サウンド編集ソフト
- LibreOffice … オフィスソフト
- Blender … 3DCG製作ソフト
Linux アプリをインストールする方法
Linux アプリをインストールするには、Chrome OS からインストールする方法と、Linux 開発環境内からインストールする方法とがあります。
前者は Chrome で Debian 標準パッケージ形式の deb ファイルをダウンロードし、そのまま開くとインストールされるというものです。 Visual Studio Code のインストール方法 で紹介されているのはこちらです。英語ですがスクリーンショットも含めて詳しく書かれているので、そのあたりの雰囲気を知りたい人は覗いてみるといいと思います。
後者は Linux 開発環境の中でパッケージ管理システムなどを使ってインストールする方法です。通常の Debian と同じで apt install <パッケージ>
とすればインストールされます。Chrome でダウンロードした deb ファイルを Linux 開発環境に移動してインストールしてもいいですし、wget や fetch でダウンロードしてインストールもできます。Snappy や AppImage、Flatpak なども利用可能です。もちろん make install しても構いません。要するに通常の Debian と同じです。
Linux アプリをインストールすると何が起きるか
たとえば GIMP をインストールしたとします。すると、次のようなことが起こります。
- ランチャーに GIMP のアイコンが現れ、クリックすると GIMP が起動する
- 画像ファイル (PNG など) を右クリックしたときの「アプリケーションで開く…」で GIMP が選択できるようになる
- 画像ファイルをダブルクリックしたときに開くデフォルトのアプリに GIMP を設定できるようになる
これらの動作は他のデスクトップ OS でアプリをインストールしたときとだいたい同じです。当然といってしまえばそうなのですが、Linux 開発環境は仮想マシンの中のコンテナで実行されているので、何もしないとそのような動作にはなりません。その「当然」の動作に近づくよう変更されているわけです。
この他にも、Chrome OS の中で Linux アプリを使用したときに違和感が少なくなるような工夫がされています。
- アイコンを右クリックしたときにアンインストールを選ぶことができる
- GIMP のヘルプから「GIMP の Web サイトを開く」ボタンをクリックすると Linux コンテナ内ではなく Chrome OS の Chrome で www.gimp.org を開く(変更可能)
- ファイルアプリから開く画像ファイルは Linux と共有していないフォルダにあってもよい。そのファイルのみ一時的な書き込み権限が与えられた状態で Linux アプリに渡される
- Chrome OS にあった GTK テーマが用意されており、Linux アプリの見た目と Chrome OS との差が少なくなるようになっている
- Chrome OS と Linux 開発環境のクリップボードは双方向で機能する
なお現状では Chrome OS の日本語入力機能を Linux アプリで利用できないので、Linux 側で別途用意する必要があります。
freedesktop.org の仕様を知っていると便利に使える
ランチャーにアイコンが登録されたり、ファイルに関連付けられるといった動作は、Linux デスクトップで標準的に利用される freedesktop.org の デスクトップ エントリ仕様 に従っています。独自のデスクトップ エントリ ファイル (.desktop) を作成すれば、任意のアプリをランチャーに表示させることができます。一部のアプリケーションだけ表示言語を別のものにしたいとか、アプリに関連付けるファイルの種類を変えるといったことも可能です。
デスクトップ エントリ ファイルは /usr/share/applications
や ~/.local/share/applications
に置くと自動的に登録されます。Penguin コンテナ内の Garcon デーモンがファイルを監視しており、変更があったら Chrome OS に通知されランチャーなどに反映されます。ただしファイルを変更してもすぐには反映されないため、少し待つ必要があります。
アイコンは /usr/share/icons
や ~/.local/share/icons
に置かれたものが参照されます。アイコンもデスクトップエントリもホームディレクトリの下に置いたファイルが優先されるので、通常は ~/.local/share
の下に置くのがよいでしょう。すでにインストールされているアプリをカスタマイズする場合には、/usr/…
の中から希望のものを探し、~/.local/share/…
にコピーして変更すると簡単です。
このあたりのことは Chrome OS 独自の仕様ではなく Linux デスクトップではよくある動作なので、Linux ユーザであればノウハウを使い回せるはずです。多くの Linux ユーザがお世話になっている Arch Linux のわかりやすいドキュメント(例:デスクトップエントリ)も、多くの部分がそのまま参考になります。
まとめ
Chromebook の Linux 開発環境は Linux デスクトップの仕様に従うようになっているため、自然な形で Linux アプリを利用でき、使いやすいものになっています。これらのノウハウは他の Linux 環境と共有できるのもありがたいです。
Web 関連の開発にも充分使えるレベルにあると思うので、機会があればぜひ試してみてください。
ChromebookでLinuxを使ったソフト開発は便利だよ。これだけ動けば大抵のことはできると思う。
— acclimal (@acclimal) December 1, 2021
Ubuntu
Visual Studio Code
GIMP
Blender
LibreOffice Writer
RStudio
GNU Octave
Firefox
QGIS pic.twitter.com/7cG9EH1t5E
執筆時環境
- ASUS Chromebox 4, Chrome OS 97.0.4692.102 (Stable)
- Lenovo IdeaPad Duet Chromebook, Chrome OS 98.0.4758.51 (Beta)