Application launchers are a category of productivity software that not everyone is familiar with, and yet most people use the basic concepts without realizing it. As the name implies, this (type of) software launches applications, but they can also have other capiblities.
Examples of dedicated Linux launchers include dmenu, Synapse, and Albert. On MacOS, some examples are Quicksilver and Alfred. Many modern desktops include basic versions as well. On Fedora Linux, the Gnome 3 activities overview uses search to open applications and more, while MacOS has the built-in launcher Spotlight.
While these applications have great feature sets, this article focuses on productivity with Ulauncher.
What is Ulauncher?
Ulauncher is a new application launcher written in Python, with the first Fedora package available in March 2020 for Fedora Linux 32. The core focuses on basic functionality with a nice interface for extensions. Like most application launchers, the key idea in Ulauncher is search. Search is a powerful productivity boost, especially for repetitive tasks.
Typical menu-driven interfaces work great for discovery when you aren’t sure what options are available. However, when the same action needs to happen repeatedly, it is a real time sink to navigate into 3 nested sub-menus over and over again. On the other side, hotkeys give immediate access to specific actions, but can be difficult to remember. Especially after exhausting all the obvious mnemonics. Is Control+C “copy”, or is it “cancel”? Search is a middle ground giving a means to get to a specific command quickly, while supporting discovery by typing only some remembered word or fragment. Exploring by search works especially well if tags and descriptions are available. Ulauncher supplies the search framework that extensions can use to build all manner of productivity enhancing actions.
Getting the core functionality of Ulauncher on any Fedora OS is trivial; install using dnf:
sudo dnf install ulauncher
Once installed, use any standard desktop launching method for the first start up of Ulauncher. A basic dialog should pop up, but if not try launching it again to toggle the input box on. Click the gear icon on the right side to open the preferences dialog.
A number of options are available, but the most important when starting out are Launch at login and the hotkey. The default hotkey is Control+space, but it can be changed. Running in Wayland needs additional configuration for consistent operation; see the Ulauncher wiki for details. Users of “Focus on Hover” or “Sloppy Focus” should also enable the “Don’t hide after losing mouse focus” option. Otherwise, Ulauncher disappears while typing in some cases.
The idea of any application launcher, like Ulauncher, is fast access at any time. Press the hotkey and the input box shows up on top of the current application. Type out and execute the desired command and the dialog hides until the next use. Unsurprisingly, the most basic operation is launching applications. This is similar to most modern desktop environments. Hit the hotkey to bring up the dialog and start typing, for example te, and a list of matches comes up. Keep typing to further refine the search, or navigate to the entry using the arrow keys. For even faster access, use Alt+# to directly choose a result.
Ulauncher can also do quick calculations and navigate the file-system. To calculate, hit the hotkey and type a math expression. The result list dynamically updates with the result, and hitting Enter copies the value to the clipboard. Start file-system navigation by typing / to start at the root directory or ~/ to start in the home directory. Selecting a directory lists that directory’s contents and typing another argument filters the displayed list. Locate the right file by repeatedly descending directories. Selecting a file opens it, while Alt+Enter opens the folder containing the file.
The first bit of customization comes in the form of shortcuts. The Shortcuts tab in the preferences dialog lists all the current shortcuts. Shortcuts can be direct commands, URL aliases, URLs with argument substitution, or small scripts. Basic shortcuts for Wikipedia, StackOverflow, and Google come pre-configured, but custom shortcuts are easy to add.
For instance, to create a duckduckgo search shortcut, click Add Shortcut in the Shortcuts preferences tab and add the name and keyword duck with the query https://duckduckgo.com/?q=%s. Any argument given to the duck keyword replaces %s in the query and the URL opened in the default browser. Now, typing duck fedora will bring up a duckduckgo search using the supplied terms, in this case fedora.
A more complex shortcut is a script to convert UTC time to local time. Once again click Add Shortcut and this time use the keyword utc. In the Query or Script text box, include the following script:
#!/bin/bash tzdate=$(date -d "$1 UTC") zenity --info --no-wrap --text="$tzdate"
This script takes the first argument (given as $1) and uses the standard date utility to convert a given UTC time into the computer’s local timezone. Then zenity pops up a simple dialog with the result. To test this, open Ulauncher and type utc 11:00. While this is a good example showing what’s possible with shortcuts, see the ultz extension for really converting time zones.
While the built-in functionality is great, installing extensions really accelerates productivity with Ulauncher. Extensions can go far beyond what is possible with custom shortcuts, most obviously by providing suggestions as arguments are typed. Extensions are Python modules which use the Ulauncher extension interface and can either be personally-developed local code or shared with others using GitHub. A collection of community developed extensions is available at https://ext.ulauncher.io/. There are basic standalone extensions for quick conversions and dynamic interfaces to online resources such as dictionaries. Other extensions integrate with external applications, like password managers, browsers, and VPN providers. These effectively give external applications a Ulauncher interface. By keeping the core code small and relying on extensions to add advanced functionality, Ulauncher ensures that each user only installs the functionality they need.
Installing a new extension is easy, though it could be a more integrated experience. After finding an interesting extension, either on the Ulauncher extensions website or anywhere on GitHub, navigate to the Extensions tab in the preferences window. Click Add Extension and paste in the GitHub URL. This loads the extension and shows a preferences page for any available options. A nice hint is that while browsing the extensions website, clicking on the Github star button opens the extension’s GitHub page. Often this GitHub repository has more details about the extension than the summary provided on the community extensions website.
Firefox bookmarks search
One useful extension is Ulauncher Firefox Bookmarks, which gives fuzzy search access to the current user’s Firefox bookmarks. While this is similar to typing *<search-term> in Firefox’s omnibar, the difference is Ulauncher gives quick access to the bookmarks from anywhere, without needing to open Firefox first. Also, since this method uses search to locate bookmarks, no folder organization is really needed. This means pages can be “starred” quickly in Firefox and there is no need to hunt for an appropriate folder to put it in.
Using a clipboard manager is a productivity boost on its own. These managers maintain a history of clipboard contents, which makes it easy to retrieve earlier copied snippets. Knowing there is a history of copied data allows the user to copy text without concern of overwriting the current contents. Adding in the Ulauncher clipboard extension gives quick access to the clipboard history with search capability without having to remember another unique hotkey combination. The extension integrates with different clipboard managers: GPaste, clipster, or CopyQ. Invoking Ulauncher and typing the c keywords brings up a list of recent copied snippets. Typing out an argument starts to narrow the list of options, eventually showing the sought after text. Selecting the item copies it to the clipboard, ready to paste into another application.
The last extension to highlight is Google Search. While a Google search shortcut is available as a default shortcut, using an extension allows for more dynamic behavior. With the extension, Google supplies suggestions as the search term is typed. The experience is similar to what is available on Google’s homepage, or in the search box in Firefox. Again, the key benefit of using the extension for Google search is immediate access while doing anything else on the computer.
Productivity on a computer means customizing the environment for each particular usage. A little configuration streamlines common tasks. Dedicated hotkeys work really well for the most frequent actions, but it doesn’t take long before it gets hard to remember them all. Using fuzzy search to find half-remembered keywords strikes a good balance between discoverability and direct access. The key to productivity with Ulauncher is identifying frequent actions and installing an extension, or adding a shortcut, to make doing it faster. Building a habit to search in Ulauncher first means there is a quick and consistent interface ready to go a key stroke away.
Peter V Daniels
This is just fantastic. Great Stuff.
Peter V Daniels
Awesome but… Wayland support is half baked (Fedora default) and it needs a TRAY to work properly (Gnome got rid of tray and Fedora doesn’t provide plugin for appindicator by default?).
Troy Curtis Jr
Regarding the Wayland support, I think it is just a limitation of what Wayland gives to user space applications. Even mutter on Gnome seems to have some troubles, especially around window focus and focus on hover (can you tell I’m battling that right now 😉). Personally, after setting up the hotkey in Gnome directly (which I actually have to do even in X11 because of my chosen key combination), Ulauncher seems to run great under Wayland.
I don’t find any need for a tray with Ulauncher. While there is an icon that will show up if available, all it does is give a different way of getting to the preferences. It really is just an extra and not needed for normal usage.
well, I prefer rofi
Seems like Spotlight on MacOS, cool stuff !
Ulauncher has some basic issues that need to be addressed. (Yes, I have submitted them on the Ulauncher GitHub.)
It’s the only launcher I’ve encountered that fails to respect the NotShowIn and OnlyShowIn tags for .desktop files, so it will inappropriately show applications that aren’t supposed to be seen in your current desktop environment. Mine will show three different applications named “Preferred Applications” if I have Xfce, MATE and Cinnamon all installed on the same machine, and it’s impossible to tell which application belongs to which desktop environment. Other launchers like Albert don’t do this.
Another issue is that, if you have an application with accented characters in its name, Ulauncher will fail to show it if you enter the unaccented character while searching. The example I ran into was the GUI for Touchegg, called Touché. Albert and other app launchers would correctly show Touché in the list if I typed in “touche” without the accent. But with Ulauncher it would suddenly disappear after I went from “touch” to “touche”.
Albert is also better at searching for files, once you turn on the right plugins and options. I’ve been using both for a while, binding to different keyboard shortcuts and alternating between them, and generally I prefer Albert most of the time.
I also can’t get Ulauncher to stay up in the top right the corner of the screen, it always wants to appear in the center even if I move it. Albert has an option that can be disabled to let you move it to wherever you want it to appear. I’ve always moved Spotlight into the corner so I can do quick math or searches without blocking what I’m reading in the middle of the screen. Maybe there’s a way to do it from the Ulauncher config file but I haven’t looked into it that far.
In short, I have found Albert to be a slightly closer substitute for Apple’s Spotlight.
I tried ULauncher some weeks ago, but it really is far from competing with Krunner in term of features. It’s a really nice tool for people that don’t have access to krunner though.
I use ulauncher for years just for the emoji extension 😁