<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>The Terminal Yard - late.sh</title>
    <subtitle>Writing about terminals and linux</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.lazyfreax.dev/tags/late-sh/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.lazyfreax.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-07-05T00:00:00+00:00</updated>
    <id>https://blog.lazyfreax.dev/tags/late-sh/atom.xml</id>
    <entry xml:lang="en">
        <title>latuicon: the TUI icon picker from late.sh</title>
        <published>2026-07-05T00:00:00+00:00</published>
        <updated>2026-07-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              coko
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.lazyfreax.dev/blog/latuicon-icon-picker/"/>
        <id>https://blog.lazyfreax.dev/blog/latuicon-icon-picker/</id>
        
        <content type="html" xml:base="https://blog.lazyfreax.dev/blog/latuicon-icon-picker/">&lt;h2 id=&quot;origin-story&quot;&gt;Origin Story&lt;a class=&quot;post-anchor&quot; href=&quot;#origin-story&quot; aria-label=&quot;Anchor link for: origin-story&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;A few weeks ago, I stumbled upon &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;late.sh&quot;&gt;&lt;code&gt;late.sh&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;a cozy command-line clubhouse for computer people&quot;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;If you haven&#x27;t heard of it, it is basically an online social space for computer nerds to hang around and chat. It&#x27;s got your typical discussion channels like you would have on Discord, Matrix or IRC. But it&#x27;s got even more to offer than that!&lt;&#x2F;p&gt;
