Configuration Files
All settings of Kando are stored in two configuration files JSON files which you can edit with any text editor.
config.json
stores the general configuration of the application and menus.json
stores the configuration of the individual menus.
Location of the Configuration Files
Depending on your platform, the configuration files are located in different directories. Use you file manager or terminal to navigate to the following directories.
Directorykando
Directoryicon-themes/
- …
Directorymenu-themes/
- …
Directorysound-themes/
- …
- config.json Contains the general configuration of Kando.
- menus.json Contains the configuration of the menus.
General Configuration: config.json
This file contains the general configuration of Kando.
Property | Description |
---|---|
locale: "auto" new! | The locale which should be used for the menu. If set to "auto" , Kando will use the system locale. |
menuTheme: "default" | The directory name of the menu theme to use. Kando will first look for a directory with this name in the menu-themes subdirectory of the config directory. If it does not find one, it will look for a directory with this name in .webpack/renderer/assets/menu-themes in Kando’s installation directory. |
darkMenuTheme: "default" | The name of the theme which should be used if the system is in dark mode. |
menuThemeColors: {} | A map of accent color overrides for each theme. A color override for the “default” theme could look like this: { "default": {"background-color": "#RRGGBB"}} . |
darkMenuThemeColors: {} | Same as above, however this one will be used if the system is in dark mode. |
enableDarkModeForMenuThemes: false | Whether Kando should use the dark menu theme if the system is in dark mode. |
soundTheme: "none" new! | The directory name of the sound theme to use. Kando will first look for a directory with this name in the sound-themes subdirectory of the config directory. If it does not find one, it will look for a directory with this name in .webpack/renderer/assets/sound-themes in Kando’s installation directory. |
soundVolume: 0.5 new! | The volume of the sound effects. This should be a value between 0 and 1. |
ignoreWriteProtectedConfigFiles: false soon! | If set to true , Kando will not show a warning if the configuration files are write-protected. |
trayIconFlavor: 'color' soon! | Can be one of 'color' , 'light' , 'dark' , or 'none' . The light, dark, and color flavors are only available on Windows and Linux. On macOS, the color always depends on your system colors. If set to 'none' , the tray icon will be hidden. |
sidebarVisible: true | Whether the left sidebar is currently visible. |
zoomFactor: 1.0 | The zoom factor of the menu. This can be used to scale the menu on high-resolution screens. |
enableVersionCheck: true | If set to true , Kando will check for new version regularly, and show a notification if a new version is available. |
menuOptions: <see below> | The parameters configure the general behavior of the menus. |
editorOptions: <see below> | The parameters configure the behavior of the menu editor. |
The menuOptions
Property
Property | Description |
---|---|
centerDeadZone: 50 | Clicking inside this radius (in pixels) will select the parent element or close the menu. |
minParentDistance: 150 | The distance in pixels at which the parent menu item is placed if a submenu is selected close to the parent. |
dragThreshold: 15 | This is the threshold in pixels which is used to differentiate between a click and a drag. If the mouse is moved more than this threshold before the mouse button is released, an item is dragged. |
fadeInDuration: 150 | The duration of the fade-in animation in milliseconds. Set to 0 to disable the animation. |
fadeOutDuration: 200 | The duration of the fade-out animation in milliseconds. Set to 0 to disable the animation. Some actions are only executed after the fade-out animation has finished, so reducing this value can make the menu much “snappier”. |
enableMarkingMode: true | If enabled, items can be selected by dragging the mouse over them. |
enableTurboMode: true | If enabled, items can be selected by hovering over them while holding down a keyboard key. |
gestureMinStrokeLength: 150 | Shorter gesture strokes will not lead to selections (in pixels). |
gestureMinStrokeAngle: 20 | Smaller turns will not lead to selections (in degrees). |
gestureJitterThreshold: 10 | Smaller pointer movements will not be considered at all during gesture recognition (in pixels). |
gesturePauseTimeout: 100 | If the pointer is stationary for this many milliseconds, the current item will be selected during gesture recognition. |
fixedStrokeLength: 0 | If set to a value greater than 0, items will be instantly selected if the mouse travelled more than centerDeadZone + fixedStrokeLength pixels in marking or turbo mode. Any other gesture detection based on angles or motion speed will be disabled in this case. |
rmbSelectsParent: false | If enabled, the parent of a selected item will be selected on a right mouse button click. Else the menu will be closed directly. |
gamepadBackButton: 1 | This button will select the parent item when using a gamepad. Set to -1 to disable. See https://w3c.github.io/gamepad/#remapping for the mapping of numbers to buttons. |
gamepadCloseButton: 2 | This button will close the menu when using a gamepad. Set to -1 to disable. See https://w3c.github.io/gamepad/#remapping for the mapping of numbers to buttons. |
The editorOptions
Property
Property | Description |
---|---|
showSidebarButtonVisible: true | Set this to false to hide the show-sidebar button. It will still be clickable, though. |
showEditorButtonVisible: true | Set this to false to hide the show-editor button. It will still be clickable, though. |
Menu Configuration: menus.json
This file contains the configuration of the individual menus.
There are two top-level JSON objects: menus
contains a list of Menu Descriptions and templates
contains a list of Menu Descriptions or Menu Item Descriptions.
Menu Descriptions
The items in the menus
list are called menu descriptions.
They are JSON objects with the following properties:
Property | Description |
---|---|
shortcut: "" | The shortcut which opens the menu. This is a string which can contain multiple keys separated by + . For example, "Ctrl+Shift+K" or "Cmd+Shift+K" . If empty, the menu will not have a shortcut. See Valid Key Names for details. |
shortcutID: "" | On some platforms, Kando can not bind shortcuts directly. In this case, you can use this property to assign an ID which can be used in the global shortcut configuration of your desktop environment. This should be lowercase and contain only ASCII characters and dashes. For example, "main-trigger" . |
root | mandatory |
centered: false | Whether the menu should be centered on the screen. If this is false , the menu will be opened at the position of the mouse cursor. |
warpMouse: false | Whether the mouse cursor should be moved to the center of the menu when the menu is opened in centered mode. |
anchored: false | Whether the submenus should be opened at the position where the menu was opened initially. If this is false , the submenus will be opened at the position of the mouse cursor. |
conditions: {} | A dictionary of conditions which must be met for the menu to be shown. See below for details. |
Menu Conditions
The conditions
property of a menu description can contain a dictionary of conditions.
Only if all conditions are met, the menu will be shown.
Property | Description |
---|---|
appName: "" | The name of the application which must be focused for the menu to be shown. If it is a simple string, the condition is met if the name of the focused application contains the given string (case-insensitive). If the string starts with a / , it is interpreted as a regular expression. |
windowName: "" | The name of the window which must be focused for the menu to be shown. It is interpreted in the same way as appName . |
screenArea: {} | A dictionary with the optional properties xMin , xMax , yMin , and yMax . The menu will only be shown if the mouse cursor is within the given screen area. The values are given in pixels and are relative to the top-left corner of the screen. If a value is not given, the area is unbounded in this direction. |
Menu Item Descriptions
The layout of the menu is described by a tree of menu items. Each menu item is a JSON object with the following properties:
Property | Description |
---|---|
name: "undefined" | The name of the menu item. This is shown in the center of the menu when the item is hovered. The name of the root item defines the name of the menu. |
iconTheme: "" | This can either be one of the built-in icon themes ("material-symbols-rounded" , "simple-icons" , "simple-icons-colored" , "base64" , or "emoji" ) or a subdirectory of the icon-themes subdirectory in Kando’s config directory. The built-in icon themes use icons from Google’s Material Symbols or Simple Icons respectively. |
icon: "" | The name of the icon from the given icon theme, an emoji like "🚀" (if the iconTheme is "emoji" ), or a base64-encode image like "data:image/gif;base64,..." (if the icon theme is "base64" ). |
angle | auto |
type: "submenu" | The type of the menu item. There are several types available. See below for details. |
data: {} | Depending on the type of the item, this can or must contain additional data. See below for details. |
children: [] | If the menu item is a submenu, this contains a list of child items. See below for details. |
Menu Item Types
For now, the type
property of a menu item can be one of the following values:
"submenu"
,
"command"
,
"uri"
,
"hotkey"
,
"macro"
,
"text"
.
Click on these links to learn more about the individual item types and which data
properties they require.