News

Updates to BlinkGTK and related work. Atom

v1.2.5-build2 released (page colors follow the GTK theme, faster startup)

2026-10-27 · Release

The page color scheme (light / dark), form controls and scrollbars now follow the GTK theme, and switching the theme while the app runs switches the page too. Set BLINKGTK_FOLLOW_GTK_THEME=0 to keep pages always light, as before. Startup is also faster.

BlinkGTK for Windows v1.2.5-build1 released

2026-10-23 · Release

BlinkGTK for Windows moves to Chromium 156.0.8078.47 and now matches the Linux v1.2.5-build1. Hanging punctuation and one-line warichu work on Windows too, and blink_gtk_has_typesetting_feature() returns TRUE for both "hanging-punctuation:allow-end" and "warichu:single-line". The Linux 1.2.5 API changes (the load-failed error number is an int, is-loading returns to False when loading ends, and others) are included, but their behavior on Windows has not been checked yet. Rebuild apps that embed it with the new devel ZIP.

v1.2.5-build1 released (Chromium 156, usable from Python)

2026-10-22 · Release

The rendering engine is updated to Chromium 156. BlinkGTK can now be used from Python (PyGObject), and the launcher blinkgtk-run is included. API behavior is also corrected; for example, set_user_agent() now applies to pages opened with load_uri().

BlinkGTK for Windows v1.2.4-build4 released

2026-10-18 · Release

BlinkGTK for Windows now bundles a Vulkan-enabled GTK and adds an experimental GPU path. The path is used only when the environment variable BLINKGTK_WIN_GPU_PATH=vulkan is set. It is disabled by default and confirmed on one Intel Iris Xe machine only. In 1.2.4-build2, blink_gtk_has_typesetting_feature() returned TRUE for hanging punctuation although it did not work; this release fixes that. Chromium stays at 155.0.8059.39, and the engine-side changes for hanging punctuation and warichu made in the Linux build are not included.

v1.2.4-build4 released (fixes after navigation)

2026-10-14 · Release

Fixed a crash when clicking the page after a navigation, and an issue where the app stopped responding when navigating with accessibility enabled. The DEB file names in the bundled INSTALL and README are also corrected.

v1.2.4-build3 released (warichu, capture fixes)

2026-10-14 · Release

Inline cutting notes (warichu) that fit on one line can now be set (CSS -blinkgtk-warichu: auto; the syntax is experimental). Fixed: static-page captures (software async) that timed out after 2 seconds but left a file, swapped colours in EGL captures, and render path switches that always rolled back on white pages. The async capture on the software path now, in most cases, returns the screen at the time of the request.

BlinkGTK for Windows v1.2.4-build2 released

2026-10-11 · Release

BlinkGTK for Windows is updated to Chromium 155.0.8059.39 (the upstream source of the same version as the Linux build v1.2.4-build2). The update notice (BLINKGTK_UPDATE_CHECK=1, off by default) is included; on Windows it is visible only with --enable-logging. The build now has DCHECK disabled, and the portable ZIP is 376 MiB.

v1.2.4-build2 released (update notice fix)

2026-10-11 · Release

The optional update notice (BLINKGTK_UPDATE_CHECK=1, off by default) always failed because the release list was larger than the receive limit. The limit is raised. If the notice is not enabled, behavior is the same as build1.

v1.2.4-build1 released (Chromium 155; Fedora 44 support ended)

2026-10-07 · Release

The engine is updated to Chromium 155. It includes the upstream fix for lines after ruby shifting up, and hanging punctuation at the line end in vertical text is enabled by default. On a scale-1 display software rendering no longer issues capture requests and readback, which lowers CPU usage. RPMs are now built for Fedora 45 or later only. If you use dnf on Fedora 45, install blinkgtk-release once as described in the release notes. Fedora 44 users stay on v1.2.3.

BlinkGTK for Windows v1.2.3-build4 released

2026-09-29 · Release

BlinkGTK for Windows now takes in the upstream source of the same version as the Linux build v1.2.3-build4. The vertical-layout changes are in the Windows build too: with the flag CJKVerticalColumnFragmentation enabled, vertical text inside a horizontal multicol container is split into columns. Fixes such as base_uri in blink_web_view_load_html() are included as well.

