Skip to content

Releases: davatorium/rofi

Greg is Luci

27 Dec 18:47

Choose a tag to compare

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.

Rofi Keyboard 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.

Rofi Internal Screenshot

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

Rofi Theme Site

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.

Rofi Themenator

Full ChangeLog

New features:

  • Initial -dump command 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 NoDisplay setting (#283)
  • Pango markup is matched when filtering. (#273)

Bug fixes:

  • Improve error message (#290)
  • Correctly switch to next entry on multi-select when list is filtered (#292)
  • Switch FUNCTION for func. (#288)
  • Fix segfault on empty list and moving through it. (#256,#275)
  • Fix one off of colors (#269)
  • Drun fix uninitialized memory (#285)

0.15.11

08 Nov 09:46

Choose a tag to compare

New features:

  • (Experimental) Desktop file support

Improvement:

  • Add xdg-terminal to rofi-sensible-terminal

Bug fixes:

  • manpage fixes (#261)
  • Crash in error mesg on invalid config
  • Fix urgent and active being activated at same time
  • Fix crasher on empty list

0.15.10

25 Oct 11:27

Choose a tag to compare

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 \0 separator

0.15.8

06 Sep 14:39

Choose a tag to compare

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

11 Jul 15:38

Choose a tag to compare

  • Bug fixes:
    • Auto-wrap text in message dialog.
    • Fix ellipsiziing in entry box.
    • Fix crash on empty list with custom input (#175).
    • SSH: Ignore comments in Host line (#178).
    • Fix issues with BSD (#180).
  • New feature:
    • Markup support error message.
    • Implement -no-custom as alternative to -only-select (#176).
    • Fuzzy match option. (#133)
  • Improvements:
    • Make more keys user-configurable. (#66)

0.15.5

30 May 14:04

Choose a tag to compare

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

26 Apr 09:37

Choose a tag to compare

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

27 Feb 14:15

Choose a tag to compare

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

24 Jan 16:14

Choose a tag to compare

0.15.1

Release 0.15.1

0.14.12

07 Dec 15:08

Choose a tag to compare

Bump version to 0.14.12