diff --git a/.build.yml b/.build.yml index 4f0c2cf6..617a3668 100644 --- a/.build.yml +++ b/.build.yml @@ -2,6 +2,8 @@ image: ubuntu/lts packages: - meson - ninja-build + - autoconf + - automake - build-essential - libpango1.0-dev - libstartup-notification0-dev @@ -13,10 +15,14 @@ packages: - libxcb-xkb-dev - libxcb-xrm-dev - libxcb-cursor-dev + - libxcb-imdkit-dev + - libxcb-keysyms1 - libxkbcommon-dev - libxkbcommon-dev - libxkbcommon-x11-dev - libgdk-pixbuf2.0-dev + - ninja-build + - pandoc - check - flex - bison @@ -38,4 +44,4 @@ tasks: - dist: | ninja -C rofi/builddir dist artifacts: - - rofi/builddir/meson-dist/rofi-1.7.5-dev.tar.xz + - rofi/builddir/meson-dist/rofi-1.7.8-dev.tar.xz diff --git a/config/config.c b/config/config.c index f0e7ba44..7dfdafc5 100644 --- a/config/config.c +++ b/config/config.c @@ -128,6 +128,8 @@ Settings config = { .drun_match_fields = "name,generic,exec,categories,keywords", /** Only show entries in this category */ .drun_categories = NULL, + /** Exclude entries in this category */ + .drun_exclude_categories = NULL, /** Desktop entry show actions */ .drun_show_actions = FALSE, /** Desktop format display */ @@ -178,4 +180,6 @@ Settings config = { .xserver_i300_workaround = FALSE, /** What browser to use for completion */ .completer_mode = "filebrowser", + /** Whether to enable imdkit, see #2123 */ + .enable_imdkit = TRUE, }; diff --git a/configure.ac b/configure.ac index f5b9f4e0..e9206907 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([rofi], [1.7.8-dev], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions]) +AC_INIT([rofi], [1.7.9], [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/doc/rofi-theme.5.markdown b/doc/rofi-theme.5.markdown index c0381035..dc0626b4 100644 --- a/doc/rofi-theme.5.markdown +++ b/doc/rofi-theme.5.markdown @@ -132,18 +132,18 @@ element-text { └─────────────────────────────────────────────────────────────────────┘ ``` -We can also specify the color and width of the cursor. You could, for example, -create a crimson block cursor like this: +We can also customize the cursor's color, width, and choose to hide it when the input box is empty. You could, for example, create a crimson block cursor that only appears when text is entered, like this: ```css entry { cursor-color: rgb(220,20,60); cursor-width: 8px; + hide-cursor-on-empty: true; } ``` By default, the `cursor-color` will be the same as the `text-color`. The -`cursor-width` will always default to 2 pixels. +`cursor-width` will always default to 2 pixels and `hide-cursor-on-empty` is set to false. If you want to see the complete theme, including the modification you can run: @@ -964,6 +964,11 @@ The following properties are currently supported: - **border-radius**: padding Sets a radius on the corners of the borders. +- border-aa: boolean + Disable aliasing on the border line. Disabling fixes some drawing issues because of nvidia broken driver workaround. + +- border-disable-nvidia-workaround: boolean + Disable work-around for nvidia driver breaking. - **background-color**: color Background color @@ -1011,6 +1016,7 @@ The following properties are currently supported: - **handle-width**: distance - **handle-color**: color - **border-color**: color +- **handle-rounded-corners**: boolean for rounded scrollbar ### box @@ -1068,6 +1074,9 @@ The following properties are currently supported: - **cursor-color**: The color used to draw the cursor. +- **hide-cursor-on-empty**: Hides the cursor when the search field is empty. + (Boolean) + - **cursor-outline**: Enable a border (outline) around the cursor. (Boolean) diff --git a/doc/rofi.1.markdown b/doc/rofi.1.markdown index 60e84c07..75c24912 100644 --- a/doc/rofi.1.markdown +++ b/doc/rofi.1.markdown @@ -374,6 +374,10 @@ Tokenize the input. Only show desktop files that are present in the listed categories. +`-drun-exclude-categories` *category1*,*category2* + +Exclude desktop files that are present in the listed categories. + `-drun-match-fields` *field1*,*field2*,... When using `drun`, match only with the specified Desktop entry fields. diff --git a/include/helper.h b/include/helper.h index c16daeb0..06e9ef85 100644 --- a/include/helper.h +++ b/include/helper.h @@ -455,6 +455,19 @@ void helper_select_next_matching_mode(void); * Switch to the previous matching method. */ void helper_select_previous_matching_mode(void); + +/** + * Method to indicate fallthrough. This will help + * gcc/llvm warning/static code analysis. + */ +#if __has_attribute(__fallthrough__) +#define rofi_fallthrough __attribute__((__fallthrough__)) +#else +#define rofi_fallthrough \ + do { \ + } while (0) /* fallthrough */ +#endif + G_END_DECLS /**@} */ diff --git a/include/settings.h b/include/settings.h index 03c8eaba..4681e0ce 100644 --- a/include/settings.h +++ b/include/settings.h @@ -127,6 +127,8 @@ typedef struct { char *drun_match_fields; /** Only show entries in this category */ char *drun_categories; + /** Exclude entries in this category */ + char *drun_exclude_categories; /** Desktop entry show actions */ unsigned int drun_show_actions; /** Desktop format display */ @@ -215,6 +217,8 @@ typedef struct { gboolean xserver_i300_workaround; /** completer mode */ char *completer_mode; + /** Whether to enable imdkit, see #2123 */ + gboolean enable_imdkit; } Settings; /** Default number of lines in the list view */ diff --git a/include/widgets/widget-internal.h b/include/widgets/widget-internal.h index 8cc0a295..54870882 100644 --- a/include/widgets/widget-internal.h +++ b/include/widgets/widget-internal.h @@ -83,6 +83,12 @@ struct _widget { gboolean expand; /** Place widget at end of parent */ gboolean end; + + /** enable/disable border aliasing. */ + gboolean border_antialiasing; + /** enable/disable nvisia workaround. */ + gboolean border_disable_nvidia_workaround; + /** Parent widget */ struct _widget *parent; /** Internal */ diff --git a/include/xcb.h b/include/xcb.h index 946fba61..d77e241f 100644 --- a/include/xcb.h +++ b/include/xcb.h @@ -193,7 +193,7 @@ cairo_surface_t *x11_helper_get_screenshot_surface_window(xcb_window_t window, * * Blur the content of the surface with radius and deviation. */ -void cairo_image_surface_blur(cairo_surface_t *surface, double radius, +void cairo_image_surface_blur(cairo_surface_t *surface, int radius, double deviation); #ifdef XCB_IMDKIT diff --git a/mkdocs/docs/1.7.9/rofi-actions.5.markdown b/mkdocs/docs/1.7.9/rofi-actions.5.markdown new file mode 100644 index 00000000..01f42f01 --- /dev/null +++ b/mkdocs/docs/1.7.9/rofi-actions.5.markdown @@ -0,0 +1,89 @@ +# rofi-actions(5) + +## NAME + +**rofi-actions** - Custom commands following interaction with rofi menus + +## DESCRIPTION + +**rofi** allows to set custom commands or scripts to be executed when some actions are performed in the menu, such as changing selection, accepting an entry or canceling. + +This makes it possible for example to play sound effects or read aloud menu entries on selection. + +## USAGE + +Following is the list of rofi flags for specifying custom commands or scripts to execute on supported actions: + +`-on-selection-changed` *cmd* + +Command or script to run when the current selection changes. Selected text is forwarded to the command replacing the pattern *{entry}*. + +`-on-entry-accepted` *cmd* + +Command or script to run when a menu entry is accepted. Accepted text is forwarded to the command replacing the pattern *{entry}*. + +`-on-mode-changed` *cmd* + +Command or script to run when the menu mode (e.g. drun,window,ssh...) is changed. + +`-on-menu-canceled` *cmd* + +Command or script to run when the menu is canceled. + +`-on-menu-error` *cmd* + +Command or script to run when an error menu is shown (e.g. `rofi -e "error message"`). Error text is forwarded to the command replacing the pattern *{error}*. + +`-on-screenshot-taken` *cmd* + +Command or script to run when a screenshot of rofi is taken. Screenshot path is forwarded to the command replacing the pattern *{path}*. + +### Example usage + +Rofi command line: + +```bash +rofi -on-selection-changed "/path/to/select.sh {entry}" \ + -on-entry-accepted "/path/to/accept.sh {entry}" \ + -on-menu-canceled "/path/to/exit.sh" \ + -on-mode-changed "/path/to/change.sh" \ + -on-menu-error "/path/to/error.sh {error}" \ + -on-screenshot-taken "/path/to/camera.sh {path}" \ + -show drun +``` + +Rofi config file: + +```css +configuration { + on-selection-changed: "/path/to/select.sh {entry}"; + on-entry-accepted: "/path/to/accept.sh {entry}"; + on-menu-canceled: "/path/to/exit.sh"; + on-mode-changed: "/path/to/change.sh"; + on-menu-error: "/path/to/error.sh {error}"; + on-screenshot-taken: "/path/to/camera.sh {path}"; +} +``` + +### Play sound effects + +Here's an example bash script that plays a sound effect using `aplay` when the current selection is changed: + +```bash +#!/bin/bash + +coproc aplay -q $HOME/Music/selecting_an_item.wav +``` + +The use of `coproc` for playing sounds is suggested, otherwise the rofi process will wait for sounds to end playback before exiting. + +### Read aloud + +Here's an example bash script that reads aloud currently selected entries using `espeak`: + +```bash +#!/bin/bash + +killall espeak +echo "selected: $@" | espeak +``` diff --git a/mkdocs/docs/1.7.9/rofi-debugging.5.markdown b/mkdocs/docs/1.7.9/rofi-debugging.5.markdown new file mode 100644 index 00000000..4df15d52 --- /dev/null +++ b/mkdocs/docs/1.7.9/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.9/rofi-dmenu.5.markdown b/mkdocs/docs/1.7.9/rofi-dmenu.5.markdown new file mode 100644 index 00000000..0a272c17 --- /dev/null +++ b/mkdocs/docs/1.7.9/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://docs.gtk.org/Pango/pango_markup.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.9/rofi-keys.5.markdown b/mkdocs/docs/1.7.9/rofi-keys.5.markdown new file mode 100644 index 00000000..d664958a --- /dev/null +++ b/mkdocs/docs/1.7.9/rofi-keys.5.markdown @@ -0,0 +1,588 @@ +# 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 + +`kb-matcher-up` + +Select the next matcher. + +Default: Super+equal + +`kb-matcher-down` + +Select the previous matcher. + +Default: Super+minus + +## 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