5.6 KiB
1.6.0: The Masked Launcher
More then 2 years after the 1.5.0 release and a year after 1.5.4, we present rofi 1.6.0. This release is again focusses bug-fixing and improving the experience for themers and script developers. The script mode has been extended with many small requested tweaks to get it more on par with dmenu mode. For themers the listview has been made more flexible, allowing more fancy themes, for examples mimicking Gnomes application launcher or albert.
Big thanks to SardemFF7 and all the other contributors, without their support and contributions this release would not have been possible.
Script mode
Rofi now communicates some information back to the script using environment variables.
The most important one, is ROFI_RETV
, this is equal to the return value in dmenu mode.
It can have the following values:
- 0: Initial call of script.
- 1: Selected an entry.
- 2: Selected a custom entry.
- 10-28: Custom keybinding 1-19
To fully read up on all features of script mode, there is now a rofi-script(5)
manpage.
Some of the new features are:
- Search invisible text
- Pass extra information back on selection
- Support for a custom delimiter
- Support for dmenus no-custom option
- Detect if launched from rofi
To test some of the features:
#!/usr/bin/env bash
if [ -z "${ROFI_OUTSIDE}" ]
then
echo "run this script in rofi".
exit
fi
echo -en "\x00no-custom\x1ftrue\n"
echo -en "${ROFI_RETV}\x00icon\x1ffirefox\x1finfo\x1ftest\n"
if [ -n "${ROFI_INFO}" ]
then
echo "my info: ${ROFI_INFO} "
fi
Theme
There have been a set of tweaks to the theme format, making it more flexible and hopefully more themer-friendly.
Listview flexibility
This is one of the biggest change, instead of the listview having a hacked textbox as elements. It now re-uses existing widgets like box, icon and textbox. This way you can re-structure how it looks. For example put the icon above the text.
With theme:
element {
orientation: vertical;
}
This will make the box element
put element-icon
and element-text
in a vertical list.
or change the ordering to show icon on the right:
element {
children: [element-text, element-icon];
}
This causes a breaking change for themes, to modify the highlighting, this should be set to element-text
.
Or inherited. element-text { highlight: inherit; }
.
Calculation support in theme format.
Rofi adds CSS like calculations in the CSS format for distances. You can now set the width of the window to the screen width minus a 10 pixels.
window {
width: calc(100% - 10px);
}
It supports: -
, +
, /
, *
and %
operators and they should be surrounded by whitespace.
Initial media support
This is a very initial implementation of CSS like @media
support. This allows you to modify the theme
based on screen size or ratio.
We currently support: minimum width, minimum height, maximum width, maximum height, monitor id, minimum acpect ratio or maximum acpect ratio.
For example, go to fullscreen mode on screens smaller then full HD:
@media (max-width: 1920px ) {
window {
fullscreen: true;
}
}
List of Changes
- Add
themes/
directory in the users rofi config directory to the theme search path. (#1001) - Split listview element into box widget holding icon and textbox. Supporting more dynamic themes. (#949)
- Fix default theme.
- Add -upgrade-config option.
- Add
ROFI_PLUGIN_PATH
variable. - Add check for running rofi inside a Script mode.
- Remove gnome-terminal from rofi-sensible-terminal (#1074)
- Set window title based on mode name. (#969)
- Subpixel rendering workaround. (#303)
- Support character type in configuration {} block . (#1131)
- Use
XDG_CONFIG_DIRS
(#1133) - [Box] Bug fix update propagation.
- [Build] Fix meson build with meson 0.55.
- [DMenu] Add
-keep-right
flag. (#1089) - [DMenu] Don't match markup when filtering. (#579,#1128)
- [DRUN] Support Type=Link (#1166)
- [DRun] Add % to escape variable.
- [DRun] Add an optional cache for desktop files. (#1040)
- [DRun] Add keywords as default match item. (#1061)
- [DRun] Don't run custom commands.
- [DRun] Match keywords field.
- [DRun] Only show selected categories. (#817)
- [Dmenu|Script] Add non-selectable entries. (#1024)
- [Doc] Update documentation.
- [IconFetcher] Add jpeg support.
- [Icon] Set default size to 1.2 CH.
- [Icon] support distance for size.
- [Listview] Add widget to show keybinding index. (#1050)
- [Listview] Fix distribution of remaining space.
- [Listview] Fix left-to-right scrolling. (#1028)
- [Listview] Fix updating elements. (#1032)
- [Matching] Make Fuzzy matching non greedy.
- [Script] Add delimiter option. (#1041)
- [Script] Add environment variable indicating state.
- [Script] Add extra matchign field (meta). (#1052)
- [Script] Add info option, hidden field that gets passed to script via
ROFI_INFO
environment. - [Script] Add no-custom option.
- [Textbox] Add cursor blinking option.
- [Textbox] Add placeholder. (#1020)
- [Theme] Add
calc()
support. (#1105) - [Theme] Add alpha channel to highlight color. (#1033)
- [Theme] Add sidebar as mode-switcher alias.
- [Theme] Add some initial @media support. (#893)
- [Theme] Support buttons in the UI.
- [View] Add two widgets. One showing number of rows, other number of filtered rows. (#1026)
- [Window] Add window thumbnail option.
- [Window] Remove arbitrary # window limit. (#1047)
- [Window] check buffer overflow.