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