2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Tauri 2.0でtauri-controlsを使うときに気をつけること

Last updated at Posted at 2024-09-14

はじめに

Tauriにはtauri-controlsというライブラリがあります。これはフレームレスウィンドウでOS固有のコントロールボタンを再現1してくれるもので、アプリのタイトルバーをカスタマイズしたいときに非常に便利なライブラリです。

しかし、Tauri 2.0で使用するときにいくつかハマるポイントがあったので概要と対策方法を書きます。今後のバージョンアップで必要なくなるかもしれません。

error[E0432]: unresolved import `tauri::Icon`

Rustのコンパイルエラーです。これはtauri-controlsのドキュメントでインストールすると書いてあるtauri-plugin-windowクレートが原因です。

対処法

cargo rm tauri-plugin-window
tauri::Builder::default()
    .plugin(tauri_plugin_os::init())
-   .plugin(tauri_plugin_window::init())
    ...

依存関係とBuilderのプラグインから削除します。

ドキュメントではインストールすると書いてありますが、Tauri側のアップデートに伴って不要になりました。2

Command os_type not found

WebView側に表示されるエラーです。tauri-controlsは自動でプラットフォームを検出しますが、このエラーが出る状態では検出できなくなってしまいます。

これはtauri-controlsが依存している@tauri-apps/plugin-osとRust側のプラグインであるtauri-plugin-osクレートのバージョンが合っていない(互換性がない)ことが原因です。ドキュメントにしたがってcargo add tauri-plugin-osすると最新バージョンが入ってくるのでこのエラーに遭遇しやすいと思います。

対処法

cargo add tauri-plugin-os@=2.0.0-beta.6

Rust側のプラグインのバージョンを2.0.0-beta.6に固定してインストールします。=がないとすでに他にバージョンがインストールされている場合に置き換わらない可能性があるので注意。

コントロールが反応しない / abc not allowed. Permissions associated with this command: abc3

これはsrc-tauri/capabilities/abc.jsonで権限が許可されていない状態でAPIを呼び出したときにWebView側で表示されます。コントロール(ウィンドウのボタン)を押しても反応しないという場合もおそらくこれが原因です。

対処法

src-tauri/capabilities/abc.jsonpermissionsに以下の権限を設定する。

    "core:window:allow-start-dragging",
    "core:window:allow-toggle-maximize",
    "core:window:allow-internal-toggle-maximize",
    "core:window:allow-minimize",
    "core:window:allow-is-maximized",
    "core:window:allow-set-fullscreen",
    "core:window:allow-is-fullscreen",
    "core:window:allow-close",
    "core:event:allow-listen",
    "os:allow-os-type",
おまけ:各権限の用途

コードをすべて読んだわけではないので、確実ではないですが各権限の用途のまとめです。

    // タイトルバーをドラッグしたとき
    "core:window:allow-start-dragging",

    // 最大化/もとに戻すボタンが押されたとき
    "core:window:allow-toggle-maximize",
    
    // タイトルバーをダブルクリックで最大化/もとに戻す用(Windows限定?)
    "core:window:allow-internal-toggle-maximize",
    
    // 最小化ボタンが押されたとき
    "core:window:allow-minimize",
    
    // 最大化されたかどうかの検出用(アイコンが変わる)
    "core:window:allow-is-maximized",
    
    // macosで拡大ボタンが押されたとき
    "core:window:allow-set-fullscreen",
    "core:window:allow-is-fullscreen",
    
    // 閉じるボタンが押されたとき
    "core:window:allow-close",
    
    // リサイズ検知用
    "core:event:allow-listen",
    
    // platformが指定されなかった場合の自動検出用
    "os:allow-os-type",

さいごに

Tauri 2.0はまだrcバージョンであり、API自体は安定しているものの、tauri-controlsのようなサードパーティのライブラリ側の対応が追いついていない現状があります。それでも今使いたいという方の助けになれば幸いです。

わからない点や解決しなかった場合は、コメントしていただければ、同じライブラリ利用者として解決できるようにお答えします。

  1. いわゆる https://github.com/WICG/window-controls-overlay のやつです。

  2. GitHubのリポジトリもアーカイブされています

  3. この項目に出てくるabcという部分は適宜読み替えてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?