summaryrefslogtreecommitdiffstats
path: root/doc/rofi-script.5.markdown
blob: dae1dc336855464c73c234668730480b6fa8311a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# ROFI-SCRIPT 5 rofi-script

## NAME

**rofi script mode** - Rofi format for scriptable modi. 


## DESCRIPTION

**rofi** 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.


## USAGE

To specify a script mode, set a mode with the following syntax: "{name}:{executable}"

For example:

```
rofi -show fb -modi "fb:file_browser.sh"
```

The name should be unique.

## API

Rofi calls the executable without arguments on startup.  This should generate a list of options, separated by a newline
(`\n`).
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.

A simple script would be:

```bash
#!/usr/bin/env bash

if [ x"$@" = x"quit" ]
then
    exit 0
fi
echo "reload"
echo "quit"

```

This shows two entries, reload and quit. When the quit entry is selected, rofi closes.

## Passing mode options

Extra options, like setting the prompt, can be set by the script.
Extra options are lines that start with a NULL character (`\0`) followed by a key, separator (`\x1f`) and value.

For example to set the prompt:

```bash
    echo -en "\0prompt\x1fChange prompt\n"
```

The following extra options exists:

 * **prompt**:      Update the prompt text.
 * **message**:     Update the message text.
 * **markup-rows**: If 'true' renders markup in the row.
 * **urgent**:      Mark rows as urgent. (for syntax see the urgent option in dmenu mode)
 * **active**:      Mark rows as active. (for syntax see the active option in dmenu mode)

## Parsing row options

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.

For example:

```bash
    echo -en "aap\0icon\x1ffolder\n"
```

The following options are supported:

 * **icon**: Set the icon for that row.
 * **meta**: Specify invisible search terms.
 * **nonselectable**: If true the row cannot activated.



## SEE ALSO

rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-theme-selector(1)

## AUTHOR

Qball Cow <qball@gmpclient.org>

Rasmus Steinke <rasi@xssn.at>

Quentin Glidic <sardemff7+rofi@sardemff7.net>


Original code based on work by: Sean Pringle <sean.pringle@gmail.com>

For a full list of authors, check the AUTHORS file.