Guía de desarrollo
Bienvenido al Manual de referencia para desarrolladores de Lertaro. Diseñado sobre una arquitectura desacoplada y un ecosistema de plugins extensible, Lertaro proporciona un SDK oficial: Lertaro.PluginSdk. Al utilizar este SDK, los desarrolladores pueden aportar fuentes de búsqueda personalizadas, ampliar menús de acciones contextuales, integrarse con exploradores de archivos y cuadros de diálogo nativos, y crear temas o visores de vista previa a medida.
1. Arquitectura y flujo de trabajo
- Arquitectura del sistema —— Explicación del modelo de aislamiento de tres procesos (Servicio de Windows a nivel SYSTEM, App WPF en modo usuario y proceso de interceptación de teclado Hook) y la comunicación IPC por tuberías con nombre.
- Guía de inicio rápido —— Guía paso a paso para crear un proyecto de librería, referenciar el SDK, implementar
IPluginy depurar localmente. - Empaquetado y distribución —— Estructura de carpetas de plugins, inclusión de librerías dependientes administradas y nativas, recursos i18n incrustados y automatización PostBuild.
- Ejemplos de plugins —— Análisis del código de los plugins oficiales de código abierto
CoreExtensions,PinyinAlias,FlowLauncherBridgeyFileUnlocker.
2. Referencia de la API del SDK
| Categoría del SDK | Interfaces y servicios principales | Descripción de capacidades |
|---|---|---|
| Búsqueda central y acciones | ISearchableItemProviderIInstantResultProviderIAliasProviderIQueryTokenProviderISearchResultActionIDynamicActionProvider | Aportar elementos indexados, respuestas de cálculo instantáneo, motores de transliteración de alias no ASCII, manejadores de tokens de sufijo y menús de acciones estáticos o dinámicos. |
| Adaptadores de sistema y diálogo | IActivePathCollectorIFileDialogAdapterIInlineSearchAdapterIQuickNavigationProvider | Detectar directorios activos en exploradores, enganchar diálogos nativos de archivos, incrustar la barra de búsqueda con sincronización bidireccional y menús de Navegación rápida. |
| Extensiones de interfaz y vista previa | ISidebarFilterProviderIResultColumnProviderIQuickPanelTabProviderICalendarTextProviderIFilePreviewProviderIThumbnailProviderIThemeProviderITranslationProvider | Categorías de filtro lateral, columnas personalizadas en tablas, pestañas dinámicas en el Panel rápido, el texto de fecha de la línea de reloj de la ventana de búsqueda, renderizadores de vista previa en QuickLook, extracción de miniaturas, temas WPF e idiomas i18n. |
| Abstracciones compartidas | ISearchResultFileMetadataIPluginSearchWindowIConfigurable | Modelos de resultados de solo lectura, metadatos de archivos de alta precisión, controladores seguros de la ventana anfitriona y formularios de configuración basados en esquemas. |
| Servicios del anfitrión | FuzzyMatchServiceTranslationServiceIconServiceFavoritesServiceHistoryServiceFileMetadataServiceDirectoryIndexerServiceMemoryMaintenanceServiceRecentFilesServiceExplorerPathServicePluginSettingsServiceSettingsSearchServiceSettingsWindowServiceSearchRefreshServiceUserDataServiceLogger | Infraestructura de alto rendimiento: coincidencia difusa fzf y máscaras de resaltado, extracción de iconos con caché, gestión de favoritos, proxies de indexación, mantenimiento de memoria diferido, aislamiento de datos y operaciones Shell. |
| Notificaciones | PluginNotificationServiceNotificationRequestINotificationHandleNotificationLevelNotificationPositionNotificationResultNotificationFailure | Atención desde segundo plano a través de las propias ventanas del anfitrión: una pila de tarjetas abajo a la derecha o una línea de aviso centrada abajo, duraciones recortadas por el anfitrión, reemplazo por Id, límites por plugin y una tarea de finalización que siempre termina. |
NOTE
Las firmas de interfaz, los nombres de miembros, los valores por defecto y el orden de los parámetros de estas páginas se han leído del código fuente de Lertaro.PluginSdk. Cuando una página además describe cómo reacciona el anfitrión a la llamada de un plugin, esa frase documenta el comportamiento actual, no un contrato en el que un plugin pueda apoyarse.