バージョン: 1.2.0-build2
最終更新: 2026-07-29
言語: 日本語 |
BlinkWebView の挙動を変える API です。JavaScript
の実行、画像の読み込み、
ローカルストレージ、User-Agent を切り替えられます。
blink_web_view_new()
の直後、ページを読み込む前に呼びます。
GtkWidget *view = blink_web_view_new();
blink_web_view_set_javascript_enabled(BLINK_WEB_VIEW(view), FALSE);
blink_web_view_set_images_enabled(BLINK_WEB_VIEW(view), FALSE);
blink_web_view_load_uri(BLINK_WEB_VIEW(view), "https://example.com/");設定は BlinkWebView ごとに独立しています。
| 設定 | 変更 | 取得 | 既定値 |
|---|---|---|---|
| JavaScript | blink_web_view_set_javascript_enabled() |
blink_web_view_get_javascript_enabled() |
有効 |
| 画像の読み込み | blink_web_view_set_images_enabled() |
blink_web_view_get_images_enabled() |
有効 |
| ローカルストレージ | blink_web_view_set_local_storage_enabled() |
blink_web_view_get_local_storage_enabled() |
有効 |
| User-Agent | blink_web_view_set_user_agent() |
blink_web_view_get_user_agent() |
Chromium の既定値 |
Python (PyGObject) や Rust (gtk-rs) からも同じ設定を使えます。
WebKitGTK では WebKitSettings
オブジェクトを介しますが、BlinkGTK は
BlinkWebView
に直接設定します。関数名も呼び出し方も異なります。
対応表はこのページの後半にあります。
JavaScriptの有効/無効を設定します。
シグネチャ:
void blink_web_view_set_javascript_enabled(BlinkWebView* web_view, gboolean enabled);パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | BlinkWebView* |
BlinkWebView(BLINK_WEB_VIEW() でキャスト) |
| enabled | gboolean | TRUE = 有効、FALSE =
無効 |
戻り値: なし
デフォルト値: TRUE(有効)
使用例:
#include <blink_gtk/blink_gtk.h>
// JavaScript無効でセキュアなコンテンツ表示
GtkWidget* web_view = blink_web_view_new();
blink_web_view_set_javascript_enabled(web_view, FALSE);
blink_web_view_load_uri(web_view, "https://example.com");WebKitGTK互換:
// WebKitGTK
WebKitSettings* settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(web_view));
webkit_settings_set_enable_javascript(settings, FALSE);
// BlinkGTK(同等)
blink_web_view_set_javascript_enabled(web_view, FALSE);利用可能バージョン: v1.1.0 以降
JavaScriptが有効かどうかを取得します。
シグネチャ:
gboolean blink_web_view_get_javascript_enabled(BlinkWebView* web_view);パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | BlinkWebView* |
BlinkWebView(BLINK_WEB_VIEW() でキャスト) |
戻り値: gboolean - TRUE = 有効、FALSE =
無効
使用例:
if (blink_web_view_get_javascript_enabled(web_view)) {
g_print("JavaScript is enabled\n");
} else {
g_print("JavaScript is disabled\n");
}利用可能バージョン: v1.1.0 以降
カスタムUser-Agent文字列を設定します。
シグネチャ:
void blink_web_view_set_user_agent(BlinkWebView* web_view, const char* user_agent);パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | BlinkWebView* |
BlinkWebView(BLINK_WEB_VIEW() でキャスト) |
| user_agent | const char* | User-Agent
文字列。NULL または空文字を渡すと override
を解除し Chromium 既定の User-Agent に戻る |
戻り値: なし
デフォルト値: Chromium のデフォルト User-Agent(override 未設定の状態)
注意: 値は HTTP
ヘッダ値として妥当である必要があります。CR / LF / NUL
を含む文字列は
無視され、override
は変更されません(不正なヘッダの送出を防ぐため)。
設定は以後に起動する Renderer
にも引き継がれます(override_in_new_tabs=true)。
使用例:
// カスタムUser-Agent設定
blink_web_view_set_user_agent(web_view, "MyApp/1.0 (Linux; BlinkGTK)");
blink_web_view_load_uri(web_view, "https://httpbin.org/user-agent");実用例 - モバイルUser-Agent:
// モバイル端末として振る舞う
const char* mobile_ua = "Mozilla/5.0 (Linux; Android 10) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/151.0.0.0 Mobile Safari/537.36";
blink_web_view_set_user_agent(web_view, mobile_ua);WebKitGTK互換:
// WebKitGTK
WebKitSettings* settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(web_view));
webkit_settings_set_user_agent(settings, "MyApp/1.0");
// BlinkGTK(同等)
blink_web_view_set_user_agent(web_view, "MyApp/1.0");利用可能バージョン: v1.1.0 以降
現在のUser-Agent文字列を取得します。
シグネチャ:
gchar* blink_web_view_get_user_agent(BlinkWebView* web_view);パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | BlinkWebView* |
BlinkWebView(BLINK_WEB_VIEW() でキャスト) |
戻り値: gchar* -
blink_web_view_set_user_agent() で設定した override
文字列。
override 未設定時は NULL(Chromium 既定の
User-Agent を使用中であることを意味する)。
非 NULL の場合、呼び出し側で g_free() が必要。
使用例:
gchar* user_agent = blink_web_view_get_user_agent(BLINK_WEB_VIEW(web_view));
if (user_agent) {
g_print("User-Agent override: %s\n", user_agent);
g_free(user_agent); /* 重要: メモリ解放 */
} else {
g_print("override なし (Chromium 既定の User-Agent を使用中)\n");
}メモリ管理:
注意 重要:
戻り値は呼び出し側でg_free()により解放する必要があります。
利用可能バージョン: v1.1.0 以降
画像の自動読み込みを制御します。
シグネチャ:
void blink_web_view_set_images_enabled(BlinkWebView* web_view, gboolean enabled);パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | BlinkWebView* |
BlinkWebView(BLINK_WEB_VIEW() でキャスト) |
| enabled | gboolean | TRUE =
自動読み込み、FALSE = 無効 |
戻り値: なし
デフォルト値: TRUE(自動読み込み有効)
使用例:
// 画像読み込みを無効化(テキストのみ表示)
blink_web_view_set_images_enabled(web_view, FALSE);
blink_web_view_load_uri(web_view, "https://example.com");実用例 - 軽量ブラウジング:
// データ使用量削減モード
void enable_data_saver_mode(GtkWidget* web_view) {
blink_web_view_set_images_enabled(web_view, FALSE);
blink_web_view_set_javascript_enabled(web_view, FALSE);
g_print("Data saver mode enabled\n");
}WebKitGTK互換:
// WebKitGTK
webkit_settings_set_auto_load_images(settings, FALSE);
// BlinkGTK(同等)
blink_web_view_set_images_enabled(web_view, FALSE);利用可能バージョン: v1.1.0 以降
画像の自動読み込み設定を取得します。
シグネチャ:
gboolean blink_web_view_get_images_enabled(BlinkWebView* web_view);パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | BlinkWebView* |
BlinkWebView(BLINK_WEB_VIEW() でキャスト) |
戻り値: gboolean - TRUE =
自動読み込み有効、FALSE = 無効
使用例:
if (blink_web_view_get_images_enabled(web_view)) {
g_print("Images will be loaded\n");
} else {
g_print("Images are blocked\n");
}利用可能バージョン: v1.1.0 以降
HTML5 LocalStorageの有効/無効を設定します。
シグネチャ:
void blink_web_view_set_local_storage_enabled(BlinkWebView* web_view, gboolean enabled);パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | BlinkWebView* |
BlinkWebView(BLINK_WEB_VIEW() でキャスト) |
| enabled | gboolean | TRUE = 有効、FALSE =
無効 |
戻り値: なし
デフォルト値: TRUE(有効)
使用例:
// ローカルストレージ無効化(プライバシー保護)
blink_web_view_set_local_storage_enabled(web_view, FALSE);
blink_web_view_load_uri(web_view, "https://example.com");実用例 - プライバシーモード:
// プライバシー保護モード
void enable_privacy_mode(GtkWidget* web_view) {
blink_web_view_set_javascript_enabled(web_view, FALSE);
blink_web_view_set_local_storage_enabled(web_view, FALSE);
g_print("Privacy mode enabled\n");
}WebKitGTK互換:
// WebKitGTK
webkit_settings_set_enable_local_storage(settings, FALSE);
// BlinkGTK(同等)
blink_web_view_set_local_storage_enabled(web_view, FALSE);利用可能バージョン: v1.1.0 以降
LocalStorage設定を取得します。
シグネチャ:
gboolean blink_web_view_get_local_storage_enabled(BlinkWebView* web_view);パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | BlinkWebView* |
BlinkWebView(BLINK_WEB_VIEW() でキャスト) |
戻り値: gboolean - TRUE = 有効、FALSE =
無効
使用例:
if (blink_web_view_get_local_storage_enabled(web_view)) {
g_print("LocalStorage is enabled\n");
} else {
g_print("LocalStorage is disabled\n");
}利用可能バージョン: v1.1.0 以降
描画経路を取得・設定します。通常は既定 (software) のままで動作します。
typedef enum {
BLINK_GPU_MODE_SOFTWARE = 0, /* CPU 描画 (既定、GPU 不要) */
BLINK_GPU_MODE_SWIFTSHADER = 1, /* CPU による GL エミュレーション (WebGL/WebGPU) */
BLINK_GPU_MODE_EGL = 2, /* ネイティブ GPU 描画 (WebGL/WebGPU、GPU 必須) */
} BlinkGpuMode;
GtkWidget* blink_web_view_new_with_gpu_mode(BlinkGpuMode mode);
BlinkGpuMode blink_web_view_get_gpu_mode(BlinkWebView* web_view);GPU モードは WebView の生成時に指定します
(blink_web_view_new() の
代わりに new_with_gpu_mode()
を使う)。生成後の切り替えはできません。
また現在の実装ではモードはプロセス単位で、同一プロセスに異なるモードの
WebView を作った場合は最初の WebView のモードが使われます。
コピー・保存・印刷・選択などをビットフラグで禁止できます。電子書籍
リーダーやキオスク端末で、コンテンツ保護の挙動を保証する用途です。
blink_web_view_set_content_policy(view, BLINK_CONTENT_POLICY_EBOOK_READER);
BlinkContentPolicy p = blink_web_view_get_content_policy(view);| 主なフラグ | 禁止するもの |
|---|---|
BLINK_CONTENT_POLICY_ALLOW_ALL |
(制限なし、既定) |
BLINK_CONTENT_POLICY_NO_COPY |
クリップボードへのコピー |
BLINK_CONTENT_POLICY_NO_SAVE |
ページの保存 |
BLINK_CONTENT_POLICY_NO_IMAGE_SAVE |
画像の保存 |
BLINK_CONTENT_POLICY_NO_SELECTION |
テキスト選択 |
BLINK_CONTENT_POLICY_EBOOK_READER |
電子書籍向けプリセット |
BLINK_CONTENT_POLICY_KIOSK |
キオスク向けプリセット |
フラグの全一覧はヘッダ blink_gtk.h の
BlinkContentPolicy を参照して
ください。
帯域幅を節約したい場合:
void setup_data_saver(GtkWidget* web_view) {
blink_web_view_set_images_enabled(web_view, FALSE);
blink_web_view_set_javascript_enabled(web_view, FALSE);
}セキュリティを最優先する場合:
void setup_secure_mode(GtkWidget* web_view) {
blink_web_view_set_javascript_enabled(web_view, FALSE);
blink_web_view_set_local_storage_enabled(web_view, FALSE);
blink_web_view_set_images_enabled(web_view, FALSE);
}モバイル端末として振る舞う場合:
void setup_mobile_emulation(GtkWidget* web_view) {
const char* mobile_ua = "Mozilla/5.0 (Linux; Android 10) "
"AppleWebKit/537.36 Chrome/151.0.0.0 Mobile";
blink_web_view_set_user_agent(web_view, mobile_ua);
}| WebKitGTK | BlinkGTK | 互換性 |
|---|---|---|
webkit_settings_set_enable_javascript() |
blink_web_view_set_javascript_enabled() |
同じ動作 |
webkit_settings_get_enable_javascript() |
blink_web_view_get_javascript_enabled() |
同じ動作 |
webkit_settings_set_user_agent() |
blink_web_view_set_user_agent() |
同じ動作 |
webkit_settings_get_user_agent() |
blink_web_view_get_user_agent() |
同じ動作 |
webkit_settings_set_auto_load_images() |
blink_web_view_set_images_enabled() |
同じ動作 |
webkit_settings_get_auto_load_images() |
blink_web_view_get_images_enabled() |
同じ動作 |
webkit_settings_set_enable_local_storage() |
blink_web_view_set_local_storage_enabled() |
同じ動作 |
webkit_settings_get_enable_local_storage() |
blink_web_view_get_local_storage_enabled() |
同じ動作 |
Before (WebKitGTK):
WebKitWebView* web_view = webkit_web_view_new();
WebKitSettings* settings = webkit_web_view_get_settings(web_view);
webkit_settings_set_enable_javascript(settings, FALSE);
webkit_settings_set_user_agent(settings, "MyApp/1.0");After (BlinkGTK):
GtkWidget* web_view = blink_web_view_new();
blink_web_view_set_javascript_enabled(web_view, FALSE);
blink_web_view_set_user_agent(web_view, "MyApp/1.0");差分:
設定は blink_web_view_new() の直後、URL
を読み込む前に適用します。
GtkWidget *view = blink_web_view_new();
/* ページを読み込む前に設定する */
blink_web_view_set_javascript_enabled(BLINK_WEB_VIEW(view), FALSE);
blink_web_view_set_images_enabled(BLINK_WEB_VIEW(view), FALSE);
blink_web_view_set_user_agent(BLINK_WEB_VIEW(view), "MyApp/1.0");
blink_web_view_load_uri(BLINK_WEB_VIEW(view), "https://example.com/");同梱サンプル blinkgtk_browser
は設定を変更しない最小構成です。設定を試す
場合は、上記のように呼び出しを足してビルドし直してください
(examples/ の Makefile
でそのままビルドできます)。
| バージョン | リリース日 | 変更内容 |
|---|---|---|
| v0.9.28-dev | 2026-01-01 | Build 174: 相互リンク追加 |
| v0.9.27-dev | 2026-01-01 | Build 173: Settings APIドキュメント完成 |
| v0.9.26-dev | 2025-12-31 | Build 172: 画像読み込み、ローカルストレージ制御追加 |
| v0.9.25-dev | 2025-12-31 | Build 171: JavaScript制御、User-Agent設定追加 |
ライセンス: BSD-3-Clause
プロジェクト: BlinkGTK
メンテナー: BlinkGTK Lead daisy19@gmail.com