From a7f02d4ee18375a7eb09ca0fbd3e8940afcf5439 Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Mon, 16 Feb 2026 08:59:13 -0300 Subject: [PATCH] plug-ins: Fix some Python plug-ins query in headless environments This fixes this unharmful message we were getting on macOS CI: Gdk-WARNING **: 18:06:23.048: Failed to initialize CVDisplayLink! The hard ones (spyro-plus.py, histogram-export.py and python-console.py) were not touched for now, just the ProcedureDialog plugins were fixed. --- plug-ins/python/colorxhtml.py | 5 ++--- plug-ins/python/foggify.py | 5 +++-- plug-ins/python/gradients-save-as-css.py | 9 +++++---- plug-ins/python/histogram-export.py | 5 +++-- plug-ins/python/palette-export-as-kpl.py | 9 +++++---- plug-ins/python/palette-offset.py | 4 ++-- plug-ins/python/palette-sort.py | 9 +++++---- plug-ins/python/palette-to-gradient.py | 9 +++++---- plug-ins/python/spyro-plus.py | 5 +++-- plug-ins/python/test-dialog.py | 5 +++-- 10 files changed, 36 insertions(+), 29 deletions(-) diff --git a/plug-ins/python/colorxhtml.py b/plug-ins/python/colorxhtml.py index 8acf925b47..296ce881b8 100755 --- a/plug-ins/python/colorxhtml.py +++ b/plug-ins/python/colorxhtml.py @@ -24,8 +24,6 @@ import sys import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio @@ -69,7 +67,8 @@ def export_colorxhtml(procedure, run_mode, image, file, options, metadata, confi GLib.Error(error)) if run_mode == Gimp.RunMode.INTERACTIVE: - + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi gi.require_version('Gtk', '3.0') from gi.repository import Gtk diff --git a/plug-ins/python/foggify.py b/plug-ins/python/foggify.py index 6b901bd6c0..74c480237a 100755 --- a/plug-ins/python/foggify.py +++ b/plug-ins/python/foggify.py @@ -17,8 +17,6 @@ import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi gi.require_version('Gegl', '0.4') from gi.repository import Gegl from gi.repository import GObject @@ -32,6 +30,9 @@ def _(message): return GLib.dgettext(None, message) def foggify(procedure, run_mode, image, drawables, config, data): if run_mode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi + GimpUi.init('python-fu-foggify') dialog = GimpUi.ProcedureDialog(procedure=procedure, config=config) diff --git a/plug-ins/python/gradients-save-as-css.py b/plug-ins/python/gradients-save-as-css.py index 1347de1fc5..761160bf78 100755 --- a/plug-ins/python/gradients-save-as-css.py +++ b/plug-ins/python/gradients-save-as-css.py @@ -25,13 +25,9 @@ import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk import time import sys @@ -62,6 +58,11 @@ def gradient_css_save(procedure, config, data): runmode = config.get_property("run-mode") if runmode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi + gi.require_version('Gtk', '3.0') + from gi.repository import Gtk + GimpUi.init('python-fu-gradient-save-as-css') dialog = GimpUi.ProcedureDialog(procedure=procedure, config=config) diff --git a/plug-ins/python/histogram-export.py b/plug-ins/python/histogram-export.py index ce2b47b227..55ead63d66 100644 --- a/plug-ins/python/histogram-export.py +++ b/plug-ins/python/histogram-export.py @@ -42,8 +42,6 @@ import sys import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio @@ -165,6 +163,9 @@ def histogram_export(procedure, img, layers, gio_file, def run(procedure, run_mode, image, layers, config, data): if run_mode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi + GimpUi.init("python-fu-histogram-export") dialog = GimpUi.ProcedureDialog.new(procedure, config, _("Histogram Export...")) diff --git a/plug-ins/python/palette-export-as-kpl.py b/plug-ins/python/palette-export-as-kpl.py index e9d50bccf7..a6bdc5a050 100644 --- a/plug-ins/python/palette-export-as-kpl.py +++ b/plug-ins/python/palette-export-as-kpl.py @@ -19,13 +19,9 @@ import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk import os, sys, tempfile, zipfile import xml.etree.ElementTree as ET @@ -45,6 +41,11 @@ def palette_kpl_export(procedure, config, data): runmode = config.get_property("run-mode") if runmode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi + gi.require_version('Gtk', '3.0') + from gi.repository import Gtk + GimpUi.init('python-fu-palette-export-as-kpl') dialog = GimpUi.ProcedureDialog(procedure=procedure, config=config) diff --git a/plug-ins/python/palette-offset.py b/plug-ins/python/palette-offset.py index b6c46fa458..2f28aa2333 100644 --- a/plug-ins/python/palette-offset.py +++ b/plug-ins/python/palette-offset.py @@ -16,8 +16,6 @@ import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio @@ -86,6 +84,8 @@ class PaletteOffset (Gimp.PlugIn): GLib.Error(error)) if runmode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi gi.require_version('Gtk', '3.0') from gi.repository import Gtk diff --git a/plug-ins/python/palette-sort.py b/plug-ins/python/palette-sort.py index e345546cfd..bc55ee7a2c 100755 --- a/plug-ins/python/palette-sort.py +++ b/plug-ins/python/palette-sort.py @@ -29,13 +29,9 @@ gi.require_version('Babl', '0.1') from gi.repository import Babl gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk import sys def N_(message): return message @@ -421,6 +417,11 @@ class PaletteSort (Gimp.PlugIn): GLib.Error(error)) if run_mode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi + gi.require_version('Gtk', '3.0') + from gi.repository import Gtk + GimpUi.init('python-fu-palette-sort') dialog = GimpUi.ProcedureDialog(procedure=procedure, config=config) diff --git a/plug-ins/python/palette-to-gradient.py b/plug-ins/python/palette-to-gradient.py index 152ee4dd14..372a99ab7e 100644 --- a/plug-ins/python/palette-to-gradient.py +++ b/plug-ins/python/palette-to-gradient.py @@ -16,13 +16,9 @@ import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk import sys def N_(message): return message @@ -62,6 +58,11 @@ def run(procedure, config, data): run_mode = config.get_property("run-mode") if run_mode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi + gi.require_version('Gtk', '3.0') + from gi.repository import Gtk + GimpUi.init(procedure.get_name()) dialog = GimpUi.ProcedureDialog(procedure=procedure, config=config) diff --git a/plug-ins/python/spyro-plus.py b/plug-ins/python/spyro-plus.py index 65d2ab2c30..e9faf878d2 100755 --- a/plug-ins/python/spyro-plus.py +++ b/plug-ins/python/spyro-plus.py @@ -18,8 +18,6 @@ import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio @@ -2359,6 +2357,9 @@ class SpyrogimpPlusPlugin(Gimp.PlugIn): engine.draw_full(layers[0]) elif run_mode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi + Gegl.init (None) window = SpyroWindow(image, layers[0]) diff --git a/plug-ins/python/test-dialog.py b/plug-ins/python/test-dialog.py index e368fc0729..9346cb1644 100644 --- a/plug-ins/python/test-dialog.py +++ b/plug-ins/python/test-dialog.py @@ -16,8 +16,6 @@ import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp -gi.require_version('GimpUi', '3.0') -from gi.repository import GimpUi gi.require_version('Gegl', '0.4') from gi.repository import Gegl from gi.repository import GObject @@ -99,6 +97,9 @@ def test_dialog(procedure, run_mode, image, drawables, config, data): Just a standard shell for a plugin. ''' if run_mode == Gimp.RunMode.INTERACTIVE: + gi.require_version('GimpUi', '3.0') + from gi.repository import GimpUi + GimpUi.init('python-fu-test-dialog') Gegl.init(None) dialog = GimpUi.ProcedureDialog(procedure=procedure, config=config)