バージョン: 1.2.5-build5
最終更新: 2026-07-29
言語: 日本語 |
BlinkWebView の挙動を変える API です。JavaScript
の実行、画像の読み込み、
ローカルストレージ、User-Agent を切り替えられます。
1.2.2 までは、次の 5 つの setter
が表示に反映されていませんでした (値は保存され、
getter
はその値を返しますが、ページの読み込みには使われていませんでした)。
1.2.3 では 5 つとも反映されます。出荷形で実測した結果です。
| 関数 | 1.2.2 まで | 1.2.3 |
|---|---|---|
blink_web_view_set_javascript_enabled() |
反映されない (FALSE でもスクリプトが実行される) |
反映される |
blink_web_view_set_images_enabled() |
反映されない | 反映される |
blink_web_view_set_local_storage_enabled() |
反映されない | 反映される |
blink_web_view_set_default_font_size() |
反映されない | 反映される |
blink_web_view_set_default_encoding() |
反映されない | 反映される (下記) |
既定の文字コードが使われるページ:
set_default_encoding() の値が使われるのは、
文字コードの指定が無く、しかも自動判定が答えを出さないページだけです。
指定とは、HTTP の Content-Type の charset と
<meta charset> のことです。
次のページでは、設定と関係なく判定の結果が使われます。
windows-1252
と判定されますfile:// で開いた UTF-8 のページ: UTF-8
と判定されますhttp(s) やカスタムスキームで配った UTF-8
のページは、判定の結果が使われず、
既定の文字コードで読まれます。
1.2.3
のリリースノートでは、この関数を「まだ反映されない」としていました。これは
ASCII だけのページで測っていたためで、1.2.3-build1
の時点でも反映されています。
2026-09-25 に、http で配った UTF-8 のページ (文字コードの指定なし)
で確かめました。
Shift_JIS を指定すると、document.characterSet
が Shift_JIS になります。
スクリプトを止める必要があるアプリは 1.2.3
以降を使ってください。
User-Agent (blink_web_view_set_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 の既定値 |
| 明朝・ゴシック・等幅の書体 (1.2.3-build2 以降) | blink_web_view_set_font_family() |
blink_web_view_get_font_family() |
Noto Serif / Sans / Mono CJK など |
| 最小文字サイズ (1.2.3-build2 以降) | blink_web_view_set_minimum_font_size() |
blink_web_view_get_minimum_font_size() |
0 (下限なし) |
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/153.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 以降
1.2.3-build2 以降。
serif (明朝) / sans-serif (ゴシック) /
monospace (等幅)
と既定のフォントに使う書体を、ビューごとに変えます。
表示中のページにもすぐ反映されます。
typedef enum {
BLINK_FONT_GENERIC_STANDARD, /* 指定の無い本文 */
BLINK_FONT_GENERIC_SERIF, /* 明朝 */
BLINK_FONT_GENERIC_SANS_SERIF, /* ゴシック */
BLINK_FONT_GENERIC_MONOSPACE, /* 等幅 */
} BlinkFontGeneric;
void blink_web_view_set_font_family(BlinkWebView* web_view, BlinkFontGeneric generic,
const char* script, const char* family);
char* blink_web_view_get_font_family(BlinkWebView* web_view, BlinkFontGeneric generic,
const char* script); /* g_free() で解放。未設定なら NULL *//* 本文の明朝を原ノ味明朝に */
blink_web_view_set_font_family(view, BLINK_FONT_GENERIC_SERIF, NULL, "Harano Aji Mincho");
/* NULL を渡すと BlinkGTK の既定 (Noto Serif CJK JP など) に戻す */
blink_web_view_set_font_family(view, BLINK_FONT_GENERIC_SERIF, NULL, NULL);script は ISO 15924 の文字体系の名前
("Jpan" = 日本語、"Zyyy" =
共通・欧文)。NULL で "Zyyy" と
"Jpan" の両方に設定しますlang="ja" のページでは、欧文も "Jpan"
の表から選ばれます。"Zyyy"
だけを変えても、日本語のページの表示は変わりません。両者を分けたい理由が無ければ
NULL を渡してくださいfamily は fontconfig が知っている名前です
(fc-list : family で確かめられます)これより小さい文字を、この大きさ (CSS px)
まで大きくします。0 で下限なし
(既定)。表示中のページにもすぐ反映されます。
void blink_web_view_set_minimum_font_size(BlinkWebView* web_view, int size);
int blink_web_view_get_minimum_font_size(BlinkWebView* web_view);描画経路を取得・設定します。通常は既定 (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);注意: 描画経路は blink_gtk_init()
の時点で決まります。
blink_gtk_set_gpu_mode() を
blink_gtk_init()
より前に呼んでください。
blink_gtk_set_gpu_mode(BLINK_GPU_MODE_EGL); /* init より前 */
blink_gtk_init(&argc, &argv);blink_web_view_new_with_gpu_mode()
では経路を選べません。 WebView を
作る時点では初期化が終わっており、GPU
プロセスへ渡す起動フラグも決まって
いるためです。指定しても反映されず、警告だけが出ます (2026-09-14
に外部利用者の
報告で判明。それまで「EGL のつもりで software
を測る」ことが起きていました)。
blink_web_view_get_gpu_mode()
は初期化の後、実際に動いている経路を
返します。指定が反映されたかはこれで確かめてください。
なお software モード内部の配送経路は別軸です。
"P1" (画面へ直接渡す) と "P2" (共有メモリを経由して渡す) の 2
つがあり、
v1.2.0-build9 以降は blink_web_view_switch_render_path() で
実行中に
切り替えられます。詳しくは シグナル
API の
render-path-changed の節をご覧ください。GPU
モードそのものの実行時切替では
ありません。
また現在の実装ではモードはプロセス単位で、同一プロセスに異なるモードの
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/153.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 | 相互リンク追加 |
| v0.9.27-dev | 2026-01-01 | Settings APIドキュメント完成 |
| v0.9.26-dev | 2025-12-31 | 画像読み込み、ローカルストレージ制御追加 |
| v0.9.25-dev | 2025-12-31 | JavaScript制御、User-Agent設定追加 |
ライセンス: BSD-3-Clause
プロジェクト: BlinkGTK
メンテナー: BlinkGTK Lead daisy19@gmail.com