summaryrefslogtreecommitdiffstats
path: root/doc/rofi-theme.5.markdown
diff options
context:
space:
mode:
authorMarcin Sedlak <fdmarcin@gmail.com>2017-08-13 19:19:19 +0200
committerDave Davenport <DaveDavenport@users.noreply.github.com>2017-08-13 19:19:19 +0200
commitbb61970627987b875e80c0abe329bfefa0b13598 (patch)
tree6e36d4c823a2f67d803a926e78dcbf7df9419c99 /doc/rofi-theme.5.markdown
parent96c70813caf7dd365e52caa285f2c20edb5e405f (diff)
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
Diffstat (limited to 'doc/rofi-theme.5.markdown')
-rw-r--r--doc/rofi-theme.5.markdown231
1 files changed, 115 insertions, 116 deletions
diff --git a/doc/rofi-theme.5.markdown b/doc/rofi-theme.5.markdown
index eb174feb..29e4e9cf 100644
--- a/doc/rofi-theme.5.markdown
+++ b/doc/rofi-theme.5.markdown
@@ -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.
-
-The current theme format support different type:
-
- * 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.
+When used, values with the wrong type that cannot be converted are ignored.
+
+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
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)
-