1
0
Fork
You've already forked Summon
0
Alfred-style application launcher for the GNOME desktop
  • Rust 93.1%
  • JavaScript 2.7%
  • Nix 1.4%
  • Meson 1.4%
  • CSS 0.7%
  • Other 0.7%
2026年07月08日 07:39:38 +02:00
data fix persisting: always search in all entries 2026年07月02日 10:50:48 +02:00
po move bang settings to a dedicated widget 2026年07月02日 08:44:39 +02:00
screenshots update README, add screenshots 2026年06月28日 18:38:19 +02:00
src move motion detection to the scroller viewport 2026年07月03日 21:05:36 +02:00
.envrc initial commit 2026年06月28日 17:51:04 +02:00
.gitignore initial commit 2026年06月28日 17:51:04 +02:00
.rustfmt.toml move to Rust 2024 and add a .rustfmt.toml 2026年07月02日 09:58:51 +02:00
Cargo.lock Update serde monorepo to v1.0.228 2026年07月08日 07:39:38 +02:00
Cargo.toml Update serde monorepo to v1.0.228 2026年07月08日 07:39:38 +02:00
COPYING initial commit 2026年06月28日 17:51:04 +02:00
de.wwwtech.summon.json initial commit 2026年06月28日 17:51:04 +02:00
flake.lock initial commit 2026年06月28日 17:51:04 +02:00
flake.nix center window by adding a small extension 2026年06月28日 17:51:12 +02:00
justfile initial commit 2026年06月28日 17:51:04 +02:00
meson.build initial commit 2026年06月28日 17:51:04 +02:00
README.md more documentation 2026年06月30日 11:44:40 +02:00
renovate.json add renovate config 2026年07月04日 09:00:55 +02:00
SCREENSHOTS.md update README, add screenshots 2026年06月28日 18:38:19 +02:00

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.

!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 launch
  • just build: incremental build
  • just watch: continuous rebuild via bacon
  • just lint / just fmt: clippy / format
  • cargo test: run the unit tests

License

AGPL-3.0-or-later.