1. Como funciona el sistem de plugins de Far Manager?
Primer debemos entender que Far Manager no es unicamente un explorador de archivos. Es una aplicacion extensible que permite que otros programas aniadan nuevas funcionalidades a su interfaz.
Por ejemplo, un plugin puede:
- Agregar opciones al menu
F11. - Crear paneles virtuales para explorar archivos ZIP, bases de datos u otros formatos.
- Interceptar determinados eventos del teclado dentro del editor.
- Leer o modificar el contenido del editor.
- Mostrar dialogos, menus y resultados.
- Ejecutar herramientas externas.
- Procesar archivos seleccionados.
Arquitectura de un plugin

Sabemos que una DLL (Dynamic Link Library) es un archivo que contiene codigo ejecutable y funciones que otros programas pueden utilizar.
Por ejemplo, si desarrollamos algo en C++.
int sumar(int a, int b) {
return a + b;
}Podemos compilarlo dentro de una DLL. Sin embargo, crear una DLL no la convierte automaticamente en un plugin de Far Manager.
Debemos implementar las funciones y estructuras que exige su API.
Cuando Far Manager descrubre el plugin, puede obtener su informacion, inicializarlo y llamar a sus funciones para responder a eventos.
Esto se conoce como una arquitectura bada en plugins y callbacks.
2. Que encontramos en los archivos de TrueTemplate?
Revisando la documentacion, la configuracion y las DLL que contenia el ZIP de True Template. La distribucion esta organizada en varios componentes.
| Archivo | Funcion |
|---|---|
true-tpl.x64.dll | Plugin compilado para Windows de 64 bits. |
true-tpl.x86.dll | Plugin compilado para Windows de 32 bits. |
true.tpl.xml | Configuracion principal de plantillas. |
true-tpl.x64.ini | Valores persistentes, como contadores y cadenas. |
true-tpl.eng.lng | Mensajes en ingles. |
true-tpl.rus.lng | Mensajes en ruso. |
true-tpl.txt | Documentacion tecnica detallada. |
WHATSNEW.TXT | Historial de cambios y correciones. |
Ademas true-tpl.xml esta codificado en UTF-16LE. |
Algo importante que mecionar
La configuracion principal contiene estar tres inclusiones:
<TrueTpl>
<Include File="templates\source\true-source.xml"/>
<Include File="templates\text\true-text.xml"/>
<Include File="templates\true-default.xml"/>
</TrueTpl>Eso significa que True Template no almacena todas las plantillas en su DLL, sino que carga reglas y plantillas definidas en archivos externos.
Por tanto, para instalarlo correctamente necesitamos tambien el directorio templates del ZIP original. No basta con copiar unicamente los archivos que estan dentro de la carpeta.
Esto tiene una ventaja enorme: podemos agragar nuevas funciones de expansion sin recompilar el plugin.
3. Analice las funciones exportadas por TrueTemplate
Podemos inspeccionar directamente la DLL de 64 bits, mediante su tabla de exportaciones PE.
sudo apt-get install wine64-tools
winedump -j export archivo.dll
| Funcion | Para que sirve? |
|---|---|
ConfigureW | Permite configurar sus opciones. |
ExitFARW | Gestiona el cierre del plugin. |
GetGlobalInfoW | Identiica el plugin, su version y requisitos. |
GetPluginInfoW | Describe como aparece en los menus. |
OpenW | Atiende solicitudes de apertura del plugin. |
ProcessEditorEventW | Recibe eventos del editor. |
ProcessEditorInputW | Interviene en el procesamiento de teclado y raton. |
SetStartupInfoW | Recibe los servicios de Far Manager. |
Como se comunican?
Imagina que abres un archivo programa.cpp y escribes i seguido de un espacio.

Este es un flujo conceptual basado en las funciones y caracteristicas documentadas.
La diferencia entre eventos y funcione invocables
Hay dos modelos importantes que debemos aprender:
1. Plugins activados explicitamente
El usuario abre F11, selecciona nuestro plugin y Far Manager incova una funcion como OpenW.
Por ejemplo, un plugin que calcula el SHA-256 de un archivo seleccionado.
2. Plugins que repsonden a eventos
Far Manager comunica determinados acontecimientos a una funcion del plugin.
Por ejemplo, ProcessEditorInputW recibe informacion de entrada del editor. Esto permite implementar funciones como expansion de plantillas y atajos personalizados.
TrueTemplate utiliza ambos mecanismos.
4. Como crearemos nuestros propios plugins?
Tenemos diferentes alternativas, pero no todas tienen las mismas ventajas.
| Tecnologia | Ventaja principal | Evaluacion |
|---|---|---|
| C++ | Acceso directo a la API y muchos ejemplos existentes | Ideal para aprender |
| Rust | Seguridad de memoria y control de bajo nivel | Buena alternativa |
| Python mediante puente | Desarrollo rapido de automatizaciones | Util para prototipoos |
| Lua / macros | Personalizacion y automatizacion sin compilar DLL propias | Ideal para tareas sencillas |
5. Empecemos con un plugin sencillo
- Hash inspector: Seleccionar un archivo y calcular sus hashes MD5, SHA-1 y SHA-256 sin salir de Far Manager. Seria un excelente primero proyecto util.
6. Recursos para comenzar
plugin.hpp oficial
Ejemplos de plugins de Far Manager
AdvCmpEx
Codigo fuente de TrueTemplate