&lt;p&gt;Music, mini-games, arcade games, actual RPGs like &lt;strong&gt;Lateania&lt;&#x2F;strong&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;NetHack&quot;&gt;NetHack&lt;&#x2F;a&gt; or even &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ricott1&#x2F;rebels-in-the-sky&quot;&gt;Rebels&lt;&#x2F;a&gt;, and much much more...&lt;&#x2F;p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;i&gt;Only good vibes there  〜⁠(⁠꒪⁠꒳⁠꒪⁠)⁠〜&lt;&#x2F;i&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;blog.lazyfreax.dev&#x2F;blog&#x2F;latuicon-icon-picker&#x2F;.&#x2F;latesh-screenshot.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;All you need is a computer with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Secure_Shell&quot;&gt;SSH&lt;&#x2F;a&gt; and you are good to go.
The &lt;code&gt;late.sh&lt;&#x2F;code&gt; team also provides a companion &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mpiorowski&#x2F;late-sh#companion-cli&quot;&gt;CLI&lt;&#x2F;a&gt; you can install for optional features like in-terminal music or voice chat support.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Yes, you read that correctly...&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;VOICE CHAT in the terminal&lt;&#x2F;strong&gt;&lt;&#x2F;em&gt; &lt;strong&gt;(˶°ㅁ°)!!&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;late.sh&lt;&#x2F;code&gt; is full of good surprises like that.
It&#x27;s a very cool place to visit if you are a terminal nerd who is comfortable with SSH.
So if that description fits your profile, make sure to check it out 🙂.&lt;&#x2F;p&gt;
&lt;p&gt;We have been seeing a rise of SSH-based services lately, like:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;terminal.shop&quot;&gt;terminal.shop&lt;&#x2F;a&gt; to order coffee&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stickr.shop&#x2F;&quot;&gt;stickr.shop&lt;&#x2F;a&gt; to buy stickers&lt;&#x2F;li&gt;
&lt;li&gt;and now &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;late.sh&quot;&gt;late.sh&lt;&#x2F;a&gt; for hanging around and chill in the terminal&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;There are probably plenty others I do not know. But anyway, I love the fact that the terminal space continues to thrive!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-late-sh-icon-picker&quot;&gt;The &lt;code&gt;late.sh&lt;&#x2F;code&gt; icon picker&lt;a class=&quot;post-anchor&quot; href=&quot;#the-late-sh-icon-picker&quot; aria-label=&quot;Anchor link for: the-late-sh-icon-picker&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Alright, now that you have a good idea of what &lt;code&gt;late.sh&lt;&#x2F;code&gt; is, let&#x27;s talk about the main subject of this article: &lt;strong&gt;the icon picker&lt;&#x2F;strong&gt;*.&lt;&#x2F;p&gt;
&lt;p&gt;As I mentioned already, &lt;code&gt;late.sh&lt;&#x2F;code&gt; has a &lt;strong&gt;LOT&lt;&#x2F;strong&gt; of features, and one of them is an icon picker which I immediately fell in love with:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;blog.lazyfreax.dev&#x2F;blog&#x2F;latuicon-icon-picker&#x2F;.&#x2F;latesh-icon-picker.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;To access it, simply type &lt;code&gt;&#x2F;icons&lt;&#x2F;code&gt; in any text channel.&lt;&#x2F;p&gt;
&lt;p&gt;First of all, I really like the look and feel but what I love about it is that it&#x27;s got:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Emojis: 👍🐚🌊🎉&lt;&#x2F;li&gt;
&lt;li&gt;Unicode symbols: ★ ▲ ░ ○&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.nerdfonts.com&#x2F;&quot;&gt;Nerd Fonts&lt;&#x2F;a&gt;: 󱓞 󰊢  󰣇 &lt;em&gt;(which your browser may not render)&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;and... &lt;strong&gt;Kaomojis&lt;&#x2F;strong&gt;: ✧｡◝(ᵔᗜᵔ)◜✧*｡ — ٩(◕‿◕｡)۶ — (╯`Д´)╯︵ ┻━┻&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;em&gt;I did not even know Kaomojis had an actual name, I used to call them ASCII art emojis.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;So, why do I love this so much?&lt;&#x2F;p&gt;
&lt;p&gt;Up until this point, I had been using the following icon pickers on my system:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;fdw&#x2F;rofimoji&quot;&gt;rofimoji&lt;&#x2F;a&gt; for emojis&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rolv-apneseth&#x2F;rofi-nerdy&quot;&gt;rofi-nerdy&lt;&#x2F;a&gt; for Nerd font icons&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;scripts&#x2F;blob&#x2F;main&#x2F;global&#x2F;amoji.sh&quot;&gt;amoji.sh&lt;&#x2F;a&gt; for Kaomojis (terminal only)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;and I did not even have something for Unicode symbols...&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Three different programs to pick icons...&lt;&#x2F;p&gt;
&lt;p&gt;It does the job but I never really liked this solution.
So, when I found about the &lt;code&gt;late.sh&lt;&#x2F;code&gt; icon picker, it made me want to push my own Linux ricing further.&lt;&#x2F;p&gt;
&lt;p&gt;Don&#x27;t get me wrong, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;davatorium&#x2F;rofi&quot;&gt;Rofi&lt;&#x2F;a&gt; is a very cool project and I still use it as my main application launcher but I have wanted to move away from it for a while now.&lt;&#x2F;p&gt;
&lt;p&gt;Specifically, I have been trying out these alternatives recently:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;abenz1267&#x2F;walker&quot;&gt;Walker&lt;&#x2F;a&gt;, using &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;abenz1267&#x2F;elephant&quot;&gt;elephant&lt;&#x2F;a&gt; providers&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Mjoyufull&#x2F;fsel&quot;&gt;fsel&lt;&#x2F;a&gt;, from my good friend &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Mjoyufull&quot;&gt;Rikona&lt;&#x2F;a&gt; &lt;em&gt;(very cool dude \o&#x2F;)&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I really the minimalistic &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;junegunn&#x2F;fzf&quot;&gt;fzf&lt;&#x2F;a&gt;-like feel of &lt;code&gt;fsel&lt;&#x2F;code&gt;, but I am not at the point of daily driving it yet.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Anyway... I digress.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We are focusing on the icon picker here. But hopefully, you now understand why I fell in love with the &lt;code&gt;late.sh&lt;&#x2F;code&gt; icon picker at first sight.&lt;&#x2F;p&gt;
&lt;p&gt;Alright, making a desktop icon picker out of this sounds good on paper but how do we proceed exactly?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-robbery&quot;&gt;The Robbery&lt;a class=&quot;post-anchor&quot; href=&quot;#the-robbery&quot; aria-label=&quot;Anchor link for: the-robbery&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;em&gt;Well...&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Since I had already made &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mpiorowski&#x2F;late-sh&#x2F;commits?author=coko7&quot;&gt;minor contributions&lt;&#x2F;a&gt; to &lt;code&gt;late.sh&lt;&#x2F;code&gt;, I had my own local fork ready and available. From this point, all I did was instruct &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;claude.ai&quot;&gt;lil&#x27; &lt;code&gt;claude&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; to extract the code for the icon picker into its own &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;latuicon&#x2F;commit&#x2F;0fc806c&quot;&gt;separate project&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I have to say: for these kind of refactor tasks, coding agents work really well.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;blog.lazyfreax.dev&#x2F;blog&#x2F;latuicon-icon-picker&#x2F;.&#x2F;stel_code.jpg&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;i&gt;that&#x27;s a &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;All_your_base_are_belong_to_us&quot;&gt;Zero Wing reference&lt;&#x2F;a&gt; btw&lt;&#x2F;i&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;And just like that: The &lt;code&gt;latuicon&lt;&#x2F;code&gt; project was born!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;(It was simply called &lt;code&gt;icon-picker&lt;&#x2F;code&gt; in the beginning, but anyway...)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I adjusted the UI a little bit so that it works better as a standalone TUI and after a few iterations, that&#x27;s what it looks like:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;blog.lazyfreax.dev&#x2F;blog&#x2F;latuicon-icon-picker&#x2F;.&#x2F;latuicon-v0.1.0.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Apart from the removal of external borders, addition of title&#x2F;subtitle and alignment tweaks, the look and feel is the exact same. As long as I am in the terminal, I can simply invoke it using the &lt;code&gt;latuicon&lt;&#x2F;code&gt; command in my shell.&lt;&#x2F;p&gt;
&lt;p&gt;Nice! We have got our standalone icon picker now!&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Hold up...&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;A TUI icon picker is nice and all but I thought the objective was to make this a desktop application, no?&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;the-cheat&quot;&gt;The Cheat&lt;a class=&quot;post-anchor&quot; href=&quot;#the-cheat&quot; aria-label=&quot;Anchor link for: the-cheat&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;So, we have a TUI now, but what we &lt;strong&gt;really&lt;&#x2F;strong&gt; want is a desktop application right?&lt;&#x2F;p&gt;
&lt;p&gt;If you are not already familiar with my &lt;a href=&quot;&#x2F;posts&#x2F;custom-desktop-web-apps-with-hyprland&#x2F;&quot;&gt;Hyprland shenanigans&lt;&#x2F;a&gt;, I like to find counter-intuitive ways of making desktop apps. I have never dabbled with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gtk.org&#x2F;&quot;&gt;GTK&lt;&#x2F;a&gt; before and though I reckon it would be cool to learn how to make actual desktop apps, I do not want to bother with that for now.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;But how do we make a desktop app without actually creating a new desktop app?&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;The answer is simple: &lt;strong&gt;We simply reuse an existing one.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;In my &lt;a href=&quot;&#x2F;posts&#x2F;custom-desktop-web-apps-with-hyprland&#x2F;&quot;&gt;&quot;Custom Desktop Web Apps with Hyprland&quot;&lt;&#x2F;a&gt; article, I use a custom Chromium browser instance to create fake desktop apps so that I can make any web app into its own &quot;application&quot;.
This works when your goal is to render Web User Interfaces but in our case we want to display a Terminal User Interface (TUI).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;No problemo.&lt;&#x2F;em&gt; ( ¬ᴗ¬)&lt;&#x2F;p&gt;
&lt;p&gt;If we need a web browser to turn websites into desktop applications, all we need is a terminal to turn TUIs into desktop applications. &lt;code&gt;¯\_(ツ)_&#x2F;¯&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The entire science is compacted within this &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;scripts&#x2F;blob&#x2F;main&#x2F;global&#x2F;floatty.sh&quot;&gt;floatty.sh&lt;&#x2F;a&gt; script:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F5C2E7;font-style: italic;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 3&lt;&#x2F;span&gt;&lt;span&gt;wm_class_suffix&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #EBA0AC;font-style: italic;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F38BA8;font-style: italic;&quot;&gt;shift&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 5&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 6&lt;&#x2F;span&gt;&lt;span&gt;full_wm_class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;floater-kitty-&lt;&#x2F;span&gt;&lt;span&gt;$wm_class_suffix&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 7&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;font-style: italic;&quot;&gt;# prevent multiple floater-kitty-&amp;lt;FOO&amp;gt; windows to be opened at the same time&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt; 9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt;hyprctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; clients -j&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt;  jq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; --exit-status --arg wm_class &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$full_wm_class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F5C2E7;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;    &amp;#39;any(.[]; .class == $wm_class)&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; 2&amp;gt;&amp;amp;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F38BA8;font-style: italic;&quot;&gt;  exit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FAB387;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;13&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;14&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CBA6F7;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;&quot;&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$FLOATTY_CAPTURE_OUTPUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;&quot;&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CBA6F7;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span&gt;  tmpfile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;&quot;&gt;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt;mktemp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F38BA8;font-style: italic;&quot;&gt;  trap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; &amp;#39;rm -f &amp;quot;$tmpfile&amp;quot;&amp;#39; EXIT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;17&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;18&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt;  kitty&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; --class &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$full_wm_class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot; sh -c &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; &amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F5C2E7;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$tmpfile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F5C2E7;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;19&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CBA6F7;&quot;&gt;  if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;&quot;&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$tmpfile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;&quot;&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CBA6F7;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;21&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt;    cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$tmpfile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;22&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CBA6F7;&quot;&gt;  fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;23&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CBA6F7;&quot;&gt;else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt;  kitty&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; --class &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$full_wm_class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot; sh -c &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot; style=&quot;color: #7F849C;&quot;&gt;25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CBA6F7;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Feel free to examine it yourself but if you are too lazy, here&#x27;s a breakdown:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;When invoked, it launches a new instance of &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;kovidgoyal&#x2F;kitty&quot;&gt;&lt;code&gt;kitty&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; &lt;em&gt;(my main terminal)&lt;&#x2F;em&gt; and assigns it the &lt;code&gt;floater-kitty-&amp;lt;SUFFIX&amp;gt;&lt;&#x2F;code&gt; window manager class &lt;em&gt;(where &lt;code&gt;&amp;lt;SUFFIX&amp;gt;&lt;&#x2F;code&gt; is an external argument)&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;The class is for &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;hypr.land&#x2F;&quot;&gt;Hyprland&lt;&#x2F;a&gt; &lt;em&gt;(my Window Manager)&lt;&#x2F;em&gt; to find the window and style&#x2F;position it properly&lt;&#x2F;li&gt;
&lt;li&gt;The check on &lt;code&gt;line 9&lt;&#x2F;code&gt; is to ensure only one instance with this WM class can exist&lt;&#x2F;li&gt;
&lt;li&gt;If &lt;code&gt;$FLOATTY_CAPTURE_OUTPUT&lt;&#x2F;code&gt; is set, the output of the shell command will be the output of this kitty instance&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Setting &lt;code&gt;FLOATTY_CAPTURE_OUTPUT&lt;&#x2F;code&gt; is important because without it, we would have no way of keeping track of the icon we selected in &lt;code&gt;latuicon&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The reason I made this &quot;capture&quot; an optional feature is because I actually re-use this &lt;code&gt;floatty.sh&lt;&#x2F;code&gt; script for many other desktop-like applications and I don&#x27;t need to care about the terminal &lt;code&gt;stdout&lt;&#x2F;code&gt; in all of them.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;&#x2F;strong&gt; We spawn a terminal, run stuff inside of it and do something on exit.
In our case, we could make &lt;code&gt;latuicon&lt;&#x2F;code&gt; into a &quot;desktop app&quot; by running the following command:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FLOATTY_CAPTURE_OUTPUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt; bash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; floatty.sh latuicon latuicon&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt; wl-copy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This would spawn a new &lt;code&gt;kitty&lt;&#x2F;code&gt; terminal and assign it the following WM class: &lt;code&gt;floater-kitty-latuicon&lt;&#x2F;code&gt;.
The terminal will run the &lt;code&gt;latuicon&lt;&#x2F;code&gt; program, let the user interact with it and pipe the output to &lt;code&gt;wl-copy&lt;&#x2F;code&gt; to update the system clipboard.&lt;&#x2F;p&gt;
&lt;p&gt;Nice! All that&#x27;s left is to wire this to an actual Hyprland keybinding:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9399B2;font-style: italic;&quot;&gt;# See https:&#x2F;&#x2F;wiki.hyprland.org&#x2F;Configuring&#x2F;Keywords&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;mainMod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; SUPER &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9399B2;font-style: italic;&quot;&gt;# Sets &amp;quot;Windows&amp;quot; key as main modifier&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;bindd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; $mainMod, comma, laTUIcon icon picker, exec, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;FLOATTY_CAPTURE_OUTPUT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;1 bash floatty.sh latuicon latuicon | wl-copy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;And lastly: We need some custom Hyprland rules to display it as a centered floating window of size 1000 x 800 pixels:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9399B2;font-style: italic;&quot;&gt;# Special rules for floating&#x2F;prompt terminals&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;windowrule {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;    name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; floater-kitty&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    match:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ^(floater-kitty-.*)$&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;    no_anim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; on&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;    float&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; on&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;    center&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; on&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;    size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; 1000 800&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;windowrule {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;  name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; floater-kitty-latuicon&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  match:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; floater-kitty-latuicon&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;&quot;&gt;  size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #94E2D5;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; 700 700&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;And voilà (* ^ ω ^) !&lt;&#x2F;p&gt;
&lt;p&gt;&lt;video
  controls
  autoplay
  loop
  muted
  playsinline
  preload=&quot;metadata&quot;&gt;
