diff --git a/configure.ac b/configure.ac index c8565ad2f..e6e4d26a4 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([rofi], [1.7.7-dev], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions]) +AC_INIT([rofi], [1.7.8], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions]) AC_CONFIG_SRCDIR([source/rofi.c]) AC_CONFIG_HEADER([config.h]) diff --git a/meson.build b/meson.build index 57a5c9708..1dea4fb86 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('rofi', 'c', - version: '1.7.7-dev', + version: '1.7.8', meson_version: '>=0.59.0', license: [ 'MIT' ], default_options: [ diff --git a/mkdocs/docs/1.7.8/rofi-debugging.5.markdown b/mkdocs/docs/1.7.8/rofi-debugging.5.markdown new file mode 100644 index 000000000..4df15d529 --- /dev/null +++ b/mkdocs/docs/1.7.8/rofi-debugging.5.markdown @@ -0,0 +1,177 @@ +# rofi-debugging(5) + +## NAME + +Debugging rofi. + +When reporting an issue with rofi crashing, or misbehaving. It helps to do some +small test to help pin-point the problem. + +First try disabling your custom configuration: `-no-config` + +This disables the parsing of the configuration files. This runs rofi in *stock* +mode. + +If you run custom C plugins, you can disable the plugins using: `-no-plugins` + +## Get the relevant information for an issue + +Please pastebin the output of the following commands: + +```bash +rofi -help +rofi -dump-config +rofi -dump-theme +``` + +`rofi -help` provides us with the configuration files parsed, the exact +version, monitor layout and more useful information. + +The `rofi -dump-config` and `rofi -dump-theme` output gives us `rofi` +interpretation of your configuration and theme. + +Please check the output for identifiable information and remove this. + +## Timing traces + +To get a timing trace, enable the **Timings** debug domain. + +```bash +G_MESSAGES_DEBUG=Timings rofi -show drun +``` +It will show a trace with (useful) timing information at relevant points during +the execution. This will help debugging when rofi is slow to start. + +Example trace: + +```text +(process:14942): Timings-DEBUG: 13:47:39.335: 0.000000 (0.000000): Started +(process:14942): Timings-DEBUG: 13:47:39.335: 0.000126 (0.000126): ../source/rofi.c:main:786 +(process:14942): Timings-DEBUG: 13:47:39.335: 0.000163 (0.000037): ../source/rofi.c:main:819 +(process:14942): Timings-DEBUG: 13:47:39.336: 0.000219 (0.000056): ../source/rofi.c:main:826 Setup Locale +(process:14942): Timings-DEBUG: 13:47:39.337: 0.001235 (0.001016): ../source/rofi.c:main:828 Collect MODI +(process:14942): Timings-DEBUG: 13:47:39.337: 0.001264 (0.000029): ../source/rofi.c:main:830 Setup MODI +(process:14942): Timings-DEBUG: 13:47:39.337: 0.001283 (0.000019): ../source/rofi.c:main:834 Setup mainloop +(process:14942): Timings-DEBUG: 13:47:39.337: 0.001369 (0.000086): ../source/rofi.c:main:837 NK Bindings +(process:14942): Timings-DEBUG: 13:47:39.337: 0.001512 (0.000143): ../source/xcb.c:display_setup:1177 Open Display +(process:14942): Timings-DEBUG: 13:47:39.337: 0.001829 (0.000317): ../source/xcb.c:display_setup:1192 Setup XCB +(process:14942): Timings-DEBUG: 13:47:39.346: 0.010650 (0.008821): ../source/rofi.c:main:844 Setup Display +(process:14942): Timings-DEBUG: 13:47:39.346: 0.010715 (0.000065): ../source/rofi.c:main:848 Setup abe +(process:14942): Timings-DEBUG: 13:47:39.350: 0.015101 (0.004386): ../source/rofi.c:main:883 Load cmd config +(process:14942): Timings-DEBUG: 13:47:39.351: 0.015275 (0.000174): ../source/rofi.c:main:907 Setup Modi +(process:14942): Timings-DEBUG: 13:47:39.351: 0.015291 (0.000016): ../source/view.c:rofi_view_workers_initialize:1922 Setup Threadpool, start +(process:14942): Timings-DEBUG: 13:47:39.351: 0.015349 (0.000058): ../source/view.c:rofi_view_workers_initialize:1945 Setup Threadpool, done +(process:14942): Timings-DEBUG: 13:47:39.367: 0.032018 (0.016669): ../source/rofi.c:main:1000 Setup late Display +(process:14942): Timings-DEBUG: 13:47:39.367: 0.032080 (0.000062): ../source/rofi.c:main:1003 Theme setup +(process:14942): Timings-DEBUG: 13:47:39.367: 0.032109 (0.000029): ../source/rofi.c:startup:668 Startup +(process:14942): Timings-DEBUG: 13:47:39.367: 0.032121 (0.000012): ../source/rofi.c:startup:677 Grab keyboard +(process:14942): Timings-DEBUG: 13:47:39.368: 0.032214 (0.000093): ../source/view.c:__create_window:701 xcb create window +(process:14942): Timings-DEBUG: 13:47:39.368: 0.032235 (0.000021): ../source/view.c:__create_window:705 xcb create gc +(process:14942): Timings-DEBUG: 13:47:39.368: 0.033136 (0.000901): ../source/view.c:__create_window:714 create cairo surface +(process:14942): Timings-DEBUG: 13:47:39.369: 0.033286 (0.000150): ../source/view.c:__create_window:723 pango cairo font setup +(process:14942): Timings-DEBUG: 13:47:39.369: 0.033351 (0.000065): ../source/view.c:__create_window:761 configure font +(process:14942): Timings-DEBUG: 13:47:39.381: 0.045896 (0.012545): ../source/view.c:__create_window:769 textbox setup +(process:14942): Timings-DEBUG: 13:47:39.381: 0.045944 (0.000048): ../source/view.c:__create_window:781 setup window attributes +(process:14942): Timings-DEBUG: 13:47:39.381: 0.045955 (0.000011): ../source/view.c:__create_window:791 setup window fullscreen +(process:14942): Timings-DEBUG: 13:47:39.381: 0.045966 (0.000011): ../source/view.c:__create_window:797 setup window name and class +(process:14942): Timings-DEBUG: 13:47:39.381: 0.045974 (0.000008): ../source/view.c:__create_window:808 setup startup notification +(process:14942): Timings-DEBUG: 13:47:39.381: 0.045981 (0.000007): ../source/view.c:__create_window:810 done +(process:14942): Timings-DEBUG: 13:47:39.381: 0.045992 (0.000011): ../source/rofi.c:startup:679 Create Window +(process:14942): Timings-DEBUG: 13:47:39.381: 0.045999 (0.000007): ../source/rofi.c:startup:681 Parse ABE +(process:14942): Timings-DEBUG: 13:47:39.381: 0.046113 (0.000114): ../source/rofi.c:startup:684 Config sanity check +(process:14942): Timings-DEBUG: 13:47:39.384: 0.048229 (0.002116): ../source/dialogs/run.c:get_apps:216 start +(process:14942): Timings-DEBUG: 13:47:39.390: 0.054626 (0.006397): ../source/dialogs/run.c:get_apps:336 stop +(process:14942): Timings-DEBUG: 13:47:39.390: 0.054781 (0.000155): ../source/dialogs/drun.c:get_apps:634 Get Desktop apps (start) +(process:14942): Timings-DEBUG: 13:47:39.391: 0.055264 (0.000483): ../source/dialogs/drun.c:get_apps:641 Get Desktop apps (user dir) +(process:14942): Timings-DEBUG: 13:47:39.418: 0.082884 (0.027620): ../source/dialogs/drun.c:get_apps:659 Get Desktop apps (system dirs) +(process:14942): Timings-DEBUG: 13:47:39.418: 0.082944 (0.000060): ../source/dialogs/drun.c:get_apps_history:597 Start drun history +(process:14942): Timings-DEBUG: 13:47:39.418: 0.082977 (0.000033): ../source/dialogs/drun.c:get_apps_history:617 Stop drun history +(process:14942): Timings-DEBUG: 13:47:39.419: 0.083638 (0.000661): ../source/dialogs/drun.c:get_apps:664 Sorting done. +(process:14942): Timings-DEBUG: 13:47:39.419: 0.083685 (0.000047): ../source/view.c:rofi_view_create:1759 +(process:14942): Timings-DEBUG: 13:47:39.419: 0.083700 (0.000015): ../source/view.c:rofi_view_create:1783 Startup notification +(process:14942): Timings-DEBUG: 13:47:39.419: 0.083711 (0.000011): ../source/view.c:rofi_view_create:1786 Get active monitor +(process:14942): Timings-DEBUG: 13:47:39.420: 0.084693 (0.000982): ../source/view.c:rofi_view_refilter:1028 Filter start +(process:14942): Timings-DEBUG: 13:47:39.421: 0.085992 (0.001299): ../source/view.c:rofi_view_refilter:1132 Filter done +(process:14942): Timings-DEBUG: 13:47:39.421: 0.086090 (0.000098): ../source/view.c:rofi_view_update:982 +(process:14942): Timings-DEBUG: 13:47:39.421: 0.086123 (0.000033): ../source/view.c:rofi_view_update:1002 Background +(process:14942): Timings-DEBUG: 13:47:39.428: 0.092864 (0.006741): ../source/view.c:rofi_view_update:1008 widgets +``` + +## Debug domains + +To further debug the plugin, you can get a trace with (lots of) debug +information. This debug output can be enabled for multiple parts in rofi using +the glib debug framework. Debug domains can be enabled by setting the +G\_MESSAGES\_DEBUG environment variable. At the time of creation of this page, +the following debug domains exist: + +- all: Show debug information from all domains. +- X11Helper: The X11 Helper functions. +- View: The main window view functions. +- Widgets.Box: The Box widget. +- Modes.DMenu: The dmenu mode. +- Modes.Run: The run mode. +- Modes.DRun: The desktop file run mode. +- Modes.Window: The window mode. +- Modes.Script: The script mode. +- Modes.Combi: The script mode. +- Modes.Ssh: The ssh mode. +- Rofi: The main application. +- Timings: Get timing output. +- Theme: Theme engine debug output. (warning lots of output). +- Widgets.Icon: The Icon widget. +- Widgets.Box: The box widget. +- Widgets.Container: The container widget. +- Widgets.Window: The window widget. +- Helpers.IconFetcher: Information about icon lookup. + +For full list see `man rofi`. + +Example: `G_MESSAGES_DEBUG=Dialogs.DRun rofi -show drun` To get specific output +from the Desktop file run dialog. + +To redirect the debug output to a file (`~/rofi.log`) add: + +```bash +rofi -show drun -log ~/rofi.log +``` + +Specifying the logfile automatically enabled all log domains. +This can be useful when rofi is launched from a window manager. + +## Creating a backtrace + +First make sure you compile **rofi** with debug symbols: + +```bash +make CFLAGS="-O0 -g3" clean rofi +``` + +Getting a backtrace using GDB is not very handy. Because if rofi get stuck, it +grabs keyboard and mouse. So if it crashes in GDB you are stuck. The best way +to go is to enable core file. (ulimit -c unlimited in bash) then make rofi +crash. You can then load the core in GDB. + +```bash +gdb rofi core +``` + +Then type inside gdb: + +```bash +thread apply all bt +``` + +The output trace is useful when reporting crashes. + +Some distribution have `systemd-coredump`, this way you can easily get a +backtrace via `coredumpctl`. + +## SEE ALSO + +rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), +rofi-script(5), rofi-keys(5),rofi-theme-selector(1) + +## AUTHOR + +* Qball Cow diff --git a/mkdocs/docs/1.7.8/rofi-dmenu.5.markdown b/mkdocs/docs/1.7.8/rofi-dmenu.5.markdown new file mode 100644 index 000000000..27e484b3f --- /dev/null +++ b/mkdocs/docs/1.7.8/rofi-dmenu.5.markdown @@ -0,0 +1,245 @@ +# rofi-dmenu(5) + +## NAME + +**rofi dmenu mode** - Rofi dmenu emulation + +## DESCRIPTION + +To integrate **rofi** into scripts as simple selection dialogs, +**rofi** supports emulating **dmenu(1)** (A dynamic menu for X11). + +The website for `dmenu` can be found [here](http://tools.suckless.org/dmenu/). + +**rofi** does not aim to be 100% compatible with `dmenu`. There are simply too +many flavors of `dmenu`. The idea is that the basic usage command-line flags +are obeyed, theme-related flags are not. Besides, **rofi** offers some extended +features (like multi-select, highlighting, message bar, extra key bindings). + +## BASIC CONCEPT + +In `dmenu` mode, **rofi** reads data from standard in, splits them into +separate entries and displays them. If the user selects a row, this is printed +out to standard out, allowing the script to process it further. + +By default separation of rows is done on new lines, making it easy to pipe the +output a one application into **rofi** and the output of rofi into the next. + +## USAGE + +By launching **rofi** with the `-dmenu` flag it will go into dmenu emulation +mode. + +```bash +ls | rofi -dmenu +``` + +### DMENU DROP-IN REPLACEMENT + +If `argv[0]` (calling command) is dmenu, **rofi** will start in dmenu mode. +This way, it can be used as a drop-in replacement for dmenu. Just copy or +symlink **rofi** to dmenu in `$PATH`. + +```bash +ln -s /usr/bin/rofi /usr/bin/dmenu +``` + +### DMENU VS SCRIPT MODE + +Script mode is used to extend **rofi**, dmenu mode is used to extend a script. +The two do share much of the same input format. Please see the +**rofi-script(5)** manpage for more information. + +### DMENU SPECIFIC COMMANDLINE FLAGS + +A lot of these options can also be modified by the script using special input. +See the **rofi-script(5)** manpage for more information about this syntax. + +`-sep` *separator* + +Separator for `dmenu`. Example: To show a list of 'a' to 'e' with '|' as a +separator: + +```bash +echo "a|b|c|d|e" | rofi -sep '|' -dmenu +``` + +`-p` *prompt* + +Specify the prompt to show in `dmenu` mode. For example, select 'monkey', +a,b,c,d, or e. + +```bash +echo "a|b|c|d|e" | rofi -sep '|' -dmenu -p "monkey" +``` + +Default: *dmenu* + +`-l` *number of lines to show* + +Maximum number of lines the menu may show before scrolling. + +```bash +rofi -dmenu -l 25 +``` + +Default: *15* + +`-i` + +Makes `dmenu` searches case-insensitive + +`-a` *X* + +Active row, mark *X* as active. Where *X* is a comma-separated list of +python(1)-style indices and ranges, e.g. indices start at 0, -1 refers to the +last row with -2 preceding it, ranges are left-open and right-close, and so on. +You can specify: + +- A single row: '5' +- A range of (last 3) rows: '-3:' +- 4 rows starting from row 7: '7:11' (or in legacy notation: '7-10') +- A set of rows: '2,0,-9' +- Or any combination: '5,-3:,7:11,2,0,-9' + +`-u` *X* + +Urgent row, mark *X* as urgent. See `-a` option for details. + +`-only-match` + +Only return a selected item, do not allow custom entry. +This mode always returns an entry. It will not return if no matching entry is +selected. + +`-no-custom` + +Only return a selected item, do not allow custom entry. +This mode returns directly when no entries given. + +`-format` *format* + +Allows the output of dmenu to be customized (N is the total number of input +entries): + +- 's' selected string +- 'i' index (0 - (N-1)) +- 'd' index (1 - N) +- 'q' quote string +- 'p' Selected string stripped from Pango markup (Needs to be a valid string) +- 'f' filter string (user input) +- 'F' quoted filter string (user input) + +Default: 's' + +`-select` *string* + +Select first line that matches the given string + +`-mesg` *string* + +Add a message line below the filter entry box. Supports Pango markup. For more +information on supported markup, see +[here](https://docs.gtk.org/Pango/pango_markup.html) + +`-dump` + +Dump the filtered list to stdout and quit. +This can be used to get the list as **rofi** would filter it. +Use together with `-filter` command. + +`-input` *file* + +Reads from *file* instead of stdin. + +`-password` + +Hide the input text. This should not be considered secure! + +`-markup-rows` + +Tell **rofi** that DMenu input is Pango markup encoded, and should be rendered. +See [here](https://developer.gnome.org/pygtk/stable/pango-markup-language.html) +for details about Pango markup. + +`-multi-select` + +Allow multiple lines to be selected. Adds a small selection indicator to the +left of each entry. + +`-sync` + +Force **rofi** mode to first read all data from stdin before showing the +selection window. This is original dmenu behavior. + +Note: the default asynchronous mode will also be automatically disabled if used +with conflicting options, +such as `-dump`, `-only-match` or `-auto-select`. + +`-window-title` *title* + +Set name used for the window title. Will be shown as Rofi - *title* + +`-w` *windowid* + +Position **rofi** over the window with the given X11 window ID. + +`-keep-right` + +Set ellipsize mode to start. So, the end of the string is visible. + +`-display-columns` + +A comma seperated list of columns to show. + +`-display-column-separator` + +The column separator. This is a regex. + +*default*: '\t' + +`-ballot-selected-str` *string* + +When multi-select is enabled, prefix this string when element is selected. + +*default*: "☑ " + +`-ballot-unselected-str` *string* + +When multi-select is enabled, prefix this string when element is not selected. + +*default*: "☐ " + +`-ellipsize-mode` (start|middle|end) + +Set ellipsize mode on the listview. + +*default* "end" + +## PARSING ROW OPTIONS + +Extra options for individual rows can be also set. See the **rofi-script(5)** +manpage for details; the syntax and supported features are identical. + +## RETURN VALUE + +- **0**: Row has been selected accepted by user. +- **1**: User cancelled the selection. +- **10-28**: Row accepted by custom keybinding. + +## SEE ALSO + +rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-script(5), +rofi-theme-selector(1), ascii(7) + +## AUTHOR + +Qball Cow + +Rasmus Steinke + +Morgane Glidic + +Original code based on work by: Sean Pringle + +For a full list of authors, check the AUTHORS file. diff --git a/mkdocs/docs/1.7.8/rofi-keys.5.markdown b/mkdocs/docs/1.7.8/rofi-keys.5.markdown new file mode 100644 index 000000000..8aeefacc2 --- /dev/null +++ b/mkdocs/docs/1.7.8/rofi-keys.5.markdown @@ -0,0 +1,576 @@ +# rofi-keys(5) + +## NAME + +**rofi keys** - Rofi Key and Mouse bindings + +## DESCRIPTION + +**rofi** supports overriding of any of it key and mouse binding. + +## Setting binding + +Bindings can be done on the commandline (-{bindingname}): + +```bash +rofi -show run -kb-accept-entry 'Control+Shift+space' +``` + +or via the configuration file: + +```css +configuration { + kb-accept-entry: "Control+Shift+space"; +} +``` + +The key can be set by its name (see above) or its keycode: + +```css +configuration { + kb-accept-entry: "Control+Shift+[65]"; +} +``` + +An easy way to look up keycode is xev(1). + +Multiple keys can be specified for an action as a comma separated list: + +```css +configuration { + kb-accept-entry: "Control+Shift+space,Return"; +} +``` + +By Default **rofi** reacts on pressing, to act on the release of all keys +prepend the binding with `!`: + +```css +configuration { + kb-accept-entry: "!Control+Shift+space,Return"; +} +``` + +## Unsetting a binding + +To unset a binding, pass an empty string. + +```css +configuration { + kb-clear-line: ""; +} +``` + +## Keyboard Bindings + +`kb-primary-paste` + +Paste primary selection + +Default: Control+V,Shift+Insert + +`kb-secondary-paste` + +Paste clipboard + +Default: Control+v,Insert + +`kb-secondary-copy` + +Copy current selection to clipboard + +Default: Control+c + +`kb-clear-line` + +Clear input line + +Default: Control+w + +`kb-move-front` + +Beginning of line + +Default: Control+a + +`kb-move-end` + +End of line + +Default: Control+e + +`kb-move-word-back` + +Move back one word + +Default: Alt+b,Control+Left + +`kb-move-word-forward` + +Move forward one word + +Default: Alt+f,Control+Right + +`kb-move-char-back` + +Move back one char + +Default: Left,Control+b + +`kb-move-char-forward` + +Move forward one char + +Default: Right,Control+f + +`kb-remove-word-back` + +Delete previous word + +Default: Control+Alt+h,Control+BackSpace + +`kb-remove-word-forward` + +Delete next word + +Default: Control+Alt+d + +`kb-remove-char-forward` + +Delete next char + +Default: Delete,Control+d + +`kb-remove-char-back` + +Delete previous char + +Default: BackSpace,Shift+BackSpace,Control+h + +`kb-remove-to-eol` + +Delete till the end of line + +Default: Control+k + +`kb-remove-to-sol` + +Delete till the start of line + +Default: Control+u + +`kb-accept-entry` + +Accept entry + +Default: Control+j,Control+m,Return,KP\_Enter + +`kb-accept-custom` + +Use entered text as command (in ssh/run modes) + +Default: Control+Return + +`kb-accept-custom-alt` + +Use entered text as command (in ssh/run modes) + +Default: Control+Shift+Return + +`kb-accept-alt` + +Use alternate accept command. + +Default: Shift+Return + +`kb-delete-entry` + +Delete entry from history + +Default: Shift+Delete + +`kb-mode-next` + +Switch to the next mode. + +Default: Shift+Right,Control+Tab + +`kb-mode-previous` + +Switch to the previous mode. + +Default: Shift+Left,Control+ISO\_Left\_Tab + +`kb-mode-complete` + +Start completion for mode. + +Default: Control+l + +`kb-row-left` + +Go to the previous column + +Default: Control+Page\_Up + +`kb-row-right` + +Go to the next column + +Default: Control+Page\_Down + +`kb-row-up` + +Select previous entry + +Default: Up,Control+p + +`kb-row-down` + +Select next entry + +Default: Down,Control+n + +`kb-row-tab` + +Go to next row, if one left, accept it, if no left next mode. + +Default: + +`kb-element-next` + +Go to next row. + +Default: Tab + +`kb-element-prev` + +Go to previous row. + +Default: ISO\_Left\_Tab + +`kb-page-prev` + +Go to the previous page + +Default: Page\_Up + +`kb-page-next` + +Go to the next page + +Default: Page\_Down + +`kb-row-first` + +Go to the first entry + +Default: Home,KP\_Home + +`kb-row-last` + +Go to the last entry + +Default: End,KP\_End + +`kb-row-select` + +Set selected item as input text + +Default: Control+space + +`kb-screenshot` + +Take a screenshot of the rofi window + +Default: Alt+S + +`kb-ellipsize` + +Toggle between ellipsize modes for displayed data + +Default: Alt+period + +`kb-toggle-case-sensitivity` + +Toggle case sensitivity + +Default: grave,dead\_grave + +`kb-toggle-sort` + +Toggle filtered menu sort + +Default: Alt+grave + +`kb-cancel` + +Quit rofi + +Default: Escape,Control+g,Control+bracketleft + +`kb-custom-1` + +Custom keybinding 1 + +Default: Alt+1 + +`kb-custom-2` + +Custom keybinding 2 + +Default: Alt+2 + +`kb-custom-3` + +Custom keybinding 3 + +Default: Alt+3 + +`kb-custom-4` + +Custom keybinding 4 + +Default: Alt+4 + +`kb-custom-5` + +Custom Keybinding 5 + +Default: Alt+5 + +`kb-custom-6` + +Custom keybinding 6 + +Default: Alt+6 + +`kb-custom-7` + +Custom Keybinding 7 + +Default: Alt+7 + +`kb-custom-8` + +Custom keybinding 8 + +Default: Alt+8 + +`kb-custom-9` + +Custom keybinding 9 + +Default: Alt+9 + +`kb-custom-10` + +Custom keybinding 10 + +Default: Alt+0 + +`kb-custom-11` + +Custom keybinding 11 + +Default: Alt+exclam + +`kb-custom-12` + +Custom keybinding 12 + +Default: Alt+at + +`kb-custom-13` + +Custom keybinding 13 + +Default: Alt+numbersign + +`kb-custom-14` + +Custom keybinding 14 + +Default: Alt+dollar + +`kb-custom-15` + +Custom keybinding 15 + +Default: Alt+percent + +`kb-custom-16` + +Custom keybinding 16 + +Default: Alt+dead\_circumflex + +`kb-custom-17` + +Custom keybinding 17 + +Default: Alt+ampersand + +`kb-custom-18` + +Custom keybinding 18 + +Default: Alt+asterisk + +`kb-custom-19` + +Custom Keybinding 19 + +Default: Alt+parenleft + +`kb-select-1` + +Select row 1 + +Default: Super+1 + +`kb-select-2` + +Select row 2 + +Default: Super+2 + +`kb-select-3` + +Select row 3 + +Default: Super+3 + +`kb-select-4` + +Select row 4 + +Default: Super+4 + +`kb-select-5` + +Select row 5 + +Default: Super+5 + +`kb-select-6` + +Select row 6 + +Default: Super+6 + +`kb-select-7` + +Select row 7 + +Default: Super+7 + +`kb-select-8` + +Select row 8 + +Default: Super+8 + +`kb-select-9` + +Select row 9 + +Default: Super+9 + +`kb-select-10` + +Select row 10 + +Default: Super+0 + +`kb-entry-history-up` + +Go up in the entry history. + +Default: Control+Up + +`kb-entry-history-down` + +Go down in the entry history. + +Default: Control+Down + +## Mouse Bindings + +`ml-row-left` + +Go to the previous column + +Default: ScrollLeft + +`ml-row-right` + +Go to the next column + +Default: ScrollRight + +`ml-row-up` + +Select previous entry + +Default: ScrollUp + +`ml-row-down` + +Select next entry + +Default: ScrollDown + +`me-select-entry` + +Select hovered row + +Default: MousePrimary + +`me-accept-entry` + +Accept hovered row + +Default: MouseDPrimary + +`me-accept-custom` + +Accept hovered row with custom action + +Default: Control+MouseDPrimary + +## Mouse key bindings + +The following mouse buttons can be bound: + +* `Primary`: Primary (Left) mouse button click. +* `Secondary`: Secondary (Right) mouse button click. +* `Middle`: Middle mouse button click. +* `Forward`: The forward mouse button. +* `Back`: The back mouse button. +* `ExtraN`: The N'the mouse button. (Depending on mouse support). + +The Identifier is constructed as follow: + +`Mouse