Repository navigation
Conversation
A Files section after Results lists files and folders from the home directory that match the query. fd lists the home directory with fixed arguments when the launcher opens (about 55 ms for 25k entries); the query is matched in-process, so it never reaches an argv. - core/FileSearch.js: listing parser, ranking (exact name, prefix, word start, substring, path), recency tie-break, glyphs, breadcrumbs, dates - services/FileIndex.qml: fd + stat listing, default excludes for node_modules, virtualenvs, caches and build output - Actions: Open File (gio open, so terminal apps such as nvim get a terminal), Show in Files, Copy Path (Ctrl+Shift+C) - The selection follows the first file when the listing arrives after the first answer
- Search Files: a built-in command and a "Search All Files" action on file rows (carries the query). A 40/60 list and detail pane; before typing it lists recently changed files. The pane previews images and the head of text and code files (watched for edits), then Name, Where, Type, Size and Modified. - Files opened or shown from omacast get a capped frecency bonus (15 x log10(score), max 40), stored like app visits. - Copy Path answers Ctrl+Shift+C. - When commands load after the first answer (right after a reload), the selection moves to the first row unless the user moved it, so a fast Enter no longer lands on a web fallback. - omacast doctor reports fd and the listing size. - README, SPEC 8.6 and CLAUDE.md status describe the design.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds file search (SPEC §8.6). The change is QML and JS only and adds no dependencies.
What it adds
nautilus --select), and Copy Path (Ctrl Shift C).file:<path>. Those files get a bonus of 15 × log10 of the frecency score, capped at 40.omacast doctorreports whetherfdis installed and how many files it listed.How it works
fdandstatlist$HOMEwith fixed arguments. On my machine this takes about 55 ms for about 25,000 entries. Omarchy installsfdin its base packages.fdskips hidden and git-ignored paths. The listing also excludesnode_modules,.venv,venv,__pycache__,site-packages,target,.cacheand.git, for projects that are not git repositories.gio openinstead ofxdg-open.xdg-openstarts aTerminal=truedefault such as nvim without a terminal, so the file never appears.gioopens it in a terminal and picks the same app as a double-click in Files.Text.PlainText.SPEC §8.6 planned a Rust indexer with SQLite and inotify. I noted the change of plan in SPEC §8.6 and in the CLAUDE.md status.
Related fix
Commands or the file listing can arrive after the first search answer, for example right after a reload. The selection now moves to the first row in that case, unless the user moved it. Before this change, a fast ↵ could land on the Google fallback.
Testing
node --test tests/*.test.jspasses all 151 tests, including 16 new file-search tests with expected values worked out by hand.omarchy plugin validate .passes.