1
0
Fork 0
mirror of https://github.com/davatorium/rofi.git synced 2025-02-03 15:34:54 -05:00
rofi/doc/rofi-actions.5.markdown
giomatfois62 bc67d8a8a6
[WIP] Execute custom user commands or scripts on a variety of rofi events (#2053)
* Implemented custom user command execution on the following menu events: entry selected, entry accepted, menu canceled, menu error, mode changed, screenshot taken

* fixed different signedness comparison warning and compare unfiltered entry index in selection_changed_user_callback

* track previously selected line in RofiViewState

* added documentation about custom scripts to run on certain actions

---------

Co-authored-by: Matteo <giomatfois62@yahoo.it>
2025-01-24 11:19:48 +01:00

2.6 KiB

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:

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:

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:

#!/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:

#!/bin/bash

killall espeak
echo "selected: $@" | espeak