diff options
author | Marcin Sedlak <fdmarcin@gmail.com> | 2017-08-13 19:19:19 +0200 |
---|---|---|
committer | Dave Davenport <DaveDavenport@users.noreply.github.com> | 2017-08-13 19:19:19 +0200 |
commit | bb61970627987b875e80c0abe329bfefa0b13598 (patch) | |
tree | 6e36d4c823a2f67d803a926e78dcbf7df9419c99 /doc/rofi-theme.5.markdown | |
parent | 96c70813caf7dd365e52caa285f2c20edb5e405f (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.markdown | 231 |
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) - |