2017-08-03 10:48:07 -04:00
|
|
|
# V1.4.0: I reject your truth and trumpstitute my own
|
|
|
|
|
2017-09-04 10:19:12 -04:00
|
|
|
> This release contains some major changes. One of them being a new theme engine. The migration from older versions to
|
|
|
|
> this version might not go flawless.
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-09-04 03:12:22 -04:00
|
|
|
With more then 750 commits since the last version, this is one of the biggest releases so far.
|
2017-09-04 10:19:12 -04:00
|
|
|
In this version we used the groundwork laid in v1.3.0 and went completely nuts with it. Hopefully this release should
|
2017-09-04 16:20:46 -04:00
|
|
|
satisfy the die-hard desktop [ricers](https://www.reddit.com/r/unixporn/) with a brand new theme engine.
|
2017-09-04 10:19:12 -04:00
|
|
|
Lot of different colors, border, multiple fonts everything is now possible.
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-09-04 03:12:22 -04:00
|
|
|
Because of The great work done by [SardemFF7](https://github.com/SardemFF7/) the code base is simplified and the
|
2017-09-04 10:19:12 -04:00
|
|
|
key and mouse handling improved. The libraries provided by SardemFF7 also made it possible to add a often requested
|
|
|
|
feature of icons (correctly using the icon-theme). A feature I never expected to be added. To top this off, SardemFF7
|
|
|
|
added support to build rofi using [meson](http://mesonbuild.com/).
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-08-28 02:05:44 -04:00
|
|
|
A last big addition and still in beta, is support for plugins. Allowing the addition of some weird/fancy features.
|
|
|
|
Currently two plugins are available, [blezz](https://gitcrate.org/qtools/rofi-blezz) a quick launch menu with it own
|
|
|
|
menu definition and [top](https://gitcrate.org/qtools/rofi-top/) displaying running processes.
|
2017-08-03 10:48:07 -04:00
|
|
|
|
|
|
|
Beside these major changes, this release includes a lot of bug-fixes and small improvements. See the bottom of this
|
2017-09-04 10:19:12 -04:00
|
|
|
release notes for a more complete list of changes.
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-08-28 02:05:44 -04:00
|
|
|
|
2017-09-04 16:20:46 -04:00
|
|
|
## Theme engine
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-08-28 02:05:44 -04:00
|
|
|
The biggest new feature of this release is the theme engine. Building on the changes made in v1.3.0 we implemented a new
|
2017-09-04 16:20:46 -04:00
|
|
|
theme engine and it has a completely new theme format. While the themes are a lot more verbose now, it does allow for a
|
|
|
|
lot of extra customizations.
|
2017-08-28 02:05:44 -04:00
|
|
|
|
|
|
|
It is now possible to theme each widget in rofi independently:
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-08-19 10:30:13 -04:00
|
|
|
### Colors
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-08-28 02:05:44 -04:00
|
|
|
You can now set the color on each widget independent in most of the CSS supported color formats (hsl, cmyk, rgb, etc.)
|
2017-09-04 03:12:22 -04:00
|
|
|
and each color can have a transparency. There are three colors that can be set on each widget:
|
|
|
|
|
2017-09-24 11:34:36 -04:00
|
|
|
* **background-color**
|
2017-09-04 03:12:22 -04:00
|
|
|
Used to draw the background of the widget. Each widget is drawn on top of it parent, if the background is
|
|
|
|
transparent, you will see the parents widget.
|
2017-09-24 11:34:36 -04:00
|
|
|
* **border-color**
|
2017-09-04 03:12:22 -04:00
|
|
|
Used to draw the borders.
|
2017-09-24 11:34:36 -04:00
|
|
|
* **text-color**
|
2017-09-04 03:12:22 -04:00
|
|
|
Used to draw text. If not set the foreground color is used.
|
2017-08-19 10:30:13 -04:00
|
|
|
|
2017-09-02 16:31:29 -04:00
|
|
|
![rainbox](rofi-rainbow.png)
|
2017-08-19 10:30:13 -04:00
|
|
|
|
|
|
|
### Borders
|
|
|
|
|
|
|
|
On every widget we can now configure a border for each of the four sides, the color of the border, the style of the
|
2017-09-04 03:12:22 -04:00
|
|
|
border (solid or dashed) and the radius of the corners can be set.
|
2017-08-19 10:30:13 -04:00
|
|
|
|
2017-09-02 16:44:56 -04:00
|
|
|
![border1](rofi-border.png)
|
2017-08-19 10:30:13 -04:00
|
|
|
|
|
|
|
This combined with (fake) transparency can make for a very nice looking, rounded rofi experience.
|
|
|
|
|
2017-09-02 16:44:56 -04:00
|
|
|
![border2](rofi-border-transp.png)
|
2017-08-19 10:30:13 -04:00
|
|
|
|
|
|
|
### Fonts
|
|
|
|
|
|
|
|
An often made request was support for different fonts for the entry box and the list. With the new theme, it is possible
|
|
|
|
to change the font and size of all widgets.
|
|
|
|
|
2017-09-02 17:03:56 -04:00
|
|
|
![fonts](rofi-fonts.png)
|
2017-08-19 10:30:13 -04:00
|
|
|
|
2017-09-04 03:12:22 -04:00
|
|
|
> Note that opening a fonts is one of the slowest operations during rofi startup; having multiple fonts could have a
|
|
|
|
> significant impact on startup times.
|
|
|
|
|
2017-08-19 10:30:13 -04:00
|
|
|
### Flexible layout
|
|
|
|
|
|
|
|
To top all these changes, as an advanced feature the whole layout of the window can be changed. Making it possible to
|
|
|
|
mimic the original dmenu view, or make it appear as a minimal context menu.
|
|
|
|
|
2017-09-02 17:03:56 -04:00
|
|
|
![dmenu](rofi-dmenu.png)
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-09-04 03:12:22 -04:00
|
|
|
|
|
|
|
## Error reporting
|
|
|
|
|
|
|
|
The new theme parser will also be more verbose when encountering parsing errors, hopefully helping debugging and
|
|
|
|
modifying themes.
|
|
|
|
|
|
|
|
For example when forgetting a trailing ';' will report where it failed, and what it expected (a ';').
|
|
|
|
|
|
|
|
![rofi-error](rofi-error.png)
|
|
|
|
|
|
|
|
## Importing
|
|
|
|
|
|
|
|
The new theme parser also support importing and overriding. This allow you to make make modifications to an existing
|
|
|
|
theme, without having to completely copy it. For example, I want to use the `arthur` theme (shipped with rofi) but use
|
|
|
|
fake transparency and change the font off the result list.
|
|
|
|
|
|
|
|
```css
|
2017-09-04 10:19:12 -04:00
|
|
|
// Import the default arthur theme
|
2017-09-04 03:12:22 -04:00
|
|
|
@import "arthur"
|
|
|
|
|
2017-09-04 10:19:12 -04:00
|
|
|
/* on the window widget, set transparency to use a screenshot of the screen. */
|
2017-09-04 03:12:22 -04:00
|
|
|
#window {
|
|
|
|
transparency: "screenshot";
|
|
|
|
}
|
2017-09-14 04:10:57 -04:00
|
|
|
/* Override the font on the listview elements */
|
|
|
|
#element {
|
2017-09-04 03:12:22 -04:00
|
|
|
font: "Ubuntu Mono 18";
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2017-08-03 10:48:07 -04:00
|
|
|
## Icons
|
|
|
|
|
2017-09-14 04:10:57 -04:00
|
|
|
Another often made request, I never expected to be implemented, was icon support. With the help of SardemFF7 an
|
2017-08-19 10:30:13 -04:00
|
|
|
implementation was possible that correctly follows the XDG icon specification and does not negatively impact the
|
2017-09-14 04:10:57 -04:00
|
|
|
performance. Currently the drun and the window switcher can application icons.
|
2017-08-19 10:30:13 -04:00
|
|
|
|
2017-09-02 16:34:01 -04:00
|
|
|
|
|
|
|
![icons](rofi-icons.png)
|
2017-08-19 10:30:13 -04:00
|
|
|
|
2017-08-03 10:48:07 -04:00
|
|
|
|
|
|
|
## More flexible key and mouse bindings
|
|
|
|
|
2017-09-14 04:10:57 -04:00
|
|
|
Thanks to another great work of SardemFF7 you can now configure how the mouse
|
2017-09-03 06:32:01 -04:00
|
|
|
behave and bind modifier keys. It also improves on error messages. It will now
|
|
|
|
detect duplicate bindings.
|
|
|
|
|
|
|
|
For example to select an entry on single click, instead of double click:
|
|
|
|
|
|
|
|
```
|
|
|
|
rofi -show run -me-select-entry '' -me-accept-entry 'Mouse1'
|
|
|
|
```
|
|
|
|
|
|
|
|
|
2017-08-03 10:48:07 -04:00
|
|
|
## Fuzzy Matching
|
|
|
|
|
2017-09-03 06:32:01 -04:00
|
|
|
With thanks to Fangrui Song, the `fuzzy` matcher will now use a ranking similar to `fzf` to sort the results.
|
|
|
|
This should hopefully to improve the results, something a lot of users will appreciate.
|
|
|
|
|
|
|
|
Without:
|
|
|
|
|
|
|
|
![rofi no fzf](rofi-no-fzf.png)
|
|
|
|
|
|
|
|
With:
|
|
|
|
|
|
|
|
![rofi fzf](rofi-fzf.png)
|
|
|
|
|
|
|
|
|
2017-08-03 10:48:07 -04:00
|
|
|
## Initial Plugin support
|
|
|
|
|
2017-09-04 10:19:12 -04:00
|
|
|
> This feature is still in beta stage.
|
|
|
|
|
|
|
|
It is now possible to add custom mode via C plugins. This is allows interactive modi to be added to rofi.
|
|
|
|
For example it is possible to have `top` (display linux processes) mode:
|
2017-09-03 06:32:01 -04:00
|
|
|
|
|
|
|
![rofi top](rofi-top.png)
|
|
|
|
|
2017-09-04 10:19:12 -04:00
|
|
|
This mode allows sorting of the result on different keys (cpu usage, memory, etc.) to be selected, programs to be killed
|
|
|
|
and refreshes the results every 2 seconds.
|
|
|
|
|
|
|
|
|
2017-09-03 06:32:01 -04:00
|
|
|
See [here](https://gitcrate.org/qtools/rofi-top).
|
2017-08-03 10:48:07 -04:00
|
|
|
|
2017-08-28 02:05:44 -04:00
|
|
|
## Configuration File
|
|
|
|
|
2017-09-04 10:19:12 -04:00
|
|
|
> This feature is in alpha stage.
|
|
|
|
|
2017-08-28 02:05:44 -04:00
|
|
|
The new theme format can now (as an alpha) feature be used to set rofi's configuration. In the future, when we add
|
|
|
|
wayland support, we want to get rid of the current Xresources (X11) based configuration format.
|
|
|
|
You can see how this would look using: `rofi -dump-config`.
|
|
|
|
|
2017-08-03 10:48:07 -04:00
|
|
|
## Detailed Changelog
|
|
|
|
|
2017-09-03 09:40:49 -04:00
|
|
|
* Improved error messages
|
|
|
|
* Theme parsing.
|
2017-09-04 10:19:12 -04:00
|
|
|
* Keybinding. Duplicate bindings will now be reported.
|
|
|
|
* Invalid commandline options.
|
|
|
|
* Etc.
|
|
|
|
* Customizable highlight, allowing underline, strikethrough, italic, bold, small caps and the color to be set.
|
2017-09-03 09:40:49 -04:00
|
|
|
* Give up when keyboard is not grabbed in first 5 seconds.
|
2017-09-04 10:19:12 -04:00
|
|
|
* Improve manpage
|
2017-09-03 09:40:49 -04:00
|
|
|
* rofi (1)
|
|
|
|
* rofi-themes (5)
|
2017-09-04 10:19:12 -04:00
|
|
|
* Super-{1..10} hotkeys for selecting the first 10 rows.
|
|
|
|
* Allow x-align/y-align on textbox.
|
2017-09-03 09:40:49 -04:00
|
|
|
* Support matching bangs on multiple characters in combi mode. (#542)
|
|
|
|
* Set WM_CLASS (#549)
|
|
|
|
* Async pre-read 25 rows for improving user experience. (#550)
|
|
|
|
* Improve handling in floating window manager by always setting window size.
|
2017-09-04 10:19:12 -04:00
|
|
|
* DRun speedups.
|
|
|
|
* Make lazy-grab default.
|
2017-09-03 09:40:49 -04:00
|
|
|
* Remove extra layer in textbox. (#553)
|
|
|
|
* Ignore fonts that result in a family name or size 0. (#554)
|
|
|
|
* [Combi] Allow bang to match multiple modes. (#552)
|
|
|
|
* Add detection of window manager and work around quirks.
|
|
|
|
* Support dynamic plugins.
|
2017-08-03 10:48:07 -04:00
|
|
|
* DMENU tty detection.
|
2017-09-03 09:40:49 -04:00
|
|
|
* Support for icons in drun, combi and window mode.
|
2017-08-03 10:48:07 -04:00
|
|
|
* Startup notification of launched application support.
|
|
|
|
* Meson support.
|
|
|
|
* Fuzzy matching with fzf based sorting algorithm.
|
|
|
|
* Auto-detect DPI.
|
2017-09-03 09:40:49 -04:00
|
|
|
* Set cursor at the end of the input field. (#662)
|
|
|
|
* Meson support (thx to SardemFF7).
|
|
|
|
* [Script] parse the command as if it was commandline. (#650)
|
|
|
|
* Don't enable asan by meson. (#642)
|
|
|
|
* Allow text widgets to be added in theme and string to be set.
|
|
|
|
* [Dmenu] Support the -w flag.
|
|
|
|
* Allow window (via window id) to be location for rofi window.
|
|
|
|
* [Dmenu] Allow multi-select mode in `-no-custom` mode.
|
2017-09-04 10:19:12 -04:00
|
|
|
* Flex/Bison based parser for new theme format.
|
|
|
|
* Meson build support.
|
|
|
|
* Initial plugin support, exporting of pkg-config file for rofi.
|
|
|
|
* Improved positioning support for placing window on monitor.
|
|
|
|
* Allow rofi to be placed above window based on window id.
|
|
|
|
* Support different font per textbox.
|
|
|
|
* Keep cache of previous used fonts.
|
|
|
|
|