2026-09-25 14:58:51 -04:00
|
|
|
.\" packaging/build-deb.sh rewrites the version in the .TH line below from
|
|
|
|
|
.\" [workspace.package] version; the literal here only shows when this file is
|
|
|
|
|
.\" read uninstalled.
|
2026-08-05 18:05:04 -04:00
|
|
|
.TH QUICKSEARCH 1 "2026-08-05" "quicksearch 1.0.2" "User Commands"
|
2026-08-02 19:04:30 -04:00
|
|
|
.SH NAME
|
|
|
|
|
quicksearch, quicksearch\-cli \- fast full\-text search across your files
|
|
|
|
|
.SH SYNOPSIS
|
|
|
|
|
.B quicksearch
|
|
|
|
|
.br
|
2026-09-04 21:39:54 -04:00
|
|
|
.B quicksearch \-\-toggle
|
|
|
|
|
.br
|
2026-08-02 19:04:30 -04:00
|
|
|
.B quicksearch
|
|
|
|
|
.RI [ FLAGS ]
|
|
|
|
|
.IR "query terms" ...
|
|
|
|
|
.br
|
|
|
|
|
.B quicksearch\-cli
|
|
|
|
|
.RI [ FLAGS ]
|
|
|
|
|
.IR "query terms" ...
|
|
|
|
|
.SH DESCRIPTION
|
|
|
|
|
.B quicksearch
|
2026-09-25 14:58:51 -04:00
|
|
|
maintains a SQLite/FTS5 index of the folders in its configuration and searches
|
|
|
|
|
it by file name and content.
|
2026-08-02 19:04:30 -04:00
|
|
|
.PP
|
2026-09-25 14:58:51 -04:00
|
|
|
With no query it opens the desktop application, which owns the indexer: it
|
|
|
|
|
walks the configured folders, watches them for changes and reindexes
|
|
|
|
|
periodically.
|
2026-08-02 19:04:30 -04:00
|
|
|
.PP
|
2026-09-25 14:58:51 -04:00
|
|
|
With one or more query terms it runs the application's ranked search, prints
|
|
|
|
|
the results and exits. Terminal mode never starts the indexer, the file watcher
|
|
|
|
|
or any background thread, so a one\-shot query leaves nothing running and does
|
|
|
|
|
not compete with a running application for inotify watches. It needs an
|
|
|
|
|
existing index; run the application once to build one.
|
2026-08-02 19:04:30 -04:00
|
|
|
.PP
|
|
|
|
|
.B quicksearch\-cli
|
2026-09-25 14:58:51 -04:00
|
|
|
is terminal search only: it takes the same flags and query syntax, never opens
|
|
|
|
|
a window, and exits 2 with usage when given no query. On Linux it is equivalent
|
|
|
|
|
to giving
|
2026-08-02 19:04:30 -04:00
|
|
|
.B quicksearch
|
2026-09-25 14:58:51 -04:00
|
|
|
a query; on Windows it is required, because one executable cannot be both a
|
|
|
|
|
GUI and a console program.
|
2026-08-02 19:04:30 -04:00
|
|
|
.SH OPTIONS
|
|
|
|
|
.TP
|
2026-09-04 21:39:54 -04:00
|
|
|
.B \-\-toggle
|
|
|
|
|
Bring a running QuickSearch to the front with the search box focused, or start
|
2026-09-25 14:58:51 -04:00
|
|
|
it if none is running. Bind a key to this in your desktop's keyboard settings.
|
2026-09-04 21:39:54 -04:00
|
|
|
.IP
|
2026-09-25 14:58:51 -04:00
|
|
|
While running, QuickSearch also holds a shortcut of its own
|
2026-09-04 21:39:54 -04:00
|
|
|
.RI ( Ctrl+Shift+F
|
2026-09-25 14:58:51 -04:00
|
|
|
by default, changeable on the Settings tab), but that cannot start it when it
|
|
|
|
|
is closed; this option can.
|
2026-09-04 21:39:54 -04:00
|
|
|
.IP
|
2026-09-25 14:58:51 -04:00
|
|
|
The request reaches the running instance through a socket in
|
2026-09-04 21:39:54 -04:00
|
|
|
.IR $XDG_RUNTIME_DIR ,
|
2026-09-25 14:58:51 -04:00
|
|
|
named after the configuration file; if nothing answers, this process becomes
|
|
|
|
|
the application. On Wayland the window comes forward only if the launcher
|
|
|
|
|
supplied an activation token (bindings made with the Settings tab's set\-up
|
|
|
|
|
button do); otherwise it is highlighted in the task bar.
|
2026-09-04 21:39:54 -04:00
|
|
|
.TP
|
2026-08-02 19:04:30 -04:00
|
|
|
.B \-\-fuzzy
|
2026-09-25 14:58:51 -04:00
|
|
|
Also run the fuzzy file name and full\-text passes, which tolerate
|
|
|
|
|
misspellings at some cost in speed. The edit budget comes from
|
2026-08-02 19:04:30 -04:00
|
|
|
.I [search].fuzzy_max_edits
|
|
|
|
|
in the configuration.
|
|
|
|
|
.TP
|
|
|
|
|
.BI \-\-limit " N"
|
|
|
|
|
Return at most
|
|
|
|
|
.I N
|
|
|
|
|
results. Defaults to
|
|
|
|
|
.I [search].display_limit
|
|
|
|
|
in the configuration.
|
|
|
|
|
.B \-\-limit=N
|
2026-09-25 14:58:51 -04:00
|
|
|
also works.
|
2026-08-02 19:04:30 -04:00
|
|
|
.TP
|
|
|
|
|
.B \-\-long
|
|
|
|
|
Print rank, size, modification time and a matching snippet for each hit instead
|
2026-09-25 14:58:51 -04:00
|
|
|
of bare paths, with the match in bold when stdout is a terminal.
|
2026-08-02 19:04:30 -04:00
|
|
|
.TP
|
|
|
|
|
.BR \-h ", " \-\-help
|
|
|
|
|
Print usage and exit.
|
2026-08-05 18:05:04 -04:00
|
|
|
.TP
|
|
|
|
|
.BR \-V ", " \-\-version
|
|
|
|
|
Print the version and the commit it was built from, then exit. Quote this in
|
|
|
|
|
bug reports.
|
2026-08-02 19:04:30 -04:00
|
|
|
.PP
|
2026-09-25 14:58:51 -04:00
|
|
|
An unrecognised option given without query terms is passed through and the
|
|
|
|
|
application opens, since the option may be meant for the windowing backend.
|
2026-08-02 19:04:30 -04:00
|
|
|
.SH QUERY SYNTAX
|
2026-08-05 18:05:04 -04:00
|
|
|
Plain words form a single phrase, matched against names, contents and paths.
|
2026-09-25 14:58:51 -04:00
|
|
|
Filters combine with it:
|
2026-08-05 18:05:04 -04:00
|
|
|
.TP
|
|
|
|
|
.B \(dq\fIexact phrase\fB\(dq
|
|
|
|
|
Quoting keeps spaces, stars and filter\-like words literal.
|
|
|
|
|
.B \(dq\(dq
|
|
|
|
|
escapes a quote.
|
|
|
|
|
.TP
|
|
|
|
|
.BI bud * port
|
|
|
|
|
.B *
|
|
|
|
|
matches any run of characters, staying within one line of content.
|
|
|
|
|
.B %
|
|
|
|
|
and
|
|
|
|
|
.B _
|
|
|
|
|
are always literal.
|
|
|
|
|
.TP
|
|
|
|
|
.B regex:\fIpattern\fR
|
|
|
|
|
Match a regular expression against names, contents and paths, for example
|
|
|
|
|
.BR regex:\(dq(foo|bar)\ed+\(dq .
|
|
|
|
|
Case\-insensitive by default;
|
|
|
|
|
.B (?\-i:\(dq\(dq)
|
|
|
|
|
overrides. Quote patterns containing spaces or
|
|
|
|
|
.BR "( ) : = < > \(dq" .
|
2026-08-02 19:04:30 -04:00
|
|
|
.TP
|
|
|
|
|
.B type:\fIName\fR
|
2026-08-05 18:05:04 -04:00
|
|
|
Match a file class: one of
|
|
|
|
|
.IR Audio ", " Image ", " Video ", " Document ", " Text ", " Archive ", "
|
|
|
|
|
.IR Spreadsheet ", " Presentation ", " Folder .
|
2026-08-02 19:04:30 -04:00
|
|
|
.TP
|
|
|
|
|
.B modified:\fIexpr\fR
|
|
|
|
|
Compare against the modification date, for example
|
|
|
|
|
.IR modified:>=2024-01-01 .
|
2026-08-05 18:05:04 -04:00
|
|
|
Also
|
|
|
|
|
.BR < ", " <= ", " > " and " = ;
|
|
|
|
|
dates are
|
|
|
|
|
.IR yyyy-mm-dd .
|
|
|
|
|
.B mtime:
|
|
|
|
|
is an alias.
|
2026-08-02 19:04:30 -04:00
|
|
|
.TP
|
|
|
|
|
.B path:\fI/dir\fR
|
2026-08-05 18:05:04 -04:00
|
|
|
Restrict results to a directory and its subdirectories.
|
|
|
|
|
.B folder:
|
|
|
|
|
and
|
|
|
|
|
.B includefolder:
|
|
|
|
|
are aliases.
|
|
|
|
|
.B *
|
|
|
|
|
is literal here.
|
2026-08-02 19:04:30 -04:00
|
|
|
.TP
|
|
|
|
|
.B mime:\fItype\fR
|
2026-08-05 18:05:04 -04:00
|
|
|
Match a MIME type exactly, for example
|
2026-08-02 19:04:30 -04:00
|
|
|
.IR mime:application/pdf .
|
|
|
|
|
.TP
|
|
|
|
|
.B name:\fIfragment\fR
|
2026-09-25 14:58:51 -04:00
|
|
|
Match a fragment of the file name. A filter, so it does not affect ranking.
|
2026-08-05 18:05:04 -04:00
|
|
|
.B filename:
|
|
|
|
|
is an alias; an unquoted
|
|
|
|
|
.B *
|
|
|
|
|
globs.
|
|
|
|
|
.PP
|
|
|
|
|
Unrecognised
|
|
|
|
|
.I key:value
|
|
|
|
|
text stays part of the search phrase.
|
|
|
|
|
.BR AND ", " OR
|
|
|
|
|
and parentheses are treated as plain words.
|
2026-08-02 20:21:19 -04:00
|
|
|
.SH PASSWORD PROTECTION
|
2026-09-25 14:58:51 -04:00
|
|
|
The index can be encrypted with a password (Settings tab, Security). A
|
|
|
|
|
protected index must be unlocked every time either binary starts. The
|
|
|
|
|
application shows an unlock screen; terminal mode takes the key from, in
|
|
|
|
|
order: the OS keychain (when \(lqRemember on this device\(rq is on), the
|
2026-08-02 20:21:19 -04:00
|
|
|
.B QUICKSEARCH_PASSWORD
|
2026-09-25 14:58:51 -04:00
|
|
|
environment variable, then a hidden prompt with three attempts. Without a
|
|
|
|
|
terminal and with neither source available it exits 2 with an explanation. A
|
|
|
|
|
wrong password never modifies the index.
|
2026-08-02 20:21:19 -04:00
|
|
|
.PP
|
2026-09-25 14:58:51 -04:00
|
|
|
Enabling, disabling or changing the password deletes and rebuilds the index.
|
|
|
|
|
The password itself is never stored; only a derived key is, in the OS
|
|
|
|
|
keychain, and only on request.
|
2026-08-02 20:21:19 -04:00
|
|
|
.SH ENVIRONMENT
|
|
|
|
|
.TP
|
|
|
|
|
.B QUICKSEARCH_PASSWORD
|
2026-09-25 14:58:51 -04:00
|
|
|
Password for a protected index, for scripted terminal search. Other processes
|
|
|
|
|
of the same user can read environment variables; prefer the keychain where
|
|
|
|
|
possible.
|
2026-08-02 19:04:30 -04:00
|
|
|
.SH FILES
|
|
|
|
|
.TP
|
|
|
|
|
.I ~/.config/quicksearch/config.toml
|
2026-09-25 14:58:51 -04:00
|
|
|
Configuration, created with defaults on first run.
|
2026-08-02 19:04:30 -04:00
|
|
|
.I /usr/share/doc/quicksearch/config_example.toml
|
2026-09-25 14:58:51 -04:00
|
|
|
documents every key.
|
2026-08-02 19:04:30 -04:00
|
|
|
.TP
|
|
|
|
|
.I ~/.local/share/quicksearch/index.sqlite
|
2026-09-25 14:58:51 -04:00
|
|
|
The index;
|
2026-08-02 19:04:30 -04:00
|
|
|
.I [paths].database_path
|
2026-09-25 14:58:51 -04:00
|
|
|
in the configuration sets its location.
|
2026-08-02 19:04:30 -04:00
|
|
|
.TP
|
2026-09-04 21:39:54 -04:00
|
|
|
.IR $XDG_RUNTIME_DIR /quicksearch\- <key> .sock
|
|
|
|
|
The socket
|
|
|
|
|
.B \-\-toggle
|
|
|
|
|
connects to, where
|
|
|
|
|
.I <key>
|
2026-09-25 14:58:51 -04:00
|
|
|
is a hash of the configuration file's path (not the index's, which can change
|
|
|
|
|
while running). Present only while the application runs; a leftover one is
|
|
|
|
|
inert and is replaced at the next start. Falls back to a private directory
|
|
|
|
|
under the temporary directory when
|
2026-09-04 21:39:54 -04:00
|
|
|
.I XDG_RUNTIME_DIR
|
|
|
|
|
is unset.
|
|
|
|
|
.TP
|
2026-08-02 19:04:30 -04:00
|
|
|
.I ./config.toml
|
2026-09-25 14:58:51 -04:00
|
|
|
A configuration file next to the
|
2026-08-02 19:04:30 -04:00
|
|
|
.B quicksearch
|
|
|
|
|
executable selects portable mode and overrides the per\-user configuration
|
2026-09-25 14:58:51 -04:00
|
|
|
entirely. The packaged build installs no such file.
|
2026-08-02 19:04:30 -04:00
|
|
|
.PP
|
|
|
|
|
.I XDG_CONFIG_HOME
|
|
|
|
|
and
|
|
|
|
|
.I XDG_DATA_HOME
|
|
|
|
|
are honoured when set to absolute paths.
|
|
|
|
|
.SH EXIT STATUS
|
|
|
|
|
.TP
|
|
|
|
|
.B 0
|
|
|
|
|
The search completed, or
|
|
|
|
|
.B \-\-help
|
|
|
|
|
was requested.
|
|
|
|
|
.TP
|
|
|
|
|
.B 1
|
|
|
|
|
The application failed to start.
|
|
|
|
|
.TP
|
|
|
|
|
.B 2
|
2026-08-02 20:21:19 -04:00
|
|
|
The configuration could not be read, the index could not be opened or
|
|
|
|
|
unlocked, the query was rejected, or
|
2026-08-02 19:04:30 -04:00
|
|
|
.B quicksearch\-cli
|
|
|
|
|
was given no query.
|
|
|
|
|
.SH EXAMPLES
|
|
|
|
|
.TP
|
|
|
|
|
Search for a phrase:
|
|
|
|
|
.B quicksearch quarterly revenue report
|
|
|
|
|
.TP
|
|
|
|
|
Recent PDFs under a directory, with details:
|
|
|
|
|
.B quicksearch \-\-long type:Document mime:application/pdf path:/home/me/docs modified:>=2026-01-01
|
|
|
|
|
.TP
|
|
|
|
|
Tolerate misspellings and cap the output:
|
|
|
|
|
.B quicksearch \-\-fuzzy \-\-limit 10 recieve
|
|
|
|
|
.SH SEE ALSO
|
2026-09-25 14:58:51 -04:00
|
|
|
.IR /usr/share/doc/quicksearch/README.md ,
|
|
|
|
|
.I /usr/share/doc/quicksearch/config_example.toml
|
2026-08-02 19:04:30 -04:00
|
|
|
.SH AUTHOR
|
|
|
|
|
Jeremy <jeremy@karsttech.com>
|