summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2020-05-04 13:16:33 +0200
committerDave Davenport <qball@gmpclient.org>2020-05-04 13:16:33 +0200
commit575bf2593a5625e515351bdbab582cc50d39b13a (patch)
treeb9987914dba038b21f3ea9a1f35bb99010b8a091
parent38cc849239570fc7e3da575f4a0b6d86e11381e9 (diff)
parentd3218c75a4ad7722c77f164955b3ed29c8ead1a9 (diff)
Merge remote-tracking branch 'origin/next' into fbcomplete
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml8
-rw-r--r--.travis.yml216
-rw-r--r--config/config.c2
-rw-r--r--doc/rofi-script.512
-rw-r--r--doc/rofi-theme-selector.14
-rw-r--r--doc/rofi-theme.5238
-rw-r--r--doc/rofi-theme.5.markdown19
-rw-r--r--doc/rofi.170
-rw-r--r--doc/rofi.1.markdown6
-rw-r--r--include/rofi-types.h29
-rw-r--r--include/theme.h1
-rw-r--r--lexer/theme-lexer.l9
-rw-r--r--lexer/theme-parser.y133
-rw-r--r--source/theme.c211
-rw-r--r--source/widgets/listview.c23
-rw-r--r--source/widgets/scrollbar.c2
-rw-r--r--source/widgets/widget.c10
-rw-r--r--source/xrmoptions.c2
-rw-r--r--test/theme-parser-test.c103
19 files changed, 626 insertions, 472 deletions
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 00000000..88076954
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: true
+contact_links:
+ - name: Rofi subreddit
+ url: https://www.reddit.com/r/qtools/
+ about: Please ask and answer questions here.
+ - name: Rofi IRC channel
+ url: https://webchat.freenode.net/?channels=#rofi
+ about: Please ask and answer question in real time here.
diff --git a/.travis.yml b/.travis.yml
index 03918b21..670ebd80 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,105 +1,149 @@
-
-sudo: required
-dist: trusty
+os: linux
+dist: bionic
language: c
env:
global:
- # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
- # via the "travis encrypt" command using the project repo's public key
- - secure: "Uodrn3x36plX2yk4+c7eimCuv7j6p6n1XCNbNEYxibRX77730eQMCVS0BvM40OgD7m5K9s2hIQaMV7EMj3qKuRmemULDVJVTgNd1fbx6t4BhYh+Hrf6FhsNcm9nFxvQQrdJAVSOwIAlrUilVFotDRt9qKqLwwZiBKIs5gBPcHQY="
+ # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created via
+ # the "travis encrypt" command using the project repo's public key
+ - secure: "Uodrn3x36plX2yk4+c7eimCuv7j6p6n1XCNbNEYxibRX77730eQMCVS0BvM40OgD7m5K9s2hIQaMV7EMj3qKuRmemULDVJVTgNd1fbx6t4BhYh+Hrf6FhsNcm9nFxvQQrdJAVSOwIAlrUilVFotDRt9qKqLwwZiBKIs5gBPcHQY="
addons:
- coverity_scan:
- project:
- name: "DaveDavenport/rofi"
- description: "Build submitted via Travis CI"
- notification_email: qball@gmpclient.org
- build_command_prepend: "autoreconf -i;./configure; make clean"
- build_command: "make"
- branch_pattern: coverity_scan
- apt:
- packages:
- - python3.5
- - autoconf
- - automake
- - make
- - xutils-dev
- - libpango1.0-dev
- - libcairo2-dev
- - libstartup-notification0-dev
- - libxcb-ewmh-dev
- - libxcb-icccm4-dev
- - libxcb-util0-dev
- - libxcb-xinerama0-dev
- - libxcb-xkb-dev
- - libxcb-randr0-dev
- - libxcb1-dev
- - libxkbcommon-dev
- - libxkbcommon-x11-dev
- - xvfb
- - discount
- - xdotool
- - fluxbox
- - xterm
- - gdb
- - lcov
- - doxygen
- - graphviz
- - texinfo
- - texi2html
- - xfonts-base
-
-compiler:
- - gcc
+ coverity_scan:
+ project:
+ name: "DaveDavenport/rofi"
+ description: "Build submitted via Travis CI"
+ notification_email: qball@gmpclient.org
+ # TODO: What do these actually do?
+ build_command_prepend: "meson setup build"
+ build_command: "ninja -C build"
+ branch_pattern: coverity_scan
+ apt:
+ packages:
+ - discount
+ - doxygen
+ - fluxbox
+ - gdb
+ - graphviz
+ - jq
+ - lcov
+ - libpango1.0-dev
+ - libstartup-notification0-dev
+ - libxcb-ewmh-dev
+ - libxcb-icccm4-dev
+ - libxcb-randr0-dev
+ - libxcb-util0-dev
+ - libxcb-xinerama0-dev
+ - libxcb-xkb-dev
+ - libxcb-xrm-dev
+ - libxkbcommon-dev
+ - libxkbcommon-dev
+ - libxkbcommon-x11-dev
+ - ninja-build
+ - python3-pip
+ - python3-setuptools
+ - python3-wheel
+ - texi2html
+ - texinfo
+ - xdotool
+ - xfonts-base
+ - xterm
+ - xutils-dev
+# TODO: Potentially switch to coverxygen (active project with the same goal) at
+# some point in the future?
before_install:
- - sudo add-apt-repository -y 'deb https://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse'
- - sudo add-apt-repository -y 'deb https://debian.jpleau.ca/ jessie-backports main contrib non-free'
- - sudo apt-get update -qq
- - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
+ # doxy-coverage is not packaged in Ubuntu 18.04 (Bionic), clone the helper
+ # scripts manually:
+ - git clone https://github.com/alobbs/doxy-coverage
+ # Ubuntu 18.04 ships an outdated version of check. Install a more recent
+ # version instead:
+ - curl -L https://github.com/libcheck/check/releases/download/0.14.0/check-0.14.0.tar.gz | tar xzf -
+ - cd check-0.14.0
+ - ./configure
+ - make
+ # Disable tests for non-"debug" runs (as these tests can take several minutes
+ # to complete):
+ #- make check
+ - sudo make install
+ - sudo ldconfig
+ - cd ..
-
-# TODO: We install xkbcommon here, until Travis use an up-to-date enough Ubuntu
-install:
- - sudo apt-get install -y --force-yes flex/trusty-backports libfl-dev/trusty-backports
- - wget https://github.com/mesonbuild/meson/releases/download/0.47.0/meson-0.47.0.tar.gz
- - tar xf meson-0.47.0.tar.gz
- - wget https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-linux.zip
- - export MESON=$(pwd)/meson-0.47.0/meson.py
- - unzip ninja-linux.zip
- - export PATH=$(pwd):$PATH
- - git clone https://github.com/alobbs/doxy-coverage
- - git clone --recursive https://github.com/Airblader/xcb-util-xrm.git
- - cd xcb-util-xrm
- - ./autogen.sh --prefix=/usr
- - make
- - sudo make install
- - cd -
- - git clone https://github.com/libcheck/check/ -b 0.11.0
- - cd check
- - autoreconf -i
- - TEX="false" ./configure --prefix=/usr/
+# YAML anchor, ignored by Travis CI (albeit present in the JSON render):
+.autotools: &autotools
+ before_script: &autotools_before_script
+ # prettier-ignore
+ # Generate the configure script:
+ - autoreconf --install
+ # Make the build directory:
+ - mkdir build
+ # Change into the build directory:
+ - cd build
+ # Configure the build directory
+ - ../configure
+ # TODO: Fix X11 tests (and check whether or not changing the user's resource
+ # limit is still required for the X11 tests).
+ script: &autotools_script # Build the project:
- make
- - sudo make install
- - cd -
-
-before_script:
- - python3.5 ${MESON} build -Db_coverage=true
+ # Run tests:
+ - make distcheck
+ # Code coverage:
+ - make doxy 2>&1 > doxygen.log
+ # Check for warnings in doxygen.log:
+ - test $(grep -c warning doxygen.log) -eq 0
+ - ../doxy-coverage/doxy-coverage.py doc/html/xml/
-script:
+# YAML anchor, ignored by Travis CI (albeit present in the JSON render):
+.meson: &meson
+ install: &meson_install
+ # Ubuntu's meson version is outdated. Use pip to install a more recent
+ # release:
+ - pip3 install --user meson
+ # ~/.local/bin is not a part of $PATH by default. Update $PATH to include it:
+ - PATH="$PATH:$HOME/.local/bin"
+ before_script:
+ &meson_before_script # Configure the build directory with meson:
+ - meson setup build
+ # TODO: Fix X11 tests (and check whether or not changing the user's resource
+ # limit is still required for the X11 tests).
+ script: &meson_script # Build the project:
- ninja -C build
+ # Run tests:
- ninja -C build test
- - ulimit -c unlimited
- - ninja -C build test-x
+ #- ulimit -c unlimited
+ #- ninja -C build test-x
- ninja -C build doc/html 2>&1 > doxygen.log
- test $(grep -c warning doxygen.log) -eq 0
- ./doxy-coverage/doxy-coverage.py build/doc/html/xml/
after_success:
- - bash <(curl -s https://codecov.io/bash)
+ - bash <(curl -s https://codecov.io/bash)
+
+# Travis CI doesn't propagate the compiler key to individual jobs. Define
+# a _single_ compiler for each job, as a list will only result in the first
+# compiler being used!
+
+jobs:
+ include:
+ - name: "Autotools - Clang"
+ compiler: clang
+ # Merge keys from the .autotools map:
+ <<: *autotools
+ - name: "Autotools - GCC"
+ compiler: gcc
+ # Merge keys from the .autotools map:
+ <<: *autotools
+ - name: "Meson - Clang"
+ compiler: clang
+ # Merge keys from the .meson map:
+ <<: *meson
+ - name: "Meson - GCC"
+ compiler: gcc
+ # Merge keys from the .meson map:
+ <<: *meson
notifications:
- webhooks:
- urls:
- - secure: "AqDM5SkWJPSBeCiyGdXzHYLnFCML/vKxWW/0wE00ocX+97Fa5ixeU7apMJ0OMZ0ZQVXG96xVtlJ513ZSpnRYHx6FF+Ivvw5pYeZjKHqtxThEhOueW1YynYWMX7HJrA4P19ollqRLrtsJqG6x7BhVEnIyhyu9eXtgj6hiI70F0SE="
- on_success: change
+ webhooks:
+ urls:
+ - secure: "AqDM5SkWJPSBeCiyGdXzHYLnFCML/vKxWW/0wE00ocX+97Fa5ixeU7apMJ0OMZ0ZQVXG96xVtlJ513ZSpnRYHx6FF+Ivvw5pYeZjKHqtxThEhOueW1YynYWMX7HJrA4P19ollqRLrtsJqG6x7BhVEnIyhyu9eXtgj6hiI70F0SE="
+ on_success: change
+# vim: et sw=2 ts=2
diff --git a/config/config.c b/config/config.c
index e3cf8356..62adab5d 100644
--- a/config/config.c
+++ b/config/config.c
@@ -96,7 +96,7 @@ Settings config = {
/** Sort the displayed list */
.sort = FALSE,
/** Use levenshtein sorting when matching */
- .sorting_method = SORT_NORMAL,
+ .sorting_method = "normal",
/** Case sensitivity of the search */
.case_sensitive = FALSE,
/** Cycle through in the element list */
diff --git a/doc/rofi-script.5 b/doc/rofi-script.5
index a2daf9a9..e5fa1b96 100644
--- a/doc/rofi-script.5
+++ b/doc/rofi-script.5
@@ -64,8 +64,6 @@ Rofi sets the following environment variable when executing the script:
.SS \fB\fCROFI\_RETV\fR
.PP
An integer number with the current state:
-
-.RS
.IP \(bu 2
\fB0\fP: Initial call of script.
.IP \(bu 2
@@ -75,8 +73,6 @@ An integer number with the current state:
.IP \(bu 2
\fB10\-28\fP: Custom keybinding 1\-19
-.RE
-
.SH Passing mode options
.PP
Extra options, like setting the prompt, can be set by the script.
@@ -96,8 +92,6 @@ For example to set the prompt:
.PP
The following extra options exists:
-
-.RS
.IP \(bu 2
\fBprompt\fP: Update the prompt text.
.IP \(bu 2
@@ -113,8 +107,6 @@ The following extra options exists:
.IP \(bu 2
\fBno\-custom\fP: Only accept listed entries, ignore custom input.
-.RE
-
.SH Parsing row options
.PP
Extra options for individual rows can be set.
@@ -134,8 +126,6 @@ For example:
.PP
The following options are supported:
-
-.RS
.IP \(bu 2
\fBicon\fP: Set the icon for that row.
.IP \(bu 2
@@ -143,8 +133,6 @@ The following options are supported:
.IP \(bu 2
\fBnonselectable\fP: If true the row cannot activated.
-.RE
-
.SH SEE ALSO
.PP
rofi(1), rofi\-sensible\-terminal(1), dmenu(1), rofi\-theme(5), rofi\-theme\-selector(1)
diff --git a/doc/rofi-theme-selector.1 b/doc/rofi-theme-selector.1
index de076ff4..99525093 100644
--- a/doc/rofi-theme-selector.1
+++ b/doc/rofi-theme-selector.1
@@ -18,8 +18,6 @@ It lets you preview each theme with the Enter key and apply the theme to your
.SH Theme directories
.PP
\fBrofi\-theme\-selector\fP searches the following directories for themes:
-
-.RS
.IP \(bu 2
${PREFIX}/share/rofi/themes
.IP \(bu 2
@@ -27,8 +25,6 @@ $XDG\_CONFIG\_HOME/rofi/themes
.IP \(bu 2
$XDG\_DATA\_HOME/share/rofi/themes
-.RE
-
.PP
${PREFIX} reflects the install location of rofi. In most cases this will be "/usr".<br>
$XDG\_CONFIG\_HOME is normally unset. Default path is "$HOME/.config".<br>
diff --git a/doc/rofi-theme.5 b/doc/rofi-theme.5
index 81affdb4..cc0bc564 100644
--- a/doc/rofi-theme.5
+++ b/doc/rofi-theme.5
@@ -19,15 +19,11 @@ preferred.
.SH Comments
.PP
C and C++ file comments are supported.
-
-.RS
.IP \(bu 2
Anything after \fB\fC//\fR and before a newline is considered a comment.
.IP \(bu 2
Everything between \fB\fC/*\fR and \fB\fC*/\fR is a comment.
-.RE
-
.PP
Comments can be nested and the C comments can be inline.
@@ -246,8 +242,6 @@ When used, values with the wrong type that cannot be converted are ignored.
.PP
The current theme format supports different types:
-
-.RS
.IP \(bu 2
a string
.IP \(bu 2
@@ -281,18 +275,12 @@ an environment variable
.IP \(bu 2
Inherit
-.RE
-
.PP
Some of these types are a combination of other types.
-.SH String
-.RS
-.IP \(bu 2
+.SH String.IP \(bu 2
Format: \fB\fC"[:print:]+"\fR
-.RE
-
.PP
A string is always surrounded by double quotes (\fB\fC"\fR). Between the quotes there can be any printable character.
@@ -311,13 +299,9 @@ font: "Awasome 12";
.PP
The string must be valid UTF\-8.
-.SH Integer
-.RS
-.IP \(bu 2
+.SH Integer.IP \(bu 2
Format: \fB\fC[\-+]?[:digit:]+\fR
-.RE
-
.PP
An integer may contain any number.
@@ -333,13 +317,9 @@ lines: 12;
.fi
.RE
-.SH Real
-.RS
-.IP \(bu 2
+.SH Real.IP \(bu 2
Format: \fB\fC[\-+]?[:digit:]+(\\.[:digit:]+)?\fR
-.RE
-
.PP
A real is an integer with an optional fraction.
@@ -358,13 +338,9 @@ real: 3.4;
.PP
The following is not valid: \fB\fC\&.3\fR, \fB\fC3.\fR or scientific notation: \fB\fC3.4e\-3\fR\&.
-.SH Boolean
-.RS
-.IP \(bu 2
+.SH Boolean.IP \(bu 2
Format: \fB\fC(true|false)\fR
-.RE
-
.PP
Boolean value is either \fB\fCtrue\fR or \fB\fCfalse\fR\&. This is case\-\&sensitive.
@@ -383,8 +359,6 @@ dynamic: false;
.SH Color
.PP
\fBrofi\fP supports the color formats as specified in the CSS standard (1,2,3 and some of CSS 4)
-
-.RS
.IP \(bu 2
Format: \fB\fC#{HEX}{3}\fR (rgb)
.IP \(bu 2
@@ -406,15 +380,11 @@ Format: \fB\fCcmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [, {P
.IP \(bu 2
Format: \fB\fC{named\-color} [ / {PERCENTAGE} ]\fR
-.RE
-
.PP
The white\-space format proposed in CSS4 is also supported.
.PP
The different values are:
-
-.RS
.IP \(bu 2
\fB\fC{HEX}\fR is a hexadecimal number ('0\-9a\-f' case insensitive).
.IP \(bu 2
@@ -443,8 +413,6 @@ PapayaWhip, PeachPuff, Peru, Pink, Plum, PowderBlue, Purple, RebeccaPurple, Red,
Salmon, SandyBrown, SeaGreen, SeaShell, Sienna, Silver, SkyBlue, SlateBlue, SlateGray, SlateGrey, Snow, SpringGreen,
SteelBlue, Tan, Teal, Thistle, Tomato, Turquoise, Violet, Wheat, White, WhiteSmoke, Yellow, YellowGreen,transparent
-.RE
-
.PP
For example:
@@ -472,18 +440,12 @@ text\-color: Black;
.fi
.RE
-.SH Text style
-.RS
-.IP \(bu 2
+.SH Text style.IP \(bu 2
Format: \fB\fC(bold|italic|underline|strikethrough|none)\fR
-.RE
-
.PP
Text style indicates how the highlighted text is emphasized. \fB\fCNone\fR indicates that no emphasis
should be applied.
-
-.RS
.IP \(bu 2
\fB\fCbold\fR: make the text thicker then the surrounding text.
.IP \(bu 2
@@ -495,8 +457,6 @@ should be applied.
.IP \(bu 2
\fB\fCsmall caps\fR: emphasise the text using capitalization.
-.RE
-
.PP
.RS
@@ -504,22 +464,16 @@ should be applied.
For some reason \fB\fCsmall caps\fR does not work on some systems.
.RE
-.SH Line style
-.RS
-.IP \(bu 2
+.SH Line style.IP \(bu 2
Format: \fB\fC(dash|solid)\fR
-.RE
-
.PP
Indicates how a line should be drawn.
It currently supports:
* \fB\fCdash\fR: a dashed line, where the gap is the same width as the dash
* \fB\fCsolid\fR: a solid line
-.SH Distance
-.RS
-.IP \(bu 2
+.SH Distance.IP \(bu 2
Format: \fB\fC{Integer}px\fR
.IP \(bu 2
Format: \fB\fC{Real}em\fR
@@ -528,12 +482,8 @@ Format: \fB\fC{Real}ch\fR
.IP \(bu 2
Format: \fB\fC{Real}%\fR
-.RE
-
.PP
A distance can be specified in 3 different units:
-
-.RS
.IP \(bu 2
\fB\fCpx\fR: Screen pixels.
.IP \(bu 2
@@ -543,8 +493,6 @@ A distance can be specified in 3 different units:
.IP \(bu 2
\fB\fC%\fR: Percentage of the \fBmonitor\fP size.
-.RE
-
.PP
Distances used in the horizontal direction use the monitor width. Distances in
the vertical direction use the monitor height.
@@ -563,9 +511,36 @@ For example:
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.
-.SH Padding
+.SS Calculating sizes
+.PP
+Rofi supports some maths in calculating sizes. For this it uses the CSS syntax:
+
+.PP
.RS
+
+.nf
+width: calc( 100% \- 37px );
+
+.fi
+.RE
+
+.PP
+It supports the following operations:
+.IP \(bu 2
+\fB\fC+\fR: Add
+.IP \(bu 2
+\fB\fC\-\fR: Subtract
+.IP \(bu 2
+\fB\fC/\fR: Divide
.IP \(bu 2
+\fB\fC*\fR: Multiply
+.IP \(bu 2
+\fB\fC%\fR: Multiply
+
+.PP
+It uses the C precedence ordering.
+
+.SH Padding.IP \(bu 2
Format: \fB\fC{Integer}\fR
.IP \(bu 2
Format: \fB\fC{Distance}\fR
@@ -576,15 +551,11 @@ Format: \fB\fC{Distance} {Distance} {Distance}\fR
.IP \(bu 2
Format: \fB\fC{Distance} {Distance} {Distance} {Distance}\fR
-.RE
-
.PP
If no unit is specified, pixels are assumed.
.PP
The different number of fields in the formats are parsed like:
-
-.RS
.IP \(bu 2
1 field: \fB\fCall\fR
.IP \(bu 2
@@ -594,11 +565,7 @@ The different number of fields in the formats are parsed like:
.IP \(bu 2
4 fields: \fB\fCtop\fR, \fB\fCright\fR, \fB\fCbottom\fR, \fB\fCleft\fR
-.RE
-
-.SH Border
-.RS
-.IP \(bu 2
+.SH Border.IP \(bu 2
Format: \fB\fC{Integer}\fR
.IP \(bu 2
Format: \fB\fC{Distance}\fR
@@ -617,8 +584,6 @@ Format: \fB\fC{Distance} {Line style} {Distance} {Line style} {Distance} {Line s
.IP \(bu 2
Format: \fB\fC{Distance} {Line style} {Distance} {Line style} {Distance} {Line style} {Distance} {Line style}\fR
-.RE
-
.PP
Borders are identical to padding, except that each distance field has a line
style property.
@@ -633,12 +598,9 @@ When no unit is specified, pixels are assumed.
.SH Position
.PP
Indicate a place on the window/monitor.
-
-.RS
.IP \(bu 2
-
-.PP
Format: \fB\fC(center|east|north|west|south|north east|north west|south west|south east)\fR
+
.PP
.RS
@@ -646,15 +608,13 @@ Format: \fB\fC(center|east|north|west|south|north east|north west|south west|sou
north west | north | north east
\-\-\-\-\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-
- west | center | east
+ west | center | east
\-\-\-\-\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-
south west | south | south east
.fi
.RE
-.RE
-
.SH Visibility
.PP
It is possible to hide widgets:
@@ -664,13 +624,9 @@ inputbar {
enabled: false;
}
-.SH Reference
-.RS
-.IP \(bu 2
+.SH Reference.IP \(bu 2
Format: \fB\fC@{PROPERTY NAME}\fR
-.RE
-
.PP
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.
@@ -703,34 +659,22 @@ window {
.fi
.RE
-.SH Orientation
-.RS
-.IP \(bu 2
+.SH Orientation.IP \(bu 2
Format: \fB\fC(horizontal|vertical)\fR
-.RE
-
.PP
Specify the orientation of the widget.
-.SH List of keywords
-.RS
-.IP \(bu 2
+.SH List of keywords.IP \(bu 2
Format: \fB\fC[ keyword, keyword ]\fR
-.RE
-
.PP
A list starts with a '[' and ends with a ']'. The entries in the list are comma\-separated.
The \fB\fCkeyword\fR in the list refers to an widget name.
-.SH Environment variable
-.RS
-.IP \(bu 2
+.SH Environment variable.IP \(bu 2
Format: \fB\fC${:alnum:}\fR
-.RE
-
.PP
This will parse the environment variable as the property value. (that then can be any of the above types).
The environment variable should be an alphanumeric string without white\-space.
@@ -746,13 +690,9 @@ The environment variable should be an alphanumeric string without white\-space.
.fi
.RE
-.SH Inherit
-.RS
-.IP \(bu 2
+.SH Inherit.IP \(bu 2
Format: \fB\fCinherit\fR
-.RE
-
.PP
Inherits the property from its parent widget.
@@ -809,20 +749,14 @@ element selected {
.SH Name
.PP
The current widgets available in \fBrofi\fP:
-
-.RS
.IP \(bu 2
\fB\fCwindow\fR
-
-.RS
.IP \(bu 2
\fB\fCoverlay\fR: the overlay widget.
.IP \(bu 2
\fB\fCmainbox\fR: The mainbox box.
.IP \(bu 2
\fB\fCinputbar\fR: The input bar box.
-
-.RS
.IP \(bu 2
\fB\fCbox\fR: the horizontal @box packing the widgets
.IP \(bu 2
@@ -835,49 +769,27 @@ The current widgets available in \fBrofi\fP:
\fB\fCnum\-rows\fR: Shows the total number of rows.
.IP \(bu 2
\fB\fCnum\-filtered\-rows\fR: Shows the total number of rows after filtering.
-
-.RE
.IP \(bu 2
\fB\fClistview\fR: The listview.
-
-.RS
.IP \(bu 2
\fB\fCscrollbar\fR: the listview scrollbar
.IP \(bu 2
\fB\fCelement\fR: a box in the listview holding the entries
-
-.RS
.IP \(bu 2
\fB\fCelement\-icon\fR: the widget in the listview's entry showing the (optional) icon
.IP \(bu 2
\fB\fCelement\-index\fR: the widget in the listview's entry keybindable index (1,2,3..0)
.IP \(bu 2
\fB\fCelement\-text\fR: the widget in the listview's entry showing the text.
-
-.RE
-
-.RE
.IP \(bu 2
\fB\fCmode\-switcher\fR: the main horizontal @box packing the buttons.
-
-.RS
.IP \(bu 2
\fB\fCbutton\fR: the buttons @textbox for each mode
-
-.RE
.IP \(bu 2
\fB\fCmessage\fR: The container holding the textbox.
-
-.RS
.IP \(bu 2
\fB\fCtextbox\fR: the message textbox
-.RE
-
-.RE
-
-.RE
-
.PP
Note that these path names match the default theme. Themes that provide a custom layout will have different
elements, and structure.
@@ -949,9 +861,7 @@ This allows the colors used for drawing the handle to be set independently.
.PP
The following properties are currently supported:
-.SS all widgets:
-.RS
-.IP \(bu 2
+.SS all widgets:.IP \(bu 2
\fBenabled\fP: enable/disable the widget
.IP \(bu 2
\fBpadding\fP: padding
@@ -972,11 +882,7 @@ Background color
\fBborder\-color\fP: color
Color of the border
-.RE
-
-.SS window:
-.RS
-.IP \(bu 2
+.SS window:.IP \(bu 2
.PP
\fBfont\fP: string
@@ -1020,11 +926,7 @@ The width of the window
\fBy\-offset\fP: distance
The offset of the window to the anchor point, allowing you to push the window left/right/up/down
-.RE
-
-.SS scrollbar:
-.RS
-.IP \(bu 2
+.SS scrollbar:.IP \(bu 2
\fBbackground\-color\fP: color
.IP \(bu 2
\fBhandle\-width\fP: distance
@@ -1033,22 +935,14 @@ The offset of the window to the anchor point, allowing you to push the window le
.IP \(bu 2
\fBborder\-color\fP: color
-.RE
-
-.SS box:
-.RS
-.IP \(bu 2
+.SS box:.IP \(bu 2
\fBorientation\fP: orientation
Set the direction the elements are packed.
.IP \(bu 2
\fBspacing\fP: distance
Distance between the packed elements.
-.RE
-
-.SS textbox:
-.RS
-.IP \(bu 2
+.SS textbox:.IP \(bu 2
\fBbackground\-color\fP: color
.IP \(bu 2
\fBborder\-color\fP: the color used for the border around the widget.
@@ -1076,11 +970,7 @@ color is optional, multiple highlight styles can be added like: bold underline i
.IP \(bu 2
\fBblink\fP: Enable/Disable blinking on an input textbox (Boolean).
-.RE
-
-.SS listview:
-.RS
-.IP \(bu 2
+.SS listview:.IP \(bu 2
\fBcolumns\fP: integer
Number of columns to show (at least 1)
.IP \(bu 2
@@ -1114,8 +1004,6 @@ Reverse the ordering (top down to bottom up).
\fBfixed\-columns\fP: boolean
Do not reduce the number of columns shown when number of visible elements is not enough to fill them all.
-.RE
-
.PP
Each element is a \fB\fCbox\fR called \fB\fCelement\fR\&. Each \fB\fCelement\fR can contain an \fB\fCelement\-icon\fR and \fB\fCelement\-text\fR\&.
@@ -1207,8 +1095,6 @@ The layout of \fBrofi\fP can be tweaked by packing the 'fixed' widgets in a cust
.PP
The following widgets are fixed, as they provide core \fBrofi\fP functionality:
-
-.RS
.IP \(bu 2
prompt
.IP \(bu 2
@@ -1228,13 +1114,9 @@ num\-rows
.IP \(bu 2
num\-filtered\-rows
-.RE
-
.PP
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.
-
-.RS
.IP \(bu 2
mainbox
Packs: \fB\fCinputbar, message, listview, mode\-switcher\fR
@@ -1242,15 +1124,11 @@ Packs: \fB\fCinputbar, message, listview, mode\-switcher\fR
inputbar
Packs: \fB\fCprompt,entry,case\-indicator\fR
-.RE
-
.PP
Any widget name starting with \fB\fCtextbox\fR is a textbox widget, others are box widgets and can pack other widgets.
.PP
There are several special widgets that can be used by prefixing the name of the widget:
-
-.RS
.IP \(bu 2
\fB\fCtextbox\fR:
This is a textbox widget. The displayed string can be set with \fB\fCstr\fR\&.
@@ -1266,8 +1144,6 @@ The \fB\fCaction\fR can be set to:
\fB\fCok|alternate\fR: accept entry and launch alternate action (for run launch in terminal).
\fB\fCcustom|alternate\fR: accept custom input and launch alternate action.
-.RE
-
.PP
To specify children, set the \fB\fCchildren\fR
property (this always happens on the \fB\fCbox\fR child, see example below):
@@ -1358,8 +1234,6 @@ Just like CSS, \fBrofi\fP uses the box model for each widget.
.PP
Explanation of the different parts:
-
-.RS
.IP \(bu 2
Content \- The content of the widget.
.IP \(bu 2
@@ -1372,8 +1246,6 @@ The border use the border\-color of the widget.
Margin \- Clears an area outside the border.
The margin is transparent.
-.RE
-
.PP
The box model allows us to add a border around elements, and to define space between elements.
@@ -1498,8 +1370,6 @@ Parts of the theme can be conditionally loaded, like the CSS \fB\fC@media\fR opt
.PP
It supports the following keys as constraint:
-
-.RS
.IP \(bu 2
\fB\fCmin\-width\fR: load when width is bigger then value.
.IP \(bu 2
@@ -1515,21 +1385,15 @@ It supports the following keys as constraint:
.IP \(bu 2
\fB\fCmonitor\-id\fR: The monitor id, see rofi \-help for id's.
-.RE
-
.SH Multiple file handling
.PP
The rasi file format offers two methods of including other files.
This can be used to modify existing themes, or have multiple variations on a theme.
-
-.RS
.IP \(bu 2
import: Import and parse a second file.
.IP \(bu 2
theme: Discard theme, and load file as a fresh theme.
-.RE
-
.PP
Syntax:
@@ -1548,8 +1412,6 @@ The specified file can either by \fIname\fP, \fIfilename\fP,\fIfull path\fP\&.
.PP
If a filename is provided, it will try to resolve it in the following order:
-
-.RS
.IP \(bu 2
\fB\fC${XDG\_CONFIG\_HOME}/rofi/themes/\fR
.IP \(bu 2
@@ -1559,8 +1421,6 @@ If a filename is provided, it will try to resolve it in the following order:
.IP \(bu 2
\fB\fC${INSTALL PREFIX}/share/rofi/themes/\fR
-.RE
-
.PP
A name is resolved as a filename by appending the \fB\fC\&.rasi\fR extension.
<