How to Install Ulauncher on Debian: A Fast Application Launcher for Linux
Ulauncher is an application launcher for Linux in the spirit of macOS Spotlight or Alfred: hit a hotkey, type a few characters, press enter. It does fuzzy matching, so frfx finds Firefox, and it learns from what you actually pick, so your common apps float to the top over time.
Where it goes beyond a plain app launcher is the extension system. Ulauncher can calculate expressions, browse files, run web searches through custom keywords, and load extensions from a public directory that add everything from clipboard history and emoji pickers to password-manager lookups and window switching. It is written in Python with GTK 3, and it stays out of the way until you summon it.
Ulauncher is not in the Debian archive, so the usual routes are a downloaded .deb from GitHub or a PPA that Debian users cannot use anyway. Either way you own every future update.
The unofficial deb.griffo.io repository carries Ulauncher as a regular APT package, so installing it and keeping it current uses the tooling already on your system.
Install the Latest Ulauncher on Debian: The Short Version
If you only came for the commands, this adds the repository and installs the latest Ulauncher .deb package on Debian:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
sudo apt install ulauncher
The rest of this guide explains what each command does, how to verify the install, how to keep Ulauncher up to date, and what to check when something goes wrong.
What Makes Ulauncher Special?
- 🔍 Fuzzy search - Type an approximation of the name and Ulauncher finds it; frequently used results rank higher over time.
- 🧩 Extensions - A directory of community extensions covering clipboard history, emoji, window switching, translation, password managers and much more.
- 🧮 Built-in calculator - Type an expression and the answer appears, ready to copy with enter.
- 📁 File browsing - Start with
~or/to walk the filesystem and open files or folders straight from the launcher. - 🌐 Custom shortcuts - Keyword-driven web searches (
gfor Google,sofor Stack Overflow out of the box) that you can extend with your own. - 🎨 Themes - Light, dark and custom colour themes, with a preferences UI to switch between them.
- ⌨️ Global hotkey -
Ctrl+Spaceby default, configurable, plus aulauncher-togglecommand for your own binding. - 🚀 Runs in the background - A systemd user service keeps it warm so the window appears instantly.
Why Use the deb.griffo.io Repository?
- Easy installation and updates through APT, no GitHub release page to watch.
- Automatic dependency management, which matters here: Ulauncher needs a handful of GTK and GObject introspection packages.
- Always tracks upstream releases so you stay close to the latest Ulauncher.
- No PPA workarounds on Debian, where PPAs are not an option.
- Works across supported Debian releases, with the codename detected automatically.
Prerequisites
Before you start, make sure you have:
- A Debian-based system (Bookworm 12, Trixie 13, Forky, or Sid)
- A graphical desktop session; Ulauncher is a desktop application, not a server tool
sudoprivilegescurlinstalled (sudo apt install curlif needed)
Step 1: Add the deb.griffo.io Repository
Add the signing key and repository source:
# Create the keyrings directory
sudo install -d -m 0755 /etc/apt/keyrings
# Download and install the repository GPG key
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
# Add the repository (auto-detects your distro codename)
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
# Update the package list
sudo apt update
What each command does:
- Create the keyrings directory - ensures
/etc/apt/keyringsexists with proper permissions. - Install the GPG key - downloads the repository key and de-armours it into a dedicated keyring for verification.
- Add the repository - writes a
signed-bysource line, withlsb_release -scsupplying your Debian codename. - Update the package list - refreshes APT so it knows about the new packages.
Step 2: Update the Package List
If you skipped the last line, run the update now:
sudo apt update
Step 3: Install Ulauncher
Install Ulauncher with APT:
sudo apt install ulauncher
APT pulls in the GTK 3, WebKit, keybinder and Python GObject dependencies along the way. That dependency list is exactly why installing from a repository beats a hand-downloaded .deb: everything resolves in one step.
Step 4: Verify the Installation
Check the version:
ulauncher --version
You should see output similar to:
ulauncher 5.15.15
Then launch it from your application menu, or start it hidden from a terminal:
ulauncher --hide-window
Press Ctrl+Space and the launcher window should appear.
Getting Started with Ulauncher
Starting It Automatically
The package ships a systemd user service, so Ulauncher can start with your desktop session:
# Start now and enable at login
systemctl --user enable --now ulauncher
# Check it is running
systemctl --user status ulauncher
The unit starts ulauncher --hide-window, so it sits in the background waiting for the hotkey rather than popping up at login. A desktop entry is also installed, so the graphical “Startup Applications” tools on GNOME, KDE and XFCE can manage it instead if you prefer.
Everyday Use
Ctrl+Space open the launcher
firefox fuzzy-match and launch an application
2+2*10 calculate, then press enter to copy the result
~/Documents browse files starting from home
/etc/apt browse an absolute path
g debian packaging search Google (a default shortcut)
so fish shell abbr search Stack Overflow (a default shortcut)
Arrow keys move through results, Alt+1 … Alt+9 jump straight to a numbered result, and Escape dismisses the window.
Preferences, Themes and Shortcuts
Open the launcher and type Ulauncher Preferences, or right-click its tray icon. The preferences window lets you:
- Change the hotkey from the default
Ctrl+Space. - Pick a colour theme, and switch between light and dark variants.
- Set how many results to show and whether to show the tray icon.
- Add custom shortcuts: a keyword, a URL with
%sfor the query, or a shell command to run.
Custom shortcuts are the quickest win. A keyword jira pointing at https://your-company.atlassian.net/browse/%s turns jira PROJ-123 into a one-line ticket lookup.
Extensions
Browse the extension directory, copy an extension’s GitHub URL, then in Preferences open Extensions → Add extension and paste it. Extensions are Python, run in their own process, and update from the same screen.
Popular picks include clipboard history, emoji search, a window switcher, unit conversion, and integrations with password managers.
Configuration on Disk
Ulauncher keeps its settings under your home directory:
# Settings, shortcuts and installed extensions
ls ~/.config/ulauncher
# Extension data and themes
ls ~/.local/share/ulauncher
That makes the whole setup easy to back up or sync between machines.
Keeping Ulauncher Updated
Because Ulauncher arrived via APT, updates come with the rest of the system:
sudo apt update && sudo apt upgrade
After an upgrade, restart the service so the new version is the one running:
systemctl --user restart ulauncher
Other Tools from deb.griffo.io
The repository packages plenty of tools that fit a well-tuned desktop:
- Ghostty - a fast, GPU-accelerated terminal emulator to launch from Ulauncher.
- fzf - fuzzy finding for the terminal, the same idea one layer down.
- Zed - a high-performance code editor.
- fastfetch - a quick system information display.
Troubleshooting
GPG or Key Errors
If APT reports an unsigned repository or an invalid key, import it again:
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update
Package Not Found
If APT cannot see the ulauncher package:
- Re-run
sudo apt updateafter adding the repository. - Confirm your release is supported (Bookworm, Trixie, Forky, or Sid).
- Inspect the source list:
cat /etc/apt/sources.list.d/deb.griffo.io.list.
The Hotkey Does Nothing on Wayland
Global hotkeys are grabbed by the compositor on Wayland, so an application cannot register Ctrl+Space for itself the way it can on X11. The fix is to bind the shortcut in your desktop’s own settings:
- GNOME: Settings → Keyboard → Keyboard Shortcuts → Custom Shortcuts → +
- KDE Plasma: System Settings → Shortcuts → Add Command
Set the command to:
ulauncher-toggle
and assign whatever key combination you like. ulauncher-toggle sends a D-Bus message to the running instance, so Ulauncher must already be running (see the systemd user service above).
A Black Border Around the Window
On desktops without a compositor, the window shadow can render as a black rectangle. Start Ulauncher with:
ulauncher --hide-window --no-window-shadow
To make that permanent, copy the unit into your home directory and edit it:
mkdir -p ~/.config/systemd/user
cp /usr/lib/systemd/user/ulauncher.service ~/.config/systemd/user/
# add --no-window-shadow to the ExecStart line, then:
systemctl --user daemon-reload
systemctl --user restart ulauncher
Nothing Happens When You Run It
Check for errors with verbose logging:
systemctl --user stop ulauncher
ulauncher -v
The most common cause is running outside a graphical session, for example over plain SSH with no DISPLAY or WAYLAND_DISPLAY set.
The Tray Icon Is Missing
The indicator needs the AppIndicator support library, which is only a recommendation of the package:
sudo apt install gir1.2-ayatanaappindicator3-0.1
systemctl --user restart ulauncher
On GNOME you also need an AppIndicator shell extension for tray icons to show at all.
Uninstalling
Stop the service, then remove the package:
systemctl --user disable --now ulauncher
sudo apt remove ulauncher
To also drop the repository and key:
sudo rm /etc/apt/sources.list.d/deb.griffo.io.list
sudo rm /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update
Your settings and extensions stay in ~/.config/ulauncher and ~/.local/share/ulauncher unless you delete them yourself.
Conclusion
A good launcher is one of those quality-of-life upgrades you stop noticing precisely because it works: no more hunting through application menus, no more opening a browser just to run a quick search, no more calculator app for 1024*7. Ulauncher does all of that from one keystroke, and the extension ecosystem means it grows with whatever you happen to need.
Installing it from deb.griffo.io on Debian sorts out the GTK dependency chain in one command and turns future updates into a plain apt upgrade.
Frequently Asked Questions
How do I install the latest Ulauncher on Debian?
Add the deb.griffo.io APT repository and its signing key, then run sudo apt install ulauncher. The repository tracks upstream Ulauncher releases, so you get the latest packaged version rather than a build frozen when your distribution was released.
Is there a .deb package for Ulauncher?
Yes. deb.griffo.io publishes Ulauncher as a signed .deb for Debian. You could download that .deb and install it by hand, but adding the repository is the better option: APT then resolves dependencies and picks up new versions on its own.
How do I update Ulauncher to the latest version?
Run sudo apt update && sudo apt upgrade. Once Ulauncher is installed from APT there is no separate updater to remember, since new releases arrive with the rest of your system updates.
How do I install Ulauncher on Ubuntu?
Exactly the same way; lsb_release -sc simply resolves to a different codename. There is a companion guide with the Ubuntu specifics: How to install Ulauncher on Ubuntu.
Which Debian releases are supported?
Bookworm 12, Trixie 13, Forky and Sid. Because the repository line is built from lsb_release -sc, the matching suite is selected for you.
Resources
- Ulauncher Website
- Ulauncher Extensions Directory
- Ulauncher GitHub Repository
- deb.griffo.io Repository
Disclaimer: The deb.griffo.io repository is an unofficial community project and is not affiliated with the official Debian or Ubuntu projects, or with the upstream Ulauncher project.