Flow Launcher

repository·dev·Indexed 12 days ago

https://github.com/flow-launcher/flow.launcher

A fast, extensible app launcher and file search tool for Windows. It features a command-line-like interface for searching applications, files, web bookmarks, and executing system commands. The platform supports a plugin ecosystem with system and user plugins developable in .NET (C# or F#), Python, and Node.js. Core functionality includes query handling, theme management, and internationalization, with a development environment targeting .NET 9 and Visual Studio 2022.

Tokens
15.8K
Snippets
32
Records
61
Agent score
96%

What's inside Flow Launcher

  1. Overview of Flow.Launcher.Core responsibilities

    dev

    Flow.Launcher.Core is the central engine of the Flow Launcher ecosystem. It provides the foundational logic required to build and run plugins and manage the application lifecycle. Its primary responsibilities include:

    • Query Handling: Processing user input and routing it through the plugin system.
    • Plugin Management: Orchestrating both system-level plugins and user-defined plugins.
    • Exception Management: Providing a standardized set of Flow Launcher exceptions.
    • Theme Management: Handling the visual styling of the launcher interface.
    • Internationalization (i18n): Managing multi-language support.
    • Update & Version Management: Handling application updates and version tracking.
  2. Use Flow Launcher Features

    dev

    Flow Launcher provides a wide range of productivity features through its core engine and community plugins:

    Search Capabilities

    • Applications & Files: Search for apps, files, or file contents. Supports Windows Index and Everything. You can also search using environment variable paths.
    • Web & Bookmarks: Perform web searches, open URLs, and search through browser bookmarks.
    • System & Settings: Execute system commands (shutdown, lock, settings, etc.) and search for Windows/Control Panel settings.
    • Calculator: Perform mathematical calculations and copy results to the clipboard.
    • Shell Commands: Run Batch or PowerShell commands. Use <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Enter</kbd> to run a command as Administrator.

    UI & Workflow Enhancements

    • Dialog Jump: Search for a file/folder and jump to its path in an Open/Save dialog. Use <kbd>Alt</kbd>+<kbd>G</kbd> to sync the dialog path with your active file manager.
    • Drag & Drop: Drag files/folders from Flow to other apps (like File Explorer or Discord). Use <kbd>Ctrl</kbd> or <kbd>Shift</kbd> to modify the copy/move behavior.
    • Preview Panel: Use <kbd>F1</kbd> to toggle the preview panel. Adjust window size with <kbd>Ctrl</kbd>+ or <kbd>Ctrl</kbd>+- and <kbd>Ctrl</kbd>+[ or <kbd>Ctrl</kbd>+].
    • Game Mode: To prevent hotkeys from interfering with games, toggle Game Mode by typing Toggle Game Mode or using <kbd>Ctrl</kbd>+<kbd>F12</kbd> while the search window is active.
  3. Develop a plugin for Flow Launcher

    dev

    To develop a plugin for Flow Launcher, you should reference the Flow.Launcher.Plugin package. Depending on your preferred development environment, follow the specific guides provided by the Flow Launcher documentation:

    • For a general overview of plugin development, use the General plugin development guide.
    • If you are building a plugin using .NET, use the .Net plugin development guide.
    • For detailed technical specifications of the plugin interfaces, refer to the Package API Reference.
  4. Understand the Flow Launcher development workflow

    dev

    Flow Launcher uses a pull-request-based development model.

    • Merged vs. Released: Some features may be merged into the dev branch but not yet included in the current official release. These are available via pre-release downloads.
    • Milestones: Pull requests are marked with milestones indicating the planned release version.
    • Best Practice: Before starting a new change, search through open and closed pull requests to ensure your intended change hasn't already been implemented.
    • Contribution Areas: You can contribute to the main C# codebase, documentation (Markdown), or the website (HTML/CSS).
  5. Understand the two types of Flow Launcher plugins

    dev

    Flow Launcher distinguishes between two categories of plugins based on how they are triggered via action keywords:

    1. System plugins: These plugins use * as their action keyword. They do not require a specific prefix and are typically integrated into the core search experience to provide global functionality.
    2. User plugins: These plugins use customized action keywords. They are triggered by typing a specific command or keyword defined by the plugin developer.
  6. Install and manage plugins via the Plugin Store or CLI

    dev

    You can manage plugins in Flow Launcher using two primary methods:

    1. Plugin Store UI: Open the Plugin Store menu within the Flow Launcher Settings to view the full list and install plugins visually.
    2. Command Line Interface (CLI): Type the following commands directly into the Flow Launcher search window:
      • pm install <plugin name>
      • pm uninstall <plugin name>
      • pm update <plugin name>
    pm install <plugin name>
    pm uninstall <plugin name>
    pm update <plugin name>
  7. Set up the development environment for Flow Launcher

    dev

    To develop or debug Flow Launcher, ensure your environment meets the following requirements:

    1. Target Framework: .NET 9
    2. IDE: Visual Studio 2022 (version 17.12 or higher)
    3. SDK: .NET 9 SDK

    You can install the .NET 9 SDK using one of these methods:

    • Via the Visual Studio Installer
    • Via winget: winget install Microsoft.DotNet.SDK.9
    • Manually from the official .NET download page.
    winget install Microsoft.DotNet.SDK.9
  8. Develop Flow Launcher plugins

    dev

    Flow Launcher supports a wide range of plugins. Developers can create and publish plugins using several different languages and frameworks. Supported development environments include:

    • .NET: Create plugins using C# or F#.
    • Python: Develop plugins using Python.
    • Node.js: Develop plugins using JavaScript or TypeScript.

    For detailed guides and samples, refer to the official documentation for each language.

  9. Access User Data and Logs

    dev

    You can quickly access your configuration and log files using commands within the Flow Launcher search bar:

    • Open User Settings: Type flow user data to open the folder containing your saved user settings.
    • Open Logs: Type open log location to open the folder where logs are saved (this folder is located alongside your user settings folder).

    Default Paths

    • Roaming Installation: %APPDATA%\FlowLauncher
    • Portable Installation: %localappdata%\FlowLauncher\app-<VersionOfYourFlowLauncher>\UserData
    flow user data
    open log location
  10. Install Flow Launcher

    dev

    Flow Launcher can be installed via standard Windows installers or package managers.

    Manual Installation

    Note: If Windows raises a security warning because the code is unsigned, you can safely continue if you downloaded it from the official repository.

    Package Managers

    Use the following commands for automated installation:

    # Using Winget
    winget install "Flow Launcher"
    
    # Using Scoop
    scoop install Flow-Launcher
    
    # Using Chocolatey
    choco install Flow-Launcher