gtk4-rs をWindowsでお手軽に試す方法
作成日:
概要
GTK は、クロスプラットフォームなGUIのデスクトップアプリを作れるライブラリです。その最新版であるGTK4をRustから使えるようにしたものが gtk-rs/gtk4-rs: Rust bindings of GTK 4 です。
クロスプラットフォームではあるのですが、GTKのサイトにあるWindows向けのインストール手順を見ると、初手で「MSYS2を入れましょう」となっており、Windowsではあまり手軽に試せるといった雰囲気ではありません。しかし、wingtk/gvsbuild: GTK stack for Windows で配布されているビルド済みバイナリを入れると、比較的手軽にgtk4-rsを動かすことができました。本稿では、この方法を紹介します。
ただし、gvsbuildのページに
Note however that these binaries are provided “AS IS”, WITHOUT WARRANTY OF ANY KIND. They just contain the output of our latest CI run. They are not tested, and we cannot commit to timely updates even for security issues. We strongly recommend to build your own binaries, especially if you plan to distribute them with your application or use them in production.
(訳:しかし、これらのバイナリは現状有姿で如何なる保証もなしに提供されることに注意してください。これらは単なる我々の最新のCI実行の出力物であり、テストされておらず、また例えセキュリティの問題があったとしても適時的なアップデートを提供する余裕が我々にはありません。特に、GTKのバイナリを自身のアプリケーションとともに配布する場合や、本番環境で利用する場合においては、自身でバイナリをビルドすることを我々は強く推奨します)
と書いてある通り、あくまで自前でビルドすることが推奨されてはいます。とはいえ、手元で自分のアプリケーションをつくる分には問題ないはずです。アプリケーションを配布する段になったら、それこそGitHub ActionsのWindowsマシンにビルド環境を整えればよいのかなと思います(クロスプラットフォーム向けにビルドするならほぼCI必須でしょうし)。
手順
Rustのインストール
Rustがインストールされていなければrustupなどでインストールします。
本稿では、stable-x86_64-pc-windows-msvc
が入っていることを想定します(Windowsで普通にインストールするとこうなるはずです)。なお、本稿では >
はプロンプトです(実際には入力しません)。
> rustup show
Default host: x86_64-pc-windows-msvc
rustup home: C:\Users\xxxx\.rustup
stable-x86_64-pc-windows-msvc (default)
rustc 1.79.0 (129f3b996 2024-06-10)
GTK4バイナリのダウンロードと解凍
https://github.com/wingtk/gvsbuild/releases から最新のバイナリビルドのzipをダウンロードします。ここでは、本稿執筆時点で最新版の Release Version 2024.6.0 をダウンロードしたと仮定します。
GTK4_Gvsbuild_2024.6.0_x64.zip を適当な場所に解凍します。ここでは、C:\GTK4_Gvsbuild_2024.6.0_x64
に解凍するとしましょう。
環境変数の設定
先ほど解凍したバイナリを参照できるように、環境変数を設定します。
バイナリを解凍した場所が C:\GTK4_Gvsbuild_2024.6.0_x64
であった場合は、
PKG_CONFIG_PATH
にC:\GTK4_Gvsbuild_2024.6.0_x64\lib\pkgconfig
を追加Path
にC:\GTK4_Gvsbuild_2024.6.0_x64\bin
を追加Lib
にC:\GTK4_Gvsbuild_2024.6.0_x64\lib
を追加
します。
環境変数の設定方法については 【Windows 11対応】Path環境変数を設定/編集して、独自のコマンドを実行可能にする:Tech TIPS - @IT などを参照して下さい。なお、設定するのはユーザー環境変数でもシステム環境変数でもかまいません(私はシステム環境変数のほうにしました)。
環境変数が設定できていることの確認
Powershellかコマンドプロンプトを開き、以下のようにpkgconf
コマンドを実行してみます。
> pkgconf --modversion gtk4
4.14.4
バージョン番号が表示されれば成功です。されないようであれば環境変数の設定を見直しましょう。
なお、このpkgconf
はpkg-config
と同じです。gtk4-rsのドキュメントなどではpkg-config
と記載されているので適宜読み替えましょう。
サンプルプロジェクトの作成と実行
適当なフォルダにRustのプロジェクトをつくります。
> cargo new etude-gtk4-rs
> cd etude-gtk4-rs
プロジェクトにgtk4-rsを追加します。このとき、featuresとして先ほど確認したgtk4のバージョンを入れます。今回は 4.14.4 だったので
> cargo add gtk4 --rename gtk --features v4_14
とします。
一旦、そのままの状態でビルドできることを確認します。
> cargo run
ビルドと実行ができたら、ウインドウを開くプログラムを書いてみます。src/main.rs
に以下のように書いて保存します(gtk4-rsのサンプルそのままです)。
use gtk::prelude::*;
use gtk::{glib, Application, ApplicationWindow};
const APP_ID: &str = "org.gtk_rs.HelloWorld2";
fn main() -> glib::ExitCode {
// Create a new application
let app = Application::builder().application_id(APP_ID).build();
// Connect to "activate" signal of `app`
app.connect_activate(build_ui);
// Run the application
app.run()
}
fn build_ui(app: &Application) {
// Create a window and set the title
let window = ApplicationWindow::builder()
.application(app)
.title("My GTK App")
.build();
// Present window
window.present();
}
その上でもう一度実行するとウインドウが開くはずです。
> cargo run
以上で、gtk4-rsを使って開発ができる環境が整いました!
参考文献
- Unlocking the GNOME stack for Rust – gtk-rs
- GUI development with Rust and GTK 4
- gtk-rsでデスクトップアプリ開発をはじめよう(gihyo.jp の連載)