How f4cio/ensoplus works
Purpose and entry points
EnsoPlus is a Windows .NET alternative to the Enso command launcher: it collects commands and user work items, accepts keyboard-driven input, presents suggestions, and executes selected actions. The primary executable entry point is EnsoPlus/Program.cs; its main application surface is EnsoPlus/FormMain.cs. The solution is CraftSynth.EnsoPlus.sln.
Launcher composition and command contract
The core model separates command execution from command data. Provider contracts and command entities are defined in EnsoPlus/Entities/ICommandsProvider.cs, EnsoPlus/Entities/Command.cs, and EnsoPlus/Entities/MergedCommand.cs. Extension-facing contracts in EnsoPlus/Entities/Extension/IEnsoExtension.cs and EnsoPlus/ExtensionPlus.cs establish a boundary for adding launcher behavior without embedding it in the UI.
Command-provider execution layer
Feature-specific command providers implement launcher actions, including files, processes, web search, clipboard, macros, backups, calls, and database connection opening. Central coordination is likely EnsoPlus/CommandsProviders/CommandsManager/CommandsManager.cs; representative providers are EnsoPlus/CommandsProviders/Opener/Opener.cs and EnsoPlus/CommandsProviders/WebSearcher/WebSearcher.cs. Input resolution produces a command/action choice, then delegates execution to the relevant provider rather than directly to WinForms.
Work-item acquisition and persistence boundary
Work-item providers supply searchable user/domain data—shortcuts, bookmarks, contacts, macros, clipboard contents, process information, and command history—using IWorkItem entities. The provider side is rooted at EnsoPlus/WorkItemsProviders/Shortcuts/Shortcuts.cs, EnsoPlus/WorkItemsProviders/CommandsHistory/CommandsHistory.cs, and EnsoPlus/WorkItemsProviders/Clipboard/ClipboardText.cs; data types live under EnsoPlus/Entities/WorkItems/. This isolates discovery/storage concerns from command syntax and execution.
Input, selection, and suggestions flow
Keyboard and selection listeners capture context from the Windows desktop, then feed the launcher/suggestion workflow. Important stages are EnsoPlus/SelectionListener/SelectionListener.cs, EnsoPlus/HandlerForSelection.cs, and EnsoPlus/SuggestionsCache.cs. The corner-launcher subsystem provides keyboard listening, suggestion processing, and its own form: EnsoPlus/CornerLauncher/KeysListener.cs, EnsoPlus/CornerLauncher/SuggestionsProcessor.cs, and EnsoPlus/CornerLauncher/FormCornerLauncher.cs.
UI overlays and shared controls
The system is a classic Windows Forms desktop application, using overlay-like forms for launcher, menus, parameter entry, on-screen display, and notifications. Reusable UI projects include ControlParameterInput/ParameterInput.cs, ControlMenu/ControlMenu.cs, and ControlOSD/OSD.cs. Message display is handled separately through EnsoPlus/MessageHandler/MessageHandler.cs and EnsoPlus/MessageHandler/FormMessageHandler.cs.
Windows integration and companion processes
The repository depends on Windows APIs and desktop facilities: clipboard, registry, filesystem, process management, keyboard simulation, global user activity, and shortcut handling. Shared generated building blocks expose these boundaries in CraftSynth.BuildingBlocks.Generated/CraftSynth.BuildingBlocks.WindowsNT.UserActivityHook.cs, CraftSynth.BuildingBlocks.Generated/CraftSynth.BuildingBlocks.IO.Clipboard.cs, and CraftSynth.BuildingBlocks.Generated/CraftSynth.BuildingBlocks.IO.Registry.cs. Companion executables provide lifecycle/activity/shortcut support: EnsoPlus.Guard/Program.cs, EnsoPlus.UserActivityBroadcaster/Program.cs, and EnsoPlus.LnkFileReader/Program.cs. External integrations include DotRas for dial-up/RAS behavior and bundled 7-Zip at EnsoPlus/Tools/7-zip/7z.exe.
Main entry points: FormMain.cs Main Launcher Form · CommandsManager.cs Commands Manager · CraftSynth.BuildingBlocks.WindowsNT.UserActivityHook.cs Windows Desktop APIs · SuggestionsCache.cs Suggestions Cache
Components 22
Launcher Core
- Application Entry
EnsoPlus/Program.cs - Main Launcher Form · Accepts launcher input and presents results.
EnsoPlus/FormMain.cs - Command Contract
EnsoPlus/Entities/ICommandsProvider.cs - Command Entities
EnsoPlus/Entities/Command.cs - Extension Boundary
EnsoPlus/Entities/Extension/IEnsoExtension.cs - Selection Listener
EnsoPlus/SelectionListener/SelectionListener.cs - Selection Handler
EnsoPlus/HandlerForSelection.cs - Suggestions Cache
EnsoPlus/SuggestionsCache.cs - Corner Launcher · Captures hotkeys and processes corner-launcher suggestions.
EnsoPlus/CornerLauncher/KeysListener.cs
Commands & Work Items
- Commands Manager · Resolves input and delegates selected actions to providers.
EnsoPlus/CommandsProviders/CommandsManager/CommandsManager.cs - Opener Provider · Opens files, processes, and related targets.
EnsoPlus/CommandsProviders/Opener/Opener.cs - Web Search Provider
EnsoPlus/CommandsProviders/WebSearcher/WebSearcher.cs - Work Item Entities
- Shortcuts Provider
EnsoPlus/WorkItemsProviders/Shortcuts/Shortcuts.cs - Command History
EnsoPlus/WorkItemsProviders/CommandsHistory/CommandsHistory.cs - Clipboard Provider
EnsoPlus/WorkItemsProviders/Clipboard/ClipboardText.cs
Desktop UI
- Corner Launcher Form
EnsoPlus/CornerLauncher/FormCornerLauncher.cs - Shared Overlay Controls · Reusable parameter input, menu, and OSD controls.
ControlParameterInput/ParameterInput.cs - Message Handler
EnsoPlus/MessageHandler/MessageHandler.cs
Windows Integration
- Windows Desktop APIs · Provides user activity hooks, clipboard, and registry access.
CraftSynth.BuildingBlocks.Generated/CraftSynth.BuildingBlocks.WindowsNT.UserActivityHook.cs - Companion Processes · Guard, activity broadcaster, and shortcut reader support launcher lifecycle.
EnsoPlus.Guard/Program.cs - External Tools · Includes bundled 7-Zip and RAS integration.
EnsoPlus/Tools/7-zip/7z.exe
Connections 22
- Application Entry → Main Launcher Form: starts
- Main Launcher Form → Commands Manager: submits input
- Main Launcher Form → Suggestions Cache: shows suggestions
- Command Contract → Commands Manager: defines provider contract
- Command Entities → Commands Manager: carries command data
- Extension Boundary → Commands Manager: extends behavior
- Commands Manager → Opener Provider: delegates open actions
- Commands Manager → Web Search Provider: delegates search actions
- Shortcuts Provider → Work Item Entities: supplies
- Command History → Work Item Entities: supplies
- Clipboard Provider → Work Item Entities: supplies
- Work Item Entities → Suggestions Cache: feeds searchable items
- Selection Listener → Selection Handler: captures selection
- Selection Handler → Main Launcher Form: injects context
- Corner Launcher → Suggestions Cache: queries suggestions
- Corner Launcher → Corner Launcher Form: drives overlay
- Main Launcher Form → Shared Overlay Controls: uses
- Main Launcher Form → Message Handler: publishes messages
- Windows Desktop APIs → Selection Listener: provides activity hooks
- Windows Desktop APIs → Clipboard Provider: provides clipboard access
- Companion Processes → Windows Desktop APIs: supports desktop lifecycle
- Opener Provider → External Tools: invokes tools