diff --git a/README.md b/README.md index bd0ca7e..b0b4906 100644 --- a/README.md +++ b/README.md @@ -29,27 +29,30 @@ https://github.com/project-gauntlet/gauntlet/assets/16986685/c63402f4-b0ca-49c8- - Applications: provides list of applications - Calculator: shows result of mathematical operations directly under main search bar - Settings: open Gauntlet Settings from Gauntlet itself - - Plugins are distributed as separate branch in git repository, meaning plugin distribution doesn't need any central + - Plugins are distributed as separate branch in Git repository, meaning plugin distribution doesn't need any central server - - Plugins are installed using Git Repository URL + - Plugins IDs are just Git Repository URLs - [React](https://github.com/facebook/react)-based UI for plugins - - Implemented using custom React Reconciler - - iced-rs is used for UI + - Implemented using custom React Reconciler (no Electron) + - [iced-rs](https://github.com/iced-rs/iced) is used for UI - [Deno JavaScript Runtime](https://github.com/denoland/deno) - Deno allows us to sandbox JavaScript code for better security - Plugins are required to explicitly specify what permissions they need to work - - NodeJS is still used to run tooling + - NodeJS is used to run plugin tooling - 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 - Designed with cross-platform in mind - Permissions + - By default, plugins do not have access to host system - If plugin asked for access to filesystem, env variables, FFI or running commands, it is required to specify which operating systems it supports. - If plugin doesn't use filesystem, env variables, ffi or running commands and just uses network and/or UI, it is cross-platform - Shortcuts - - Plugins are allowed to use only limited set of keys for shortcuts - - Only upper and lower-case letters, symbols and numbers - - Shortcut can have either `"main"` or `"alternative"` kind + - Plugins are allowed to use only limited set of keys for shortcuts to support widest possible range of keyboards + - Only upper and lower-case letters, symbols and numbers + - Shortcut can have either `"main"` or `"alternative"` kind so plugins do not need to specify shortcut separately for each OS - `"main"` shortcut requires following modifiers - Windows and Linux: CTRL - macOS: CMD @@ -63,13 +66,16 @@ https://github.com/project-gauntlet/gauntlet/assets/16986685/c63402f4-b0ca-49c8- ###### Implemented -- Linux -- macOS +- Linux + - Both X11 and Wayland (via LayerShell protocol) are supported +- macOS ###### Planned - Windows - - already works (excluding built-in "Applications" plugin) but, at the moment, needs to be build manually + - already works + - publish process is not yet implemented, so application needs to be build manually + - built-in "Applications" plugin is not yet implemented ##### UI @@ -83,13 +89,12 @@ https://github.com/project-gauntlet/gauntlet/assets/16986685/c63402f4-b0ca-49c8- - Separate settings window - Stack-based Navigation - Action Shortcuts +- Theming ###### Planned - Toast popups - Keyboard only navigation in plugin-views -- Theming -- Themable icons - Vim motions ##### APIs @@ -147,6 +152,17 @@ xattr -d com.apple.quarantine ./gauntlet-aarch64-macos.dmg Be the first one to create a package. See [Application packaging for Linux](#application-packaging-for-Linux) +### Global Shortcut +Main window can be opened using global shortcut or CLI command: +- Shortcut: + - Windows: ALT + Space + - Linux X11: Super + Space + - Linux Wayland: No global shortcut. Please use CLI command + - macOS: CMD + Space + - Can be changed in Settings +- CLI command: + - `gauntlet open` + ## Configuration ### Plugin manifest @@ -215,7 +231,7 @@ run_subprocess = ["program"] # array of strings, if specified requires supported system = ["apiName"] # array of strings, if specified requires supported_system to be specified as well [[supported_system]] -os = 'linux' # currently only 'linux' +os = 'linux' # 'linux', 'windows' or 'macos' ``` @@ -230,9 +246,11 @@ Located at `$XDG_CONFIG_HOME/gauntlet/config.toml` for Linux. Not used at the mo The Application has a simple command line interface - `gauntlet` - starts server - - `gauntlet --minimized` to start server but not open main window + - `gauntlet --minimized` - starts server without opening main window - `gauntlet open` - opens application window, can be used instead of global shortcut - `gauntlet settings` - settings, plugin installation and removal, preferences, etc +- `gauntlet generate-sample-color-theme` - generate sample color theme. See: [THEME.md](./docs/THEME.md) +- `gauntlet generate-sample-theme` - generate sample theme. See: [THEME.md](./docs/THEME.md) ### Dev Tools @@ -250,6 +268,10 @@ development purposes. It has following commands: [Plugin template](https://github.com/project-gauntlet/plugin-template) has nice `npm run` wrappers for them. +## Theming + +See [THEME.md](./docs/THEME.md) + ## Architecture The Application consists of three parts: server, frontend and settings. @@ -300,11 +322,11 @@ If something is missing, please [create an issue](https://github.com/project-gau Gauntlet executable consists of three applications: -- `$ path/to/gauntlet/executable --minimized` +- `$ path/to/gauntlet --minimized` - Needs to be started when user logs in -- `$ path/to/gauntlet/executable open` +- `$ path/to/gauntlet open` - Expected to be run on demand using launcher or system provided global shortcut -- `$ path/to/gauntlet/executable settings` +- `$ path/to/gauntlet settings` - Started on demand from the list of available applications (will vary depending on desktop environment or window manager chosen) or from Gauntlet itself @@ -337,6 +359,7 @@ You will need: - NodeJS v18 - Rust - Protobuf Compiler +- On Linux: `libxkbcommon-dev` (note: name may differ depending on used distribution) To build dev run: ```bash