Explorer Shell Integration

Purpose

Expose DevCentr create/open flows from the OS file manager. On Windows 11, prefer the compact modern menu via IExplorerCommand and a sparse package. Fall back to a classic HKCU cascading menu when modern registration is unavailable (older OS, missing DLL, unsigned package). On Linux, emit DES-EMA files plus adapters for Dolphin, Nemo, Thunar, and Nautilus.

Menu shape

DevCentr
  ├─ New File…
  ├─ New Project…
  ├─ New Installer Project…
  ├─ New Installer CI pipeline…
  ├─ Install in-place (add to PATH)
  └─ Open folder in DevCentr

Installer actions require easy-installer on PATH (https://github.com/dev-centr/easy-installer). CI pipeline mode scaffolds ci-runner.sdl and emits workflows only (no local package build).

Windows — modern (preferred)

  • Mechanism: COM DLL implementing IExplorerCommand (app/shell/explorer_command/) registered with windows.fileExplorerContextMenus in a sparse AppxManifest.xml.

  • Item types: Directory and Directory\Background.

  • Identity: package name DevCentr.ShellExtension, publisher CN=DevCentr Local.

  • Build: pwsh app/shell/explorer_command/build.ps1 (MSVC). See app/shell/README.adoc.

  • Installer: tries modern first when OS build ≥ 22000 and the host DLL is present.

Windows — classic (fallback)

  • Scope: Current user (HKCU\Software\Classes\Directory\shell\DevCentr and Directory\Background\shell\DevCentr).

  • Mechanism: Empty SubCommands + nested shell\…\command keys (cascading menu; under Show more options on Windows 11).

Linux

Canonical actions live in modules.shell_integration.actions. Install writes:

  • DES-EMA~/.local/share/file-manager/actions/devcentr-.desktop (shared lookup path; consumers rare today — see HCI Nerdz *File manager actions)

  • Dolphin — service menus under kio/servicemenus and kservices6/ServiceMenus

  • Nemo~/.local/share/nemo/actions/*.nemo_action

  • Thunar — marked block in ~/.config/Thunar/uca.xml

  • Nautilus — scripts under nautilus/scripts/DevCentr/

Commands

All backends invoke the DevCentr executable:

  • --mode=new-file --path=…

  • --mode=new-project --path=…

  • --mode=new-installer --path=…

  • --mode=emit-ci --path=…

  • --mode=inplace-path --path=…

  • --mode=open --path=…

Installer API

  • Module: modules.shell_integration.explorer_menu

  • installExplorerMenu / uninstallExplorerMenu / explorerMenuBackend / explorerMenuStatusText

  • UI: Appearance → File manager menu → Install / Remove