v1.2.3-build4 released

2026-09-28 · Release

Software rendering no longer copies the pixels of every frame before handing them to GTK. Animations run about 24% more often at scale 2, and about 9% more frames reach the screen at scale 1. Also fixes load_html not applying base_uri, a first paint delayed by about 25 seconds when the accessibility bus does not respond, stored permissions being read on the UI thread, and GTK warnings with ibus when a view is closed. The public API is unchanged.

BlinkGTK for Windows v1.2.3-build3 released

2026-09-28 · Release

BlinkGTK for Windows is now on Chromium 154, and its version number, v1.2.3-build3, matches the Linux build. The public API added in Linux 1.2.2 and 1.2.3 is now exported from the Windows DLL too, though the newly added entry points have not been checked on Windows yet. If you use MSVC on Japanese Windows, compile with /utf-8.

v1.2.3-build3 released

2026-09-26 · Release

Opening audio of 5 MB or more served over a custom scheme (such as ebook://) with <audio> no longer makes the whole application window stop responding. Long narration audio can be played and seeked as is. The public API is unchanged.

v1.2.3-build2 released

2026-09-25 · Release

Pages can now be written to PDF files (blink_web_view_print_to_pdf_with_options). Saving downloads, deciding where links and new windows open, the camera and microphone, answering HTTP authentication, remembering permission decisions, and choosing default fonts and a minimum font size are added too. swiftshader mode showing nothing on screen is fixed. The 1.2.3-build1 news said the default encoding was not applied yet; it was already applied as of 1.2.3-build1 (the earlier result came from an ASCII-only page). The CUPS library (libcups.so.2) is now required at run time.

BlinkGTK for Windows v1.2.1-build3 released

2026-09-24 · Release

The first BlinkGTK package for Windows is out, produced by BlinkGTK-Windows. There is a ZIP you unpack and run (bin\blinkgtk_browser.exe) and a devel ZIP for embedding BlinkGTK in your application. It targets x64 Windows 10 (64-bit) or later and was verified on Windows 11 Pro. It is based on Chromium 152, a different version from the Linux build (v1.2.3, Chromium 154). Rendering uses the software path only, and the package is not code-signed yet.

v1.2.3-build1 released

2026-09-24 · Release

The rendering engine is updated to Chromium 154.0.8037.57. Settings such as blink_web_view_set_javascript_enabled(FALSE) now take effect on the page. Up to 1.2.2 the value was only stored, and page scripts still ran after passing FALSE. Turning off images and localStorage, and the default font size, also work now. The default encoding does not take effect yet. The input method now follows GTK's choice. To get the 1.2.2 behaviour, set BLINKGTK_IM_MODULE=ibus. A custom-scheme handler can return out_mime with a charset and the page is still shown as HTML, and pages can call fetch() on schemes listed in BLINKGTK_EXTRA_SCHEMES. Packaged builds start without naming the resource directory. These fixes follow reports from an external user. From this release there are also Fedora 45 RPMs (.fc45). They contain the same binaries as the Fedora 44 packages, repackaged on a Fedora 45 machine. The dnf repository is now split by Fedora release. Existing settings keep receiving the Fedora 44 packages. To receive the Fedora 45 packages through dnf, fetch blinkgtk.repo again (sudo curl -o /etc/yum.repos.d/blinkgtk.repo https://blinkgtk.org/repo/fedora/blinkgtk.repo).

From v1.2.4, packages will target Fedora 45 or newer

2026-09-20 · Notice

From v1.2.4 (Chromium 155, upstream stable expected 2026-10-06), the packages we distribute will target Fedora 45 or newer. Fedora 44 will be served up to v1.2.3 (Chromium 154). The reason is that our build machine moves to Fedora 45. BlinkGTK packages link directly against the C library (glibc) of the machine that built them, and glibc compatibility runs one way: what is built on a newer version cannot be loaded on an older one. Fedora 45 ships glibc 2.44 and Fedora 44 ships 2.43, so a package built on Fedora 45 will not install on Fedora 44. If you are on Fedora 44, v1.2.3 stays available and will not be withdrawn. Upgrading to Fedora 45 lets you receive v1.2.4 and later through dnf as usual, with no change to the repository configuration. Packages up to v1.2.3 also run on Fedora 45; we verified this by installing and loading them there (Fedora 45, glibc 2.44, GTK4 4.23.4). Fedora 44 itself is supported until 2027-06-02, so our support ends earlier than that.

v1.2.2-build6 released

2026-09-19 · Release

Each view can now have its own profile and cache. Until now every WebView in a process shared one profile and one cache, so opening the same URL in several views served all but the first from the cache and only one real load took place. Pass a name — blink_web_view_new_with_profile("tab1") — and that view gets its own HTTP cache, cookies, localStorage and IndexedDB. Names may contain letters, digits, - and _ ; the same name means the same profile. A named profile keeps its HTTP cache under profiles/NAME/Cache, so it survives across runs. The default blink_web_view_new() behaves as before. The permission-request signal also now names 40 permission types instead of 13, so the 27 that previously arrived as unknown (screen-wake-lock, local-fonts, persistent-storage, automatic-fullscreen, pointer-lock and others) can be told apart.

v1.2.2-build5 released

2026-09-14 · Release

The rendering path can now be chosen from the API. Call blink_gtk_set_gpu_mode() before blink_gtk_init() and the engine starts on that path. Until now, asking for EGL through blink_web_view_new_with_gpu_mode() did not change the path. The rendering path is settled during engine initialisation, together with the startup flags handed to the GPU process, so it can no longer be changed by the time a WebView is created. The startup log named EGL in both cases, so there was no way to tell from outside whether the request had taken effect. Without also setting BLINKGTK_GPU_MODE, applications asking for EGL were running on the CPU pixel path, which has different performance characteristics from the zero-copy path. After initialisation, blink_web_view_get_gpu_mode() reports the path actually in use, and the startup log names it as well. Reported by an external user. The rendering engine remains Chromium 153.0.8010.36, and typesetting results are unchanged from build4.

v1.2.2-build4 released

2026-09-13 · Release

Fixed a problem where the GPU path (BLINKGTK_GPU_MODE=egl) stayed blank from start to finish on systems using a Virtio GPU, such as virtual machines. To decide whether a frame is empty, the engine reads the drawn image from the CPU side; on this kind of GPU the drawing happens outside the machine, so that read sees nothing, and frames that did have content were judged empty and withheld. Pages without animation were the most affected, staying blank for as long as they were open. A frame that reads as all zeros is no longer treated as empty but as "we cannot tell from here", and display is withheld only when the frame is genuinely white. Assistive technology started after the application now reaches the content as well; until now a screen reader had to be running before launch, so turning one on was too late. The rendering engine remains Chromium 153.0.8010.36.

v1.2.2-build3 released

2026-09-11 · Release

Closing the window before a page finished loading no longer crashes. Opening a book and closing it right away — an ordinary action — triggered it; closing after the page had rendered did not, which made it easy to miss. The cause was ours: while the page container was being torn down, a notification was delivered to a handler that was already looking at something released. The handler is now detached first. The workaround (waiting for the load to finish before closing) is no longer needed. Reported by an external user. This build also adds a diagnostic that asks the compositor whether a frame reached the screen — previously our records ended at "the buffer was submitted", so "the content was empty" and "the content was there but never displayed" could not be told apart. It is printed only with BLINKGTK_GX_LOG=1; nothing changes by default. The rendering engine remains Chromium 153.0.8010.36 and typesetting is unchanged from build2.

v1.2.2-build1 released

2026-09-10 · Release

In vertical writing, a line no longer breaks half-way when a closing bracket falls at the line end. A line with room for 35 characters held only 17, and text-align: justify then doubled the inter-character advance. Of 13 configurations, 8 exhibited it and all are now fixed; it does not occur in horizontal writing. We reported it upstream (crbug 542686223) and Chromium fixed it. The rendering engine is now Chromium 153.0.8010.36. The bundled demo answers --version, so a problem report can identify the build exactly.We measured how many characters fit on one line; we did not measure how much room is left at the end of a column in multi-column layout.

v1.2.2-build2 released

2026-09-10 · Release

Corrects an error in the release notes shipped with build1. They said our previous workaround had been removed; it had not, and it is still present in this release. The wording now matches the artifact. The API reference heading also still read “Target version: BlinkGTK 1.2.1 (Chromium 152.0.7977.64)” from one release back; it now states the actual version. The program is otherwise identical to build1 and typeset output does not change; what changes is the version shown in the bundled documents and the reported version string, now 1.2.2-build2. The error was found through an enquiry from the developers of an EPUB reader built on BlinkGTK.

v1.2.1-build3 released

2026-09-08 · Release

The build number is now available at run time when you report a problem. Until now, asking the library for its version returned only 1.2.1, with no build number. Behaviour can differ between builds of one version, and external users had no way to identify a build except by reading the package file name. blink_gtk_get_version_full() returns 1.2.1-build3; the return value of the existing blink_gtk_get_version() is unchanged. The frame-delivery log now records the operation actually performed and the Wayland buffer id, the measurement caps can be raised, and live render-path switching covers the EGL path (only when started with BLINKGTK_GPU_MODE=egl).

v1.2.1-build2 released

2026-08-30 · Release

Where the GPU path is unavailable — no driver, or no GPU visible inside a virtual machine — BlinkGTK now falls back to software rendering and keeps drawing. It switches when no frame arrives within five seconds and writes the reason to standard error, and it does not switch where the GPU path works. Captured screenshots no longer come out with red and blue exchanged.

v1.2.1-build1 released

2026-08-27 · Release

The rendering engine is updated to Chromium 152. In vertical writing, lines no longer break half-way when a closing bracket falls at the line end (a line with room for 34 characters held only 17), and columns now fill to capacity. The line grid is preserved with direction: rtl. Typeset output changes.

v1.2.0-build9 released

2026-08-16 · Release

Render paths can now be switched live, without restarting the application (the BlinkShift public API). A switch takes a few hundred milliseconds in our test environment and rolls back automatically if the new path fails its render check. Also adds blink_gtk_application_run() for correct GtkApplication integration and a presentation-policy API, and fixes large user scripts never reaching the renderer.

v1.2.0-build8 released

2026-08-12 · Release

Applied the results of a security review. Per-site process isolation is now on by default — the boundary that stops a compromised page reading another site's data. Opening several sites now uses more renderer processes, which can increase memory use. Sandbox availability is now measured rather than inferred, and there is a new API to query the sandbox state. A reference page for environment variables is also published.

v1.2.0-build7 released

2026-08-12 · Release

The header shipped with the development package claimed the previous release (this affects every v1.2.0 build from build1 through build6). The runtime API was always correct, so only compile-time macros were affected. Nothing includes that header, so builds kept succeeding — which is why it went unnoticed for so long. The runtime itself is identical to build6; Chromium was not rebuilt.

v1.2.0-build6 released

2026-08-11 · Release

The rendering engine is now Chromium 151.0.7922.108, fixing defects in the paths that close windows, hide windows, and handle input. User scripts you register now run before the page's own scripts, and JavaScript results come back as JSON.

Western hyphenation now works

2026-08-10 · Release

Specifying hyphens: auto now breaks Western words at appropriate points, with dictionaries for 52 languages bundled. Justified Western text depends on hyphenation, so previously the shorter the line the wider the word gaps became.

Install and update with dnf

2026-08-09 · Release

Register the repository once and dnf upgrade keeps you current. Packages are signed and the repository ships with gpgcheck=1.

v1.2.0-build4 released

2026-08-08 · Release

Continuously animating pages — Canvas, CSS animation, video — no longer freeze in software mode.

GPU rendering works with a single environment variable

2026-08-08 · Release

Switch to the GPU path with BLINKGTK_GPU_MODE=egl alone. No application code changes required.

Reported a vertical-writing line-breaking issue upstream

2026-08-05 · Upstream

In vertical writing, a closing bracket at the line end can leave the line half filled. Reported upstream with reproduction steps and measurements.

Updated to Chromium 151

2026-08-01 · Release

Emphasis marks no longer inflate line pitch, and ruby overhang behaves as specified.