all projects

~/projects/omnispot

OmniSpot

Find files with Ctrl Space, not by remembering names.

A local file launcher that opens from anywhere in Windows. Search, folder browsing, previews and file actions on one surface. AI mode is optional; I draw the line further down.

View source on GitHub

Windows desktop tool · solo developer · 2025–2026 · .NET 8 · C# 12 · WPF · Windows 10/11 · ready to use, actively updated

OmniSpot emblem: three ribbons and pixel squares flowing into a cobalt O
1 / 6

1 / 6

Open it instantly

Ctrl Space, from anywhere in Windows. It feels less like another app window and more like a layer on top of the system. Indexed locations and the watcher status are on the first screen.

2 / 6

Search locally

Classic file-name search runs entirely on the device. The index matches as you type; results arrive with their path and match score. Nothing leaves the machine in this mode.

3 / 6

Search by intent

AI mode turns a sentence into filters, like "images I changed in Design this week". Online, only the query text goes to Groq; matching still happens in the local index. Offline, a narrower local parser takes over.

4 / 6

Check it at a glance

Browse folders with a breadcrumb. Thumbnails for images and videos show you have the right file before you open it; colour-coded folders make scanning faster.

5 / 6

Act without leaving

Open, copy, cut, rename, delete: all from a right click, on the same surface. No trip back to Explorer, no lost context.

6 / 6

The index works in the background

Several folders are indexed and the watcher follows their changes. You add locations in settings and rebuild the index when needed. Nothing invasive is changed on the system.

under the hood

The same search, from inside the engine

What runs behind the window above, in six scenes.

1 / 6

Split as you type

On every keystroke the query is split into tokens. Case and Turkish-character differences disappear at this stage.

tokenizer · case- and Turkish-insensitive

2 / 6

Tokens find the files

Each token instantly finds the files that contain it in the index. A one-letter typo still leads to the same file.

inverted index · Levenshtein distance 1

3 / 6

The best match on top

An exact match beats a partial one, and files you opened before move up. The list re-sorts as you type.

exact 100 · partial 25 · opened ×2

4 / 6

No change on disk slips by

When a file is renamed, the disk records it and a separate service picks it up. While the app is closed it queues changes; when you open it, the index is up to date.

USN journal → ChangeFeed → SQLite

5 / 6

Only the sentence crosses the line

In AI mode only the sentence you type goes to Groq, and filters come back. File names, paths and contents never leave the device.

Groq · 2 parallel requests: intent, keywords

6 / 6

It works offline too

When the connection drops, a narrower rule-based local parser reads the sentence, and the interface says so. Classic search is not affected at all.

offline fallback · rule-based

proof

Six real screens

The scenes above redraw these screens; all of them were captured with a synthetic DemoWorkspace.

OmniSpot home folder view with synthetic data
1Home folder view
OmniSpot local file-name search results
2File-name search on the device
OmniSpot natural-language search with Groq
3Natural-language search and offline fallback
OmniSpot folder browsing with thumbnails
4Folder browsing and previews
OmniSpot right-click file actions menu
5Right-click file actions
OmniSpot settings and index status
6Index locations and status

engineering notes

Three decisions

  • Speed or context?

    Both: a breadcrumb, no tree. As fast as a launcher, enough of a browser that you never lose your place.

  • Natural language without losing trust

    The model only gives terms a role: required, ranking, context. The app sets the weights.

  • Fast, but controlled actions

    Previews, folder hints and clearly scoped actions make it hard to act on the wrong file.

structure

Three projects, 72 tests

  • SmartFileLauncher.UIWPF interface: hotkey, search box, previews, settings
  • SmartFileLauncher.CoreSearch, indexing and the change feed
  • SmartFileLauncher.ChangeFeedServiceSeparate process: MFT inventory and USN stream

.NET 8 · C# 12 · WPF · SQLite

0 / 72

automated tests, all passing

Search, concurrency, indexing, watcher, navigation, settings and connectivity.

reflection

What I learned

In a local tool, speed only counts when it comes with trust. I learned to strike that balance with WPF, a global hotkey and a file-system index.

next

Where it goes next

  • Turkish morphological analysis (Zemberek)
  • Smarter ranking (TF-IDF)
  • Autocomplete as you type
  • File content search
  • Index the folders you choose
  • Voice commands (Vosk)
  • Themes and custom shortcuts