おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

GNOME 40 とGtk4を体験しました

2021/9/1追加

Fedora 34Betaはすでに完成版のFedora 34になっているという指摘をいただきました。 現時点では、Gnome 40のウェブサイトでも「Beta」は消されています。 記事の中の「Beta」は古い情報であることにご注意ください。 また、GNOME40の新しいバージョンGNOME41が近くリリースされるようです。 (以上 2021/9/1追加)

Ubuntuを21.04にアップデートしました。 Ubuntuは今後も使っていくつもりですが、残念ながらgtk4の対応は秋以降になるらしいです。 GNOME 40 のウェブページによると、現時点ですでにgtk4を組み込んでいるのは、

  • GNOME OS
  • Fedora 34Beta
  • OpenSUSE

の3つです。 使ってみたいけれど、Ubuntuを潰してインストールするのは、データの引っ越しが大掛かりになって嫌だな、と思って二の足を踏んでいました。

ところが、別の手があったのです。 gnome-boxesという、バーチャル・マシンをサポートするソフトです。 このソフトは、

  • LinuxのKVMという仮想化システム
  • qemuというエミュレータ
  • libvirtというデーモン

を組み合わせたものです。 これを使って、Ubuntuの仮想マシン上でFedoraをインストールしてみました。

gnome-boxesのインストール

これは簡単で、例えば、「ソフトウェア」という名前のパッケージ管理ツールで「開発ツール」というカテゴリーを開くと、そこに「GNOME Boxes」という名前で登録されています。 それをクリックしてインストールすればOKです。

あるいは、apt-getを使ってもインストールできます。

Fedoraのインストール

GNOME 40 のページの一番下にFedoraの大きめのボタンがあるので、クリックするとダウンロードできます。 この他に、「GNOME OS NIGHTLY」と「OpenSUSE」がありますが、自分の場合はFedora以外は上手くいきませんでした。

ダウンロードされるデータはiso形式です。 つまり、インストール用のDVDの形です。 ダウンロードが完了したら、インストールです。

  1. gnome-boxesを立ち上げる。
  2. 左上の「+」のボタンを押すと、ダイアログが現れます。 一番下の「オペレーティングシステムのイメージファイル」をクリック。 ファイル選択ダイアログが現れるので、ダウンロードしたisoファイルを選択します。
  3. すると、Fedoraが立ち上がります。 このFedoraは、通常インストールでいえば、DVDドライブから立ち上がるインストール作業用のFedoraです。
  4. ライブで使用するか、インストールするかの大きなボタンが現れるので、インストールを選択。 以下、画面に従ってインストールをします。
  5. インストールが終了したら、タイトルバーの右をクリック。 「電源オフ」を選択して終了します。
  6. gnome-boxesの初期画面に戻りますが、左上にFedoraの大きめのボタンが現れます。 それをクリックするとインストールされたFedoraが立ち上がり、セットアップ画面になります。 セットアップを完了すると使用可能になります。

gtk4の開発用ファイルのインストール

gtk4の実行ライブラリは初期状態で入っているのですが、開発用のパッケージがまだ入っていません。 それで、

$ sudo dnf install gtk4-devel.x86_64

とタイプするとパッケージがインストールできます。

Ununtu 20.04では、このとき一部のレポジトリが読めずにエラーになってしまいました。 Ubuntu 21.04にアップグレードした後にはエラーが出ませんでした。 これが、Ubuntuのバージョンによるのか、Fedoraの側のトラブルなのかは分かりません。

gtk4のプログラムのコンパイル

テストをしてみようということで、Gtk4 tutorialのテキストエディタをコンパイルしてみました。

  1. Gtk4 Tutorialをダウンロードします。 コードの右上の緑色のアイコンをクリックしてZIPのダウンロードを選択します。
  2. ダウンロードしたZIPを解凍します。
  3. そのディレクトリのsrc/tfe7に端末のカレントディレクトリを移動します。
  4. 端末から次のようにタイプします。

     $ meson _build
     $ ninja -C _build
     $ ninja -C _build install
    
  5. meson起動時には、まだmesonパッケージがインストールされてないので、パッケージのインストールをするかどうか尋ねられます。 インストールを選択すると、自動的にパッケージインストール後にmesonが実行されます。

  6. コンパイルは上手く通り、インストールも行われました。 tfeというプログラムが。/usr/local/binの下にインストールされます。
  7. 端末から、tfeとタイプすると、テキストエディタが起動されました。 gtk4の開発環境としては十分でした。

