1
0
Fork 0
mirror of https://github.com/davatorium/rofi.git synced 2024-11-25 13:55:34 -05:00

Proof read manpages (#645)

* Proof read rofi.1.markdown

Fix typos.
Fix American English consistency.
Fix "command line", "pop up" etc. - separate as nouns and hyphenated as compound adjectives.
Finish at line 169.

* Further proofreading

Same as before.
Additionally, fix one line of whitespace above and below a heading.
up to line 400

* More proof reads

up to line 592

* Finish proofreading

* Minor fixes

* Start proofreading rofi.theme.5.markdown

Fix American spelling.
Make sure **rofi** is bolded.
up to line 16

* Continue proofreading rofi-theme.5.markdown

up to line 452

* Replace latinisms with English phrases

e.g. > for example
i.e. > that is
They slow down the reader, and not everyone knows the correct English equivalent.

* Finish proofreading rofi-theme.5.markdown

* Fix dmenu official/unofficial website info

* Minor fixes

* Minor fixes
This commit is contained in:
Marcin Sedlak 2017-08-13 19:19:19 +02:00 committed by Dave Davenport
parent 96c70813ca
commit bb61970627
2 changed files with 246 additions and 261 deletions

View file

@ -8,10 +8,10 @@
The need for a new theme format was motivated by the fact that the way rofi handled widgets has changed. From a very The need for a new theme format was motivated by the fact that the way rofi handled widgets has changed. From a very
static drawing of lines and text to a nice structured form of packing widgets. This change made it possible to provide a static drawing of lines and text to a nice structured form of packing widgets. This change made it possible to provide a
more flexible theme framework. The old theme format and config file is not flexible enough to expose these options in a more flexible theme framework. The old theme format and config file are not flexible enough to expose these options in a
user-friendly way. Therefor a new file format has been created, replacing the old one. The new format is loosely based user-friendly way. Therefor, a new file format has been created, replacing the old one. The new format is loosely based
on [css](https://en.wikipedia.org/wiki/Cascading_Style_Sheets), a format widely known, which allows e.g. web developers on [CSS](https://en.wikipedia.org/wiki/Cascading_Style_Sheets), a widely known format, which allows web developers
to create their own rofi themes without the need to learn a new markup language. for example to create their own **rofi** themes without the need to learn a new markup language.
## FORMAT SPECIFICATION ## FORMAT SPECIFICATION
@ -23,7 +23,7 @@ preferred.
## Comments ## Comments
C and C++ file comments are support. C and C++ file comments are supported.
* Anything after `// ` and before a newline is considered a comment. * Anything after `// ` and before a newline is considered a comment.
* Everything between `/*` and `*/` is a comment. * Everything between `/*` and `*/` is a comment.
@ -37,7 +37,7 @@ The following is valid:
property: /* comment */ value; property: /* comment */ value;
``` ```
However this is not: However, this is not:
``` ```
prop/*comment*/erty: value; prop/*comment*/erty: value;
@ -96,8 +96,8 @@ parsed entry kept.
## Global properties section ## Global properties section
A theme can have one or more global properties sections (If there is more than one A theme can have one or more global properties sections. If there is more than one,
they will be merged) they will be merged.
The global properties section denotes the defaults for each element. The global properties section denotes the defaults for each element.
Each property of this section can be referenced with `@{identifier}` Each property of this section can be referenced with `@{identifier}`
@ -110,7 +110,7 @@ A global properties section is indicated with a `*` as element path.
A theme can have multiple element theme sections. A theme can have multiple element theme sections.
The element path can consist of multiple names separated by whitespace or dots. The element path can consist of multiple names separated by whitespace or dots.
Each element may contain any number of letters, numbers and `-`. Each element may contain any number of letters, numbers and `-`'s.
The first element in the element path should always start with a `#`. The first element in the element path should always start with a `#`.
This is a valid element name: This is a valid element name:
@ -171,24 +171,24 @@ The `identifier` names the specified property. Identifiers can consist of any
combination of numbers, letters and '-'. It must not contain any whitespace. combination of numbers, letters and '-'. It must not contain any whitespace.
The structure of the `value` defines the type of the property. The current The structure of the `value` defines the type of the property. The current
parser does not define or enforce a certain type of a particular `identifier`. parser does not define or enforce a certain type of a particular `identifier`.
When used, values with the wrong type that cannot be converted, are ignored. When used, values with the wrong type that cannot be converted are ignored.
The current theme format support different type: The current theme format supports different types:
* a string. * a string
* an integer number. * an integer number
* a fractional number. * a fractional number
* a boolean value. * a boolean value
* a color. * a color
* text style. * text style
* line style. * line style
* a distance. * a distance
* a padding. * a padding
* a border. * a border
* a position. * a position
* a reference. * a reference
* an orientation. * an orientation
* a list of keywords. * a list of keywords
Some of these types are a combination of other types. Some of these types are a combination of other types.
@ -196,7 +196,7 @@ Some of these types are a combination of other types.
* Format: `"[:print:]+"` * Format: `"[:print:]+"`
A string is always surrounded by quotes ('"'), between the quotes it can have any printable character. A string is always surrounded by double quotes (`"`). Between the quotes there can be any printable character.
For example: For example:
@ -204,7 +204,7 @@ For example:
font: "Awasome 12"; font: "Awasome 12";
``` ```
The string must be valid utf-8. The string must be valid UTF-8.
## Integer ## Integer
@ -260,15 +260,15 @@ dynamic: false;
* Format: `cmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE} ])` * Format: `cmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE} ])`
* Format: `{named-color} [ / {PERCENTAGE} ]` * Format: `{named-color} [ / {PERCENTAGE} ]`
The in CSS 4 proposed white-space format is also supported. The white-space format proposed in CSS4 is also supported.
The different values are: The different values are:
* `{HEX}` is a hexidecimal number ('0-9a-f' case insensitive). * `{HEX}` is a hexidecimal number ('0-9a-f' case insensitive).
* `{INTEGER}` value can be between 0 and 255 or 0-100 when representing percentage. * `{INTEGER}` value can be between 0 and 255 or 0-100 when representing percentage.
* `{ANGLE}` Angle on the color wheel, can be in `deg`, `rad`, `grad` or `turn`. When no unit is specified, degrees is assumed. * `{ANGLE}` is the angle on the color wheel, can be in `deg`, `rad`, `grad` or `turn`. When no unit is specified, degrees is assumed.
* `{PERCENTAGE}` Can be between 0-1.0, or 0%-100% * `{PERCENTAGE}` can be between 0-1.0, or 0%-100%
* `{named-color}` Is one of the following colors: * `{named-color}` is one of the following colors:
AliceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black, BlanchedAlmond, Blue, BlueViolet, Brown, AliceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black, BlanchedAlmond, Blue, BlueViolet, Brown,
BurlyWood, CadetBlue, Chartreuse, Chocolate, Coral, CornflowerBlue, Cornsilk, Crimson, Cyan, DarkBlue, DarkCyan, BurlyWood, CadetBlue, Chartreuse, Chocolate, Coral, CornflowerBlue, Cornsilk, Crimson, Cyan, DarkBlue, DarkCyan,
@ -298,7 +298,7 @@ text: SeaGreen;
* Format: `(bold|italic|underline|strikethrough|none)` * Format: `(bold|italic|underline|strikethrough|none)`
Text style indicates how the highlighted text is emphasised. None indicates no emphasis Text style indicates how the highlighted text is emphasized. `None` indicates that no emphasis
should be applied. should be applied.
* `bold`: make the text thicker then the surrounding text. * `bold`: make the text thicker then the surrounding text.
@ -307,7 +307,7 @@ should be applied.
* `strikethrough`: put a line through the highlighted text. * `strikethrough`: put a line through the highlighted text.
* `small caps`: emphasise the text using capitalization. * `small caps`: emphasise the text using capitalization.
> For some reason `small caps` is not working on some systems. > For some reason `small caps` does not work on some systems.
## Line style ## Line style
@ -315,8 +315,8 @@ should be applied.
Indicates how a line should be drawn. Indicates how a line should be drawn.
It currently supports: It currently supports:
* `dash`: A dashed line. Where the gap is the same width as the dash. * `dash`: a dashed line, where the gap is the same width as the dash
* `solid`: A solid line. * `solid`: a solid line
## Distance ## Distance
@ -337,7 +337,7 @@ For example:
``` ```
padding: 10%; padding: 10%;
``` ```
On a full-hd (1920x1080) monitor defines a padding of 192 pixels on the left On a full-HD (1920x1080) monitor, it defines a padding of 192 pixels on the left
and right side and 108 pixels on the top and bottom. and right side and 108 pixels on the top and bottom.
## Padding ## Padding
@ -348,7 +348,7 @@ and right side and 108 pixels on the top and bottom.
* Format: `{Distance} {Distance} {Distance}` * Format: `{Distance} {Distance} {Distance}`
* Format: `{Distance} {Distance} {Distance} {Distance}` * Format: `{Distance} {Distance} {Distance} {Distance}`
If no unit is set, pixels are used. If no unit is specified, pixels are used.
The different number of fields in the formats are parsed like: The different number of fields in the formats are parsed like:
@ -370,7 +370,7 @@ The different number of fields in the formats are parsed like:
* Format: `{Distance} {Line style} {Distance} {Line style} {Distance} {Line style}` * Format: `{Distance} {Line style} {Distance} {Line style} {Distance} {Line style}`
* Format: `{Distance} {Line style} {Distance} {Line style} {Distance} {Line style} {Distance} {Line style}` * Format: `{Distance} {Line style} {Distance} {Line style} {Distance} {Line style} {Distance} {Line style}`
Border are identical to padding, except that each distance field has a line Borders are identical to padding, except that each distance field has a line
style property. style property.
## Position ## Position
@ -392,9 +392,9 @@ south west | south | south east
* Format: `@{PROPERTY NAME}` * Format: `@{PROPERTY NAME}`
A reference can point to another reference. Currently the maximum number of redirects is 20. A reference can point to another reference. Currently, the maximum number of redirects is 20.
A property always refers to another property. It cannot be used for a subpart of the property. A property always refers to another property. It cannot be used for a subpart of the property.
e.g. this is not valid: For example, this is not valid:
``` ```
highlight: bold @pink; highlight: bold @pink;
@ -416,13 +416,13 @@ But this is:
* Format: `(horizontal|vertical)` * Format: `(horizontal|vertical)`
Specify an orientation of the widget. Specify the orientation of the widget.
## List of keywords ## List of keywords
* Format: `[ keyword, keyword ]` * Format: `[ keyword, keyword ]`
A list starts with a '[' and ends with a ']'. The entries in the list are comma separated. A list starts with a '[' and ends with a ']'. The entries in the list are comma-separated.
The `keyword` in the list refers to an widget name. The `keyword` in the list refers to an widget name.
## ELEMENTS PATHS ## ELEMENTS PATHS
@ -454,30 +454,30 @@ The difference between dots and spaces is purely cosmetic. These are all the sam
## Name ## Name
The current widgets exist in **rofi**: The current widgets available in **rofi**:
* `#window` * `#window`
* `#window.box`: The container holding the window. * `#window.box`: the container holding the window
* `#window.overlay`: The overlay widget. * `#window.overlay`: the overlay widget
* `#window.mainbox` * `#window.mainbox`
* `#window.mainbox.box`: The main vertical @box * `#window.mainbox.box`: the main vertical @box
* `#window.mainbox.inputbar` * `#window.mainbox.inputbar`
* `#window.mainbox.inputbar.box`: The horizontal @box packing the widgets. * `#window.mainbox.inputbar.box`: the horizontal @box packing the widgets
* `#window.mainbox.inputbar.case-indicator`: The case/sort indicator @textbox * `#window.mainbox.inputbar.case-indicator`: the case/sort indicator @textbox
* `#window.mainbox.inputbar.prompt`: The prompt @textbox * `#window.mainbox.inputbar.prompt`: the prompt @textbox
* `#window.mainbox.inputbar.entry`: The main entry @textbox * `#window.mainbox.inputbar.entry`: the main entry @textbox
* `#window.mainbox.listview` * `#window.mainbox.listview`
* `#window.mainbox.listview.box`: The listview container. * `#window.mainbox.listview.box`: the listview container
* `#window.mainbox.listview.scrollbar`: The listview scrollbar * `#window.mainbox.listview.scrollbar`: the listview scrollbar
* `#window.mainbox.listview.element`: The entries in the listview * `#window.mainbox.listview.element`: the entries in the listview
* `#window.mainbox.sidebar` * `#window.mainbox.sidebar`
* `#window.mainbox.sidebar.box`: The main horizontal @box packing the buttons. * `#window.mainbox.sidebar.box`: the main horizontal @box packing the buttons
* `#window.mainbox.sidebar.button`: The buttons @textbox for each mode. * `#window.mainbox.sidebar.button`: the buttons @textbox for each mode
* `#window.mainbox.message` * `#window.mainbox.message`
* `#window.mainbox.message.textbox`: The message textbox. * `#window.mainbox.message.textbox`: the message textbox
* `#window.mainbox.message.box`: The box containing the message. * `#window.mainbox.message.box`: the box containing the message
Note that these paths names match the default theme. Themes that provide a custom layout will have different Note that these path names match the default theme. Themes that provide a custom layout will have different
element paths. element paths.
@ -502,14 +502,14 @@ Currently only the entrybox and scrollbar have states:
`{visible modifier}.{state}` `{visible modifier}.{state}`
Where `visible modifier` can be: Where `visible modifier` can be:
* normal: No modification. * normal: no modification
* selected: The entry is selected/highlighted by user. * selected: the entry is selected/highlighted by user
* alternate: The entry is at an alternating row. (uneven row) * alternate: the entry is at an alternating row (uneven row)
Where `state` is: Where `state` is:
* normal: No modification. * normal: no modification
* urgent: This entry is marked urgent. * urgent: this entry is marked urgent
* active: This entry is marked active. * active: this entry is marked active
These can be mixed. These can be mixed.
@ -532,28 +532,28 @@ This allows the colors used for drawing the handle to be set independently.
## SUPPORTED PROPERTIES ## SUPPORTED PROPERTIES
The following properties are currently supports: The following properties are currently supported:
### all widgets: ### all widgets:
* **padding**: padding * **padding**: padding
Padding on the inside of the widget. Padding on the inside of the widget
* **margin**: padding * **margin**: padding
Margin on the outside of the widget. Margin on the outside of the widget
* **border**: border * **border**: border
Border around the widget (between padding and margin)/ Border around the widget (between padding and margin)/
* **border-radius**: padding * **border-radius**: padding
Sets a radius on the corners of the borders. Sets a radius on the corners of the borders.
* **background**: color * **background**: color
Background color. Background color
* **foreground**: color * **foreground**: color
Foreground color. Foreground color
* **index**: integer (This one does not inherits it value from the parent widget) * **index**: integer (This one does not inherit it value from the parent widget)
### window: ### window:
* **font**: string * **font**: string
The font used in the window. The font used in the window
* **transparency**: string * **transparency**: string
Indicating if transparency should be used and what type: Indicating if transparency should be used and what type:
@ -563,17 +563,16 @@ The following properties are currently supports:
**Path** to png file - Use an image. **Path** to png file - Use an image.
* **position**: position * **position**: position
The place of the anchor on the monitor. The place of the anchor on the monitor
* **anchor**: anchor * **anchor**: anchor
The anchor position on the window. The anchor position on the window
* **fullscreen**: boolean * **fullscreen**: boolean
Window is fullscreen. Window is fullscreen.
* **width**: distance * **width**: distance
The width of the window. The width of the window
* **x-offset**: distance * **x-offset**: distance
* **y-offset**: distance * **y-offset**: distance
The offset of the window to the anchor point. The offset of the window to the anchor point, allowing you to push the window left/right/up/down
Allowing you to push the window left/right/up/down.
### scrollbar: ### scrollbar:
@ -594,28 +593,28 @@ The following properties are currently supports:
* **background**: color * **background**: color
* **foreground**: color * **foreground**: color
* **font**: The font used by this textbox. (string) * **font**: the font used by this textbox (string)
* **str**: The string to display by this textbox. (string) * **str**: the string to display by this textbox (string)
* **vertical-align**: Vertical alignment of the text. (0 top, 1 bottom) * **vertical-align**: vertical alignment of the text (`0` top, `1` bottom)
* **horizontal-align**: Horizontal alignment of the text. (0 left, 1 right) * **horizontal-align**: horizontal alignment of the text (`0` left, `1` right)
* **text**: The text color to use (falls back to foreground if not set) * **text**: the text color to use (falls back to foreground if not set)
* **highlight**: Text Style {color} * **highlight**: text style {color}
Color is optional, multiple highlight styles can be added like: bold underline italic #000000; color is optional, multiple highlight styles can be added like: bold underline italic #000000;
* **width**: Override the desired width for the textbox. * **width**: override the desired width for the textbox
### listview: ### listview:
* **columns**: integer * **columns**: integer
Number of columns to show (atleast 1). Number of columns to show (at least 1)
* **fixed-height**: boolean * **fixed-height**: boolean
Always show `lines` rows, even if less elements are available. Always show `lines` rows, even if fewer elements are available.
* **dynamic**: boolean * **dynamic**: boolean
If the size should changed when filtering the list, or if it should keep the original height. `True` if the size should change when filtering the list, `False` if it should keep the original height.
* **scrollbar**: boolean * **scrollbar**: boolean
If the scrollbar should be enabled/disabled. If the scrollbar should be enabled/disabled.
* **scrollbar-width**: distance * **scrollbar-width**: distance
Width of the scrollbar Width of the scrollbar
* **cycle**: boolean * **cycle**: boolean
When navigating it should wrap around. When navigating, it should wrap around
* **spacing**: distance * **spacing**: distance
Spacing between the elements (both vertical and horizontal) Spacing between the elements (both vertical and horizontal)
* **lines**: integer * **lines**: integer
@ -626,15 +625,15 @@ The following properties are currently supports:
## Layout ## Layout
The new format allows the layout of the **rofi** window to be tweaked extensively. The new format allows the layout of the **rofi** window to be tweaked extensively.
For each widget the themer can specify padding, margin, border, font and more. For each widget, the themer can specify padding, margin, border, font, and more.
It even allows, as advanced feature, to pack widgets in a custom structure. It even allows, as an advanced feature, to pack widgets in a custom structure.
### Basic structure ### Basic structure
The whole view is build up out of boxes that pack other boxes or widgets. The whole view is made out of boxes that pack other boxes or widgets.
The box can be either vertical or horizontal. This is loosely inspired [GTK](http://gtk.org/). The box can be vertical or horizontal. This is loosely inspired by [GTK](http://gtk.org/).
The current layout of **rofi** is structured as follow: The current layout of **rofi** is structured as follows:
``` ```
|------------------------------------------------------------------------------------| |------------------------------------------------------------------------------------|
@ -667,13 +666,13 @@ The current layout of **rofi** is structured as follow:
``` ```
> ci is case-indicator > ci is the case-indicator
### Advanced layout ### Advanced layout
The layout of **rofi** can be tweaked by packing the 'fixed' widgets in a custom structure. The layout of **rofi** can be tweaked by packing the 'fixed' widgets in a custom structure.
The following widgets names are 'fixed' widgets with functionality: The following widgets are fixed, as they provide core **rofi** functionality:
* prompt * prompt
* entry * entry
@ -682,22 +681,23 @@ The following widgets names are 'fixed' widgets with functionality:
* listview * listview
* sidebar * sidebar
The following exists and automatically pack a subset of the widgets as in the above picture: The following keywords are defined and can be used to automatically pack a subset of the widgets.
These are used in the default theme as depicted in the figure above.
* mainbox * mainbox
Packs: `inputbar, message, listview, sidebar` Packs: `inputbar, message, listview, sidebar`
* inputbar * inputbar
Packs: `prompt,entry,case-indicator` Packs: `prompt,entry,case-indicator`
Any widget name starting with `textbox` is a textbox widget, all others are a Any widget name starting with `textbox` is a textbox widget, others are box widgets and can pack other widgets.
box widget and can pack other widgets. To specify children, set the children To specify children, set the `children`
property (this always happens on the `box` child, see example below): property (this always happens on the `box` child, see example below):
``` ```
children: [prompt,entry,case-indicator]; children: [prompt,entry,case-indicator];
``` ```
The theme needs to be update to match the hierarchy specified. The theme needs to be updated to match the hierarchy specified.
Below is an example of a theme emulating dmenu: Below is an example of a theme emulating dmenu:
@ -745,7 +745,7 @@ Below is an example of a theme emulating dmenu:
### Padding and margin ### Padding and margin
Just like css **rofi** uses the box model for each widget. Just like CSS, **rofi** uses the box model for each widget.
``` ```
|-------------------------------------------------------------------| |-------------------------------------------------------------------|
@ -770,17 +770,17 @@ Explanation of the different parts:
* Border - A border that goes around the padding and content. * Border - A border that goes around the padding and content.
The border use the foreground color of the widget. The border use the foreground color of the widget.
* Margin - Clears an area outside the border. * Margin - Clears an area outside the border.
The margin is transparent The margin is transparent.
The box model allows us to add a border around elements, and to define space between elements. The box model allows us to add a border around elements, and to define space between elements.
The size, on each side, of margin, border and padding can be set. The size of each margin, border, and padding can be set.
For the border a linestyle and radius can be set. For the border, a linestyle and radius can be set.
### Spacing ### Spacing
Widgets that can pack more then one child widget, currently box and listview, the `spacing` property exists. Widgets that can pack more then one child widget (currently box and listview) have the `spacing` property.
This determines the space between the packed widgets (both in horizontal as vertical direction). This property sets the distance between the packed widgets (both horizontally and vertically).
``` ```
|---------------------------------------| |---------------------------------------|
@ -796,7 +796,7 @@ This determines the space between the packed widgets (both in horizontal as vert
### Advanced box packing ### Advanced box packing
More dynamic spacing can be achieved by adding dummy widgets, for example to get one widget centered: More dynamic spacing can be achieved by adding dummy widgets, for example to make one widget centered:
``` ```
|--------------------------------------------| |--------------------------------------------|
@ -810,19 +810,19 @@ More dynamic spacing can be achieved by adding dummy widgets, for example to get
|--------------------------------------------| |--------------------------------------------|
``` ```
If both dummy widgets are set to expanding, `child` will be centered. Depending on the `expand` flag of child the If both dummy widgets are set to expand, `child` will be centered. Depending on the `expand` flag of child the
remaining space will be equally divided between both dummy and child widget (expand enabled), or both dummy widgets remaining space will be equally divided between both dummy and child widget (expand enabled), or both dummy widgets
(expand disabled). (expand disabled).
## DEBUGGING ## DEBUGGING
To get debug information from the parser run rofi like: To get debug information from the parser, run rofi like:
``` ```
G_MESSAGES_DEBUG=Parser rofi -show run G_MESSAGES_DEBUG=Parser rofi -show run
``` ```
Syntax errors are shown in a popup and printed out to commandline with the above command. Syntax errors are shown in a popup and printed out to command line with the above command.
To see the elements queried during running, run: To see the elements queried during running, run:
@ -830,13 +830,13 @@ To see the elements queried during running, run:
G_MESSAGES_DEBUG=Theme rofi -show run G_MESSAGES_DEBUG=Theme rofi -show run
``` ```
To test minor changes, part of the theme can be passed on the commandline, for example to set it fullscreen: To test minor changes, part of the theme can be passed on the command line, for example to set it to full-screen:
``` ```
rofi -theme-str '#window { fullscreen:true;}' -show run rofi -theme-str '#window { fullscreen:true;}' -show run
``` ```
To print the current theme run: To print the current theme, run:
``` ```
rofi -dump-theme rofi -dump-theme
@ -845,10 +845,9 @@ rofi -dump-theme
## EXAMPLES ## EXAMPLES
Several examples are installed together with **rofi**. These can be found in `{datadir}/rofi/themes/` where Several examples are installed together with **rofi**. These can be found in `{datadir}/rofi/themes/`, where
`{datadir}` is the install path of **rofi** data. When installed using a package manager this is usually: `/usr/share/`. `{datadir}` is the install path of **rofi** data. When installed using a package manager, this is usually: `/usr/share/`.
## SEE ALSO ## SEE ALSO
rofi(1) rofi(1)

View file

@ -11,18 +11,18 @@
## DESCRIPTION ## DESCRIPTION
**rofi** is an X11 popup window switcher, run dialog, dmenu replacement and more. It focuses on **rofi** is an X11 pop-up window switcher, run dialog, dmenu replacement, and more. It focuses on
being fast to use and have minimal distraction. It supports keyboard and mouse navigation, type to being fast to use and have minimal distraction. It supports keyboard and mouse navigation, type to
filter, tokenized search and more. filter, tokenized search and more.
## USAGE ## USAGE
**rofi** main functionality is to assist in your workflow, allowing you to quickly (with a few keystrokes) switch **rofi**'s main functionality is to assist in your workflow, allowing you to quickly switch
between windows, start applications or log into a remote machine via ssh. There are different modi for different type of between windows, start applications or log into a remote machine via ssh. There are different *modi* for different types of
actions. actions.
**rofi** can also function as (drop in) replacement for **dmenu(1)**. **rofi** can also function as (drop-in) replacement for **dmenu(1)**.
### Running rofi ### Running rofi
@ -31,21 +31,19 @@ To show the run dialog:
rofi -show run rofi -show run
### Emulating dmenu ### Emulating dmenu
**rofi** can emulate **dmenu(1)** (a dynamic menu for X) when launched with the `-dmenu` flag. **rofi** can emulate **dmenu(1)** (a dynamic menu for X) when launched with the `-dmenu` flag.
The "official" website for `dmenu` can be found [here](http://tools.suckless.org/dmenu/). 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 to many different flavours of dmenu.
The idea is the basic usage commandline flags are obeyed, theme related flags are not.
Besides this, **rofi** offers some extended features (like multi-select, highlighting, message bar, extra key-bindings).
**rofi** does not aim to be 100% compatible with dmenu. There are simply too many different 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).
### Display Error message ### Display Error message
**rofi** error dialog can also be called from the commandline. **rofi** error dialog can also be called from the command line.
rofi -e "my message" rofi -e "my message"
@ -55,7 +53,7 @@ Markup support can be enabled, see CONFIGURATION options.
There are currently three methods of setting configuration options (evaluated in order below): There are currently three methods of setting configuration options (evaluated in order below):
* System configuration file (f.e. /etc/rofi.conf). * System configuration file (for example `/etc/rofi.conf`).
* Xresources: A method of storing key values in the Xserver. See * Xresources: A method of storing key values in the Xserver. See
[here](https://en.wikipedia.org/wiki/X_resources) for more information. [here](https://en.wikipedia.org/wiki/X_resources) for more information.
* Rasi theme file: The new *theme* format can be used to set configuration values. * Rasi theme file: The new *theme* format can be used to set configuration values.
@ -69,24 +67,23 @@ There are currently three methods of setting configuration options (evaluated in
**NOTE**: In version 1.4.0 we support configuration in a new format, a config for this can be generated by: `rofi **NOTE**: In version 1.4.0 we support configuration in a new format, a config for this can be generated by: `rofi
-dump-config` -dump-config`
The Xresources file expects options starting with `rofi.` followed by it's name. An Example to set the number of lines: The Xresources file expects options starting with `rofi.` followed by its name. An example to set the number of lines:
rofi.lines: 10 rofi.lines: 10
Command line options override settings from Xresources file. The same option set as argument: Command line options override settings from Xresources file. The same option set as argument — prefixed with a '-':
prefixed with a '-':
rofi -lines 10 rofi -lines 10
To get a list of available options, formatted as Xresources entries run: To get a list of available options formatted as Xresources entries, run:
rofi -dump-xresources rofi -dump-xresources
The configuration system supports the following types: The configuration system supports the following types:
* String * string
* Integer (signed and unsigned) * integer (signed and unsigned)
* Char * char
* Boolean * Boolean
Boolean options have a non-default command-line syntax. Example to enable option X: Boolean options have a non-default command-line syntax. Example to enable option X:
@ -109,7 +106,7 @@ These include dynamic (run-time generated) options.
`-dump-xresources` `-dump-xresources`
Dump the current active configuration in Xresources format to the command-line. Dump the current active configuration in Xresources format to the command-line.
This does not validate all passed values (e.g. colors). This does not validate all passed values (for example, colors).
`-threads` *num* `-threads` *num*
@ -123,7 +120,7 @@ Specify the number of threads **rofi** should use:
Run **rofi** in dmenu mode. This allows for interactive scripts. Run **rofi** in dmenu mode. This allows for interactive scripts.
In `dmenu` mode, **rofi** reads from STDIN, and output to STDOUT. In `dmenu` mode, **rofi** reads from STDIN, and output to STDOUT.
A simple example, displaying 3 pre-defined options: A simple example, displaying three pre-defined options:
echo -e "Option #1\nOption #2\nOption #3" | rofi -dmenu echo -e "Option #1\nOption #2\nOption #3" | rofi -dmenu
@ -134,8 +131,8 @@ Or get the options from a script:
`-show` *mode* `-show` *mode*
Open **rofi** in a certain mode. Available modes are `window`, `run`, `drun`, `ssh`, `combi`. Open **rofi** in a certain mode. Available modes are `window`, `run`, `drun`, `ssh`, `combi`.
The special argument `keys` can be used to open a searchable list of supported keybindings The special argument `keys` can be used to open a searchable list of supported key bindings
(see *KEYBINDINGS*) (see *KEY BINDINGS*)
To show the run-dialog: To show the run-dialog:
@ -143,9 +140,9 @@ To show the run-dialog:
`-modi` *mode1,mode1* `-modi` *mode1,mode1*
Specify a ordered, comma separated list of modes to enable. Specify an ordered, comma-separated list of modes to enable.
Enabled modes can be changed at runtime. Default key is Ctrl+Tab. Enabled modes can be changed at runtime. Default key is Ctrl+Tab.
If no modes are specified all modes will be enabled. If no modes are specified, all modes will be enabled.
To only show the run and ssh launcher: To only show the run and ssh launcher:
rofi -modi "run,ssh" -show run rofi -modi "run,ssh" -show run
@ -168,7 +165,7 @@ This option can be changed at run-time using the `-kb-toggle-case-sensitivity` k
`-cycle` `-cycle`
Cycle through the results list. Default is 'true'. Cycle thru the result list. Default is 'true'.
`-filter` *filter* `-filter` *filter*
@ -176,7 +173,7 @@ Filter the list by setting text in input bar to *filter*
`-config` *filename* `-config` *filename*
Load alternative configuration file. Load an alternative configuration file.
`-scroll-method` *method* `-scroll-method` *method*
@ -196,8 +193,7 @@ Disable plugin loading.
`-plugin-path` *directory* `-plugin-path` *directory*
Specify the directory where *rofi* should look for plugins. Specify the directory where **rofi** should look for plugins.
### Matching ### Matching
@ -206,10 +202,10 @@ Specify the directory where *rofi* should look for plugins.
Specify the matching algorithm used. Specify the matching algorithm used.
Current the following methods are supported. Current the following methods are supported.
* **normal**: Match the int string. * **normal**: match the int string
* **regex**: Match a regex input. * **regex**: match a regex input
* **glob**: Match a glob pattern. * **glob**: match a glob pattern
* **fuzzy**: Do a fuzzy match. * **fuzzy**: do a fuzzy match
Default: *normal* Default: *normal*
@ -222,7 +218,7 @@ Tokenize the input.
### Layout ### Layout
Most of the following options are **deprecated** and should not be used. Please use the new theme format to customize Most of the following options are **deprecated** and should not be used. Please use the new theme format to customize
rofi. More information about the new format can be found in the **rofi-theme(5)** manpage. **rofi**. More information about the new format can be found in the **rofi-theme(5)** manpage.
`-lines` `-lines`
@ -246,15 +242,15 @@ Set width of menu. `[value]` is specified in percentage.
rofi -width 60 rofi -width 60
If `[value]` is larger then 100, size is set in pixels. Example to span a full hd monitor: If `[value]` is larger then 100, size is set in pixels. Example to span a full-HD monitor:
rofi -width 1920 rofi -width 1920
If `[value]` is negative, it tries to estimates a character width. To show 30 characters on a row: If `[value]` is negative, it tries to estimates a character width. To show 30 characters in a row:
rofi -width -30 rofi -width -30
Character width is a rough estimation, and might not be correct, but should work for most monospaced fonts. Character width is a rough estimate, and might not be correct, but should work for most monospaced fonts.
Default: *50* Default: *50*
@ -280,13 +276,13 @@ Default: *5*
`-fullscreen` `-fullscreen`
Use the full screen height and width. Use the full-screen height and width.
`-sidebar-mode` `-sidebar-mode`
Open in sidebar-mode. In this mode a list of all enabled modes is shown at the bottom. Open in sidebar-mode. In this mode a list of all enabled modes is shown at the bottom.
(See `-modi` option) (See `-modi` option)
To show sidebar use: To show sidebar, use:
rofi -show run -sidebar-mode -lines 0 rofi -show run -sidebar-mode -lines 0
@ -303,19 +299,19 @@ When one entry is left, automatically select it.
`-monitor` *name* `-monitor` *name*
Select monitor to display **rofi** on. Select monitor to display **rofi** on.
As input it accepts: *primary* (if primary output is set), the *xrandr* output name or integer number (in order of It accepts as input: *primary* (if primary output is set), the *xrandr* output name, or integer number (in order of
detection). Negative numbers are handled differently: detection). Negative numbers are handled differently:
* **-1**: the currently focused monitor. * **-1**: the currently focused monitor.
* **-2**: the currently focused window (i.e. rofi will be displayed on top of the focused window). * **-2**: the currently focused window (that is, **rofi** will be displayed on top of the focused window).
* **-3**: Position at mouse (overrides the location setting to get normal context menu * **-3**: Position at mouse (overrides the location setting to get normal context menu
behaviour.) behavior.)
* **-4**: the monitor with the focused window. * **-4**: the monitor with the focused window.
* **-5**: the monitor that shows the mouse pointer. * **-5**: the monitor that shows the mouse pointer.
Default: *-5* Default: *-5*
See `rofi -h` output for the detected monitors, their position and size. See `rofi -h` output for the detected monitors, their position, and size.
`-theme` *filename* `-theme` *filename*
@ -324,27 +320,25 @@ Path to the new theme file format. This overrides the old theme settings.
`-theme-str` *string* `-theme-str` *string*
Allow theme parts to be specified on the commandline as an override. Allow theme parts to be specified on the command line as an override.
For example For example:
rofi -theme-str '#window { fullscreen: true; }' rofi -theme-str '#window { fullscreen: true; }'
This option can be specified multiple times. This option can be specified multiple times.
`-dpi` *number* `-dpi` *number*
Override the default DPI setting. Override the default DPI setting.
If set to `0` it tries to auto-detect based on X11 screen size. (Similar to i3 and GTK) If set to `0`, it tries to auto-detect based on X11 screen size (similar to i3 and GTK).
If set to `1` it tries to auto-detect based on monitor (rofi is displayed on) size. (Similar to latest QT5) If set to `1`, it tries to auto-detect based on the size of the monitor that rofi is displayed on (similar to latest Qt 5).
### PATTERN setting ### PATTERN setting
`-terminal` `-terminal`
Specify what terminal to start. Specify which terminal to start.
rofi -terminal xterm rofi -terminal xterm
@ -358,7 +352,6 @@ Override the used ssh client.
Pattern: *{ssh-client}* Pattern: *{ssh-client}*
Default: *ssh* Default: *ssh*
### SSH settings ### SSH settings
`-ssh-command` *cmd* `-ssh-command` *cmd*
@ -400,9 +393,9 @@ Default: *{terminal} -e {cmd}*
`-run-list-command` *cmd* `-run-list-command` *cmd*
If set, use an external tool to generate list of executable commands. Uses 'run-command' If set, use an external tool to generate list of executable commands. Uses `run-command`.
Default: *""* Default: *{cmd}*
### Window switcher settings ### Window switcher settings
@ -414,13 +407,13 @@ Format what is being displayed for windows.
*field*: *field*:
* **w**: Desktop name * **w**: desktop name
* **t**: Title of window * **t**: title of window
* **n**: Name * **n**: name
* **r**: Role * **r**: role
* **c**: Class * **c**: class
*len*: maximum field length (0 for auto-size). If length negative and window *width* is negative field length is *width - len*. *len*: maximum field length (0 for auto-size). If length and window *width* are negative, field length is *width - len*.
if length is positive, the entry will be truncated or padded to fill that length. if length is positive, the entry will be truncated or padded to fill that length.
@ -428,7 +421,7 @@ default: {w} {c} {t}
`-window-command` *cmd* `-window-command` *cmd*
Set command to execute on selected window for custom action. Set command to execute on selected window for a custom action.
See *PATTERN*. See *PATTERN*.
Default: *"xkill -id {window}"* Default: *"xkill -id {window}"*
@ -439,12 +432,12 @@ Default: *"xkill -id {window}"*
The modi to combine in combi mode. The modi to combine in combi mode.
For syntax to see `-modi`. For syntax to see `-modi`.
To get one merge view, of window,run,ssh: To get one merge view, of `window`,`run`, and `ssh`:
rofi -show combi -combi-modi "window,run,ssh" -modi combi rofi -show combi -combi-modi "window,run,ssh" -modi combi
Notes: The I3 Window manager does not like commas in the command when specifying an exec command. Notes: The I3 Window manager does not like commas in the command when specifying an exec command.
For that case '#' can be used as an separator. For that case '#' can be used as a separator.
### History and Sorting ### History and Sorting
@ -456,20 +449,20 @@ Disable history
`-levenshtein-sort` to enable `-levenshtein-sort` to enable
`-no-levenshtein-sort` to disable `-no-levenshtein-sort` to disable
When searching sort the result based on levenshtein distance. When searching, sort the result based on levenshtein distance.
This setting can be changed at runtime, see `-kb-toggle-sort`. This setting can be changed at runtime (see `-kb-toggle-sort`).
### Dmenu specific ### Dmenu specific
`-sep` *separator* `-sep` *separator*
Separator for dmenu. Example: To show list 'a' to 'e' with '|' as separator: Separator for dmenu. Example: To show a list of 'a' to 'e' with '|' as a separator:
echo "a|b|c|d|e" | rofi -sep '|' -dmenu echo "a|b|c|d|e" | rofi -sep '|' -dmenu
`-p` *prompt* `-p` *prompt*
Specify the prompt to show in dmenu mode. E.g. select monkey a,b,c,d or e. Specify the prompt to show in dmenu mode. For example, select 'monkey', a,b,c,d, or e.
echo "a|b|c|d|e" | rofi -sep '|' -dmenu -p "monkey:" echo "a|b|c|d|e" | rofi -sep '|' -dmenu -p "monkey:"
@ -495,7 +488,7 @@ Makes dmenu searches case-insensitive
`-a` *X* `-a` *X*
Active row, mark row X as active. (starting at 0) Active row, mark row X as active (starting at 0).
You can specify single element: -a 3 You can specify single element: -a 3
A range: -a 3-8 A range: -a 3-8
or a set of rows: -a 0,2 or a set of rows: -a 0,2
@ -503,7 +496,7 @@ or any combination: -a 0,2-3,9
`-u` *X* `-u` *X*
Urgent row, mark row X as urgent. (starting at 0) Urgent row, mark row X as urgent (starting at 0).
You can specify single element: -u 3 You can specify single element: -u 3
A range: -u 3-8 A range: -u 3-8
or a set of rows: -u 0,2 or a set of rows: -u 0,2
@ -521,14 +514,14 @@ This mode returns directly when no entries given.
`-format` *format* `-format` *format*
Allows the output of dmenu to be customized (N is total number of input entries): Allows the output of dmenu to be customized (N is the total number of input entries):
* 's' selected string. * 's' selected string
* 'i' index (0 - (N-1)). * 'i' index (0 - (N-1))
* 'd' index (1 - N). * 'd' index (1 - N)
* 'q' quote string. * 'q' quote string
* 'f' filter string (user input). * 'f' filter string (user input)
* 'F' quoted filter string (user input). * 'F' quoted filter string (user input)
Default: 's' Default: 's'
@ -561,7 +554,7 @@ Hide the input text. This should not be considered secure!
`-markup-rows` `-markup-rows`
Tell **rofi** that DMenu input is pango markup encoded and should be rendered. Tell **rofi** that DMenu input is pango markup encoded, and should be rendered.
See [here](https://developer.gnome.org/pango/stable/PangoMarkupFormat.html) for details about pango markup. See [here](https://developer.gnome.org/pango/stable/PangoMarkupFormat.html) for details about pango markup.
@ -571,14 +564,14 @@ Allow multiple lines to be selected. Adds a small selection indicator to the lef
`-sync` `-sync`
Force rofi mode to first read all data from stdin before showing selection window. This is how original dmenu behaviour. 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 Note: the default asynchronous mode will also be automatically disabled if used with conflicting options,
such as `-dump`, `-only-match` or `-auto-select` such as `-dump`, `-only-match` or `-auto-select`.
`-async-pre-read` *number* `-async-pre-read` *number*
Reads the first 25 entries blocking. Then switches to async mode. This makes it feel more 'snappy'. Reads the first 25 entries blocking, then switches to async mode. This makes it feel more 'snappy'.
*default*: 25 *default*: 25
@ -586,15 +579,14 @@ Reads the first 25 entries blocking. Then switches to async mode. This makes it
`-e` *message* `-e` *message*
Popup a message dialog (used internally for showing errors) with *message*. Pops up a message dialog (used internally for showing errors) with *message*.
Message can be multi-line. Message can be multi-line.
### Other ### Other
`-pid` *path* `-pid` *path*
Make **rofi** create a pid file and check this on startup. Avoiding multiple copies running Make **rofi** create a pid file and check this on startup. The pid file prevents multiple **rofi** instances from running simultaneously. This is useful when running **rofi** from a key-binding daemon.
simultaneously. This is useful when running **rofi** from a keybinding daemon.
`-fake-transparency` `-fake-transparency`
@ -618,7 +610,6 @@ Default: *enabled*
### Debug ### Debug
`-no-config` `-no-config`
Disable parsing of configuration. This runs rofi in *stock* mode. Disable parsing of configuration. This runs rofi in *stock* mode.
@ -627,35 +618,34 @@ Disable parsing of configuration. This runs rofi in *stock* mode.
Disables the loading of plugins. Disables the loading of plugins.
To get a trace with (lots of) debug information set the following environment variable when executing **rofi**: To get a trace with (lots of) debug information, set the following environment variable when executing **rofi**:
``` ```
G_MESSAGES_DEBUG=all G_MESSAGES_DEBUG=all
``` ```
The trace can be filtered by only outputting the relevant domains, f.e.: The trace can be filtered by only outputting the relevant domains, for example:
``` ```
G_MESSAGES_DEBUG=Dialogs.DRun G_MESSAGES_DEBUG=Dialogs.DRun
``` ```
For more information on debugging see the [wiki](https://github.com/DaveDavenport/rofi/wiki/Debugging%20Rofi) For more information on debugging, see the [wiki](https://github.com/DaveDavenport/rofi/wiki/Debugging%20Rofi)
## PATTERN ## PATTERN
To launch commands (e.g. when using the ssh launcher) the user can enter the used command-line, To launch commands (for example, when using the ssh launcher), the user can enter the used command-line. The following keys can be used that will be replaced at runtime:
the following keys can be used that will be replaced at runtime:
* `{host}`: The host to connect to. * `{host}`: the host to connect to
* `{terminal}`: The configured terminal (See -terminal-emulator) * `{terminal}`: the configured terminal (see -terminal-emulator)
* `{ssh-client}`: The configured ssh client (See -ssh-client) * `{ssh-client}`: the configured ssh client (see -ssh-client)
* `{cmd}`: The command to execute. * `{cmd}`: the command to execute
* `{window}`: The window id of the selected window. (In `window-command`) * `{window}`: the window ID of the selected window (in `window-command`)
## DMENU REPLACEMENT ## DMENU REPLACEMENT
If `argv[0]` (calling command) is dmenu, **rofi** will start in dmenu mode. 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`. This way it can be used as a drop-in replacement for dmenu. Just copy or symlink **rofi** to dmenu in `$PATH`.
ln -s /usr/bin/rofi /usr/bin/dmenu ln -s /usr/bin/rofi /usr/bin/dmenu
@ -665,22 +655,22 @@ The theme format below describes the old (pre version 1.4) theme format. Please
manual. manual.
The theme setup allows you to specify colors per state, similar to **i3** The theme setup allows you to specify colors per state, similar to **i3**
Currently 3 states exists: Currently 3 states exist:
* **normal** Normal row. * **normal**: normal row
* **urgent** Highlighted row (urgent) * **urgent**: highlighted row (urgent)
* **active** Highlighted row (active) * **active**: highlighted row (active)
For each state the following 5 colors must be set: For each state, the following 5 colors must be set:
* **bg** Background color row * **bg**: background color row
* **fg** Text color * **fg**: text color
* **bgalt** Background color alternating row * **bgalt**: background color alternating row
* **hlfg** Foreground color selected row * **hlfg**: foreground color selected row
* **hlbg** Background color selected row * **hlbg**: background color selected row
The window background and border color should be specified separate. The key `color-window` contains The window background and border color should be specified separately. The key `color-window` contains
a pair `background,border,separator`. a tuple `background,border,separator`.
An example for `Xresources` file: An example for `Xresources` file:
! State: 'bg', 'fg', 'bgalt', 'hlbg', 'hlfg' ! State: 'bg', 'fg', 'bgalt', 'hlbg', 'hlfg'
@ -697,35 +687,33 @@ Same settings can also be specified on command-line:
## COLORS ## COLORS
RGB colors can be specified by either its X11 name, or hexadecimal notation. RGB colors can be specified by either their X11 name or hexadecimal notation.
For example: For example:
white white
Or Or:
#FFFFFF #FFFFFF
ARGB colors are also support, these can be used to create a transparent window if: 1. Your Xserver supports TrueColor, 2. ARGB colors are also supported. These can be used to create a transparent window if (1) your Xserver supports TrueColor, and (2) you are running a composite manager.
You are running a composite manager. For example:
argb:FF444444 argb:FF444444
Or Or:
#FF444444 #FF444444
The first two fields specify the alpha level. This determines the amount of transparency. The first two fields specify the alpha level. This determines the amount of transparency (00 everything, FF nothing). The other fields represent the actual color, in hex.
(00 everything, FF nothing). The other fields represent the actual color, in hex.
Within **rofi** transparency can be used, e.g. if the selected background color is 50% transparent, the background color Transparency can be used within **rofi**, for example if the selected background color is 50% transparent, the background color
of the window will be visible through it. of the window will be visible thru it.
## KEYBINDINGS ## KEY BINDINGS
**rofi** has the following key-bindings: **rofi** has the following key bindings:
* `Ctrl-v, Insert`: Paste clipboard * `Ctrl-v, Insert`: Paste from clipboard
* `Ctrl-Shift-v, Shift-Insert`: Paste primary selection * `Ctrl-Shift-v, Shift-Insert`: Paste primary selection
* `Ctrl-u`: Clear the line * `Ctrl-u`: Clear the line
* `Ctrl-a`: Beginning of line * `Ctrl-a`: Beginning of line
@ -741,13 +729,13 @@ of the window will be visible through it.
* `Ctrl-j,Ctrl-m,Enter`: Accept entry * `Ctrl-j,Ctrl-m,Enter`: Accept entry
* `Ctrl-n,Down`: Select next entry * `Ctrl-n,Down`: Select next entry
* `Ctrl-p,Up`: Select previous entry * `Ctrl-p,Up`: Select previous entry
* `Page Up`: Go to the previous page * `Page Up`: Go to previous page
* `Page Down`: Go to the next page * `Page Down`: Go to next page
* `Ctrl-Page Up`: Go to the previous column * `Ctrl-Page Up`: Go to previous column
* `Ctrl-Page Down`: Go to the next column * `Ctrl-Page Down`: Go to next column
* `Ctrl-Enter`: Use entered text as command (in ssh/run modi) * `Ctrl-Enter`: Use entered text as a command (in `ssh/run modi`)
* `Shift-Enter`: Launch the application in a terminal (in run mode) * `Shift-Enter`: Launch the application in a terminal (in run mode)
* `Shift-Enter`: Return the selected entry and move to the next item while keeping Rofi open. (in dmenu) * `Shift-Enter`: Return the selected entry and move to the next item while keeping **rofi** open. (in dmenu)
* `Shift-Right`: Switch to the next modi. The list can be customized with the `-switchers` argument. * `Shift-Right`: Switch to the next modi. The list can be customized with the `-switchers` argument.
* `Shift-Left`: Switch to the previous modi. The list can be customized with the `-switchers` argument. * `Shift-Left`: Switch to the previous modi. The list can be customized with the `-switchers` argument.
* `Ctrl-Tab`: Switch to the next modi. The list can be customized with the `-switchers` argument. * `Ctrl-Tab`: Switch to the next modi. The list can be customized with the `-switchers` argument.
@ -756,13 +744,13 @@ of the window will be visible through it.
* `Shift-Del`: Delete entry from history. * `Shift-Del`: Delete entry from history.
* `grave`: Toggle case sensitivity. * `grave`: Toggle case sensitivity.
* `Alt-grave`: Toggle levenshtein sorting. * `Alt-grave`: Toggle levenshtein sorting.
* `Alt-Shift-S`: Take a screenshot and store this in the Pictures directory. * `Alt-Shift-S`: Take a screenshot and store it in the Pictures directory.
To get a full list of keybindings on the commandline, see `rofi -dump-xresources | grep kb-`. To get a full list of key bindings on the commandline, see `rofi -dump-xresources | grep kb-`.
Keybindings can be modified using the configuration systems. Key bindings can be modified using the configuration systems.
To get searchable list of keybindings, run `rofi -show keys`. To get a searchable list of key bindings, run `rofi -show keys`.
A keybinding starting with `!` will act when all keys have been released. A key binding starting with `!` will act when all keys have been released.
## Available Modi ## Available Modi
@ -795,7 +783,7 @@ Pressing the `accept-custom` binding (`control-enter` or `shift-enter`) with cus
### SSH ### SSH
Shows a list of SSH targets based on your ssh config file, and allows to quickly ssh into them. Shows a list of SSH targets based on your ssh config file, and allows to quickly `ssh` into them.
### Keys ### Keys
@ -813,7 +801,7 @@ Try using a mono-space font.
### The window is completely black. ### The window is completely black.
Check quotes used on the commandline: e.g. used “ instead of ". Check quotes used on the commandline: you might have used `“` ("smart quotes") instead of `"` ("machine quotes").
### What does the icon in the top right show? ### What does the icon in the top right show?
@ -832,8 +820,7 @@ Show the run dialog:
rofi -modi run -show run rofi -modi run -show run
Show the the run dialog, and allow switching to Desktop File run dialog (drun):
Show the the run dialog and allow switching to Desktop File run dialog (drun):
rofi -modi run,drun -show run rofi -modi run,drun -show run
@ -841,8 +828,7 @@ Combine the run and Desktop File run dialog (drun):
rofi -modi combi -show combi -combi-modi run,drun rofi -modi combi -show combi -combi-modi run,drun
Combine the run and Desktop File run dialog (drun), and allow switching to window switcher:
Combine the run and Desktop File run dialog (drun) and allow switching to window switcher:
rofi -modi combi,window -show combi -combi-modi run,drun rofi -modi combi,window -show combi -combi-modi run,drun
@ -850,19 +836,19 @@ Run **rofi** full monitor width at the top of the monitor like a dropdown menu:
rofi -show run -width 100 -location 1 -lines 5 -bw 2 -yoffset -2 rofi -show run -width 100 -location 1 -lines 5 -bw 2 -yoffset -2
Get a colored list of available wifi networks: Get a colored list of available wi-fi networks:
tty-pipe nmcli device wifi | out2html -p | rofi -dmenu -markup-rows tty-pipe nmcli device wifi | out2html -p | rofi -dmenu -markup-rows
Popup a text message claiming that this is the end: Pop up a text message claiming that this is the end:
rofi -e "This is the end" rofi -e "This is the end"
Popup a text message in red, bold font claiming that this is still the end: Pop up a text message in red, bold font claiming that this is still the end:
rofi -e "<span color='red'><b>This is still the end</b></span>>" -markup rofi -e "<span color='red'><b>This is still the end</b></span>>" -markup
Show all keybindings: Show all key bindings:
rofi -show keys rofi -show keys
@ -870,13 +856,13 @@ Use `qalc` to get a simple calculator in **rofi**:
rofi -show calc -modi "calc:qalc +u8 -nocurrencies" rofi -show calc -modi "calc:qalc +u8 -nocurrencies"
## I3 ## i3
In [I3](http://i3wm.org/) you want to bind rofi to be launched on key-release. Otherwise it cannot grab the keyboard. In [i3](http://i3wm.org/) you want to bind **rofi** to be launched on key release. Otherwise, it cannot grab the keyboard.
See also the I3 [manual](http://i3wm.org/docs/userguide.html): See also the i3 [manual](http://i3wm.org/docs/userguide.html):
Some tools (such as import or xdotool) might be unable to run upon a KeyPress event, because the keyboard/pointer is Some tools (such as import or xdotool) might be unable to run upon a KeyPress event, because the keyboard/pointer is
still grabbed. For these situations, the --release flag can be used, which will execute the command after the keys have still grabbed. For these situations, the `--release` flag can be used, as it will execute the command after the keys have
been released. been released.
## LICENSE ## LICENSE
@ -904,7 +890,7 @@ been released.
## WEBSITE ## WEBSITE
**rofi** website can be found at [here](https://davedavenport.github.io/rofi/) **rofi** website can be found [here](https://davedavenport.github.io/rofi/)
## SUPPORT ## SUPPORT