BlinkGTK 1.2.3-build4 Release Notes

Release date: 2026-09-28 / Chromium: 154.0.8037.57 / Language: 日本語 | English

The rendering engine is updated to Chromium 154.


What build4 makes faster

What build4 fixes

What build4 removes from the packages

What build3 fixes

What you can do with build2

Write pages to PDF files

blink_web_view_print_to_pdf_with_options() writes a PDF with the paper, margins, background
and page range you choose. The callback runs after the PDF has been written, and gets the
reason when it fails. Vertical text, ruby, emphasis marks and tate-chu-yoko come out in the PDF.

BlinkPdfOptions* o = blink_pdf_options_new();
blink_pdf_options_set_paper_size(o, 8.27, 11.69);   /* A4, in inches */
blink_web_view_print_to_pdf_with_options(view, "/tmp/page.pdf", o, on_pdf, NULL);
blink_pdf_options_free(o);

Text inside a scrolling container (overflow: auto and the like) is not split into pages:
only what is visible in the container goes onto one page (see "PDF output" in the C API reference).

Save downloads

When the handler set with blink_web_view_set_download_handler() returns a path, the file is
saved there (NULL means the XDG Download directory, "" means do not save). The
download-started signal hands you a BlinkDownload for progress, completion and failure, and
blink_download_cancel() cancels it. A view without a handler does not save downloads.

The decide-navigation signal lets you choose: open in this view, stop, open in the external
browser, open in another view, or open in a new view. A page opened with window.open() and
taken into a new view keeps window.opener.

Use the camera and microphone

getUserMedia() now goes through permission-request; once allowed, the devices work
(up to 1.2.3-build1 it always failed with NotSupportedError).

Answer permissions later, see who asks, and remember decisions

Keep a request with blink_permission_request_ref() and allow / deny it later.
blink_permission_request_get_origin() gives the requesting origin and get_embedding_origin()
the embedding one. After blink_permission_request_set_remember(), the same request is not
asked again.

Answer HTTP authentication (Basic and others)

Requests arrive at the handler set with blink_web_view_set_auth_handler(); answer with
blink_web_view_auth_response(). Further requests arrive one at a time.

Choose default fonts and a minimum font size

blink_web_view_set_font_family() sets the default serif, sans-serif, monospace and other
families, and blink_web_view_set_minimum_font_size() a minimum size. The minimum also applies
to ruby (with 16px text and a 12px minimum, ruby grows from 8px to 12px).

Register custom schemes before initialization

Call blink_gtk_register_scheme() before blink_gtk_init() to register a scheme without the
BLINKGTK_EXTRA_SCHEMES environment variable. Pages on that scheme get an origin and can use fetch().

Use window.blinkgtk from the page's first script

Up to 1.2.3-build1 it was added after loading finished.

Take screenshots while presentation is stopped

While the presentation policy keeps the view off screen, blink_web_view_capture_screenshot_async()
now presents one frame and captures it (up to 1.2.3-build1 it failed after 2 seconds).

What build2 fixes

What changes in behaviour with build2

What you can do with build1

Turning JavaScript, images and localStorage off now takes effect

Settings such as blink_web_view_set_javascript_enabled() are now applied to the page.
Up to 1.2.2 the value was only stored: page scripts still ran after passing FALSE.

Function 1.2.3 (measured on the shipped build)
blink_web_view_set_javascript_enabled() Works (FALSE stops page scripts)
blink_web_view_set_images_enabled() Works (FALSE stops image loading)
blink_web_view_set_local_storage_enabled() Works (FALSE makes localStorage unavailable)
blink_web_view_set_default_font_size() Works (passing 30 gives 30px body text)
blink_web_view_set_default_encoding() Not yet (pages without a declared charset stay windows-1252)

If your application must keep scripts from running on some pages, update to this release.
set_default_encoding() will be investigated and handled in a later release.

Custom schemes accept the usual web-development forms

Packaged builds start without naming the resource directory

Without blink_gtk_set_resources_path(), BlinkGTK now also looks for icudtl.dat and the
other resources next to libblinkgtk. Up to 1.2.2 it only looked next to the executable, so
applications built against the rpm / deb packages stopped with an ICU error.
The search order is:

  1. The executable's directory
  2. <libdir>/blinkgtk-0.1/chromium/ (rpm / deb)
  3. <libdir>/chromium/ (tarball)
  4. <libdir>/

Applications that set the path keep working as before.

The input method follows GTK's choice

BlinkGTK no longer picks the Japanese input path itself; it leaves the choice to GTK.
On Wayland this is GTK4's default text-input path, which is also what the input method
side (IBus) recommends. On real Fedora 45 / GNOME hardware we confirmed, with this path
selected, that conversion mode works and that closing views repeatedly produces no input
method warnings (measured by selecting the same path through the switch added in 1.2.2).

To get the 1.2.2 behaviour (naming IBus), set BLINKGTK_IM_MODULE=ibus. It affects
BlinkGTK's views only. blink_gtk_get_im_module() returns the value currently applied
(an empty string by default, meaning GTK decides).

Put your own markers on the part you want to measure

blink_gtk_trace_mark("name") puts a marker in the trace. The event is named after the
marker, the same shape as the web's performance.mark().

// Start with: --trace-startup=toplevel,blink.user_timing
blink_gtk_trace_mark("workload_ready");
/* ... the part to measure ... */
blink_gtk_trace_mark("idle_static_ready");

Without the blink.user_timing category the call does nothing.

Features enabled by default in Chromium 154

The feature list is Chromium 154's list on chromestatus.com. What we measured ourselves
covers rendering, input and startup, not these typography features.

What build1 fixes


What does not change

What behaves differently


What we verified