Chromebookを買いました
gtk4をubuntuでビルドしていたら、ubuntuが動かなくなりました。/usr/localにgtk4をインストールしたので、ubuntuのgtk3で動いているプログラムがおかしくなってしまったためです。皆さんはこういう間違いをしないよう注意してください。私は再インストールしました。
こういうトラブルを避けるには、gtk4のライブラリを置く場所には、既存のgtk3上で動くプログラムがアクセスしないようにしなければなりません。逆に言うと、gtk4のライブラリを/usr/localに置いては駄目です。そういう手段にchrootという、ルードディレクトリを移動してプロセスを起動するツールがあるらしいです。おそらく、それを使えば問題は解決するでしょう。
さて、自分の場合は、普段使うマシンで再インストールはこれ以上したくなかったので、新たにもう1台購入することにしました。それで、電気屋で品定めをしていると、だいたい3万円前後で買えるマシンが2つありました。ひとつはASUSのwindowsマシンで、もうひとつがlenovoのChromebookでした。ASUSは以前にも使ったことがあり、linuxをインストールすることができるのは知っていたので、それを買えば無難なのですが、Chromebookという今まで使っていないマシンに興味が湧きました。それで、結局Chromebookを買ったのです。
ChromebookのオペレーティングシステムはChrome OSです。これはlinuxカーネルで動くので、一種のlinuxディストリビューションと見ることもできます。面白いのは、このシステムの中でLinux(ベータ版)というのが動くのです。これは仮想環境の上で動いているらしいです。この仮想環境はたぶんLXC(Linux Containers)という技術らしいです。
gtk4のインストール
じゃあ、この仮想環境のlinuxでgtk4を動かせばいいじゃないか、ということで、長い試行錯誤の結果gtk4が動きました。しかも、ChromeOSと仮想環境は切り離されていますから、本体に悪い影響はありません。ただし遅いです。コンパイルなどは遅いとは思いませんが、グラフィック画面を使う(例えばウィンドウを開く)とだいぶ反応が遅いと感じます。エディタのsenも動かしてみましたが、起動は遅い感じですが、画面編集は、まあ我慢できる速度でした。
インストールのコツですが、まず、gtkのソースフォルダにカレントディレクトリを移し、mesonを使います。
$ meson -Dwayland-backend=false _build
すると、エラーが出たり、足りないライブラリが指摘されたり、あるいはそういうライブラリをサブプロジェクトとしてコンパイルしようとしたりします。それで、不足のライブラリをapt-getでインストールしたり、それではバージョンが低すぎるものは、ソースをとってきてコンパイルしたりします。できるだけサブプロジェクトは避けて、事前にコンパイルしておくのが良いです。それが解決したら、再びmesonを動かしてチェック、まだ足りないものがあれば、インストール、これを繰り返します。
完全にgtk4をコンパイルできる準備ができたら、コンパイル、インストールして完成です。なお、個々のライブラリ(gtk4も含め)をコンパイルしたあとは、必ず
$ sudo ldconfig
として、ライブラリにパスを通さなければなりません。
chrxの試み
chrxはChromebookで他のLinuxディストリビューションをデュアル・ブートする仕組みです。自分の買ったマシンはLenovo IdeaPad Slim 350i Chromebook
です。CPUはIntel Cereron N4020で、このCPUの開発コードはGemini Lakeです。chrxのウェブサイトではGemini LakeについてはWIP(Work In Prgress)つまり開発中ということで、動作するかどうかは分からない、となっていました。(むしろ、動かない、に近い)。しかし、ものは試し、動かないものを動かすのがハッカーなのだ(といつのまにかハッカー気取り)と思い、試してみました。結果は失敗。デュアル・ブートできるはずのGalliumOS(Linuxディストリビューション)は起動画面に現れませんでした。
もしも、chrxができたなら、gtk4の速度は格段に改善されたはずです。残念でした。もしも読者にchrxを試したい方がいれば、まずウェブサイトに行って、そのマシンがchrxに対応しているかどうかを見ることをお勧めします。
chrxは駄目でしたが、それよりは可能性がありそうなものにcroutonがあります。これはchrootを使ってChromeOSの中でLinuxディストリビューションを動かすものです。そして、たぶんLinux(ベータ版)よりは速いでしょう。今回はもう疲れたので、今後余力があったら試してみたいと思います。
Windowsマシンにlinuxをインストールした方なら、その簡単なことをご存じのはずです。それに比べるとChromebookは、BIOSが違うので、うまく行きません。ウェブを見ると、中にはBIOSを焼き直してインストールした猛者もいますが、なかなかそこまではできないでしょう。それに下手をすると全然起動しないパソコンが出来上がるかも。ネイティブに動くLinuxが目標の人にはChromebookはお勧めできません。
gtk4の現在
gtk4をやり始めてから、すでに半年以上経っています。この3ヶ月ほどは、別のことが忙しく、gtk4から遠ざかっていましたが、その間にgtk4のバージョン4.0、すなわち完成版がリリースされました。自分がやっていたときは、バージョン3.92でした。そのとき動いていたsenは、gtk4の変更によって動かなくなっていました。今回修正して動くようにはなりましたが、まだ完全ではありません。
おそらく来年2021年にはgtk4のディストリビューションが出るのではないでしょうか。少なくともテスト版は出ると思います(個人的な予想)。これはとても楽しみなことです。gtk4は開発者にとって、gtk3と比べ分かりやすい構造になっています。実はそのチュートリアルを現在書いています。https://github.com/ToshioCP/Gtk4-tutorialにそれがありますが、まだ書きかけであるとともに、内容が少し古い(バージョン3.92)ので、その修正も必要です。しかし、興味のある人は見ていただいて、できれば、誤りを指摘したいただいたり、改善点を提案していただくと助かります。issueから意見することができると思いますので、よろしくお願いします。なお、rubyスクリプトで文書の自動生成を試みていますので、それも面白いかと思います。