BOUNDARY. The lifecycle port against the real host: a TCP probe, the MCP
plug-in's own check_server/restart_server, the session D-Bus, ss, and
a headless flatpak GIMP this adapter launches and owns.
The no-human channel into a RUNNING GUI GIMP is GIMP's own D-Bus service.
GIMP 3 owns org.gimp.GIMP.UI on the session bus and exports
BatchRun(interpreter, command), the method gimp -b uses to hand a batch
to an instance that is already open. Running relaunch-source through
python-fu-eval there starts plug-in-mcp-server inside that GIMP. The
call is queued by GIMP and answers (true,) at once; the server binds a
moment later, which is why every remedy is followed by :await-answer.
Nothing has to be installed in GIMP for this, and GIMP need not restart.
Pure helpers (relaunch-source, launch-argv, listener-pids,
bus-answer-true?) are public so the suite pins them without a host.
BOUNDARY. The lifecycle port against the real host: a TCP probe, the MCP plug-in's own `check_server`/`restart_server`, the session D-Bus, `ss`, and a headless flatpak GIMP this adapter launches and owns. The no-human channel into a RUNNING GUI GIMP is GIMP's own D-Bus service. GIMP 3 owns `org.gimp.GIMP.UI` on the session bus and exports `BatchRun(interpreter, command)`, the method `gimp -b` uses to hand a batch to an instance that is already open. Running `relaunch-source` through `python-fu-eval` there starts `plug-in-mcp-server` inside that GIMP. The call is queued by GIMP and answers `(true,)` at once; the server binds a moment later, which is why every remedy is followed by `:await-answer`. Nothing has to be installed in GIMP for this, and GIMP need not restart. Pure helpers (`relaunch-source`, `launch-argv`, `listener-pids`, `bus-answer-true?`) are public so the suite pins them without a host.
(bus-answer-true? out)True when a gdbus call printed a boolean tuple (true,).
True when a `gdbus call` printed a boolean tuple `(true,)`.
How GIMP is started on this platform. The flatpak is what the README
documents; override with :gimp-argv for a native install.
--die-with-parent is load-bearing. flatpak run forks bwrap and the
sandboxed GIMP under it; destroying only the flatpak run process orphans
that tree to init, which keeps serving the port as a GIMP nobody owns
(measured 2026-10-07). With it, the sandbox dies with its launcher, and so
with this JVM.
How GIMP is started on this platform. The flatpak is what the README documents; override with `:gimp-argv` for a native install. `--die-with-parent` is load-bearing. `flatpak run` forks bwrap and the sandboxed GIMP under it; destroying only the `flatpak run` process orphans that tree to init, which keeps serving the port as a GIMP nobody owns (measured 2026-10-07). With it, the sandbox dies with its launcher, and so with this JVM.
(launch-argv gimp-argv source)The full argv of a headless GIMP that runs source as its batch: no
interface (-i), no data (-d), no fonts (-f), a new instance (-n) so it never
hands the batch to a GUI GIMP that happens to be open.
The full argv of a headless GIMP that runs `source` as its batch: no interface (-i), no data (-d), no fonts (-f), a new instance (-n) so it never hands the batch to a GUI GIMP that happens to be open.
(listener-pids ss-output)PIDs ss -ltnpH reports as holding a listening socket, distinct, in order.
PIDs `ss -ltnpH` reports as holding a listening socket, distinct, in order.
One owner per JVM: the headless GIMP outlives any one heal.
One owner per JVM: the headless GIMP outlives any one heal.
(owned-process)The ProcessHandle of the headless GIMP this JVM launched, or nil.
The `ProcessHandle` of the headless GIMP this JVM launched, or nil.
(relaunch-source)(relaunch-source procedure)Python, compiled from forms, that runs procedure non-interactively.
proc.run blocks for as long as the server lives, which is what keeps a
headless GIMP up and is harmless in a GUI one (GIMP nests the call).
Python, compiled from forms, that runs `procedure` non-interactively. `proc.run` blocks for as long as the server lives, which is what keeps a headless GIMP up and is harmless in a GUI one (GIMP nests the call).
The reference plug-in's start procedure.
The reference plug-in's start procedure.
(system)(system opts)A lifecycle system over the real host. opts may carry :gimp-argv and a
partial :policy.
A lifecycle system over the real host. `opts` may carry `:gimp-argv` and a partial `:policy`.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |