General
- Window Tracking
- Gauntlet now tracks opened windows and assigns them to specific application entry in results
- If application has window open, primary action now instead focuses the window
- If there are multiple windows open, primary action opens view which contains list of windows that can be focused
- If application has window open, it is still possible to open new application instance by using separate new action
- It is experimental, and it is possible to disable window tracking by unchecking checkbox in Application entrypoint preferences in Settings UI
- Currently supported on
- Linux X11
- wlroots-based window managers
- Hyprland
- Cosmic
- Added "Show all opened windows" entrypoint to bundled plugin
- Application plugin is now implemented on Windows
- macOS native-like dark and light mode themes are now available
- On macOS theme is now auto-selected based on system theme
- On macOS window can now be dragged to change its position
- Window position is saved and will be used after restart
- Binary size has been reduced by around 40% (contributed by @davfsa)
- Added
main_window.close_on_unfocus
boolean option to config file to disable "close on unfocus" functionality of main window- Intended to be used when using "window focus follows mouse" functionality of OS, Desktop Environment or Window Manager
- Added option in Settings UI to choose were main window appears when opening it
- Current options
Static
- Window always opens in the same location (on macOS location can be changed by dragging the window)
Active Monitor
- Windows opens on monitor which has currently focused window
- Currently supported only on macOS
- Current options
- Improve config and theme config error parsing logs
Theming
- Themes have been reworked
- Removed complex themes
- Removed theme versioning
- Removed sample generation commands
- Themes are now defined in TOML format
- Theme file is located in config directory (varies based on OS) with name
theme.toml
- Theme file is located in config directory (varies based on OS) with name
- Format of theme file has been reworked, see bundled themes for examples
- 3 bundled themes are now available: Bundled themes
- Legacy (previous default theme)
- macOS Light
- macOS Dark
- It is possible to change theme in Settings UI
- By default, theme is auto-detected to use one of the bundled ones
- Setting is locked if theme config file exists
Plugins
- Entrypoint Generator improvements
- BREAKING CHANGE: Renamed
"command-generator"
entrypoint type into"entrypoint-generator"
, as well as all types related to it - BREAKING CHANGE: Removed
GeneratedEntrypoint
'sfn: () => void
actions: GeneratedEntrypointAction[]
field now is required to have at least one element- It is now possible to specify label displayed on bottom row panel for primary action
- BREAKING CHANGE: Renamed
GeneratedEntrypointAction
'sfn
field intorun
- It is now possible to have
GeneratedEntrypointAction
which opens view instead of running command by specifyingview
field with value of ReactFC
type instead ofrun
- Renamed
GeneratorProps
toGeneratorContext
- Added
pluginPreferences
andentrypointPreferences
properties toGeneratorContext
to access preferences from Entrypoint Generator - Added
get: (id: string) => GeneratedEntrypoint | undefined
function toGeneratorContext
to get added entrypoint - Added
getAll: () => GeneratedEntrypoint[]
function toGeneratorContext
to get all added entrypoints - Generated Entrypoints can now have accessories similar to
<List/>
component
- BREAKING CHANGE: Renamed
- Removed
pluginPreferences
andentrypointPreferences
helper functions - Added
usePluginPreferences
anduseEntrypointPreferences
React Hooks - Command function now receives
CommandContext
as first argument- Object contains
pluginPreferences
andentrypointPreferences
properties to access preferences from Command
- Object contains
- Unified primary and secondary action execution in
<List.Item/>
and<Grid.Item/>
- BREAKING CHANGE: Removed
onClick
property on<List.Item/>
and<Grid.Item/>
components - BREAKING CHANGE:
<List.Item/>
and<Grid.Item/>
now has howid: string
required property - If primary or secondary action is executed when
<List.Item/>
and<Grid.Item/>
is focused,onAction
handler first parameter will be value ofid
prop of focused item
- BREAKING CHANGE: Removed
- Added
onItemFocusChange?: (itemId: string | undefined) => void
property on<List.Item/>
and<Grid.Item/>
. Function is called when focused item changes - BREAKING CHANGE: Renamed
Image
type toImageLike
to avoid conflict with<Image/>
component - When entrypoint is enabled/disabled or preference value is changed whole plugin runtime is restarted instead of just reloading the search index
- It is now possible to control whether the action closes main window by returning
{ close: true }
object fromonAction
property function- For
<Inline/>
view and commands (including generated commands) action always closes window without possibility to keep it open
- For
- Improved rejected promise error log
UI/UX Improvements
- On macOS main window now uses native window decorations
- Show name of generator entrypoint near plugin name of entrypoints generated by it in main view search results
- Improved styling of action panel popup
- Tweaked padding between sections
- Added shadow around it
- Tweak height of
<List.Detail.Metadata/>
to be slightly taller - Values of fields in
<List.Detail.Metadata/>
are now positioned on the same row as labels
Fixes
- Fixed one thread having close to 100% CPU usage while main window is hidden
- Fixed icons in main search view sometimes not loading when window is opened or disappearing after scrolling
- Fixed commands in
permissions.exec.command
in Plugin Manifest not being resolved properly - Fixed zombie processes being left over after plugin runtime is stopped
- Fixed
npm run dev
failing to reload in some cases - Fixed
<Grid.EmptyView/>
not displaying the image - Fixed image in
<List.EmptyView/>
being too big so labels are not shown - Fixed action not being run if
<List/>
or<Grid/>
view has focused<SearchBar/>
- Fixed
npm run dev
failing because of missing log files when run for the first time