mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
4 KiB
4 KiB
Repository Atlas: Flow.Launcher
Project Responsibility
Flow.Launcher is a Windows productivity launcher (similar to Alfred/Raycast) built with WPF and Avalonia. It provides fast, extensible search capabilities through a plugin-based architecture, allowing users to launch applications, search files, perform calculations, and execute custom commands via a global hotkey-activated search window.
System Entry Points
Flow.Launcher/: WPF main application entry point (legacy, stable)Flow.Launcher.Avalonia/: Avalonia UI migration entry point (active development ~35-40%)Flow.Launcher.sln: Solution file for building all projectsScripts/post_build.ps1: Packaging script for releases
Technology Stack
- .NET 9.0 targeting
net9.0-windows10.0.19041.0 - WPF (original UI) -
Flow.Launcher/ - Avalonia (migration in progress) -
Flow.Launcher.Avalonia/ - CommunityToolkit.Mvvm for MVVM patterns and DI
- FluentAvalonia for modern UI in Avalonia version
- Squirrel.Windows for application updates
- NLog for logging
Repository Directory Map
| Directory | Responsibility Summary | Detailed Map |
|---|---|---|
Flow.Launcher/ |
WPF Main Application: Host process orchestrating UI layer, plugin lifecycle, and system integrations (tray, hotkeys). Uses MVVM, DI, and Bridge patterns. | View Map |
Flow.Launcher.Avalonia/ |
Avalonia UI Migration: Modern cross-platform UI implementation with WPF compatibility shim for plugin support. Active development target. | View Map |
Flow.Launcher.Core/ |
Business Logic Engine: Plugin lifecycle management, internationalization, application updates via Squirrel, and community plugin store integration. | View Map |
Flow.Launcher.Infrastructure/ |
Shared Services Layer: Fuzzy search (StringMatcher), persistence (JSON storage), global hotkeys, logging, Win32 API wrappers, and Settings model. | View Map |
Flow.Launcher.Plugin/ |
Plugin SDK: Interfaces and models for plugin development (IPlugin, IAsyncPlugin, Result, Query, IPublicAPI). The formal contract between core and extensions. |
View Map |
Plugins/ |
Built-in Plugins: 12 official plugins (Calculator, Explorer, Program, WebSearch, Shell, etc.) providing core functionality. | View Map |
Flow.Launcher.Test/ |
Unit Tests: NUnit-based test suite for the application. |
Architecture Overview
Data Flow
User Input → MainWindow → MainViewModel → PluginManager → Plugins → Results → UI
Key Architectural Patterns
- MVVM: Strict separation of UI and logic across both WPF and Avalonia implementations
- Dependency Injection:
CommunityToolkit.Mvvm.Iocfor service management - Plugin Architecture: Interface-based extensibility via
IPlugin/IAsyncPlugin - Bridge Pattern:
PublicAPIInstance/AvaloniaPublicAPIdecouples plugins from internal implementation - Static Coordinator:
PluginManageracts as central hub for plugin operations
Migration Status (WPF → Avalonia)
- WPF: Stable, feature-complete, maintenance mode
- Avalonia: ~35-40% migrated, active development, includes WPF compatibility shim for plugins
- Shared: Core, Infrastructure, and Plugin SDK are framework-agnostic
Build & Run
# Build entire solution
dotnet build
# Run WPF version
./Output/Debug/Flow.Launcher.exe
# Run Avalonia version
./Output/Debug/Avalonia/Flow.Launcher.Avalonia.exe
Key Documentation
AGENTS.md: Essential information for AI agents working on this codebaseAVALONIA_MIGRATION_CHECKLIST.md: Detailed migration progress trackingFlow.Launcher.Plugin/README.md: Plugin SDK documentation.editorconfig: Code style rulesSettings.XamlStyler: XAML formatting rules