&lt;source src=&quot;.&#x2F;latuicon-demo-v0.1.0.webm&quot; type=&quot;video&#x2F;webm&quot;&gt;
&lt;source src=&quot;.&#x2F;latuicon-demo-v0.1.0.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
&lt;&#x2F;video&gt;&lt;&#x2F;p&gt;
&lt;p align=&quot;center&quot;&gt;Demo of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;latuicon&#x2F;releases&#x2F;tag&#x2F;v0.1.0&quot;&gt;&lt;code&gt;latuicon-v0.1.0&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;It works well and I use it everyday ٩(◕‿◕｡)۶ &lt;em&gt;(especially for writing this article!)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;new-features&quot;&gt;New features&lt;a class=&quot;post-anchor&quot; href=&quot;#new-features&quot; aria-label=&quot;Anchor link for: new-features&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Honestly, the original icon picker from &lt;code&gt;late.sh&lt;&#x2F;code&gt; already has everything I need.&lt;&#x2F;p&gt;
&lt;p&gt;The only features I added so far are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;an improvement of the search by making use of the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Levenshtein_distance&quot;&gt;Levenshtein&lt;&#x2F;a&gt; algorithm, which does word-level typo correction.&lt;&#x2F;li&gt;
&lt;li&gt;the &quot;all&quot; icon set to search through everything (only available in the latest &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;latuicon&#x2F;releases&#x2F;tag&#x2F;v0.1.1&quot;&gt;v0.1.1&lt;&#x2F;a&gt; release)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;strong&gt;Levenshtein&lt;&#x2F;strong&gt; thing is actually demonstrated in the demo video above.
When I type &lt;code&gt;volage&lt;&#x2F;code&gt;, it will actually allow me to select the &lt;code&gt;high voltage&lt;&#x2F;code&gt; emoji ⚡ (despite forgetting to type the &#x27;t&#x27; character).&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Levenshtein&lt;&#x2F;strong&gt; is probably not the most suited thing here but I wanted to have some fun.&lt;&#x2F;p&gt;
&lt;p&gt;I got the idea from my previous project; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;memonde.coko7.fr&quot;&gt;MéMonde&lt;&#x2F;a&gt;, an open-source Geography game where you have to guess all the countries of the world in 15 minutes.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Levenshtein&lt;&#x2F;strong&gt; works really well for this Geography game since there are a lot of countries to enter and you are under time pressure so having a system that does not require perfect spelling is a nice thing to have.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-licensing&quot;&gt;The Licensing&lt;a class=&quot;post-anchor&quot; href=&quot;#the-licensing&quot; aria-label=&quot;Anchor link for: the-licensing&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The reason I did not release &lt;code&gt;latuicon&lt;&#x2F;code&gt; sooner is that I was not sure how to solve the licensing aspect. The original &lt;code&gt;late.sh&lt;&#x2F;code&gt; project uses an &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.tldrlegal.com&#x2F;license&#x2F;functional-source-license-fsl&quot;&gt;FSL-1.1-MIT license&lt;&#x2F;a&gt; which I had never encountered before. So I took some time to read through it and ask around as I did not want to mess this up &lt;em&gt;(even if &lt;code&gt;latuicon&lt;&#x2F;code&gt; is likely never gonna be used by anyone other than myself).&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;So, before releasing it, I asked both &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mpiorowski&quot;&gt;Mateusz Piórowski&lt;&#x2F;a&gt; (creator of &lt;code&gt;late.sh&lt;&#x2F;code&gt;) and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mevanlc&quot;&gt;Mike Clark&lt;&#x2F;a&gt; (creator of the embedded icon picker in &lt;code&gt;late.sh&lt;&#x2F;code&gt;) if they were okay with me making the project public.&lt;&#x2F;p&gt;
&lt;p&gt;The newest development of the  &lt;code&gt;latuicon&lt;&#x2F;code&gt; project are under an &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;latuicon?tab=MIT-1-ov-file&quot;&gt;MIT license&lt;&#x2F;a&gt; but the initial commit, where I extracted the code from the &lt;code&gt;late.sh&lt;&#x2F;code&gt; project, is still under the original &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mpiorowski&#x2F;late-sh?tab=License-1-ov-file&quot;&gt;FSL-1.1-MIT license&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;As I understand, this FSL will naturally transform into an MIT license two years after the project initial release.&lt;&#x2F;p&gt;
&lt;p&gt;So, for now, I have kept both licenses in the &lt;code&gt;latuicon&lt;&#x2F;code&gt; repo:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LICENSE&lt;&#x2F;code&gt;: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;latuicon&#x2F;blob&#x2F;main&#x2F;LICENSE&quot;&gt;MIT&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;THIRD_PARTY_LICENSES.md&lt;&#x2F;code&gt;: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;latuicon&#x2F;blob&#x2F;main&#x2F;THIRD_PARTY_LICENSES.md&quot;&gt;FSL-1.1-MIT&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;That&#x27;s it for the legal shenanigans.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is &lt;strong&gt;NOT&lt;&#x2F;strong&gt; legal advice by the way.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;give-credit-where-credit-is-due&quot;&gt;Give credit where credit is due&lt;a class=&quot;post-anchor&quot; href=&quot;#give-credit-where-credit-is-due&quot; aria-label=&quot;Anchor link for: give-credit-where-credit-is-due&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Let&#x27;s be honest: I did not do much here. ʕ•ᴥ•ʔ&lt;&#x2F;p&gt;
&lt;p&gt;Apart from the two new tiny features I mentioned, the code of the &lt;code&gt;latuicon&lt;&#x2F;code&gt; project comes from these two amazing people:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mpiorowski&quot;&gt;Mateusz Piórowski&lt;&#x2F;a&gt; (creator of &lt;code&gt;late.sh&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mevanlc&quot;&gt;Mike Clark&lt;&#x2F;a&gt; (creator of the embedded icon picker in &lt;code&gt;late.sh&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;code&gt;latuicon&lt;&#x2F;code&gt; would not be a thing if it weren&#x27;t for the both of them.
When I told them about my project, they were both very cool with the idea and that gave me the little push I needed to release it into the wild.&lt;&#x2F;p&gt;
&lt;p&gt;I am very thankful to &lt;strong&gt;Mat&lt;&#x2F;strong&gt; for starting &lt;code&gt;late.sh&lt;&#x2F;code&gt; and &lt;strong&gt;Mike&lt;&#x2F;strong&gt; for all his past&#x2F;current contributions to the project.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Thanks guys 🙏&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;late.sh&#x2F;&quot;&gt;&lt;code&gt;late.sh&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; truly is a wonderful place. The community is very welcoming and the text channels are full of interesting discussions. It&#x27;s a very active community, and...&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;By the time I finished writing this article, it even got a brand new space where you can move around and interact with other users in a 2D world:&lt;&#x2F;em&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;blog.lazyfreax.dev&#x2F;blog&#x2F;latuicon-icon-picker&#x2F;.&#x2F;latesh_ascii_hub.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;If I did not convince you already, please consider swapping by to say hi 👋.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-conclusion&quot;&gt;The Conclusion&lt;a class=&quot;post-anchor&quot; href=&quot;#the-conclusion&quot; aria-label=&quot;Anchor link for: the-conclusion&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;I am much more happy using &lt;code&gt;latuicon&lt;&#x2F;code&gt; than I was using three different icon pickers.
This is, yet again, a project highly tuned for my own workflow, but that&#x27;s how it should be:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;blog.lazyfreax.dev&#x2F;blog&#x2F;latuicon-icon-picker&#x2F;.&#x2F;this_is_the_way_meme.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Every project I ever started was because I wanted to automate things away or simply have some fun. And as long as it works out for me, then I am happy 🙂.&lt;&#x2F;p&gt;
&lt;p&gt;If it ends up being useful to others: even better!
&lt;em&gt;But that&#x27;s just a bonus :)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;You can find the project on GitHub: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coko7&#x2F;latuicon&quot;&gt;github.com&#x2F;coko7&#x2F;latuicon&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;If you have &lt;code&gt;cargo&lt;&#x2F;code&gt; on your system, installing &lt;code&gt;latuicon&lt;&#x2F;code&gt; is very easy:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #CDD6F4; background-color: #1E1E2E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89B4FA;font-style: italic;&quot;&gt;cargo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A6E3A1;&quot;&gt; install latuicon&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I am not sure it works on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;endof10.org&#x2F;&quot;&gt;Macroslop Windows&lt;&#x2F;a&gt; and I personally don&#x27;t need it to... But if that&#x27;s something &lt;strong&gt;YOU&lt;&#x2F;strong&gt; care about, then feel free to open an issue on GitHub or contribute directly via a pull request. I will be happy to add that in.&lt;&#x2F;p&gt;
&lt;p&gt;That&#x27;s it for today.&lt;&#x2F;p&gt;
&lt;p&gt;Cya (˶ᵔᗜᵔ˶)ﾉﾞ&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
