latuicon, the late TUI icon picker: a rip-off of the late.sh embedded icon picker.
A terminal UI icon picker for emoji, kaomoji, Unicode characters, and Nerd Font glyphs. Press Enter to print the selected icon to stdout; press Esc to exit without output.
The initial commit bootstrapped from the icon-picker component of late.sh (specifically code up until 6c670683). All development since then is independent.
Changes and additions:
- Fuzzy search πͺ β word-level Levenshtein matching so small typos still find the right icon (e.g.
tumbs upβ π) - Data files π β emoji, kaomoji, unicode, and nerd font data extracted into editable JSON files under
data/ - Centered layout π― β subtitle under the title, icon-set block sized to content, search and icon list horizontally inset
- Standalone binary π¦ β packaged as
latuicon, decoupled from the late.sh monorepo
Designed for shell capture:
icon=$(latuicon)cargo install latuicon./scripts/deploy.shBuilds a release binary and installs it to ~/.local/bin/latuicon.
latuicon # default theme
latuicon --theme mocha # specific theme
ICON_PICKER_THEME=dracula latuiconPrints the chosen icon to stdout on confirm, nothing on Esc/Ctrl+C.
Desktop integration example (Hyprland)
In my setup, I use floatty.sh to open latuicon in a floating terminal window and pipe the result to the clipboard. Here is my custom Hyprland binding for it:
bindd = $mainMod, comma, laTUIcon icon picker, exec, FLOATTY_CAPTURE_OUTPUT=1 bash floatty.sh latuicon latuicon | wl-copyAnd these are the Hyprland window rules for it:
# Special rules for floating/prompt terminals
windowrule {
name = floater-kitty
match:class = ^(floater-kitty-.*)$
no_anim = on
float = on
center = on
size = 1000 800
}
windowrule {
name = floater-kitty-latuicon
match:class = floater-kitty-latuicon
size = 700 700
}Pressing $mainMod + , opens a floating terminal with the picker; confirming an icon copies it straight to the Wayland clipboard.
| Key | Action |
|---|---|
β / β |
Navigate list |
Ctrl+K / Ctrl+J |
Navigate list (vi-style) |
PgUp / PgDn |
Page up / down |
Ctrl+U / Ctrl+D |
Half-page up / down |
Tab / Shift+Tab |
Switch tab |
Enter |
Select and exit |
Esc / Ctrl+C |
Exit without selecting |
| Type anything | Filter by name |
Ctrl+Z |
Undo search edit |
| Mouse click | Select tab or item |
| Double-click | Select and exit |
| Scroll wheel | Scroll list |
Search supports full emacs cursor movement (Ctrl+A, Ctrl+E, Ctrl+F, Ctrl+B, Ctrl+W, Ctrl+Y, etc.).
contrast (default), late, purple, mocha, gruvbox, dracula
- Emoji β common emoji + full emoji set
- Kaomoji β curated kaomoji collection
- Unicode β common symbols + Box Drawing, Geometric Shapes, Arrows, Math Operators, Dingbats; search supports
U+XXXX/0xXXXXhex lookup and full Unicode name scan - Nerd Font β common glyphs + full Nerd Font glyph set
The project was seeded from the icon-picker component of late.sh at commit 6c670683. Code written after the initial commit is not derived from that project.
The original icon picker was written by @mevanlc; the late.sh project is maintained by @mpiorowski.
See THIRD_PARTY_LICENSES.md for the license covering the derived code from the initial commit.