GNOME 40 の使い心地

GNOME 40は今までのGNOMEのデスクトップと似ています。 使用感に大きな違いはありません。 ウェブサイトの説明を見ると、どうも動作が以前よりかなり軽快になっているようです。 ところが、仮想マシンにインストールしたため、速度を実感することはできません。 これは残念なことですが、仕方がありません。 GNOME40が動くとはいえ、Fedoraはテスト版です。 Ubuntuをやめて、そちらに移行するわけにはいきません。

ただ、gtk4のプログラミングは格段に良い環境になっています。 gtk4のコンパイル環境だけでなく、できあがったアプリケーションをデスクトップに登録することも容易です。

さて、ホストOSのUbuntuとゲストOSのFedoraの間でコピペはできません。 異なるデスクトップセッションなのだから出来ないのが当然なのですが、あたかも同じデスクトップで動いているように見えるので、ついコピペしたくなります。 では、データのコピペがしたいときはどうしたら良いのでしょうか? 考えてみたのですが、データの共有にはGoogle Documentが良いことに気が付きました。

そのために、FireFoxを2つ動かします。 UbuntuのFirefoxとFedoraのFirefoxです。 片方でGoogle Documentに書くと、もう片方で読むことができます。 まさに、データの共有です。 当然ながらこの2つはそっくりなので、自分が今どちらにいるのかが分かからなくなるときがあります。 このあたりは慣れないと頭が切り替わりませんね。

もしも、ファイル丸ごとをコピーしたいときには、Google Driveか、メールに添付する方法があります。 メールは、ファイル添付したものを自分宛てに出します。

GNOME 40の今後

GNOME 40が様々なディストリビューションに取り入れられるのは、秋ごろからでしょうか。 Ubuntuはもっと先になりそうですが。 それに、アプリケーションのほとんどがまだgtk4対応ではありません。 すべてgtk4対応になるには、おそらく年内いっぱいはかかるとは思います。 早く完全にgtk4に移行したシステムにお目にかかりたいものです。

Gtk4 Tutorial バージョン0.8 をリリース

Gtk4 Tutorial (英語のチュートリアル)のバージョン0.8をリリースしました。

https://github.com/ToshioCP/Gtk4-tutorial

バージョンが0.8という意味は、チュートリアルの構成はこれで完成ということにして、今後は細部の見直しのみにしようということです。 すでに27セクションまでになり、初心者向けのチュートリアルとしては大きくなってしまったということも、その理由の一つです。 ただ、確定ではなくて、読者からの要望などがあれば、追加も許容範囲と考えています。

チュートリアルの内容としては、リストモデルとリストビュー関連のウィジェットを最後に追加しました。 これは、gtk4で新たに追加されたものです。 大きなリストに対応できるので、いろいろ活用できそうなウィジェットです。 初心者向けのチュートリアルの最後を飾るに相応しい(その複雑さ、機能の豊富さの点で)と思いました。

今後の見直しでは、特にRakefileなどのrubyスクリプトの書き直しがあります。 よりシンプルで見通しよくしたい、というよりも今のままではとても読むに耐えません。

このレポジトリはgtk4のチュートリアルとして設置されているのですが、実はそのドキュメントをコンバートするrubyスクリプトも結構面白いと思っています。 また、このスクリプトを発展させれば、一般にドキュメントをgithubで公開する手段を提供でき、それだけでも一つのレポジトリになりうるものです。

gtk4はこれからlinuxディストリビューションに取り入れられるので(Fedoraはすでにgtk4版のものが出たようですが)、このチュートリアルが多くの人に役立てば幸いです。

GObject tutorial を書きました

GObjectのチュートリアル(英語)を書きました。 githubのレポジトリに登録してあります。

GObject tutorial

GObjectはあまり知られていません。 Gtkの方がそれよりは多少知られていると思います。 GObjectはGtkを下支えする、オブジェクト・システムです。 それはオブジェクト指向言語(Java, Rubyなど)がやっていることを、C言語レベルでできるようにするライブラリです。

その最も良い資料は、GObject API リファレンスですが、初心者には分かりにくい。 後半にチュートリアルもあるのですけれど、それも初心者では難しいでしょう。 では、どこかにもっと簡単なチュートリアルがあるかというと、それがなかなか見つからないのです。 そんな状況の中で、ある人(外国の方)からすすめられて、自分がチュートリアルを書くことになりました。

