Flow-Launcher/Flow.Launcher · warning · EngineNotAvailableException

It can be very slow without index (which is only supported i

Error message

It can be very slow without index (which is only supported in Everything v1.5+)

What it means

Thrown as EngineNotAvailableException when ContentSearchAsync is called but Settings.EnableEverythingContentSearch is false. The exception is not really an error: it is the prompting mechanism that asks the user to opt in to Everything content search, and its Action flips the flag on. The message warns that content search without the Everything index is slow and that index support requires Everything v1.5+.

Source

Thrown at Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingSearchManager.cs:99

            var option = new EverythingSearchOption(search, 
                Settings.SortOption, 
                MaxCount: Settings.MaxResult, 
                IsFullPathSearch: Settings.EverythingSearchFullPath, 
                IsRunCounterEnabled: Settings.EverythingEnableRunCount);

            await foreach (var result in EverythingApi.SearchAsync(option, token))
                yield return result;
        }

        public async IAsyncEnumerable<SearchResult> ContentSearchAsync(string plainSearch, string contentSearch,
            [EnumeratorCancellation] CancellationToken token)
        {
            await ThrowIfEverythingNotAvailableAsync(token);

            if (!Settings.EnableEverythingContentSearch)
            {
                throw new EngineNotAvailableException(Enum.GetName(Settings.IndexSearchEngineOption.Everything)!,
                    Localize.flowlauncher_plugin_everything_enable_content_search(),
                    Localize.flowlauncher_plugin_everything_enable_content_search_tips(),
                    Constants.EverythingErrorImagePath,
                    _ =>
                    {
                        Settings.EnableEverythingContentSearch = true;

                        return ValueTask.FromResult(true);
                    });
            }

            if (token.IsCancellationRequested)
                yield break;

            var option = new EverythingSearchOption(plainSearch,
                Settings.SortOption,
                IsContentSearch: true,
                ContentSearchKeyword: contentSearch,

View on GitHub (pinned to 7fc63b07bb)

Solutions

  1. Enable the option in the Explorer plugin settings: 'Enable Everything content search', or click the result that the Action renders.
  2. If you do not want Everything content search, switch Settings.ContentSearchEngine to WindowsIndex.
  3. Upgrade Everything to v1.5+ so content search uses the index and stays fast.
  4. Set Settings.EnableEverythingContentSearch = true at startup if you provision Flow Launcher programmatically.

Example fix

// before - throw to surface the opt-in prompt
if (!Settings.EnableEverythingContentSearch)
{
    throw new EngineNotAvailableException(...);
}

// after - treat as a one-time prompt, then proceed
if (!Settings.EnableEverythingContentSearch)
{
    if (!await PromptEnableContentSearchAsync())
        return AsyncEnumerable.Empty<SearchResult>();
}
Defensive patterns

Strategy: validation

Validate before calling

if (Settings.IndexSearchEngine == IndexSearchEngineOption.Everything && !Settings.EnableEverythingContentSearch)
    logger.Info("Everything content search is disabled; prompt the user to opt in.");

Type guard

static bool IsEverythingContentSearchEnabled(Settings s) => s.IndexSearchEngine == IndexSearchEngineOption.Everything && s.EnableEverythingContentSearch;

Try / catch

try { await manager.ContentSearchAsync(plain, content, token); }
catch (EngineNotAvailableException ex) when (!Settings.EnableEverythingContentSearch) { ShowEnableContentSearchResult(ex); }

Prevention

When it happens

Trigger: User issues a file-content search action keyword while Settings.IndexSearchEngine is Everything, Settings.ContentIndexProvider is EverythingSearchManager, and EnableEverythingContentSearch is false. The first content query throws this exception so the UI can show a click-to-enable result.

Common situations: Default install with Everything as the index engine; user upgraded Everything to v1.5+ but never enabled the plugin's content-search toggle; user switched from Windows Index to Everything and the content toggle was reset.

Related errors


AI-assisted analysis of Flow-Launcher/Flow.Launcher@7fc63b07bb (2026-08-13). Data as JSON: /api/errors/d9105cad47420c73. Report an issue: GitHub.