Skip to content
Nikolai Sachok edited this page Jun 24, 2026 · 3 revisions

Double Commander Plugins for macOS — Wiki

Living technical documentation for this plugin collection. The README is the quick start; this wiki is the why — the design, the platform mechanics, and the instructive bugs, written so anyone studying native macOS plugin development can learn from it.

Pages

  • WLX Plugin Model — the Total Commander / Double Commander plugin ABI, how it maps onto macOS, and object-lifetime across the C boundary.
  • Markdown Plugin Architecture — the markdown-wlx rendering pipeline end to end, with the design tradeoffs and two macOS gotchas (inline-script truncation; the Escape-key case study).
  • MediaInfo Content Plugin (WDX) — the media-info-wdx content plugin: the WDX field ABI, native ImageIO/AVFoundation/CGPDF backends, and two host-dependent bugs (an FP-exception crash under DC's FPC runtime; a detect-string gating gotcha).
  • Building, Testing & CI — the universal build, the headless test harnesses that load the real binary, and what CI verifies.
  • Adding a New Plugin — a repeatable path to the next plugin at the same standard.

Design principles (the whole collection)

  1. Native and universal. One .wlx runs on Apple Silicon and Intel. No runtime, no interpreter — just a Mach-O dylib the host dlopens.
  2. Prove the mechanism before writing the feature. Platform assumptions get a small probe first (does keyDown: even reach a WKWebView subclass?), so the fix targets the real cause instead of a guess.
  3. Test the artifact, not a mock. Harnesses dlopen the built plugin and drive the exact ABI Double Commander calls.
  4. Root-cause over band-aid. When a bug appears, understand the platform behavior that produced it; the smallest correct fix usually follows.
  5. Safe to publish by construction. A generic secret/path/cruft gate runs in CI and pre-commit; third-party assets are vendored and attributed.

Clone this wiki locally