内容は、

  • タイプシステム
  • インスタンスの生成と初期化
  • オブジェクトの親子関係
  • 抽象クラスとオーバーライド
  • メモリ割り当てと解放
  • インターフェース

というところで、GObjectのポイントとなるところは一通り解説できたかと思います。

興味を持たれた方にはぜひ読んでいただき、コメントをイシューで上げていただけたらありがたいです。 本当のイシューも、もちろん歓迎します。

UBUNTUにgtk4をインストール

(注 2021/5/13) この記事は現在では古くなっています。

  • Arch, Debian, Ubuntu, Fedoraの最新版では、GTK4パッケージがあるので、ソースからインストールする必要はありません。
  • 仮にソースからインストールするにしても、前提条件となる諸ライブラリが各ディストリビューションでパッケージ化されているので、ソースからインストールする必要がありません。

Ubuntu 21.04では、

$ sudo apt-get install libgtk-4-bin libgtk-4-common libgtk-4-dev libgtk-4-doc

でgtk4のパッケージをインストールできます。

以下に当時の記述は残しておきますが、多くの人には必要のない記事になっています。

gtk4をubuntuにインストール

前回のブログで、gtk4をChromebookのLinux(ベータ版)にインストールしたことを書きました。 gtk4自体には問題はないのですが、Chromebookのウィンドウ・マネージャーはubuntuと違って、ウィンドウ・タイトルが表示されないようです。 それで、やはりubuntuでgtk4を動かしたくなりました。

gtk4を/usr/localに入れると、nautilusなどのGUIを使った既存のアプリケーションに問題が出ることは分かっていたので(それに気づかなかった自分が情けない・・・)、 今回はユーザディレクトリにインストールすることにしました。 mesonでコンパイル環境を整えるときに、インストール先のディレクトリを指定できます。

$ meson --prefix $HOME/local _build

このようにして、ユーザディレクトリ下のlocalフォルダにインストールすることにしました。 gtk4のインストールの必要条件として、glib, pango, gdk-pixbuf, gtk-docをソースファイルからビルド、インストールする必要がありました。 順を追って説明します。

glibのインストール

glibの前提条件として、必要なパッケージをapt-getを使ってインストールしておきます。 まず、ソースファイルをダウンロードします。

$ wget https://download.gnome.org/sources/glib/2.67/glib-2.67.1.tar.xz
$ tar -Jxf glib-2.67.1.tar.xz

必要なパッケージは、mesonでglibのコンパイル環境を整えるときのメッセージを見れば分かります。 コンパイルとインストールは、次のようにします。

$ meson --prefix $HOME/local _build
$ ninja -C _build
$ ninja -C _build install

インストール先がユーザ領域なので、インストール時にsudoは要りません。 インストールしたglibライブラリをその後にコンパイルするpango, gdk-pixbuf, gtk-doc, gtk4で使うので、環境変数を整えておく必要があります。 そこで、次のようなファイルenv.shを作ります。

# compiler
CPPFLAGS="-I$HOME/local/include"
LDFLAGS="-L$HOME/local/lib"
PKG_CONFIG_PATH="$HOME/local/lib/pkgconfig:$HOME/local/lib/x86_64-linux-gnu/pkgconfig"
export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
# linker
LD_LIBRARY_PATH="$HOME/local/lib/x86_64-linux-gnu/"
PATH="$HOME/local/bin:$PATH"
export LD_LIBRARY_PATH PATH

そして、bashにこれを取り込むのですが、ピリオド(.)またはsourceコマンドを使います。 この2つは同じコマンドだと思って構いません。 このコマンドは、現在のシェル(子シェルではない)の中でファイルを読み、コマンドを実行します。 「現在のシェルで」というところが、シェル・スクリプトと違います。 (シェル・スクリプトは、子プロセスのbashを起動してスクリプトを実行させる)。 したがって、exportコマンドによる環境変数の定義は現在のシェルの中で行われます。

(注)もしも子シェルでexportしても、現在のシェルの環境変数はなんらその影響を受けません。 もし、env.shをシェル・スクリプトとして実行すると、環境変数の定義は子シェルで実行され、スクリプトの終了とともに子シェルも終了します。 その結果、親シェルに戻ったときには環境変数は元のままになっており、env.shの実行は何の意味もなくなってしまいます。

$ . env.sh

または、

$ source env.sh

pangoのインストール

まずは、ソースファイルのダウンロードです。

$ wget https://download.gnome.org/sources/pango/1.48/pango-1.48.0.tar.xz
$ tar -Jxf pango-1.48.0.tar.xz

コンパイルの方法はglibと同じです。 mesonにライブラリが足りないと文句を言われたら、apt-getでパッケージをインストールしてください。

$ meson --prefix $HOME/local _build
$ ninja -C _build
$ ninja -C _build install

インストールでは、Pango-1.0.girなどのファイルを、$HOME/local/share/gir-1.0の下に配置します。 もしも、prefixが変更されなければ、/usr/local/share/gir-1.0に配置されるべきところです。 このshareディレクトリは、XDG_DATA_DIRSという環境変数に保存されていて、各プログラムはそれを使ってサーチします。 例えば、/usr/shareや/usr/local/shareなどがXDG_DATA_DIRSに書かれています。 そのため、$HOME/local/shareも追加しないと、後のコンパイルでエラーが発生することがあります。

$ export XDG_DATA_DIRS=$HOME/local/share:$XDG_DATA_DIRS

gdk-pixbuf, gtk-docのインストール

ソースファイルのダウンロード。

$ wget https://download.gnome.org/sources/gdk-pixbuf/2.42/gdk-pixbuf-2.42.2.tar.xz
$ tar -Jxf gdk-pixbuf-2.42.2.tar.xz
$ wget https://download.gnome.org/sources/gtk-doc/1.33/gtk-doc-1.33.1.tar.xz
$ tar -Jxf gtk-doc-1.33.1.tar.xz

各々のコンパイル、必要なパッケージのapt-getでのインストールは同様です。

gtk-docは、pkg-configのためのファイルを$HOME/local/shareに置くので、PKG_CONFIG_PATHにそれを追加しなければなりません。

$ export PKG_CONFIG_PATH="$HOME/local/share/pkgconfig:$PKG_CONFIG_PATH"

gtk4のインストール

ソースファイルは、開発中のgitレポジトリから最新のものをコピーし、今後も必要に応じて最新版に更新することにします。 そのためには、git cloneコマンドを用います。 gitが必要なので、apt-getでインストールしておきます。

$ git clone https://gitlab.gnome.org/GNOME/gtk.git

クローンには少し時間がかかります。 今後最新版にしたいときには、

$ git pull

でダウンロードできます。 現在も活発にgtk4は更新が続いています。

コンパイルは今までと同様です。

$ meson --prefix $HOME/local _build
$ ninja -C _build
$ ninja -C _build install

env.shの更新

これまで環境変数を3回に分けて定義しました。 環境変数は一度ログアウトすると消えてしまいます。 ですので、gtk4を使ってコンパイルをしたいときに、改めて環境変数を定義しなければなりません。 そのためのenv.shを更新しておきましょう。

# compiler
CPPFLAGS="-I$HOME/local/include"
LDFLAGS="-L$HOME/local/lib"
PKG_CONFIG_PATH="$HOME/local/lib/pkgconfig:$HOME/local/lib/x86_64-linux-gnu/pkgconfig:$HOME/local/share/pkgconfig"
export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
# linker
LD_LIBRARY_PATH="$HOME/local/lib/x86_64-linux-gnu/"
PATH="$HOME/local/bin:$PATH"
export LD_LIBRARY_PATH PATH
# gir
XDG_DATA_DIRS=$HOME/local/share:$XDG_DATA_DIRS
export XDG_DATA_DIRS

このスクリプトを.profileに書いておけば、ログイン時に自動的に設定されて便利だと思う人がいるかもしれません。 しかし、これらの環境変数はgtk4のコンパイルの時のみに必要なもので、通常のubuntuアプリケーションには不必要で、場合によっては有害なものです。 ですので、.profileに書くのはお勧めしません。 gtk4を使う場合のみenv.shを取り込んで設定してください。

gtk4を使ったプログラムのコンパイル

コンパイルには、事前に環境変数の設定が必要です。

$ . env.sh

その後は、普通にコンパイルできます。 例えば、sample.cというプログラムをコンパイルするには、

