https://github.com/coko7/latuicon
😴 TUI icon picker (emojis / kaomojis / unicode / nerd fonts) ripped from late.sh
https://github.com/coko7/latuicon
ai cli emoji emoji-picker icon icon-picker kaomoji kaomoji-picker late-sh latesh latuicon nerd-fonts tui unicode unicode-picker
Last synced: 14 days ago
JSON representation
😴 TUI icon picker (emojis / kaomojis / unicode / nerd fonts) ripped from late.sh
- Host: GitHub
- URL: https://github.com/coko7/latuicon
- Owner: coko7
- License: mit
- Created: 2026-06-16T12:31:27.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-07-02T05:21:45.000Z (22 days ago)
- Last Synced: 2026-07-02T07:13:29.340Z (22 days ago)
- Topics: ai, cli, emoji, emoji-picker, icon, icon-picker, kaomoji, kaomoji-picker, late-sh, latesh, latuicon, nerd-fonts, tui, unicode, unicode-picker
- Language: Rust
- Homepage:
- Size: 161 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 😴 latuicon
`latuicon`, the **lat**e **TUI** **icon** picker: a rip-off of the [late.sh](https://github.com/mpiorowski/late-sh) embedded icon picker.
A terminal UI icon picker for emoji, kaomoji, Unicode characters, and [Nerd Font](https://www.nerdfonts.com/) glyphs. Press Enter to print the selected icon to stdout; press Esc to exit without output.
> [!TIP]
> Want to use `latuicon` in Neovim? Check out the [`latuicon.nvim`](https://github.com/coko7/latuicon.nvim) wrapper plugin!
## What's different from late.sh
The [initial commit](https://github.com/coko7/latuicon/commit/0fc806c) bootstrapped from the icon-picker component of [late.sh](https://github.com/mpiorowski/late-sh) (specifically code up until [6c670683](https://github.com/mpiorowski/late-sh/commit/6c670683e301cbef3df08683c84bc91141a0faee)). 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:
```sh
icon=$(latuicon)
```
## Install
```sh
cargo install latuicon
```
### From source
```sh
./scripts/deploy.sh
```
Builds a release binary and installs it to `~/.local/bin/latuicon`.
## Usage
```sh
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](https://hypr.land/))
In my setup, I use [`floatty.sh`](https://github.com/coko7/scripts/blob/main/global/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:
```ini
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:
```ini
# 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
- **All** — every icon from every other tab, combined into one searchable set
- **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](https://github.com/mpiorowski/late-sh) at commit [6c670683](https://github.com/mpiorowski/late-sh/commit/6c670683e301cbef3df08683c84bc91141a0faee). Code written after the initial commit is not derived from that project.
The original icon picker was written by [@mevanlc](https://github.com/mevanlc); the late.sh project is maintained by [@mpiorowski](https://github.com/mpiorowski).
See [`THIRD_PARTY_LICENSES.md`](./THIRD_PARTY_LICENSES.md) for the license covering the derived code from the initial commit.