Salamatrix Extension Framework

Support for developers of new plugins, third-party plugin announcements and discussions.
User avatar
KRtek™
Posts: 44
Joined: 30 Mar 2008, 20:44
Location: Brno
Contact:

Salamatrix Extension Framework

Post by KRtek™ »

Salamatrix — a new extension framework for Open Salamander: Samandarin

Create extensions in any language.
https://salamatrix.samandarin.net/

---------------------------------

I would like to introduce Salamatrix, a new framework for developing extensions for Open Salamander without requiring every extension to be implemented as a native C++ plugin.

A Salamatrix extension is a small package containing a manifest, its source code and optional resources such as icons or dialog definitions. The manifest describes the extension and the features it contributes; Salamander then loads it through the appropriate runtime and integrates those features into the application.


Supported runtimes
  • JavaScript / Node.js
  • Python
  • PowerShell
  • PHP
  • Lua
  • Automation JScript and VBScript
The programming language should not matter to the user — an extension should simply work and integrate naturally with Salamander. It still matters to the developer, however, because it affects available libraries, tooling, debugging, deployment and the entry barrier. C++ remains the best choice for deep integration and performance-sensitive plugins, while many smaller utilities can be developed and maintained much more easily in a scripting language. Even with AI-assisted development, those practical differences do not disappear.


Framework capabilities

Salamatrix extensions can contribute several different types of functionality:
  • Commands and menus — add actions to Salamander menus, including icons, states and submenus.
  • Toolbars — provide toolbar buttons and actions integrated with the main window.
  • Native user interfaces — create dialogs using native Salamander-style controls, hyperlinks, progress bars, color controls, toolbar headers and other UI components.
  • Long-running operations — report progress and detailed status, support cancellation and keep the application responsive.
  • File viewers — register viewers with their own names and file-mask associations.
  • Virtual file systems — display extension-provided objects directly in Salamander panels, with navigation, icons and context-menu actions.
  • Configuration and host services — store settings and communicate with Salamander through a shared framework API.
  • Lifecycle management — use a consistent model for loading, registration, configuration changes and shutdown.
An extension may provide only a single command or combine several roles in one package. For example, it can add a toolbar action, expose a virtual file system and register a viewer at the same time.

The framework owns the integration with Salamander, while individual runtimes translate the same operations into language-appropriate APIs. Demo extensions are available for every supported runtime and demonstrate menus, dialogs, progress reporting, viewers and virtual file systems.


Salamatrix Studio

Salamatrix Studio is a Visual Studio Code add-on for creating and maintaining Salamatrix projects.

It includes:
  • New extension project creation
  • Visual manifest editor
  • Menu builder
  • Native dialog UI designer
  • Native preview host
  • Runtime-specific code generation
  • Templates and example projects
The dialog preview uses the same native UI implementation as Salamander, allowing an interface to be designed and tested directly from Visual Studio Code.


Salamatrix does not replace the existing native plugin API. Its purpose is to complement it: native C++ remains available where it is the appropriate solution, while Salamatrix makes smaller, specialized and rapidly developed extensions practical for a much wider group of developers.


More information:
Salamatrix website and documentation
Salamatrix Studio for Visual Studio Code
KRtekTM, KRtek™

Open Salamander: Samandarin
https://samandarin.net/