$ gcc `pkg-config --cflags gtk4` sample.c `pkg-config --libs gtk4`

とします。

普通はコマンドをこのように打つのではなく、make, rake, mesonとninja のいずれかを使うことが多いと思います。 詳しいことは、gtk4_tutorialが参考になります。 ただし、このチュートリアルは英語であり、まだ書きかけで、内容も頻繁に更新されているのでご注意ください。

ChromebookとLinux(ベータ版)、そしてgtk4

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スクリプトで文書の自動生成を試みていますので、それも面白いかと思います。

BuildToolsをアップグレードしました

昨年作ったLatex-Toolsのうち、Buildtoolsをアップグレードしました。 githubにアクセスするとソースファイルをダウンロードすることができます。 今回のアップグレードでは、

  1. 英語と日本語のReadme.mdとチュートリアルを追加した。
  2. newtexの仕様を大幅に変更して、手作業を減らし、より使いやすくした。
  3. makeに加えてrakeを使えるようにし、rakeを推奨ビルドツールにした。
  4. インストールを単純にし、分かりやすくした。
  5. lbがlatexengineを通して、どのエンジンが相応しいか予想する機能は残っているが、lb.confで積極的に指定する方法を推奨することにした。
  6. バグの修正

などが行われました。

このアップグレードの中では、特にnewtexがはるかに使いやすくなったと思います。 また、昨年の段階から、ドキュメントの不足を感じていたのを今回のアップグレードで解決しました。 詳細はgithubのレポジトリをご覧ください。

このツールは、もともと大きな文書、例えば100ページを越えるような書籍を作る際のツールとして作られましたが、 newtexが大きく強化されたために、より小さい文書でも有効であることが分かってきました。 それは、文書の構造を把握しやすくなったためです。 そもそも、コンピュータの特長は大量のデータを効率よく整理、解析できることにあります。 それがLaTeXのような大きなソースファイルを扱うソフトウェアにあまり適用されてこなかったのではないでしょうか。 多くの場合、LaTeXのソースの管理は作成者の人的努力に任されていたと思います。 このツールでは、

  1. ソースファイルをルートファイル、helper.tex、サブファイルに分類して構造化した。
  2. 使われているサブファイルや画像ファイルを検索する手段を提供した。
  3. ビルド・ディレクトリ(_build)を作ったことにより、ソースファイルのディレクトリをきれいに保つことができるようになった。
  4. サブファイルの単独コンパイルにより作業の効率化が図られた。
  5. アーカイブのためのスクリプトarlによって本当に必要なファイルのみをアーカイブすることができるようになった。 逆に不要なファイルを簡単に除くことができるようになった。

などの機能を提供することにより、より一層ソースファイルを管理しやすくなった、ということができると思います。

このツールはシェル・スクリプトで記述されているので、linux上でしか動きませんが、同様のことはperlrubyといったスクリプト言語で簡単に実現できます。 そのことは他のオペレーティング・システムでも、このツールをインプリメントできるということです。 私自身は、linuxユーザなのでそこまでやる考えはありませんが、興味を持たれた方は、ぜひ移植していただきたいと思います。

テキストエディタ sen

テキストエディタ Sen

テキストエディタ 'sen' をgithubにアップロードしました。

https://github.com/ToshioCP/sen

senは現在開発中のGtk4ライブラリで動作するエディタです。 ライブラリが開発中ですから、当然sen自身も安定版ではありません。 また、その機能もごく限られているため、今後その拡張が必要です。

Gtk3に興味を持って勉強している方々は少なくないと思いますが、Gtk4に関してはほとんどいないのではないかと思います。 しかし、近い将来にGtkはバージョン4に移行するでしょう。 この「近い将来」が来年なのか、再来年なのか、あるいはもっと先なのかはわかりません。 現在でも毎日開発が続けられており、gitlabは数時間ごとにマージされているという状況です。

Gtk4はGtk3に比べ、非常にスッキリしています。 それにwaylandなどの新しい技術により一層マッチしています。

そのような背景から、いち早くGtk4を学び、そのアプリケーションを試してみたい、という動機からsenが生まれました。 まだ赤ちゃんのようなアプリですが、今後の成長を楽しみにしています。

もし、Gtk4に興味のある方がいましたら、ぜひコメントしてください。 実は、hatenaの書き込み頻度が低いので、返信が遅くなるかもしれませんが、必ず書くようにします。