From 0d4ad0920d7b9c83b8a62152797b532084e4ced1 Mon Sep 17 00:00:00 2001 From: mARTin-B78 Date: Mon, 8 Jun 2026 14:30:05 +0200 Subject: [PATCH] gtkui: force GIO unix volume monitor so file choosers don't hang on dbus; Settings + panel open again; Release 1.8.1 On headless/minimal desktops the gvfs org.gtk.vfs.UDisks2VolumeMonitor dbus service often fails to activate; each Gtk.FileChooserButton then blocked ~25s on a StartServiceByName timeout while realizing, so the Settings dialog never appeared and the stalled main loop froze the control panel too. Set GIO_USE_VOLUME_MONITOR=unix in run_gui() before any window is realized. Co-Authored-By: Claude Opus 4.8 (1M context) --- linux/CHANGELOG.md | 12 ++++++++++++ linux/blitztext/__init__.py | 2 +- linux/blitztext/gtkui.py | 7 +++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/linux/CHANGELOG.md b/linux/CHANGELOG.md index 4177c81..b76bdfa 100644 --- a/linux/CHANGELOG.md +++ b/linux/CHANGELOG.md @@ -9,6 +9,18 @@ The version is defined in [`blitztext/__init__.py`](blitztext/__init__.py). ## [Unreleased] +## [1.8.1] - 2026-06-08 + +### Fixed +- **Settings dialog and control panel wouldn't open on some desktops.** When the + gvfs `org.gtk.vfs.UDisks2VolumeMonitor` dbus service fails to activate (common + on headless or minimal sessions), every `Gtk.FileChooserButton` blocked ~25s on + a `StartServiceByName` timeout while realizing — so the Settings dialog never + finished appearing, and the stalled GTK main loop froze the panel too. Blitztext + now selects GIO's native `/proc/mounts` volume monitor + (`GIO_USE_VOLUME_MONITOR=unix`) before any window is realized, so file choosers + open instantly with no dbus dependency. + ## [1.8.0] - 2026-06-08 ### Added diff --git a/linux/blitztext/__init__.py b/linux/blitztext/__init__.py index 0acab2b..eb6640e 100644 --- a/linux/blitztext/__init__.py +++ b/linux/blitztext/__init__.py @@ -6,4 +6,4 @@ counterpart to the macOS Blitztext menu bar app: it runs natively on the host (not in a container) so it can type into any application via xdotool. """ -__version__ = "1.8.0" +__version__ = "1.8.1" diff --git a/linux/blitztext/gtkui.py b/linux/blitztext/gtkui.py index 61372a4..6e55d35 100644 --- a/linux/blitztext/gtkui.py +++ b/linux/blitztext/gtkui.py @@ -408,6 +408,13 @@ class App: def run_gui(tray_mode: bool = False) -> int: + # Use GIO's native /proc/mounts volume monitor instead of the gvfs/udisks2 + # one. On headless or minimal desktops the `org.gtk.vfs.UDisks2VolumeMonitor` + # dbus service often fails to activate, and every Gtk.FileChooserButton then + # blocks ~25s on a StartServiceByName timeout while realizing — which freezes + # the settings dialog (and, via the stalled main loop, the panel) so neither + # ever appears. The unix monitor needs no dbus and opens choosers instantly. + os.environ.setdefault("GIO_USE_VOLUME_MONITOR", "unix") # Identify to the window manager as "blitztext" rather than the Python entry # point's filename. Launched via `python -m blitztext`, GTK's default program # name is argv[0]'s basename ("__main__.py"), which is what shows in the