Skip to content

project-gauntlet/gauntlet

Repository files navigation

Gauntlet

Discord

Web-first cross-platform application launcher with React-based plugins

Warning

Launcher is being developed by single developer in their free time. Changes may be slow but steady

There will probably be breaking changes which will be documented in changelog.

image

Demo

Slightly outdated demo

gauntlet.mp4

Features

  • Plugin-first
    • Plugins are written in TypeScript
    • Extensive plugin API
      • Create UI views
      • One-shot commands
      • Dynamically provide list of one-shot commands
      • Render quick "inline" content directly under main search bar based on value in it
      • Get content from and add to Clipboard
    • Plugins are distributed as separate branch in Git repository, meaning plugin distribution doesn't need any central server
    • Plugins IDs are just Git Repository URLs
    • React-based UI for plugins
      • Implemented using custom React Reconciler (no Electron)
    • Deno JavaScript Runtime
      • Deno allows to sandbox JavaScript plugin code for better security
      • Plugins are required to explicitly specify what permissions they need to work
      • Node.js is used to run plugin tooling, but as a plugin developer you will always write code that runs on Deno
  • Designed with cross-platform in mind from the beginning
  • Commands and Views can be run/opened using custom global shortcuts
  • Custom search alias can be assigned to Commands or Views
  • Custom theme support
  • Built-in functionality is provided by bundled plugins
    • Applications: shows applications installed on the system in search results
      • Plugin also tracks windows and which application they belong to, so opening already opened application will by default bring up previously created window
    • Calculator: shows result of mathematical operations directly under main search bar
      • Includes converting currency using exchange rates
      • Powered by Numbat
  • Frecency-based search result ordering
    • Frecency is a combination of frequency and recency
    • More often the item is used the higher in the result list it will be, but items used a lot in the past will be ranked lower than items used the same amount of times recently
    • Results are matched per word by substring
OS Support
Official
  • Linux X11
  • macOS M1
Best-effort
  • Linux Wayland
    • Gnome Wayland is not yet supported, see #40
  • Windows
  • macOS Intel

Getting Started

Install Gauntlet

See Installation

Global Shortcut

Main window can be opened using global shortcut or CLI command:

  • Global Shortcut (can be changed in Settings)
    • Windows: ALT + Space
    • Linux X11: Super + Space
    • Linux Wayland
      • Global shortcut may not be supported, see feature support
      • Please use CLI command instead, and invoke it using window manager specific approach
    • macOS: CMD + Space
  • CLI command
    • gauntlet open

Install plugin

Plugins are installed in Settings UI. Use Git repository url of the plugin to install it, e.g. https://github.com/project-gauntlet/readme-demo-plugin.git

Create your own plugin

See Getting started with plugin development

Theming

See Theming

Building Gauntlet

You will need:

  • NodeJS
  • Rust
  • Protobuf Compiler
  • CMake (not used by the project itself, but is required by a dependency)
  • On Linux: libxkbcommon-dev (note: name may differ depending on used distribution)

Dev

To build dev run:

npm ci
npm run build
npm run build-dev-plugin
cargo build

In dev (without "release" feature) application will use directories ONLY inside project directory to store state or cache, to avoid messing up global installation

Not-yet-packaged

To build not-yet-packaged release binary, run:

npm ci
npm run build
cargo build --release --features release

Packaged

To build os-specific package, run one of the following:

macOS:

npm run build-macos-project --workspace @project-gauntlet/build

Windows:

npm run build-windows-project --workspace @project-gauntlet/build

Linux:

npm run build-linux-project --workspace @project-gauntlet/build

But the new version release needs to be done via GitHub Actions

Contributing

If you'd like to help build Gauntlet you can do it in more ways than just contributing code:

  • Reporting a bug or UI/UX problem
  • Creating a plugin

For simple problems feel free to open an issue or PR and tackle it yourself. For more significant changes please contact creators on Discord (invite link on top of README) and discuss first.

All and any contributions are welcome.

About

Raycast-inspired open-source cross-platform application launcher with React-based plugins

Topics

Resources

License

Stars

Watchers

Forks

Contributors 7

Languages