Releases: davatorium/rofi
Greg is Luci
Release 0.15.12
The 0.15.12 release of rofi focusses on improving overall user experience. These improvements mostly focussed on
three things, first we (tried to) fix the problems with complex keyboard layouts, second we tried to make theming of
rofi easier. Also we added several speedups. Below I will highlight these bigger changes in more details
Now that rofi reached an acceptable maturity level, we will start using more common
version numbering. Right now rofi uses 0.year.month for version numbers.
Starting with next version the widely used major.minor.bugfix scheme will be used.
This means, that next rofi version will either be
- 0.15.13 (bugfix release)
- 0.16.0 (minor release) or (if no major bugs are discovered)
- 1.0.0 (major release)
Keyboard Layouts
Rofi used to have problems with keyboard layouts that used modifier keys to switch between different layers.
These problems should now be a thing of the past.
Note the syntax for binding keys has slightly changed. The Mod1, Mod2, etc. keywords are no longer available.
There was no good way to detect how these keys where mapped and if they could be used as modifiers. E.g. if the right
alt (say Mod3) is configured to switch between layouts, it cannot work as modifier key to make a Mod3-p keybinding.
Rofi will now check if the current layout has the SuperR,SuperL,AltGr,HyperL,HyperR keys available. If
they are available they can be used for keybindings, if not, the user gets a warning.
Speedups
DMenu reading from stdin
Rofi used to have a custom fgets implementation that supported custom separators. The has been repaced by the
getdelim feature of POSIX '08, this gave a speedup of 6x (from 648 ms for 202000 lines down to 108ms).
Multi-Core power
Still disabled by default, rofi can now spawn multiple threads for filtering rows. Depending on the underlying
hardware we saw a 1.5x speedup running on a dual core ARM and up to a 3.5x speedup on a quadcore (8 threads) i7 CPU.
It uses Glib's GThreadPool and will therefore spawn threads as needed and clean them up again afterwards.
To enable this option pass the -threads 0 option, this will autodetect the number number of hw-threads. Pass -threads 4
to force it to use 4 threads. Setting the number to 1, disables it.
Themes
Rofi color themes can be specified in a lot of detail, including the use of transparency to get desired results.
However color syntax proved to be difficult and testing it can be a hassle. To solve this we added a web frontend for writing
themes (with live preview) and a themes repository.
To make things even easier, you can now take screenshots of rofi from within rofi with a simple keybinding.
Theme repository
This has been requested several times and rofi's website actually has a theming page. This however got outdated quickly
and neither the themes or the screenshots are correct anymore. The newly added rofi-themes git repository allows you to
add themes easily: Fork the repository and export your current color theme with rofi -dump-xresources-theme. Place
it in the theme directory of the repository and run the update script. This will automatically generate screenshots and
update the page. Update your fork and send a pull request. This way your theme will appear on official themes page,
once it's merged.
The repository can be found here
Themenator
The second tool is a website allowing you to easily create themes and preview all changes life, the
themenator Big thanks to
SardemFF7 who got tired of me complaining, took the very rough prototype and turned it
into something beautiful.
Hopefully people will make beautiful themes and submit them to the theme repository.
Full ChangeLog
New features:
- Initial
-dumpcommand for dmenu mode. (#216) - Threading support.
- Parallel checking for ASCII.
- Parallel string matching.
- Autodetect number of HW-threads.
- Disabled by default.
- Highlight multiple selected rows (#287,#293)
- Dmenu can read from file instead of stdin.
- Regex matching (#113)
- Take Screenshot of rofi using keybinding.
- Hotkey for sorting: (#298)
- Option to set scrollbar width.
Improvements:
- Fix return code of multi-select.
- Update manpage (#289, #291)
- Improve speed of reading stdin in dmenu mode.
- Correctly handle modifier keys now. Should now support most weird keyboard layouts and switching between them.
(#268, #265, #286) - Correctly set locale, fixing issues with entering special characters. (#282)
- DRun mode support
NoDisplaysetting (#283) - Pango markup is matched when filtering. (#273)
Bug fixes:
0.15.11
0.15.10
New feature:
- Support for Startup Notification
- Standalone mode in dmenu
- ssh: known_hosts parsing
- Full screen support
- Glob style matching
- Cairo drawing
- Fast ascii filtering (thx to Tom Hinton)
- Combi bang support
- normal window mode for dmenu
- Startup notification support
- Current desktop window mode
Improvements:
- Keep same line selected
- Cleanup menu code by re-using Switcher
- Fix drawing on resize
- Fix rofi -h output
- allow disabling of tokenizing
- Dragging scrollbar
- Allow none type on separator
- Dmenu support markup in fields
Bug fixes:
- dmenu use switcher system
- release keyboard on focus out event, regrab it on focus in event
- Support
\0separator
0.15.8
New feature:
- Scrollbar.
- More custom keybindings.
Improvements:
- dmenu compatibility.
- Don't refilter on all keypresses.
- Hide Docks and desktops from the window list. (remove i3bar hack)
Bug fixes:
- Fix Desktop numbering.
- Mis-alignment of arrow down box with message (#189)
- Fix issue with mouse interaction needing keyboard press to complete.
- Fix -no-custom still allows escape to quit.
- Fix compiler warnings.
- Fix dmenu mode. (#200)
- Break CMD AI to have dmenu compatibility.
- Fix processing of signals.
0.15.7
- Bug fixes:
- New feature:
- Improvements:
- Make more keys user-configurable. (#66)
0.15.5
0.15.5
Bug fixes:
- Reduce time waiting for keyboard grab (#153)
- Also grab Key Release on exit. (#167)
- Fix failing font size estimation code.
New feature:
- [DMENU] Allow to select line matching pattern from cmdline.(#165)
- [DMENU] Allow to set filter from cmdline. (#164)
- [DMENU] Allow output to be formatted (string, filter, index, index 1 based)
- [DMENU] Only match input lines mode.
- [DMENU] Custom keybinding for return value.(#154,#156)
- [DMENU] Allow additional message line. (#166)
Improvements:
- (Start) adding keybinding support (#131)
- Cleanup warnings from clang checkers.
- Fix keybindings on Russian layout (#169)
Open bugs:
- Urgency hint not always working (#162)
0.15.4
New feature:
- Number mode for dmenu. allows user to get index back instead of content.
- Combi mode. Combine multiple views into one.
- Highlight current window.
- Highlight urgent and active row in window view.
- DMenu allow rows to be highlighted. (single, multiple, ranges)
- New color specification based on I3. (Can be enabled by settings) (#147)
- /etc/hosts support for ssh mode. (#137)
Bug fixes:
- On a single item in list disable auto-select.
- Fix cursor position (#140)
- Resolving manpage. (#142)
- Fix pasting cursor one off. (#150)
- Fix grave key -> ctrl+grave (#151)
Improvements:
- Better handle input methods.. Now international keyboard layout works as expected: `e ->è
- Be more verbose about starting in daemon mode.
- Print a user-understandable error when launching in daemon mode without a key bound.
- Add Ctrl(Shift)Tab to switch modi's.
- Auto size number of columns based on available columns.
- Better way to determine font height.
- Fix font vertical centering.
- One-off when pasting text.
- Improve rendering of boxes (fixed height and margins)
- Fix modi switcher boxes size+layout.
- Reduce work on redraws (do not always calculate new size/position), set text, etc.
- OO-ify the switchers.
- Remove unneeded filtered array.
Cleanup:
- Do not lug argc,argv around everywhere.
0.15.2
Rofi 0.15.2 Release
Another months, another Rofi release. This release cycle the focus lay on improving maintainability
and bug fixes. The downside of this release is broke some configuration and command-line
settings. So please read the manpage before updating.
Maintainability
Configuration parser
To improve maintainability, the command-line parser and the Xresource parser are now merged . They
use the same definition set for the configuration options. This will make adding options easier, and
guarantees that the options are consistent. This change should not impact the user directly.
Launching modi
Since July there been duplicate code to launch a modi, there was the '-now' or '-rnow' and the
'-show modi' option. The first ones have been removed. While changing this, also the keybinding
options have been changed. Instead of having hard-coded options for window,run and ssh you can now
set a binding for any modi.
--key-<modi> *key*.
Example to launch run dialog:
rofi -show run
Example to start Rofi in daemon mode and set ssh launcher keybinding:
rofi -key-ssh alt-F3
This now also works for custom mode:
rofi -key-calc alt-F1 --modi "calc:qcalc"
This fixes bug 128.
Code restructuring
The internal code has been split out and restructured over multiple files.
All the code for the different modi, i3-support and more have been separated.
This biggest file now only has 1266 lines of code. Every mode has it own file, and the same goes for
shared functionality (like X11 wrappers, history, etc.).
Some statistics (at the time of writing):
Code Comment Comment % Blank Total File
--------- --------- --------- --------- ---------
309 77 19.9% 60 446 x11-helper.c
101 39 27.9% 18 158 i3-support.c
522 80 13.3% 83 685 textbox.c
179 66 26.9% 27 272 history.c
314 92 22.7% 32 438 helper.c
152 58 27.6% 30 240 ssh-dialog.c
207 57 21.6% 45 309 run-dialog.c
119 30 20.1% 22 171 script-dialog.c
67 31 31.6% 14 112 dmenu-dialog.c
310 94 23.3% 67 471 window-dialog.c
1266 367 22.5% 162 1795 rofi.c
270 40 12.9% 38 348 xrmoptions.c
19 112 85.5% 14 145 helper.h
9 46 83.6% 8 63 history.h
6 21 77.8% 5 32 i3-support.h
79 118 59.9% 16 213 rofi.h
67 144 68.2% 31 242 textbox.h
47 67 58.8% 21 135 x11-helper.h
18 36 66.7% 7 61 xrmoptions.h
6 10 62.5% 4 20 dmenu-dialog.h
4 8 66.7% 2 14 run-dialog.h
11 26 70.3% 5 42 script-dialog.h
4 8 66.7% 2 14 ssh-dialog.h
4 0 0.0% 2 6 window-dialog.h
Having only a little over 4000 lines of code is not bad for a project like this.
Bug Fixes
Because nobody is perfect, and this goes double for me, there have been a few bug-fixes as well.
Word movement/deletion
This was a long open issues from when work was done on keybindings. After another bug
report came up for this it was time to fix.
The fix is not perfect (this is suspiciously hard to do right when you read the UTF-8 specs.) but it
seems to be working good enough (tm).
This fixes bug 125.
Documentation updates
With big thanks to several contributers, several documentation bugs have been resolved.
This fixes bug: 123,
116,
124, etc.
Slow start-up issues
Here a multiple of things are fixed. There was a problem with Rofi sometimes missing a key-entry,
when it was slow to respond (mostly appearing on start-up). This has been fixed.
A second issue that arose was a (small) delay grabbing the keyboard when launching. This delay was
around 100-500ms and once you notice it, very annoying. This has now been 'hidden' by making the
grabbing happen non-blocking, so Rofi can continue drawing the window.
Duplicate instances
Rofi now uses a PID-file with file-locking to avoid running multiple instances of itself. In the
past it was very easy to launch two instances simultaneous, they would both compete for the
keyboard and mouse, once one had successfully grabbed it, the other would give up and quit after 1
second. This was not ideal, but most people did not notice. With the previous fix, this actually
became a more serious issue. This PID file should solve this.
Auto select mode
This re-introduces the previously removed zeltak mode. If enabled when filtering one item remains
it is automatically selected.
Removed features
HMode
This was a lot of ugly if-statements for code that did not reliably work and most of the time gave
an ugly result. After nursing it for a while and people trying and failing to fix it, I decided to
remove it.
Download
As always, the release can be found on the Rofi website or
on github.
Contributers
Big thanks to all contributers who made this release possible:
- Bruno Braga
- Daniel Hahler
- Dave Davenport
- Deiwin Sarjas
- Edwin Pujols
- Eric Engeström
- Georgios Bitzes
- Greg Fitzgerald
- Hexchain Tong
- Peter Cannici
- Rasmus Steinke
- Tilman Blumenbach
- qedi
- seanpringle
- vimeitor
Logo
I am still looking for an application icon/logo for Rofi.
1 Year party
0.15.1 Release 0.15.1
0.14.12
Bump version to 0.14.12



