リリース日: 2026-10-27 / Chromium: 156.0.8078.47 / 言語: 日本語 | English
レンダリングエンジンを Chromium 156 に更新しました。あわせて、Python (PyGObject) から BlinkGTK を使えるようになりました。
使い方に当たる行を確かめてください。詳しい説明は各行のリンク先にあります。
1.2.5-build1 から上げる方は、表の「GTK のテーマを dark にしているアプリ」の行を確かめてください (build2 で変わった点)。それ以外の行は 1.2.4 から上げる方向けです。
この表は Linux 版のものです。BlinkGTK for Windows の方は Windows 版の「前の版から上げる方」 を確かめてください。
| 対象の使い方 | 変わること | 必要な対応 |
|---|---|---|
| Python (PyGObject) から使う | 起動できるようになる (1.2.4 までは起動できなかった) | blinkgtk-run python3 app.py
の形で実行し、初期化と回し方を新しい形に (詳細) |
Python などから load-failed を受け取る |
ハンドラが呼ばれるようになる。エラー番号は int で届く | 不要 (詳細) |
| BlinkGTK を独自の形で配る (RPM・DEB・tarball をそのまま使わない) | 新しいファイル blinkgtk-subprocess と
blinkgtk-run が要る |
libexec/blinkgtk-0.1/ の 2
つも同梱する。blinkgtk-subprocess を別の場所に置く場合は
BLINKGTK_SUBPROCESS_PATH で指定。blinkgtk-run
は自分の場所から lib64/blinkgtk-0.1/chromium/ (DEB では
lib/<アーキテクチャ名>/blinkgtk-0.1/chromium/) の
allocator shim を探す。配置を変える場合は BLINKGTK_SHIM で
shim の場所を指定 (詳細) |
| Python などから型情報 (typelib) で使う | 呼べる API が増える (関数・メソッド・コンストラクタ 93 → 148) | パッケージを更新するだけ (詳細) |
| GTK のテーマを dark にしているアプリ | build2 から、頁に伝える配色の設定
(prefers-color-scheme) が dark になる (build1 までは常に
light)。dark に対応した頁 (color-scheme を指定した頁など)
は、地の色・フォームの部品・スクロールバーが dark
になる。color-scheme
を指定していない頁の地の色は白のまま。実行中にテーマの明暗を切り替えると頁も切り替わる |
頁を常に light にしたい場合は
BLINKGTK_FOLLOW_GTK_THEME=0 (詳細) |
set_user_agent() を使う |
load_uri() で開いた頁と reload()
にも反映される (1.2.4 までは load_html() だけ) |
不要 (詳細) |
set_zoom_level() / zoom-level を使う |
値が倍率 (1.0 = 100%) として扱われる。1.2.4 までは 1.5 で約 131%、100% のとき 0.0 を返していた | 古い動きに合わせて値を補正していた場合や、値を保存している場合は見直す (詳細) |
notify::is-loading で読み込み中の表示を切り替える |
読み込みが終わったときに False
の通知が来るようになる |
不要 (詳細) |
行頭・行末の空白に text-decoration を掛けた頁 |
空白の部分にも線が引かれる (1.2.3 までと同じ) | 不要 (詳細) |
text-decoration-skip-spaces を指定した頁 |
指定が反映されない | 不要 (詳細) |
一方の向きを
overflow: clip、他方をスクロールにした要素 |
clip の向きはスクロールしない |
不要 (詳細) |
blinkgtk-subprocess で起動します。
RPM・DEB・tarball とも
/usr/libexec/blinkgtk-0.1/blinkgtk-subprocess
に入ります。サンドボックスは有効のままです。
BLINKGTK_SUBPROCESS_PATH
でパスを指定します。0 を指定すると、1.2.4
までの動きに戻ります。python3-gobject /
Debian・Ubuntu: python3-gi)、GTK 4 と BlinkGTK の型情報
(Fedora: gtk4 と blinkgtk-bin-gir /
Debian・Ubuntu: gir1.2-gtk-4.0 と
gir1.2-blinkgtk-0.1)。導入の手順は Python
のチュートリアル にあります。blinkgtk-run
を通して実行します:
blinkgtk-run python3 app.py。BlinkGTK (Chromium)
のメモリ割り当ての仕組みは、プロセスの最初から読み込まれている必要があります。Python
では BlinkGTK が後から読み込まれるため、blinkgtk-run
を通さないと HTTPS の頁を開いたときに異常終了します (データの URL
や手元のファイルの頁では起きませんでした)。blinkgtk-run
は仕組みを環境変数 LD_PRELOAD
で先に読み込ませてから、指定したプログラムを実行します。RPM・DEB では
/usr/bin/blinkgtk-run、tarball では展開した場所の
usr/bin/blinkgtk-run です。BlinkGTK.gtk_init() で初期化し、app.run()
ではなく BlinkGTK.gtk_application_run() で回します
(app.run() では Chromium
の処理が回らず、頁が読み込まれません)。最後のウィンドウを閉じると戻るので、その後に
BlinkGTK.gtk_shutdown() を呼びます。import sys
import gi
gi.require_version('Gtk', '4.0')
gi.require_version('BlinkGTK', '0.1')
from gi.repository import BlinkGTK, Gtk
BlinkGTK.gtk_init(sys.argv[:1])
def on_activate(app):
win = Gtk.ApplicationWindow(application=app, default_width=800, default_height=600)
view = BlinkGTK.WebView.new()
win.set_child(view)
win.present()
view.load_uri('https://example.com/')
app = Gtk.Application(application_id='org.example.Hello')
app.connect('activate', on_activate)
rc = BlinkGTK.gtk_application_run(app)
BlinkGTK.gtk_shutdown()
sys.exit(rc)load-failed
を受け取れるようになりました。 1.1.0
から、このシグナルの引数を列挙型 BlinkLoadError
として登録していましたが、実際に渡すのは Chromium のエラー番号 (中断なら
-3) でした。そのため Python
では値を変換できず、ハンドラが一度も呼ばれていませんでした。1.2.5
からは文書どおり int として届きます。C の受け取りは変わりません。blinkgtk-run を通して HTTPS の頁
(https://example.com/) とデータの URL
を読み込み、ウィンドウを閉じて正常に終了すること (配布物の形、headless
の
weston、サンドボックスを有効にしたまま)。チュートリアルの完全なプログラム
20
本も、ビルドしたライブラリで、同じく仕組みを先に読み込ませて動かしました。GJS
など Python 以外の言語では試していません。text-decoration-skip-spaces
が、上流で試験段階に戻りました。 1.2.4 (Chromium 155)
では既定で有効になり、行頭と行末の空白 (全角スペースを含む)
には下線などの装飾が引かれなくなっていました。1.2.5
では空白の部分にも線が引かれ、1.2.3
までと同じ描画に戻ります。text-decoration-skip-spaces
の指定は反映されません。コードを読んでの判断で、描画は測っていません。# %
& @ などには付ける例外が、Chromium 155
から有効だったものとして恒久化されました。挙動は変わりません。既定で有効になったもののうち、頁を作る方に関わるものです。
random() 関数:
計算式の中で乱数を使えます。scroll-snap-type の値
pair を指定できます。overflow: clip、他方をスクロール (auto など)
にしたとき、これまでは clip が hidden
に置き換えられ、両方の向きでスクロールできる要素になっていました。156
からは clip のまま残り、その向きはスクロールしません。import ... with { type: "text" }:
ファイルの中身を文字列として読み込めます。prefers-color-scheme・フォームの部品・スクロールバーが GTK
のテーマの明暗に合います。アプリの実行中にテーマの明暗を切り替えると、頁を読み込み直さずに切り替わります。以前の動き
(頁は常に light) に戻すには BLINKGTK_FOLLOW_GTK_THEME=0
を指定します。アクセント色と選択範囲の色は、まだ GTK
のテーマに合っていません。BLINKGTK_DEFER_ZYGOTE=0)BLINKGTK_FAST_RENDER_NODE=0)BLINKGTK_VK_DRIVER_SELECT=0)set_user_agent() で設定した User-Agent
が、load_uri() で開いた頁に届いていませんでした
(load_html() では届いていました)。reload()
で読み込み直した頁にも届くようにしました。set_zoom_level() /
get_zoom_level() / zoom-level)
を、説明どおり倍率 (1.0 = 100%) として扱うようにしました。
1.2.4 までは Chromium の対数のレベルとして渡しており、1.5 を指定すると約
131% になり、100% のとき get_zoom_level() は 0.0
を返していました。load-failed
を受け取れない、型情報が古い)。notify::is-loading の
False の通知が来ませんでした。 通知は onload
の時点 (まだ読み込み中) の 1
回だけで、読み込み中の表示をこのプロパティで切り替えるアプリでは表示が止まりませんでした。1.2.5
からは、読み込みの開始と終了のたびに通知します。load-changed
の STARTED が来ない操作 (戻る・再読み込みで確かめました)
や、FINISHED が来ない応答 (load_uri() で開いた
HTTP 204。このときは load-failed に中断の -3 が届きます)
でも、開始と終了の通知が来ます。ダウンロードになった移動では試していません。