作成者: BlinkGTK Project
最終更新: 2026-07-30
WebKitGTK 6.0 (GTK4) のアプリケーションを BlinkGTK
に移すためのガイドです。
最短の移行手順を最初に、次に機械的な置換表、API
対応表、設計の違い、
そして「WebKitGTK にあって BlinkGTK に無いもの」を正直に記します。
記載されている BlinkGTK の API
はすべて、配布物のヘッダと共有ライブラリに
実在することを機械検証しています。
典型的な WebKitGTK
アプリの移行は、コードの変更としては数箇所です。
それに加えて BlinkGTK 固有の準備が 2 つ あります
(WebKitGTK には無い手順):
pkg-config --cflags --libs blinkgtk-0.1。icudtl.dat や locales/ などがrun-with-resources を使うか、blink_gtk_set_resources_path() で場所を指定しますいずれも アプリのビルド に完全な手順があります。
#include <webkit/webkit.h>
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
gtk_init();
GtkWidget *window = gtk_window_new();
gtk_window_set_title(GTK_WINDOW(window), "WebKitGTK Browser");
gtk_window_set_default_size(GTK_WINDOW(window), 1024, 768);
WebKitWebView *web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
gtk_window_set_child(GTK_WINDOW(window), GTK_WIDGET(web_view));
webkit_web_view_load_uri(web_view, "https://example.com/");
gtk_window_present(GTK_WINDOW(window));
GMainLoop *loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(loop);
return 0;
}#include <blink_gtk/blink_gtk.h>
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
/* 変更 1: エンジンの初期化を GTK より先に */
if (!blink_gtk_init(&argc, &argv)) {
g_printerr("blink_gtk_init() failed\n");
return 1;
}
gtk_init();
GtkWidget *window = gtk_window_new();
gtk_window_set_title(GTK_WINDOW(window), "BlinkGTK Browser");
gtk_window_set_default_size(GTK_WINDOW(window), 1024, 768);
/* 変更 2: WebView 作成。戻り値は GtkWidget* なのでキャスト不要で子にできる */
GtkWidget *web_view = blink_web_view_new();
gtk_window_set_child(GTK_WINDOW(window), web_view);
/* 変更 3: BlinkGTK API へ渡すときは BLINK_WEB_VIEW() でキャスト */
blink_web_view_load_uri(BLINK_WEB_VIEW(web_view), "https://example.com/");
gtk_window_present(GTK_WINDOW(window));
/* 変更 4: メインループは BlinkGTK のものを使う */
int status = blink_gtk_run_main_loop();
/* 変更 5: 終了処理 */
blink_gtk_shutdown();
return status;
}# Before
cc app.c -o app $(pkg-config --cflags --libs gtk4 webkitgtk-6.0)
# After
cc app.c -o app $(pkg-config --cflags --libs blinkgtk-0.1)BlinkGTK には Settings オブジェクトがありません。設定は WebView に直接行います。
| WebKitGTK | BlinkGTK | 備考 |
|---|---|---|
webkit_settings_set_enable_javascript() |
blink_web_view_set_javascript_enabled() |
Settings 取得が不要 |
webkit_settings_set_auto_load_images() |
blink_web_view_set_images_enabled() |
同上 |
webkit_settings_set_enable_html5_local_storage() |
blink_web_view_set_local_storage_enabled() |
同上 |
webkit_settings_set_default_font_size() |
blink_web_view_set_default_font_size() |
同名 |
webkit_settings_set_default_charset() |
blink_web_view_set_default_encoding() |
|
webkit_settings_set_user_agent() |
blink_web_view_set_user_agent() |
対応済み |
各 set_* に対応する get_*
も同様にあります。詳細:
Settings API
| WebKitGTK | BlinkGTK | 備考 |
|---|---|---|
webkit_web_view_load_uri() |
blink_web_view_load_uri() |
|
webkit_web_view_load_html() |
blink_web_view_load_html() |
|
webkit_web_view_go_back() /
go_forward() |
blink_web_view_go_back() /
go_forward() |
同名 |
webkit_web_view_can_go_back() /
can_go_forward() |
blink_web_view_can_go_back() /
can_go_forward() |
同名 |
webkit_web_view_reload() |
blink_web_view_reload() |
同名 |
webkit_web_view_stop_loading() |
blink_web_view_stop() |
|
webkit_web_view_get_uri() /
get_title() |
blink_web_view_get_uri() /
get_title() |
戻り値は g_free() が必要 |
webkit_web_view_get_estimated_load_progress() |
blink_web_view_get_estimated_load_progress() |
同名 |
webkit_web_view_is_loading() |
blink_web_view_is_loading() |
同名 |
詳細: Navigation API
| WebKitGTK | BlinkGTK | 備考 |
|---|---|---|
load-changed |
load-changed |
同名。イベント値は BlinkLoadEvent |
load-failed |
load-failed |
同名 |
notify::title |
title-changed |
専用シグナルになった |
notify::uri |
uri-changed |
同上 |
permission-request |
permission-request |
同名。既定は拒否、blink_permission_request_allow() /
deny() で応答 |
詳細: Signals API
| WebKitGTK | BlinkGTK | 備考 |
|---|---|---|
webkit_web_view_evaluate_javascript() |
blink_web_view_execute_javascript() |
|
webkit_user_content_manager_add_script() |
blink_web_view_inject_user_script() |
ContentManager 取得が不要 |
webkit_user_content_manager_add_style_sheet() |
blink_web_view_inject_user_stylesheet() |
同上 |
script message handler (script-message-received) |
blink_web_view_register_message_handler() |
ページ側は window.blinkgtk.postMessage() |
| (C → ページへの送信は WebKitGTK では JS 評価で代用) | blink_web_view_send_message_to_page() |
ページ側は window.blinkgtk.addMessageHandler() |
webkit_web_context_register_uri_scheme() |
blink_web_view_register_custom_scheme() /
register_custom_scheme_full() |
WebContext 不要、WebView 単位 |
詳細: アプリ連携 API
| WebKitGTK | BlinkGTK | 備考 |
|---|---|---|
script-dialog シグナル |
blink_web_view_set_javascript_dialog_handler() |
alert / confirm / prompt |
run-file-chooser シグナル |
blink_web_view_set_file_chooser_handler() |
応答は file_chooser_response() |
WebKitDownload (decide-policy 等) |
blink_web_view_set_download_handler() |
|
authenticate シグナル |
blink_web_view_set_auth_handler() |
応答は auth_response() |
| TLS エラーポリシー | blink_web_view_set_certificate_error_handler() |
|
enter-fullscreen / leave-fullscreen |
blink_web_view_set_fullscreen_handler() |
詳細: UI ハンドラ API
| WebKitGTK | BlinkGTK | 備考 |
|---|---|---|
webkit_web_view_set_zoom_level() |
blink_web_view_set_zoom_level() |
同名 |
WebKitFindController |
blink_web_view_find_in_page() /
stop_finding() |
Controller 取得が不要 |
WebKitPrintOperation |
blink_web_view_print_to_pdf() |
PDF 出力のみ (印刷ダイアログは無い) |
webkit_web_view_get_snapshot() |
blink_web_view_capture_screenshot() /
_async() |
PNG 保存 |
WebKitCookieManager |
blink_web_view_get_cookies() /
set_cookie() / delete_all_cookies() |
Manager 取得が不要 |
WebKitWebInspector |
blink_web_view_open_devtools() |
Chrome DevTools が開く |
目的から探す場合は 逆引きリファレンス が便利です。
webkit_web_view_get_settings()
などで補助オブジェクトを取得してから操作しますが、GtkWidget* —
blink_web_view_new() は GtkWidget*
を返します。BLINK_WEB_VIEW() でキャストして渡しますblink_gtk_init() を
GTK より先に呼びます正直に書きます。以下は現時点で相当機能がありません。
blink_web_view_print_to_pdf() による PDF 出力のみwebkit_web_view_execute_editing_command() 相当)これらが移行の妨げになる場合は、
不具合報告・要望
または
contact@blinkgtk.org
までお知らせください。
推奨しません。どちらも大きなランタイムを持つため、メモリ使用量が増えるほか、
シンボルやメインループの取り合いなど予期しない干渉の恐れがあります。
JavaScript は V8、描画は Chromium
のパイプラインで実行されます。静止中のページで
CPU をほぼ消費しない設計です。一方、Chromium 系はメモリ使用量が WebKit
より
多くなる傾向があります。用途に応じて評価してください
(詳細: エンジン比較)。
動きません。Wayland セッションが必須です。
このページの「まず動かす」の After のコードを、そのまま
アプリのビルド
の手順でビルドして動かしてから、
自分のアプリの置換に進むのが確実です。
| 日付 | 内容 |
|---|---|
| 2026-07-30 | 全面改訂 — WebKitGTK 6.0 (GTK4) 前提に統一、User-Agent API 対応済みへ是正 (旧版は「未提供」と記載)、対応表を現行機能 (対話・UI ハンドラ・DevTools 等) に拡張、無い機能の節を追加 |
| 2026-01-01 | 初版 |