Skip to content

coko7/latuicon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

😴 latuicon

latuicon, the late TUI icon picker: a rip-off of the late.sh embedded icon picker.

latuicon-demo

Crates info License: MIT Rust Tests

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.

What's different from late.sh

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)

Install

cargo install latuicon

From source

./scripts/deploy.sh

Builds a release binary and installs it to ~/.local/bin/latuicon.

Usage

latuicon                          # default theme
latuicon --theme mocha            # specific theme
ICON_PICKER_THEME=dracula latuicon

Prints 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-copy

And 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.

Keybindings

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.).

Themes

contrast (default), late, purple, mocha, gruvbox, dracula

Tabs

  • 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 / 0xXXXX hex lookup and full Unicode name scan
  • Nerd Font β€” common glyphs + full Nerd Font glyph set

Credits

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.