FSEL(1)
π FSEL β like, the manual bestie
So you opened FSEL(1) from the User Commands section, and honestly? You're about to have a good time, because fsel is that girl. Let's get into it.
π¦ NAME
fsel β a fast TUI app launcher and fuzzy finder for GNU/Linux and *BSD. Yes, both. She's versatile. π
β¨ SYNOPSIS β¨
fsel [OPTIONS]
That's it. That's the whole vibe. No subcommands, no drama, just options.
π DESCRIPTION π
Okay so picture this: fsel is a terminal-based application launcher with advanced fuzzy search, dmenu compatibility, and clipboard history integration all up in there. She scans XDG desktop entries β and, if you want, PATH executables too β giving you a genuinely fast interface for launching applications. Iconic behavior, truly.
She features a sophisticated 12-tier search ranking system with configurable prioritization (that's frecency, recency, or frequency, bestie). The ranking system prioritizes pinned apps, exact matches, prefix matches, and word-start matches, and you get configurable prefix depth for fine-tuning that search behavior. And you can pin your faves with Ctrl+Space for instant access. Main character energy fr fr. π
β¨ OPTIONS β¨
π App Launcher Options π
-c,--configCONFIG β Pick a specific config file. (default:~/.config/fsel/config.toml)-r,--replaceβ Replace existingfselorcclipinstances. She terminates lingering processes before reopening the database, so no ghost processes haunting you.--clear-historyβ Clear the launch history database. Fresh start, new you. π«Ά--clear-cacheβ Clear the desktop file cache.--refresh-cacheβ Force a refresh of the desktop file list (aka rescan for new apps).--list-hiddenβ List manually hidden launcher entries and their numeric IDs, then exit.--unhideID β Restore one manually hidden launcher entry by numeric ID, then exit.--unhide-allβ Restore every manually hidden launcher entry, then exit. Un-hide everybody, she's being generous.-p,--programNAME β Launch a program directly, bypassing the TUI entirely. Respects--match-mode; exact mode requires an exact app or executable name, no shortcuts.-ssSEARCH β Pre-fill the search in the TUI. Works with app launcher, dmenu, and cclip modes. β οΈ Must be the last option β like, actually last, don't be sneaky.-v,--verboseβ Increase verbosity level, and you can stack it:-v,-vv,-vvv. Go off.--no-execβ Print the selected application to stdout instead of launching it. For the observational girlies.--launch-prefixCMD β Launch applications through a custom command prefix (example:runapp --).--systemd-runβ Launch applications usingsystemd-run --user --scope. Pairs with-d/--detach.--uwsmβ Launch applications usinguwsm app. Pairs with-d/--detach.--filter-desktop[=no]β Filter apps byOnlyShowIn/NotShowInfields. (default: yes)--filter-actions[=no]β Hide desktop action entries such as "New Window" and "Open Private Window". (default: no)--auto-hide-duplicates[=no]β Suppress equal desktop-file IDs and normalized visible names using XDG application-directory precedence. (default: no) Note: automatic exclusions are not persisted, so don't expect them to stick around.--list-executables-in-pathβ Include executables from$PATHalongside desktop apps. Two worlds colliding, slay.--hide-before-typingβ Hide the list until you type your first character. Mysterious. π¦--match-modeMODE β Match mode:'fuzzy'or'exact'. (default:fuzzy)--prefix-depthN β Character depth for prefix matching priority. (default:3) When the query length is within this depth, prefix matches (exact, word-start) are prioritized over fuzzy matches.-T,--testβ Enable debug/test mode with detailed logging. Logs get written to~/.config/fsel/logs/with timestamped filenames (fsel-debug-YYYYMMDD-HHMMSS-pidXXXXX.log). The logs include startup configuration, query changes, search snapshots with scoring breakdown, selection changes, launch events, and session statistics. Genuinely useful for debugging search ranking and analyzing performance, ngl.-d,--detachβ Detach launched applications from the terminal session. Compatible with--launch-prefix,--systemd-run, and--uwsm.-t,--ttyβ Launch terminal apps in the current terminal (TTY mode). This replaces thefselprocess with the launched app, so use it with-p/--program. Overridesterminal_launcher. Super useful for TTY login sessions. π
πΈ Dmenu Mode Options πΈ
--dmenuβ Dmenu mode: read from stdin, output the selection to stdout.--dmenu0β Like--dmenubut with null-separated input.--password[=CHAR]β Password mode: masks the input. (default char:*)--indexβ Output the index instead of the text.--with-nthCOLS β Display only specified columns (comma-separated, e.g.,1,3).--accept-nthCOLS β Output only specified columns.--match-nthCOLS β Match against only specified columns.--delimiterCHAR β Column delimiter. (default: space)--only-matchβ Don't allow custom input, only return selected items. Strict queen.--exit-if-emptyβ Exit immediately if stdin is empty. No empty air, we leave.--selectSTRING β Pre-select the first matching entry.--select-indexN β Pre-select the entry at index n.--auto-selectβ Auto-select when only one match remains.--prompt-onlyβ Prompt-only mode: no list, just the input.
π Clipboard Mode Options π
--cclipβ Clipboard history mode: browseccliphistory with inline and fullscreen image previews (requirescclip). Image preview uses built-in terminal graphics (Kitty/Sixel/Halfblocks), so no external viewer is required. Obsessed. π--tagNAME β Filter clipboard items by tag (use with--cclip).--tag listβ List all tags (use with--cclip).--tag listNAME β List items with a specific tag (use with--cclip).--tag clearβ Clear tag metadata from thefseldatabase (colors, emojis). Note: this does not remove tags fromcclipentries.--tag wipeβ Wipe ALL tags fromcclipentries (requirescclip3.2+). This one actually removes the tag text from the real clipboard items, so be sure that's what you want.--cclip-show-tag-color-namesβ Show tag color names in the clipboard item display (use with--cclip).
π General Options π
-hβ Show a concise help overview.-H,--helpβ Show the detailed tree-style help covering all the modes.-T,--testβ Enable debug/test mode with detailed logging. See the App Launcher Options section above for the full description.-V,--versionβ Show the version number.-t,--ttyβ Launch in the current terminal (TTY mode). See App Launcher Options.
π§ CONFIGURATION π§
Configuration file: ~/.config/fsel/config.toml
Example configuration β copy this energy:
# Root level - Colors and UI options
highlight_color = "LightBlue"
cursor = "β"
terminal_launcher = "kitty -e" # Use "tty" for TTY mode (same as -t flag)
rounded_borders = true
hard_stop = false
# Border colors
main_border_color = "White"
apps_border_color = "White"
input_border_color = "White"
# Layout
title_panel_height_percent = 30
input_panel_height = 3
title_panel_position = "top" # or "middle" or "bottom"
# Pin system
pin_icon = "π"
pin_color = "rgb(255,165,0)"
# App launcher specific options (must be in section)
[app_launcher]
filter_desktop = true
filter_actions = false
auto_hide_duplicates = false
list_executables_in_path = false
hide_before_typing = false
match_mode = "fuzzy"
ranking_mode = "frecency"
pinned_order = "ranking"
confirm_first_launch = false
prefix_depth = 3
# Dmenu mode overrides (optional)
[dmenu]
delimiter = " "
show_line_numbers = true
# Clipboard mode overrides (optional)
[cclip]
image_preview = true
hide_inline_image_message = false
# Custom keybinds (optional)
[keybinds]
up = ["up", { key = "p", modifiers = "ctrl" }]
down = ["down", { key = "n", modifiers = "ctrl" }]
select = ["enter"]
exit = ["esc", { key = "q", modifiers = "ctrl" }]
pin = [{ key = "space", modifiers = "ctrl" }]
hide = [{ key = "delete", modifiers = "alt" }]
unhide_last = [{ key = "u", modifiers = "alt" }]
See the example config.toml and keybinds.toml for all available options. π
π¦ KEYBOARD SHORTCUTS π¦
β Navigation β
- β/β or Ctrl+P/Ctrl+N β Navigate up/down.
- β/β β Jump to the top/bottom of the list.
- Enter or Ctrl+Y β Launch the selected application.
- Ctrl+Space β Toggle pin/favorite for the selected app (pinned apps always appear first π ).
- Alt+Delete β Hide the exact selected launcher entry without deleting or editing its source file. No file violence here.
- Alt+U β Restore the most recently hidden launcher entry.
- Esc or Ctrl+Q or Ctrl+C β Exit.
- Backspace β Remove characters from the search.
- Tab/Shift+Tab β Navigate down/up (the alternative route).
- Home/End β Jump to the first/last item.
π©° Clipboard Mode Keybinds π©°
- Alt+i β Open a fullscreen image preview for the selected clipboard item (native TUI; press Esc or q to return).
- Ctrl+T β Tag the selected clipboard item.
- Alt+Delete β Delete the selected clipboard item (runs
cclip delete). Your selection and scroll position are preserved after deletion, which is such a nice touch.
π Mouse Support π
- Hover β Select an application.
- Click β Launch an application.
- Scroll β Navigate the list (selection follows mouse position).
All keybinds can be customized via ~/.config/fsel/keybinds.toml or in the [keybinds] section of config.toml. And when both are present? The [keybinds] section in config.toml takes precedence. Precedence, periodt. π
π₯ LAUNCH METHODS π₯
- Default β Standard execution. Simple, clean, no notes.
- Custom Prefix β Launch applications through a custom prefix with
--launch-prefixor[app_launcher].launch_prefix. - systemd-run β Launch applications in isolated systemd user scopes with the
--systemd-runflag. - uwsm β Launch applications through Universal Wayland Session Manager with the
--uwsmflag. - Detach β Use
-d/--detachto prevent apps from being killed when the terminal closes. Works standalone or combined with--launch-prefix,--systemd-run, or--uwsm.
okay that's the part 1 of it bestie, there's literally more coming so don't go anywhere π«Άβ¨
β¨ EXAMPLES β¨
Okay bestie, this is the fun part β actual things you can type. Copy-paste energy only, no cap. π
Basic Usage
Launch fsel interactively, like the main character it is:
fsel
Direct Launch
Launch Firefox directly without the TUI β boom, straight to business:
fsel -p firefox
Launch the best fuzzy match for "terminal":
fsel -p term
Require an exact app or executable name for direct launch β no fuzzy wiggle room, periodt:
fsel --match-mode=exact -p firefox
Hide desktop action entries in launcher mode:
fsel --filter-actions
Suppress duplicate launcher entries for one invocation:
fsel --auto-hide-duplicates
Launch with detach for GUI apps β very βI have places to beβ of you:
fsel --detach -p discord
fsel --launch-prefix "runapp --" -p discord
fsel --systemd-run -p code
Pre-filled Search
Open the TUI with "firefox" already searched β sheβs ready before you are:
fsel -ss firefox
Multi-word search, and yes, this must be last option β donβt test her:
fsel --uwsm -vv -r -ss text editor
Pre-fill search in dmenu mode:
echo -e "firefox\nchrome\nfirefox-dev" | fsel --dmenu -ss fire
Pre-fill search in cclip mode:
fsel --cclip -ss image
Dmenu Mode
Basic dmenu replacement β iconic behavior:
echo -e "Option 1\nOption 2\nOption 3" | fsel --dmenu
Process killer β choose your victim, then xargs kill does the rest π:
ps aux | fsel --dmenu --with-nth 2,11 --accept-nth 2 | xargs kill
Git branch switcher β because typing branch names is so last season:
git branch | fsel --dmenu --select main | xargs git checkout
SSH connection picker β your ~/.ssh/config but make it cute:
grep "^Host " ~/.ssh/config | fsel --dmenu --with-nth 2 | xargs ssh
Window switcher for Sway β jq girlies rise:
swaymsg -t get_tree | jq -r '..|select(.name)|.name' | fsel --dmenu
Clipboard History
Browse clipboard history β requires cclip, so make sure sheβs installed:
fsel --cclip
Filter by tag β prompt and code are giving organized:
fsel --cclip --tag prompt
fsel --cclip --tag code
List all tags:
fsel --cclip --tag list
List items with a specific tag, verbose style:
fsel --cclip --tag list prompt -vv
Clear fsel tag metadata:
fsel --cclip --tag clear
Wipe ALL tags from cclip entries β highkey dramatic, use with intention:
fsel --cclip --tag wipe
πΈ ENVIRONMENT πΈ
These are the little environment gremlins that tell fsel where stuff lives and what vibe weβre in. π§
XDG_CONFIG_HOMEβ user config directory (default:~/.config)XDG_DATA_HOMEβ user data directory (default:~/.local/share)XDG_DATA_DIRSβ system data directories (default:/usr/local/share:/usr/share)XDG_CURRENT_DESKTOPβ used for desktop environment filtering (OnlyShowIn/NotShowIn)WAYLAND_DISPLAYβ used to detect Wayland vs X11 for clipboard operationsFSEL_*β environment variables with theFSEL_prefix override config file settingsFSEL_APP_LAUNCHER_FILTER_ACTIONSβ set totrueto hide desktop action entries in app launcher mode, orfalseto keep them visibleFSEL_APP_LAUNCHER_AUTO_HIDE_DUPLICATESβ set totrueto enable deterministic duplicate suppression in app launcher mode (default:false)
π FILES π
Hereβs where fsel keeps her stuff. Do not reorganize her room without asking. π
~/.config/fsel/config.tomlβ user configuration file~/.config/fsel/keybinds.tomlβ keybind customization file (optional, can use[keybinds]inconfig.toml)~/.local/share/fsel/hist_db.redbβ launch history, frecency data, pinned apps, and manually hidden entries database (redbformat)~/.local/share/fsel/fsel-fsel.lockβ lock file for single instance (app launcher mode)~/.cache/fsel/fsel-cclip.lockβ lock file for single instance (cclip mode)~/.config/fsel/logs/fsel-debug-*.logβ debug log files (created when using-T/--testflag)/usr/share/applications/*.desktopβ system desktop entries~/.local/share/applications/*.desktopβ user desktop entries
π EXIT STATUS π
Short and iconic:
0β Success1β Error occurred
π BUGS π
Found a bug? Donβt suffer in silence, bestie β report it here:
https://github.com/Mjoyufull/fsel/issues
π AUTHOR π
Mjoyufull <https://github.com/Mjoyufull>
Original gyr by Namkhai B.
π SEE ALSO π
Go read these when youβre done slaying:
dmenu(1), rofi(1), cclip(1), swaymsg(1), uwsm(1), systemd-run(1)
Project homepage: https://github.com/Mjoyufull/fsel
And thatβs the page, bestie π β version 3.6.0-kiwicrab, dated 2026-07-20. You ate, fr fr. πβ¨
π¦ where this page comes from
- nixpkgs unstable: fsel 3.6.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms