mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-18 13:54:36 -05:00
277 lines
6 KiB
Groff
277 lines
6 KiB
Groff
.nh
|
|
.TH ROFI-SCRIPT 5 rofi-script
|
|
.SH NAME
|
|
.PP
|
|
\fBrofi script mode\fP - Rofi format for scriptable mode.
|
|
|
|
.SH DESCRIPTION
|
|
.PP
|
|
\fBrofi\fP supports modes that use simple scripts in the background to generate a
|
|
list and process the result from user actions. This provide a simple interface
|
|
to make simple extensions to rofi.
|
|
|
|
.SH USAGE
|
|
.PP
|
|
To specify a script mode, set a mode with the following syntax:
|
|
"{name}:{executable}"
|
|
|
|
.PP
|
|
For example:
|
|
|
|
.PP
|
|
.RS
|
|
|
|
.nf
|
|
rofi -show fb -modes "fb:file_browser.sh"
|
|
|
|
.fi
|
|
.RE
|
|
|
|
.PP
|
|
The name should be unique.
|
|
|
|
.SH API
|
|
.PP
|
|
Rofi calls the executable without arguments on startup. This should generate a
|
|
list of options, separated by a newline (\fB\fC\\n\fR) (This can be changed by the
|
|
script). If the user selects an option, rofi calls the executable with the text
|
|
of that option as the first argument. If the script returns no entries, rofi
|
|
quits.
|
|
|
|
.PP
|
|
A simple script would be:
|
|
|
|
.PP
|
|
.RS
|
|
|
|
.nf
|
|
#!/usr/bin/env bash
|
|
|
|
if [ x"$@" = x"quit" ]
|
|
then
|
|
exit 0
|
|
fi
|
|
echo "reload"
|
|
echo "quit"
|
|
|
|
|
|
.fi
|
|
.RE
|
|
|
|
.PP
|
|
This shows two entries, reload and quit. When the quit entry is selected, rofi
|
|
closes.
|
|
|
|
.SH Environment
|
|
.PP
|
|
Rofi sets the following environment variable when executing the script:
|
|
|
|
.SS \fB\fCROFI_RETV\fR
|
|
.PP
|
|
An integer number with the current state:
|
|
|
|
.RS
|
|
.IP \(bu 2
|
|
\fB0\fP: Initial call of script.
|
|
.IP \(bu 2
|
|
\fB1\fP: Selected an entry.
|
|
.IP \(bu 2
|
|
\fB2\fP: Selected a custom entry.
|
|
.IP \(bu 2
|
|
\fB10-28\fP: Custom keybinding 1-19 ( need to be explicitly enabled by script ).
|
|
|
|
.RE
|
|
|
|
.SS \fB\fCROFI_INFO\fR
|
|
.PP
|
|
Environment get set when selected entry get set with the property value of the
|
|
'info' row option, if set.
|
|
|
|
.SS \fB\fCROFI_DATA\fR
|
|
.PP
|
|
Environment get set when script sets \fB\fCdata\fR option in header.
|
|
|
|
.SH Passing mode options
|
|
.PP
|
|
Extra options, like setting the prompt, can be set by the script. Extra options
|
|
are lines that start with a NULL character (\fB\fC\\0\fR) followed by a key, separator
|
|
(\fB\fC\\x1f\fR) and value.
|
|
|
|
.PP
|
|
For example to set the prompt:
|
|
|
|
.PP
|
|
.RS
|
|
|
|
.nf
|
|
echo -en "\\0prompt\\x1fChange prompt\\n"
|
|
|
|
.fi
|
|
.RE
|
|
|
|
.PP
|
|
The following extra options exists:
|
|
|
|
.RS
|
|
.IP \(bu 2
|
|
\fBprompt\fP: Update the prompt text.
|
|
.IP \(bu 2
|
|
\fBmessage\fP: Update the message text.
|
|
.IP \(bu 2
|
|
\fBmarkup-rows\fP: If 'true' renders markup in the row.
|
|
.IP \(bu 2
|
|
\fBurgent\fP: Mark rows as urgent. (for syntax see the urgent option in
|
|
dmenu mode)
|
|
.IP \(bu 2
|
|
\fBactive\fP: Mark rows as active. (for syntax see the active option in
|
|
dmenu mode)
|
|
.IP \(bu 2
|
|
\fBdelim\fP: Set the delimiter for for next rows. Default is '\\n' and
|
|
this option should finish with this. Only call this on first call of script,
|
|
it is remembered for consecutive calls.
|
|
.IP \(bu 2
|
|
\fBno-custom\fP: If set to 'true'; only accept listed entries, ignore custom
|
|
input.
|
|
.IP \(bu 2
|
|
\fBuse-hot-keys\fP: If set to true, it enabled the Custom keybindings for
|
|
script. Warning this breaks the normal rofi flow.
|
|
.IP \(bu 2
|
|
\fBkeep-selection\fP: If set, the selection is not moved to the first entry,
|
|
but the current position is maintained. The filter is cleared.
|
|
.IP \(bu 2
|
|
\fBnew-selection\fP: If \fB\fCkeep-selection\fR is set, this allows you to override
|
|
the selected entry (absolute position).
|
|
.IP \(bu 2
|
|
\fBdata\fP: Passed data to the next execution of the script via
|
|
\fBROFI_DATA\fP\&.
|
|
.IP \(bu 2
|
|
\fBtheme\fP: Small theme snippet to f.e. change the background color of
|
|
a widget.
|
|
|
|
.RE
|
|
|
|
.PP
|
|
The \fBtheme\fP property cannot change the interface while running, it is only
|
|
usable for small changes in, for example background color, of widgets that get
|
|
updated during display like the row color of the listview.
|
|
|
|
.SH Parsing row options
|
|
.PP
|
|
Extra options for individual rows can be set. The extra option can be specified
|
|
following the same syntax as mode option, but following the entry.
|
|
|
|
.PP
|
|
For example:
|
|
|
|
.PP
|
|
.RS
|
|
|
|
.nf
|
|
echo -en "aap\\0icon\\x1ffolder\\n"
|
|
|
|
.fi
|
|
.RE
|
|
|
|
.PP
|
|
The following options are supported:
|
|
|
|
.RS
|
|
.IP \(bu 2
|
|
\fBicon\fP: Set the icon for that row.
|
|
.IP \(bu 2
|
|
\fBdisplay\fP: Replace the displayed string. (Original string will still be used for filtering)
|
|
.IP \(bu 2
|
|
\fBmeta\fP: Specify invisible search terms used for filtering.
|
|
.IP \(bu 2
|
|
\fBnonselectable\fP: If true the row cannot activated.
|
|
.IP \(bu 2
|
|
\fBinfo\fP: Info that, on selection, gets placed in the \fB\fCROFI_INFO\fR
|
|
environment variable. This entry does not get searched for filtering.
|
|
.IP \(bu 2
|
|
\fBurgent\fP: Set urgent flag on entry (true/false)
|
|
.IP \(bu 2
|
|
\fBactive\fP: Set active flag on entry (true/false)
|
|
|
|
.RE
|
|
|
|
.PP
|
|
multiple entries can be passed using the \fB\fC\\x1f\fR separator.
|
|
|
|
.PP
|
|
.RS
|
|
|
|
.nf
|
|
echo -en "aap\\0icon\\x1ffolder\\x1finfo\\x1ftest\\n"
|
|
|
|
.fi
|
|
.RE
|
|
|
|
.SH Executing external program
|
|
.PP
|
|
If you want to launch an external program from the script, you need to make
|
|
sure it is launched in the background. If not rofi will wait for its output (to
|
|
display).
|
|
|
|
.PP
|
|
In bash the best way to do this is using \fB\fCcoproc\fR\&.
|
|
|
|
.PP
|
|
.RS
|
|
|
|
.nf
|
|
coproc ( myApp > /dev/null 2>&1 )
|
|
|
|
.fi
|
|
.RE
|
|
|
|
.SH DASH shell
|
|
.PP
|
|
If you use the \fB\fCdash\fR shell for your script, take special care with how dash
|
|
handles escaped values for the separators. See issue #1201 on github.
|
|
|
|
.SH Script locations
|
|
.PP
|
|
To specify a script there are the following options:
|
|
|
|
.RS
|
|
.IP \(bu 2
|
|
Specify an absolute path to the script.
|
|
.IP \(bu 2
|
|
The script is executable and located in your $PATH
|
|
|
|
.RE
|
|
|
|
.PP
|
|
Scripts located in the following location are loaded on startup:
|
|
|
|
.RS
|
|
.IP \(bu 2
|
|
The script is in \fB\fC$XDG_CONFIG_PATH/rofi/scripts/\fR, this is usually
|
|
\fB\fC~/.config/rofi/scripts/\fR\&.
|
|
|
|
.RE
|
|
|
|
.SH SEE ALSO
|
|
.PP
|
|
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5),
|
|
rofi-theme-selector(1)
|
|
|
|
.SH AUTHOR
|
|
.PP
|
|
Qball Cow qball@gmpclient.org
|
|
\[la]mailto:qball@gmpclient.org\[ra]
|
|
|
|
.PP
|
|
Rasmus Steinke rasi@xssn.at
|
|
\[la]mailto:rasi@xssn.at\[ra]
|
|
|
|
.PP
|
|
Morgane Glidic sardemff7+rofi@sardemff7.net
|
|
\[la]mailto:sardemff7+rofi@sardemff7.net\[ra]
|
|
|
|
.PP
|
|
Original code based on work by: Sean Pringle sean.pringle@gmail.com
|
|
\[la]mailto:sean.pringle@gmail.com\[ra]
|
|
|
|
.PP
|
|
For a full list of authors, check the AUTHORS file.
|