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
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
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
to create their own rofi themes without the need to learn a new markup language.
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
on [CSS](https://en.wikipedia.org/wiki/Cascading_Style_Sheets), a widely known format, which allows web developers
for example to create their own **rofi** themes without the need to learn a new markup language.
## FORMAT SPECIFICATION
@ -23,7 +23,7 @@ preferred.
## 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.
* Everything between `/*` and `*/` is a comment.
@ -37,7 +37,7 @@ The following is valid:
property: /* comment */ value;
```
However this is not:
However, this is not:
```
prop/*comment*/erty: value;
@ -96,8 +96,8 @@ parsed entry kept.
## Global properties section
A theme can have one or more global properties sections (If there is more than one
they will be merged)
A theme can have one or more global properties sections. If there is more than one,
they will be merged.
The global properties section denotes the defaults for each element.
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.
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 `#`.
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.
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`.
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.
* an integer number.
* a fractional number.
* a boolean value.
* a color.
* text style.
* line style.
* a distance.
* a padding.
* a border.
* a position.
* a reference.
* an orientation.
* a list of keywords.
* a string
* an integer number
* a fractional number
* a boolean value
* a color
* text style
* line style
* a distance
* a padding
* a border
* a position
* a reference
* an orientation
* a list of keywords
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:]+"`
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:
@ -204,7 +204,7 @@ For example:
font: "Awasome 12";
```
The string must be valid utf-8.
The string must be valid UTF-8.
## Integer
@ -260,15 +260,15 @@ dynamic: false;
* Format: `cmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [, {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:
* `{HEX}` is a hexidecimal number ('0-9a-f' case insensitive).
* `{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.
* `{PERCENTAGE}` Can be between 0-1.0, or 0%-100%
* `{named-color}` Is one of the following colors:
* `{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%
* `{named-color}` is one of the following colors:
AliceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black, BlanchedAlmond, Blue, BlueViolet, Brown,
BurlyWood, CadetBlue, Chartreuse, Chocolate, Coral, CornflowerBlue, Cornsilk, Crimson, Cyan, DarkBlue, DarkCyan,
@ -298,7 +298,7 @@ text: SeaGreen;
* 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.
* `bold`: make the text thicker then the surrounding text.
@ -307,7 +307,7 @@ should be applied.
* `strikethrough`: put a line through the highlighted text.
* `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
@ -315,8 +315,8 @@ should be applied.
Indicates how a line should be drawn.
It currently supports:
* `dash`: A dashed line. Where the gap is the same width as the dash.
* `solid`: A solid line.
* `dash`: a dashed line, where the gap is the same width as the dash
* `solid`: a solid line
## Distance
@ -337,7 +337,7 @@ For example:
```
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.
## Padding
@ -348,7 +348,7 @@ and right side and 108 pixels on the top and bottom.
* Format: `{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:
@ -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} {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.
## Position
@ -392,9 +392,9 @@ south west | south | south east
* 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.
e.g. this is not valid:
For example, this is not valid:
```
highlight: bold @pink;
@ -416,13 +416,13 @@ But this is:
* Format: `(horizontal|vertical)`
Specify an orientation of the widget.
Specify the orientation of the widget.
## List of keywords
* 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.
## ELEMENTS PATHS
@ -454,30 +454,30 @@ The difference between dots and spaces is purely cosmetic. These are all the sam
## Name
The current widgets exist in **rofi**:
The current widgets available in **rofi**:
* `#window`
* `#window.box`: The container holding the window.
* `#window.overlay`: The overlay widget.
* `#window.box`: the container holding the window
* `#window.overlay`: the overlay widget
* `#window.mainbox`
* `#window.mainbox.box`: The main vertical @box
* `#window.mainbox.box`: the main vertical @box
* `#window.mainbox.inputbar`
* `#window.mainbox.inputbar.box`: The horizontal @box packing the widgets.
* `#window.mainbox.inputbar.case-indicator`: The case/sort indicator @textbox
* `#window.mainbox.inputbar.prompt`: The prompt @textbox
* `#window.mainbox.inputbar.entry`: The main entry @textbox
* `#window.mainbox.inputbar.box`: the horizontal @box packing the widgets
* `#window.mainbox.inputbar.case-indicator`: the case/sort indicator @textbox
* `#window.mainbox.inputbar.prompt`: the prompt @textbox
* `#window.mainbox.inputbar.entry`: the main entry @textbox
* `#window.mainbox.listview`
* `#window.mainbox.listview.box`: The listview container.
* `#window.mainbox.listview.scrollbar`: The listview scrollbar
* `#window.mainbox.listview.element`: The entries in the listview
* `#window.mainbox.listview.box`: the listview container
* `#window.mainbox.listview.scrollbar`: the listview scrollbar
* `#window.mainbox.listview.element`: the entries in the listview
* `#window.mainbox.sidebar`
* `#window.mainbox.sidebar.box`: The main horizontal @box packing the buttons.
* `#window.mainbox.sidebar.button`: The buttons @textbox for each mode.
* `#window.mainbox.sidebar.box`: the main horizontal @box packing the buttons
* `#window.mainbox.sidebar.button`: the buttons @textbox for each mode
* `#window.mainbox.message`
* `#window.mainbox.message.textbox`: The message textbox.
* `#window.mainbox.message.box`: The box containing the message.
* `#window.mainbox.message.textbox`: the message textbox
* `#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.
@ -502,14 +502,14 @@ Currently only the entrybox and scrollbar have states:
`{visible modifier}.{state}`
Where `visible modifier` can be:
* normal: No modification.
* selected: The entry is selected/highlighted by user.
* alternate: The entry is at an alternating row. (uneven row)
* normal: no modification
* selected: the entry is selected/highlighted by user
* alternate: the entry is at an alternating row (uneven row)
Where `state` is:
* normal: No modification.
* urgent: This entry is marked urgent.
* active: This entry is marked active.
* normal: no modification
* urgent: this entry is marked urgent
* active: this entry is marked active
These can be mixed.
@ -532,28 +532,28 @@ This allows the colors used for drawing the handle to be set independently.
## SUPPORTED PROPERTIES
The following properties are currently supports:
The following properties are currently supported:
### all widgets:
* **padding**: padding
Padding on the inside of the widget.
Padding on the inside of the widget
* **margin**: padding
Margin on the outside of the widget.
Margin on the outside of the widget
* **border**: border
Border around the widget (between padding and margin)/
* **border-radius**: padding
Sets a radius on the corners of the borders.
* **background**: color
Background color.
Background color
* **foreground**: color
Foreground color.
* **index**: integer (This one does not inherits it value from the parent widget)
Foreground color
* **index**: integer (This one does not inherit it value from the parent widget)
### window:
* **font**: string
The font used in the window.
The font used in the window
* **transparency**: string
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.
* **position**: position
The place of the anchor on the monitor.
The place of the anchor on the monitor
* **anchor**: anchor
The anchor position on the window.
The anchor position on the window
* **fullscreen**: boolean
Window is fullscreen.
* **width**: distance
The width of the window.
The width of the window
* **x-offset**: distance
* **y-offset**: distance
The offset of the window to the anchor point.
Allowing you to push the window left/right/up/down.
The offset of the window to the anchor point, allowing you to push the window left/right/up/down
### scrollbar:
@ -594,28 +593,28 @@ The following properties are currently supports:
* **background**: color
* **foreground**: color
* **font**: The font used by this textbox. (string)
* **str**: The string to display by this textbox. (string)
* **vertical-align**: Vertical alignment of the text. (0 top, 1 bottom)
* **horizontal-align**: Horizontal alignment of the text. (0 left, 1 right)
* **text**: The text color to use (falls back to foreground if not set)
* **highlight**: Text Style {color}
Color is optional, multiple highlight styles can be added like: bold underline italic #000000;
* **width**: Override the desired width for the textbox.
* **font**: the font used by this textbox (string)
* **str**: the string to display by this textbox (string)
* **vertical-align**: vertical alignment of the text (`0` top, `1` bottom)
* **horizontal-align**: horizontal alignment of the text (`0` left, `1` right)
* **text**: the text color to use (falls back to foreground if not set)
* **highlight**: text style {color}
color is optional, multiple highlight styles can be added like: bold underline italic #000000;
* **width**: override the desired width for the textbox
### listview:
* **columns**: integer
Number of columns to show (atleast 1).
Number of columns to show (at least 1)
* **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
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
If the scrollbar should be enabled/disabled.
* **scrollbar-width**: distance
Width of the scrollbar
* **cycle**: boolean
When navigating it should wrap around.
When navigating, it should wrap around
* **spacing**: distance
Spacing between the elements (both vertical and horizontal)
* **lines**: integer
@ -626,15 +625,15 @@ The following properties are currently supports:
## Layout
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.
It even allows, as advanced feature, to pack widgets in a custom structure.
For each widget, the themer can specify padding, margin, border, font, and more.
It even allows, as an advanced feature, to pack widgets in a custom structure.
### Basic structure
The whole view is build up 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 whole view is made out of boxes that pack other boxes or widgets.
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
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
* entry
@ -682,22 +681,23 @@ The following widgets names are 'fixed' widgets with functionality:
* listview
* 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
Packs: `inputbar, message, listview, sidebar`
* inputbar
Packs: `prompt,entry,case-indicator`
Any widget name starting with `textbox` is a textbox widget, all others are a
box widget and can pack other widgets. To specify children, set the children
Any widget name starting with `textbox` is a textbox widget, others are box widgets and can pack other widgets.
To specify children, set the `children`
property (this always happens on the `box` child, see example below):
```
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:
@ -745,7 +745,7 @@ Below is an example of a theme emulating dmenu:
### 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.
The border use the foreground color of the widget.
* 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 size, on each side, of margin, border and padding can be set.
For the border a linestyle and radius can be set.
The size of each margin, border, and padding can be set.
For the border, a linestyle and radius can be set.
### Spacing
Widgets that can pack more then one child widget, currently box and listview, the `spacing` property exists.
This determines the space between the packed widgets (both in horizontal as vertical direction).
Widgets that can pack more then one child widget (currently box and listview) have the `spacing` property.
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
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
(expand disabled).
## 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
```
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:
@ -830,13 +830,13 @@ To see the elements queried during running, 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
```
To print the current theme run:
To print the current theme, run:
```
rofi -dump-theme
@ -845,10 +845,9 @@ rofi -dump-theme
## EXAMPLES
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/`.
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/`.
## SEE ALSO
rofi(1)

View File

@ -11,18 +11,18 @@
## 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
filter, tokenized search and more.
## USAGE
**rofi** main functionality is to assist in your workflow, allowing you to quickly (with a few keystrokes) switch
between windows, start applications or log into a remote machine via ssh. There are different modi for different type of
**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 types of
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
@ -31,21 +31,19 @@ To show the run dialog:
rofi -show run
### Emulating dmenu
**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/).
**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).
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 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
**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"
@ -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):
* 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
[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.
@ -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
-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
Command line options override settings from Xresources file. The same option set as argument:
prefixed with a '-':
Command line options override settings from Xresources file. The same option set as argument — prefixed with a '-':
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
The configuration system supports the following types:
* String
* Integer (signed and unsigned)
* Char
* string
* integer (signed and unsigned)
* char
* Boolean
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 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*
@ -123,7 +120,7 @@ Specify the number of threads **rofi** should use:
Run **rofi** in dmenu mode. This allows for interactive scripts.
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
@ -134,8 +131,8 @@ Or get the options from a script:
`-show` *mode*
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
(see *KEYBINDINGS*)
The special argument `keys` can be used to open a searchable list of supported key bindings
(see *KEY BINDINGS*)
To show the run-dialog:
@ -143,9 +140,9 @@ To show the run-dialog:
`-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.
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:
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 through the results list. Default is 'true'.
Cycle thru the result list. Default is 'true'.
`-filter` *filter*
@ -176,7 +173,7 @@ Filter the list by setting text in input bar to *filter*
`-config` *filename*
Load alternative configuration file.
Load an alternative configuration file.
`-scroll-method` *method*
@ -196,8 +193,7 @@ Disable plugin loading.
`-plugin-path` *directory*
Specify the directory where *rofi* should look for plugins.
Specify the directory where **rofi** should look for plugins.
### Matching
@ -206,10 +202,10 @@ Specify the directory where *rofi* should look for plugins.
Specify the matching algorithm used.
Current the following methods are supported.
* **normal**: Match the int string.
* **regex**: Match a regex input.
* **glob**: Match a glob pattern.
* **fuzzy**: Do a fuzzy match.
* **normal**: match the int string
* **regex**: match a regex input
* **glob**: match a glob pattern
* **fuzzy**: do a fuzzy match
Default: *normal*
@ -222,7 +218,7 @@ Tokenize the input.
### Layout
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`
@ -246,15 +242,15 @@ Set width of menu. `[value]` is specified in percentage.
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
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
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*
@ -280,13 +276,13 @@ Default: *5*
`-fullscreen`
Use the full screen height and width.
Use the full-screen height and width.
`-sidebar-mode`
Open in sidebar-mode. In this mode a list of all enabled modes is shown at the bottom.
(See `-modi` option)
To show sidebar use:
To show sidebar, use:
rofi -show run -sidebar-mode -lines 0
@ -303,19 +299,19 @@ When one entry is left, automatically select it.
`-monitor` *name*
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
detection). Negative numbers are handled differently:
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:
* **-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
behaviour.)
behavior.)
* **-4**: the monitor with the focused window.
* **-5**: the monitor that shows the mouse pointer.
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*
@ -324,27 +320,25 @@ Path to the new theme file format. This overrides the old theme settings.
`-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; }'
This option can be specified multiple times.
`-dpi` *number*
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 `1` it tries to auto-detect based on monitor (rofi is displayed on) size. (Similar to latest QT5)
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 the size of the monitor that rofi is displayed on (similar to latest Qt 5).
### PATTERN setting
`-terminal`
Specify what terminal to start.
Specify which terminal to start.
rofi -terminal xterm
@ -358,7 +352,6 @@ Override the used ssh client.
Pattern: *{ssh-client}*
Default: *ssh*
### SSH settings
`-ssh-command` *cmd*
@ -400,9 +393,9 @@ Default: *{terminal} -e {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
@ -414,13 +407,13 @@ Format what is being displayed for windows.
*field*:
* **w**: Desktop name
* **t**: Title of window
* **n**: Name
* **r**: Role
* **c**: Class
* **w**: desktop name
* **t**: title of window
* **n**: name
* **r**: role
* **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.
@ -428,7 +421,7 @@ default: {w} {c} {t}
`-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*.
Default: *"xkill -id {window}"*
@ -439,12 +432,12 @@ Default: *"xkill -id {window}"*
The modi to combine in combi mode.
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
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
@ -456,20 +449,20 @@ Disable history
`-levenshtein-sort` to enable
`-no-levenshtein-sort` to disable
When searching sort the result based on levenshtein distance.
This setting can be changed at runtime, see `-kb-toggle-sort`.
When searching, sort the result based on levenshtein distance.
This setting can be changed at runtime (see `-kb-toggle-sort`).
### Dmenu specific
`-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
`-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:"
@ -495,7 +488,7 @@ Makes dmenu searches case-insensitive
`-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
A range: -a 3-8
or a set of rows: -a 0,2
@ -503,7 +496,7 @@ or any combination: -a 0,2-3,9
`-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
A range: -u 3-8
or a set of rows: -u 0,2
@ -521,14 +514,14 @@ This mode returns directly when no entries given.
`-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.
* 'i' index (0 - (N-1)).
* 'd' index (1 - N).
* 'q' quote string.
* 'f' filter string (user input).
* 'F' quoted filter string (user input).
* 's' selected string
* 'i' index (0 - (N-1))
* 'd' index (1 - N)
* 'q' quote string
* 'f' filter string (user input)
* 'F' quoted filter string (user input)
Default: 's'
@ -561,7 +554,7 @@ 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.
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.
@ -571,14 +564,14 @@ Allow multiple lines to be selected. Adds a small selection indicator to the lef
`-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
such as `-dump`, `-only-match` or `-auto-select`
Note: the default asynchronous mode will also be automatically disabled if used with conflicting options,
such as `-dump`, `-only-match` or `-auto-select`.
`-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
@ -586,15 +579,14 @@ Reads the first 25 entries blocking. Then switches to async mode. This makes it
`-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.
### Other
`-pid` *path*
Make **rofi** create a pid file and check this on startup. Avoiding multiple copies running
simultaneously. This is useful when running **rofi** from a keybinding daemon.
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.
`-fake-transparency`
@ -618,7 +610,6 @@ Default: *enabled*
### Debug
`-no-config`
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.
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
```
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
```
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
To launch commands (e.g. 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:
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:
* `{host}`: The host to connect to.
* `{terminal}`: The configured terminal (See -terminal-emulator)
* `{ssh-client}`: The configured ssh client (See -ssh-client)
* `{cmd}`: The command to execute.
* `{window}`: The window id of the selected window. (In `window-command`)
* `{host}`: the host to connect to
* `{terminal}`: the configured terminal (see -terminal-emulator)
* `{ssh-client}`: the configured ssh client (see -ssh-client)
* `{cmd}`: the command to execute
* `{window}`: the window ID of the selected window (in `window-command`)
## DMENU 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`.
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
@ -665,22 +655,22 @@ The theme format below describes the old (pre version 1.4) theme format. Please
manual.
The theme setup allows you to specify colors per state, similar to **i3**
Currently 3 states exists:
Currently 3 states exist:
* **normal** Normal row.
* **urgent** Highlighted row (urgent)
* **active** Highlighted row (active)
* **normal**: normal row
* **urgent**: highlighted row (urgent)
* **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
* **fg** Text color
* **bgalt** Background color alternating row
* **hlfg** Foreground color selected row
* **hlbg** Background color selected row
* **bg**: background color row
* **fg**: text color
* **bgalt**: background color alternating row
* **hlfg**: foreground color selected row
* **hlbg**: background color selected row
The window background and border color should be specified separate. The key `color-window` contains
a pair `background,border,separator`.
The window background and border color should be specified separately. The key `color-window` contains
a tuple `background,border,separator`.
An example for `Xresources` file:
! State: 'bg', 'fg', 'bgalt', 'hlbg', 'hlfg'
@ -697,35 +687,33 @@ Same settings can also be specified on command-line:
## 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:
white
Or
Or:
#FFFFFF
ARGB colors are also support, these can be used to create a transparent window if: 1. Your Xserver supports TrueColor, 2.
You are running a composite manager.
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.
For example:
argb:FF444444
Or
Or:
#FF444444
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.
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.
Within **rofi** transparency can be used, e.g. if the selected background color is 50% transparent, the background color
of the window will be visible through it.
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 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-u`: Clear the 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-n,Down`: Select next entry
* `Ctrl-p,Up`: Select previous entry
* `Page Up`: Go to the previous page
* `Page Down`: Go to the next page
* `Ctrl-Page Up`: Go to the previous column
* `Ctrl-Page Down`: Go to the next column
* `Ctrl-Enter`: Use entered text as command (in ssh/run modi)
* `Page Up`: Go to previous page
* `Page Down`: Go to next page
* `Ctrl-Page Up`: Go to previous column
* `Ctrl-Page Down`: Go to next column
* `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`: 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-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.
@ -756,13 +744,13 @@ of the window will be visible through it.
* `Shift-Del`: Delete entry from history.
* `grave`: Toggle case sensitivity.
* `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-`.
Keybindings can be modified using the configuration systems.
To get searchable list of keybindings, run `rofi -show keys`.
To get a full list of key bindings on the commandline, see `rofi -dump-xresources | grep kb-`.
Key bindings can be modified using the configuration systems.
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
@ -795,7 +783,7 @@ Pressing the `accept-custom` binding (`control-enter` or `shift-enter`) with cus
### 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
@ -813,7 +801,7 @@ Try using a mono-space font.
### 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?
@ -832,8 +820,7 @@ Show the run dialog:
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
@ -841,8 +828,7 @@ Combine the run and Desktop File run dialog (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
@ -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
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
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"
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
Show all keybindings:
Show all key bindings:
rofi -show keys
@ -870,13 +856,13 @@ Use `qalc` to get a simple calculator in **rofi**:
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.
See also the I3 [manual](http://i3wm.org/docs/userguide.html):
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):
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.
## LICENSE
@ -904,7 +890,7 @@ been released.
## 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