1# Release 0.15.12
2
3The 0.15.12 release of **rofi** focusses on improving overall user experience.  These improvements mostly focussed on
4three things, first we (tried to) fix the problems with complex keyboard layouts, second we tried to make theming of
5**rofi** easier. Also we added several speedups. Below I will highlight these bigger changes in more details
6
7Now that **rofi** reached an acceptable maturity level, we will start using more common
8version numbering. Right now rofi uses `0.year.month` for version numbers.
9Starting with next version the widely used `major.minor.bugfix` scheme will be used.
10This means, that next rofi version will either be
11
12* 0.15.13 (bugfix release)
13* 0.16.0 (minor release) or (if no major bugs are discovered)
14* 1.0.0 (major release)
15
16## Keyboard Layouts
17
18**Rofi** used to have problems with keyboard layouts that used modifier keys to switch between different layers.
19These problems should now be a thing of the past.
20
21**Note** the syntax for binding keys has slightly changed. The *Mod1*, *Mod2*, etc. keywords are no longer available.
22There was no good way to detect how these keys where mapped and if they could be used as modifiers.  E.g. if the right
23alt (say *Mod3*) is configured to switch between layouts, it cannot work as modifier key to make a `Mod3-p` keybinding.
24**Rofi** will now check if the current layout has the *SuperR*,*SuperL*,*AltGr*,*HyperL*,*HyperR* keys available.  If
25they are available they can be used for keybindings, if not, the user gets a warning.
26
27![Rofi Keyboard Warning](rofi-warning.png)
28
29## Speedups
30
31### DMenu reading from stdin
32
33**Rofi** used to have a custom `fgets` implementation that supported custom separators. The has been repaced by the
34`getdelim` feature of POSIX '08, this gave a speedup of 6x (from 648 ms for 202000 lines down to 108ms).
35
36### Multi-Core power
37
38Still disabled by default, **rofi** can now spawn multiple threads for filtering rows. Depending on the underlying
39hardware 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.
40It uses Glib's GThreadPool and will therefore spawn threads as needed and clean them up again afterwards.
41
42To enable this option pass the `-threads 0` option, this will autodetect the number number of hw-threads. Pass `-threads 4`
43to force it to use 4 threads. Setting the number to 1, disables it.
44
45
46## Themes
47
48**Rofi** color themes can be specified in a lot of detail, including the use of transparency to get desired results.
49However color syntax proved to be difficult and testing it can be a hassle. To solve this we added a web frontend for writing
50themes (with live preview) and a themes repository.
51
52To make things even easier, you can now take screenshots of **rofi** from within **rofi** with a simple keybinding.
53
54![Rofi Internal Screenshot](rofi-screenshot.png)
55
56### Theme repository
57
58This has been requested several times and rofi's website actually has a theming page. This however got outdated quickly
59and neither the themes or the screenshots are correct anymore. The newly added rofi-themes git repository allows you to
60add themes easily: Fork the repository and export your current color theme with **rofi -dump-xresources-theme**. Place
61it in the theme directory of the repository and run the update script. This will automatically generate screenshots and
62update the page.  Update your fork and send a pull request. This way your theme will appear on official themes page,
63once it's merged.
64
65The repository can be found [here](https://github.com/DaveDavenport/rofi-themes/)
66
67![Rofi Theme Site](rofi-theme-site.png)
68
69### Themenator
70
71The second tool is a website allowing you to easily create themes and preview all changes life, the
72[themenator](https://davedavenport.github.io/rofi/generator.html) Big thanks to
73[SardemFF7](https://github.com/sardemff7) who got tired of me complaining, took the very rough prototype and turned it
74into something beautiful.
75
76Hopefully people will make beautiful themes and submit them to the [theme repository](https://github.com/DaveDavenport/rofi-themes/).
77
78![Rofi Themenator](rofi-themenator.png)
79
80## Full ChangeLog
81
82### New features:
83- Initial `-dump` command for dmenu mode. (#216)
84- Threading support.
85    - Parallel checking for ASCII.
86    - Parallel string matching.
87    - Autodetect number of HW-threads.
88    - Disabled by default.
89- Highlight multiple selected rows (#287,#293)
90- Dmenu can read from file instead of stdin.
91- Regex matching (#113)
92- Take Screenshot of rofi using keybinding.
93- Hotkey for sorting: (#298)
94- Option to set scrollbar width.
95
96### Improvements:
97
98- Fix return code of multi-select.
99- Update manpage (#289, #291)
100- Improve speed of reading stdin in dmenu mode.
101- Correctly handle modifier keys now. Should now support most weird keyboard layouts and switching between them.
102(#268, #265, #286)
103- Correctly set locale, fixing issues with entering special characters. (#282)
104- DRun mode support `NoDisplay` setting (#283)
105- Pango markup is matched when filtering. (#273)
106
107### Bug fixes:
108
109- Improve error message (#290)
110- Correctly switch to next entry on multi-select when list is filtered (#292)
111- Switch __FUNCTION__ for __func__. (#288)
112- Fix segfault on empty list and moving through it. (#256,#275)
113- Fix one off of colors (#269)
114- Drun fix uninitialized memory (#285)
115