Skip to content

About

πŸ“¦ Open, community-driven plugin registry & update catalog for Total Commander (WCX, WLX, WFX, WDX).

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

Β 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“¦ TotalPlug Community Catalog

Validate & Build License: MIT Catalog CDN

An open-source, community-driven registry and update database for Total Commander plugins (WCX, WLX, WFX, WDX).

Used as the primary update and discovery source for the TotalPlug manager.


πŸš€ Live Endpoints

The catalog is compiled and updated automatically every 6 hours via GitHub Actions:

  • Snapshot (Resolved Versions & Assets, pretty-printed):
    https://sergey.is-a.dev/totalplug-catalog/catalog.resolved.json
  • Minified CDN Version (used by TotalPlug):
    https://sergey.is-a.dev/totalplug-catalog/catalog.min.json

πŸ“ Repository Structure

totalplug-catalog/
β”œβ”€β”€ plugins/
β”‚   β”œβ”€β”€ wcx/                  # Packer plugins (archives, containers)
β”‚   β”œβ”€β”€ wlx/                  # Lister plugins (viewers, highlighters)
β”‚   β”œβ”€β”€ wfx/                  # File System plugins (FTP, Cloud, ADB)
β”‚   └── wdx/                  # Content plugins (file attributes, metadata)
β”œβ”€β”€ schemas/
β”‚   └── plugin.schema.json    # JSON Schema for automated validation
└── scripts/
    └── builder/              # Go compiler & metadata resolver

🀝 How to Add or Update a Plugin

Adding a plugin takes less than 2 minutes:

  1. Fork this repository.
  2. Create a new JSON file inside plugins/<type>/<plugin-id>.json (e.g., plugins/wlx/cudalister.json).
  3. Follow the schema format:
{
  "$schema": "../../schemas/plugin.schema.json",
  "id": "cudalister",
  "name": "CudaLister",
  "type": "WLX",
  "description": "Syntax highlighting viewer plugin based on CudaText engine",
  "authors": ["Alexey-T"],
  "homepage": "https://github.com/Alexey-T/CudaLister",
  "license": "MPL-2.0",
  "match": {
    "aliases": ["cudalister", "wlx_cudalister"],
    "filenames": ["cudalister.wlx", "cudalister.wlx64"]
  },
  "source": {
    "type": "github_release",
    "repo": "Alexey-T/CudaLister",
    "asset_pattern": "wlx_cudalister.*\\.zip"
  }
}
  1. Open a Pull Request. CI will validate your JSON automatically.
  2. Once merged, it goes live in the global catalog!

One file, one plugin β€” unless two plugins really install the same file. The client finds an installed plugin by the file it installs, so a file name normally belongs to one plugin. Two MDView plugins for Total Commander install mdview.wlx each β€” one on the WebView2 engine, one on the older MSHTML engine β€” and the catalog holds both, named MDView (WebView2) and MDView (MSHTML) so the two are not mistaken for each other. The client tells them apart by the version that is installed, and refuses to choose when that version cannot be read. What the build refuses is one plugin listed twice under one file name: two manifests of the same plugin claiming one file fail the build, two different plugins claiming it only warn.


πŸ“œ Supported Source Types

Source Type Description Required Fields
github_release Dynamically fetches latest release tag & assets from GitHub API repo, asset_pattern (optional)
direct_url Fixed download link with static version download_url, version
totalcmd_net Links to existing totalcmd.net ID totalcmd_id

A plugin gets one address per source. There is no field for mirrors, and the next section explains why that is intentional.


πŸͺž Mirrors

Mirrors are deliberately not catalog data. A mirror list would have to be built by fetching roughly 1200 plugin pages on every build, and an entry nobody revalidates is a dead link with a version number attached to it β€” so the schema accepts sources, not backups of sources.

Instead, TotalPlug finds the mirror when it is actually needed. Once every address the catalog names has failed to deliver an archive, and when the failing address is a totalcmd.net download link, the updater opens that plugin's page β€” https://totalcmd.net/plugins/<id>, the address the site moved to when it was redesigned β€” from the user's own machine and follows it to the plugin's wincmd.ru counterpart: https only, and only from a short allowlist of trusted hosts (wincmd.ru). The lookup happens once per broken download rather than for the whole catalog, and any failure in it leaves the ordinary error, which names the plugin page.

What this means for a contribution: if a plugin's totalcmd.net download counter points at a host that no longer answers, leave the entry as it is β€” the update still works through the search above. Fix the entry when the plugin's actual home moved (new repo, new upstream version), not when one mirror went down.


πŸ™ Credits & Acknowledgments

  • totalcmd.net β€” The original long-standing Total Commander plugin database.
  • Total Commander is a registered trademark of Christian Ghisler / Ghisler Software GmbH.

βš–οΈ License

All catalog metadata is released under the MIT License.

About

πŸ“¦ Open, community-driven plugin registry & update catalog for Total Commander (WCX, WLX, WFX, WDX).

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages