What's new in Fuzzel 1.10
![What's new in Fuzzel 1.10](/content/images/size/w1200/2024/07/fuzzel-swayr-example.png)
Fuzzel is a rofi alternative for Wayland. It's a versatile picker and launcher utility for desktop Linux.
The last time I gave an update on Fuzzel was when 1.8 released which compared it to some altenatives. Let's look at some recent feature additions since then.
New --dmenu0 option
Perhaps you have some input that multiple lines per option and you'd like to pick one of them. Now you send that input to Fuzzel null-separated with the --dmenu option. The input will appear on a single line, but Fuzzel will output the item you select with the newlines intact. (#197)
Launch apps in their own cgroups
Instead of launching apps directly, a --launch-prefix
can be used. What's that's done, the FUZZEL_DESKTOP_FILE_ID
will be set. In combination, then can be used to set --launch-prefix=wrapper.sh
where the wrapper looks something like this:
#!/bin/bash
app=$1
shift
systemd-run --unit=${app}@${RANDOM} -- ${app} $@
Using systemd-run
places applications in their own cgroup, which allows stuff like the Out of Memory Killer (oomd) to selectively kill applications instead of taking down the whole session. Using the executable as the "application id" is not ideal: it can change between distribution (in case of name conflicts) and it does not always map to the application name. The new environment variable being set fixes that. (#110)
New keybindings
Several new default keybindings were added, improving compatibility with dmenu and Rofi.
- Now you can go to the first and last lines with
Control+Home
andControl+End
by default. Set alternate bindings with[key-bindings].first
and[key-bindings].last
(#210) - Users of
bemenu
or the hamster-dmenu time tracker may appreciate that's there now ThatControl+Tab
will now insert the selected item as the filter by default. This can help build more complex interfaces. Update the binding with[key-bindings].insert-selected
(#212) - Improving compatibility with
dmenu
, you can now useControl+u
by default to delete everything before the cursor. Update the keybinding withdelete-line-backward
. As part of this, thedelete-line
binding got renamed todelete-line-forward
(#307). - Another
dmenu
feature, now Fuzzel now supports ignoring the selected options and executing the input withShift+Enter
. This allows users to pick an option that is "none of the above" and proceed. Keybinding name isexecute-input
. (#252).
Wayland features
- Startup activation was improved for compositors that support it to launch apps on the correct work space in more cases.
- Support for the
cursor-shape-v1
Wayland protocol adds support for custom cursor shapes. - Support for
wp_fractional_scale_v1
(i.e. true fractional scaling) (#320).
Improved theme support
The Fuzzel config file now supports an include=<path>
syntax allowing you to include other config fragments. A great use-cause would be themes published as standalone config fragments. (#205).
Only show you apps for your desktop
If you want to hide apps that don't apply to your desktop, you can add filter-desktop=yes
to the main section of your fuzzel.ini
This toggles filtering of .desktop
files based on whether the values of OnlyShowIn and NotShowIn keys match $XDG_CURRENT_DESKTOP.
Anchor the window position
Fuzzel can now anchor the window to different positions– a feature that some other launchers like wl-dmenu
had. The new --anchor
allows setting the window position anchor (i.e. where on the screen the window should generally be positioned), such as top
, top-left
, bottom-right
, center
, etc. Defaults to center
This can be set in fuzzel.ini
as well. (#130).
I use this feature to create a small input window to rename my current Sway workspace. I set a Sway keybinding to run this script:
#!/bin/fish
set num (swaymsg -t get_workspaces | jq -r "map(select(.focused))[0].num");
set newname (echo '' | fuzzel --dmenu --lines=0 --anchor bottom -p 'New name for this workspace: ');
swaymsg "rename workspace to $num:$newname"
Yes, it's weird to pipe in empty input and pass `--lines=0`. There's an open feature request to support --prompt-only
like dmenu -po
Select a specific entry by default
A feature that Rofi has is rofi -menu -select
to select a specific entry by default. Some examples of how this could be used include (#237).:
- Maintaining context in nested menu script
- Pre-selecting today's date when showing a list of dates
- When returning several MIME types, pre-select the first plain-text one.
To support this, Fuzzel has added --select=STRING
as a command line and config file option.
Pick a binary to run
Fuzzel now has an option to add all binaries in $PATH to the list. That's the new --list-executables-in-path
option. (#284).
Comments ()