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に解凍するとしましょう。

解凍したファイル

図1

解凍したファイル

環境変数の設定

先ほど解凍したバイナリを参照できるように、環境変数を設定します。

バイナリを解凍した場所が C:\GTK4_Gvsbuild_2024.6.0_x64 であった場合は、

  • PKG_CONFIG_PATHC:\GTK4_Gvsbuild_2024.6.0_x64\lib\pkgconfig を追加
  • PathC:\GTK4_Gvsbuild_2024.6.0_x64\bin を追加
  • LibC:\GTK4_Gvsbuild_2024.6.0_x64\lib を追加

します。

環境変数の設定方法については 【Windows 11対応】Path環境変数を設定/編集して、独自のコマンドを実行可能にする:Tech TIPS - @IT などを参照して下さい。なお、設定するのはユーザー環境変数でもシステム環境変数でもかまいません(私はシステム環境変数のほうにしました)。

環境変数が設定できていることの確認

Powershellかコマンドプロンプトを開き、以下のようにpkgconfコマンドを実行してみます。

> pkgconf --modversion gtk4
4.14.4

バージョン番号が表示されれば成功です。されないようであれば環境変数の設定を見直しましょう。

なお、このpkgconfpkg-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
サンプルプログラムで開くウインドウ

図2

サンプルプログラムで開くウインドウ

以上で、gtk4-rsを使って開発ができる環境が整いました!

参考文献



© 神和電子 2017-2023