diff options
author | Dave Davenport <qball@gmpclient.org> | 2020-05-04 13:16:33 +0200 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2020-05-04 13:16:33 +0200 |
commit | 575bf2593a5625e515351bdbab582cc50d39b13a (patch) | |
tree | b9987914dba038b21f3ea9a1f35bb99010b8a091 | |
parent | 38cc849239570fc7e3da575f4a0b6d86e11381e9 (diff) | |
parent | d3218c75a4ad7722c77f164955b3ed29c8ead1a9 (diff) |
Merge remote-tracking branch 'origin/next' into fbcomplete
-rw-r--r-- | .github/ISSUE_TEMPLATE/config.yml | 8 | ||||
-rw-r--r-- | .travis.yml | 216 | ||||
-rw-r--r-- | config/config.c | 2 | ||||
-rw-r--r-- | doc/rofi-script.5 | 12 | ||||
-rw-r--r-- | doc/rofi-theme-selector.1 | 4 | ||||
-rw-r--r-- | doc/rofi-theme.5 | 238 | ||||
-rw-r--r-- | doc/rofi-theme.5.markdown | 19 | ||||
-rw-r--r-- | doc/rofi.1 | 70 | ||||
-rw-r--r-- | doc/rofi.1.markdown | 6 | ||||
-rw-r--r-- | include/rofi-types.h | 29 | ||||
-rw-r--r-- | include/theme.h | 1 | ||||
-rw-r--r-- | lexer/theme-lexer.l | 9 | ||||
-rw-r--r-- | lexer/theme-parser.y | 133 | ||||
-rw-r--r-- | source/theme.c | 211 | ||||
-rw-r--r-- | source/widgets/listview.c | 23 | ||||
-rw-r--r-- | source/widgets/scrollbar.c | 2 | ||||
-rw-r--r-- | source/widgets/widget.c | 10 | ||||
-rw-r--r-- | source/xrmoptions.c | 2 | ||||
-rw-r--r-- | test/theme-parser-test.c | 103 |
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. < |