- Rust 93.1%
- JavaScript 2.7%
- Nix 1.4%
- Meson 1.4%
- CSS 0.7%
- Other 0.7%
Summon
Summon is an Alfred-style application launcher for the GNOME desktop, written in Rust with GTK4, Libadwaita, and the Relm4 component framework.
It presents a borderless, frameless search bar that toggles visibility when the app is activated (e.g. via a global hotkey). Start typing to search your installed applications, then press Enter to launch the selected result. A leading prefix switches the search into one of several other modes: a calculator, a shell, web search, emoji, file/directory lookup, clipboard history, a process killer, a typography palette, and a quotation-mark wrapper.
Summon showing the application list
See SCREENSHOTS.md for a tour of the other modes.
Modes
The first character of the query decides which mode Summon runs in. With no prefix it searches applications; the prefixes below switch modes:
| Prefix | Mode | Example | What it does |
|---|---|---|---|
| - | Apps | firefox |
Fuzzy search installed applications |
= |
Math | =100km in mi, =2 * 3 + 7 |
Evaluate a math/unit expression; Enter copies the result |
> |
Shell | >ls -la |
Run a shell command |
! |
Search | !g rust lang |
Web search, optionally via a bang keyword (see settings for available bangs) |
: |
Emoji | :smile |
Search emoji by name or shortcode; Enter copies it |
/ |
Files | /mainrs |
Fuzzy-find files under your home directory |
// |
Directories | //Documents |
Fuzzy-find directories under your home directory |
; |
Clipboard | ;invoice |
Search the clipboard history; Enter copies it back |
. |
Typography | .dash |
Search typographic characters; Enter copies the glyph |
" |
Quotes | "Hallo Welt |
Wrap the text in correct quotation marks; pick a style |
kill |
Kill | kill firefox |
Find running processes by name; Enter terminates them |
A legend of the available prefixes is shown in the window, and the active mode is displayed as an indicator while you type.
Applications
Prefix-free queries fuzzy-match installed desktop applications, ranked by relevance and by how often/recently you have launched them (usage is tracked in a small SQLite database). With an empty query, your most recently used applications are shown.
Typing the name of a system action (suspend/sleep, hibernate,
reboot, poweroff/shutdown, lock, or logout) surfaces that action as a
result so you can trigger it straight from the launcher.
Calculator (=)
Math expressions are evaluated with rink,
a unit-aware calculator. Besides plain arithmetic (=2 + 2 * 3) it handles
physical units and conversions (=100km in mi, =1h in s, =g for the
gravitational constant). Summon evaluates the longest valid prefix of the input
as you type; pressing Enter copies the result to the clipboard.
Shell (>)
Runs the entered command via the configured shell (sh -c <command> by default,
see settings). Pressing Enter runs it directly; Ctrl+Enter
runs it in a terminal window (kept open afterwards) using the configured
terminal-exec command.
Web search (!)
!term searches the web with your default search engine. Prefixing the term
with a configured bang keyword picks a specific engine. E.g. !g rust uses
Google, !gh relm4 searches GitHub, !w gnome searches Wikipedia. A bare bang
that matches several keywords waits for you to disambiguate. You can add, delete
and modify bang keywords in the settings.
Emoji (:)
Searches emoji by name or shortcode (e.g. :joy); pressing Enter copies the
emoji to the clipboard.
Files (/) and directories (//)
/query fuzzy-finds files and //query fuzzy-finds directories under your home
directory, using fd. A leading ~/ in the
query expands to your home directory. File and folder results offer several
secondary actions (see the shortcuts below): reveal the containing folder,
open with a chosen application, copy the path, and open the containing
directory in the configured terminal. Open with replaces the result list with
the applications that can handle the file; type to filter them, then press Enter
to launch, or Backspace/Esc to go back.
Clipboard (;)
;query searches the clipboard history (text, files and images) and Enter copies
the chosen entry back to the clipboard. The history is kept in memory only for the
current session and is never written to disk. On GNOME it requires the bundled
GNOME Shell extension; on other Wayland compositors Summon watches the clipboard
itself. It can be turned off in the settings.
Typography (.)
.query opens a palette of typographic characters that are awkward to type
directly: dashes (en/em dash, minus, hyphens), quotation marks and guillemets,
ellipsis, non-breaking and thin spaces, arrows, and math symbols. Search by
English name or alias (e.g. .dash, .arrow, .nbsp); pressing Enter copies the
character. For easily confused characters the subtitle shows the Unicode codepoint
and a short usage hint (for example when to reach for an en dash rather than an em
dash). An empty query lists the whole palette for browsing.
Quotes (")
"text wraps the typed text in correct, curly quotation marks, with one result
row per style: German „...", German guillemets »...«, English "...", and more.
Pick the row for the language or style you want; Enter copies the wrapped text.
Which style is listed first follows the typography-language setting, which
defaults to the system locale.
Kill (kill)
kill name lists running processes whose name matches, so you can terminate a
stuck program from the launcher. Enter sends SIGTERM;
Ctrl+Enter force-kills with SIGKILL. Type a name to match
(a bare kill lists nothing on its own).
Keyboard shortcuts
| Shortcut | Action |
|---|---|
| ↑ / ↓ | Move the selection |
| Enter | Activate the selected result |
| Backspace on empty query | Step back out of the current mode |
| Esc | Hide the launcher window |
| Ctrl+, | Open Settings |
| Ctrl+Enter | Secondary action (reveal in files, run in terminal in shell, force-kill in kill mode) |
| Ctrl+O | Open a file/folder result with a chosen application |
| Ctrl+C | Copy the path of a file/folder result |
| Ctrl+T | Open a file/folder result's directory in a terminal |
| Ctrl+1...9 | Trigger an application's nth desktop action |
The window shows a legend of the available prefixes and shortcuts when the query is empty, and the active mode is displayed as an indicator while you type.
Getting started
On first launch Summon shows a short welcome guide that walks through the
essential setup (binding a global hotkey, the optional GNOME extension, and
autostart) and lists the search prefixes. You can reopen it any time by typing
welcome (or help/guide).
Configuration
Settings are edited from the preferences dialog (Ctrl+,,
or type settings).
Binding a global hotkey
Summon has no global hotkey of its own: it runs as a single instance, and re-launching it toggles the launcher window rather than spawning a new process. Bind that invocation to a shortcut of your choice to summon and dismiss the window. The preferences dialog has a Keyboard Shortcut section with the command and a button that opens the keyboard settings.
The command to bind is:
gapplication launch de.wwwtech.summon
(summon works too, but gapplication launch uses D-Bus activation and is more
robust regardless of where the binary lives.)
In GNOME, set it up via Settings → Keyboard → View and Customize Shortcuts → Custom Shortcuts, add a shortcut with that command, and assign a key such as Super+Space. The same can be done from the command line:
A small GNOME Shell extension can keep the window centred on screen; when it is
available but not installed, the launcher offers to install it (type
extension, or use the hint shown on the empty home screen).
Building & Running
The toolchain (Rust, GTK4, Libadwaita, meson, ...) is provided by a Nix devshell,
loaded automatically via direnv (.envrc). The runtime also expects
fd and a terminal emulator on PATH.
Workflows go through just:
just run: configure, build, install into./install, and launchjust build: incremental buildjust watch: continuous rebuild viabaconjust lint/just fmt: clippy / formatcargo test: run the unit tests
License
AGPL-3.0-or-later.