[HN Gopher] Sequin: A powerful little tool for inspecting ANSI e...
       ___________________________________________________________________
        
       Sequin: A powerful little tool for inspecting ANSI escape sequences
        
       Author : linsomniac
       Score  : 86 points
       Date   : 2024-11-19 02:25 UTC (20 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | guessmyname wrote:
       | People have been posting about these Charm projects for a few
       | years now [1]. I think they look cool and, while I know they
       | exist, I have never found myself in a position where I want to
       | add them to my consumer-facing projects, nor even my personal
       | projects. Does anyone have examples of (public) non-trivial
       | Terminal programs that make use of these libraries?
       | 
       | [1]
       | https://news.ycombinator.com/from?site=github.com/charmbrace...
        
         | woodruffw wrote:
         | I similarly haven't used them, but vhs[1] looks very cool and
         | useful (at least for my purposes, where I like to have lots of
         | terminal demos in my documentation).
         | 
         | [1]: https://github.com/charmbracelet/vhs
        
         | terminaltrove wrote:
         | We have a lot here which this list is exclusively TUI programs.
         | 
         | https://terminaltrove.com/categories/tui
         | 
         | and another list which are terminal tool of the week where some
         | TUIs are complex, like dolphie, kaskade, trippy or pug for
         | example.
         | 
         | https://terminaltrove.com/tool-of-the-week/
         | 
         | https://terminaltrove.com/dolphie/
         | 
         | https://terminaltrove.com/kaskade/
         | 
         | https://terminaltrove.com/trippy/
         | 
         | https://terminaltrove.com/pug/
        
         | bewuethr wrote:
         | The GitHub CLI (https://cli.github.com/) uses Bubble Tea.
         | There's no good way to find popular dependents, but you can
         | browse
         | https://github.com/charmbracelet/bubbletea/network/dependent...
         | to see GitHub repos that import the module.
        
           | wlamartin wrote:
           | Just as a note, the GitHub CLI doesn't use bubbletea itself
           | right now, though it does use other charm libraries such as
           | lipgloss and glamour. That said, it's quite likely that at
           | some point we will use huh for our prompting library, which
           | does use bubbletea.
        
         | oulipo wrote:
         | I'm using `gum` in my personal shell scripts when I want basic
         | interaction (show a list, checkboxes, etc)
        
       | ljouhet wrote:
       | Great work: this tool will be really useful to me!
       | 
       | (Note: the "terminal animations" in github make the examples
       | difficult to read.)
        
         | EdSchouten wrote:
         | Indeed. A screenshot of the resulting output would have been
         | more useful.
        
           | frizlab wrote:
           | I literally took a screenshot of the animation to be able to
           | read it yeah.
        
       | aumerle wrote:
       | Or run
       | 
       | kitty --dump-commands program-whose-output-you-want-to-inspect
       | 
       | You can even save the --dump-commands output as edit it and then
       | replay it with
       | 
       | kitty --dump-commands program > commands.txt
       | 
       | kitty --replay-commands commands.txt
        
       | jakeogh wrote:
       | That's fantastic. Regarding the note about output detection, here
       | is a short tcl script that attempts to trick the app into
       | thinking it's writing to a terminal:
       | https://github.com/jakeogh/colorpipe
        
       | junon wrote:
       | Another banger from Charm! Adding this to my tool belt for sure.
        
       | pointlessone wrote:
       | Animated images in the readme are not a very good experience. I'm
       | trying to read the output and make sense of it and it just blinks
       | out. There's no good reason to have animation here. We all know
       | how text is typed in the terminal.
        
         | kreetx wrote:
         | It shows the CLI use, seems pretty useful to me.
        
           | Timwi wrote:
           | It doesn't show anything a still image that I can just read
           | wouldn't also show. It has no upside and only downsides.
        
         | arcanemachiner wrote:
         | Good use case for Asciinema.
         | 
         | https://asciinema.org
         | 
         | https://github.com/asciinema/asciinema
         | 
         | EDIT: Looks like image generator might be from one of their own
         | projects:
         | 
         | https://github.com/charmbracelet/vhs
        
           | Gormo wrote:
           | Given the purpose of the tool, it seems like the most
           | appropriate solution would be to use ANSI itself to animate
           | the text.
        
             | zellyn wrote:
             | Is that not what asciinema does?
        
       | jchook wrote:
       | Isn't it true that ANSI sequences can vary depending on the
       | terminal emulator? Does this program account for that somehow?
       | 
       | In my shell scripts I often use `tput bold` etc instead of
       | hardcoding the sequences.
        
         | Joker_vD wrote:
         | Well, yes, the _meaning_ can depend, although many sequences
         | have standardized meanings. The format of the sequences itself
         | is also standardized but of course, the terminals don 't need
         | to use it either! There has been lots of terminals that use
         | their own bespoke control sequences.
         | 
         | Still, nowadays people who write new terminal emulators tend to
         | approach with "do what xterm/libvte does" attitude which is
         | quite sensible: very few people use actual, physical terminals
         | anymore, and the software ones are, well, are generally based
         | on xterm or libvte (or that third library I keep forgetting).
         | 
         | And when was the last time terminfo has been updated anyhow?
         | Not to mention that it lacks info about modern features such as
         | e.g. the version of Unicode used/supported by the terminal.
        
           | zokier wrote:
           | > And when was the last time terminfo has been updated
           | anyhow?
           | 
           | Two weeks ago?
           | 
           | https://lists.gnu.org/archive/html/bug-
           | ncurses/2024-11/msg00...
           | 
           | > misc/terminfo.src | 40
           | ++++++++++++++++++++++++++++++-------
        
             | Joker_vD wrote:
             | Wow, reading the history at the end of that file is...
             | depressing. Well, good luck to Thomas E. Dickey, testing
             | the vt/xterm-compatibiity of all the newfangled terminal
             | emulators and maintaining capabilities on stuff like DJGPP
             | in perpetuity.
        
         | teddyh wrote:
         | > _Isn 't it true that ANSI sequences can vary depending on the
         | terminal emulator?_
         | 
         | Yes, historically, many terminals were not even ANSI
         | compatible. That is why the terminfo database (and its
         | predecessor termcap) exist; for programs to look at the TERM
         | environment variable, use that to look up the terminal's
         | capabilities in terminfo, and see what the terminal can and
         | cannot do, and then choose to output whatever sequences the
         | terminal _does_ support. Normally, a program uses yet another
         | library, like ncurses, to do this, but you can do it yourself
         | if you want to, like in a shell script or similar. Outputting
         | raw escape codes is wrong, since the correct way is so very
         | easy.
        
           | Joker_vD wrote:
           | Don't forget to take care about the terminal code pages as
           | well! Thankfully, terminfo tells you which commands to use
           | when you want to print e.g. b, right?
        
             | teddyh wrote:
             | The _easy_ way is to either restrict yourself to ASCII, or
             | to output raw characters in whatever encoding your locale
             | (LC_CTYPE, LANG, etc.) specifies. If you want to get
             | _really_ fancy with ancient terminals, some of them have,
             | for instance, line drawing characters (and, yes, sometimes
             | things like b) hidden behind special escape sequences,
             | which you can, IIRC, look up in terminfo.
        
               | Joker_vD wrote:
               | So the "correct" way is not that easy, after all.
               | 
               | On the other hand, ignoring ancient terminals and simply
               | pretending everything is color-enabled, VT-220
               | compatible, UTF-8 aware terminal emulator works well
               | enough(tm) almost everywhere, including recent versions
               | of Windows (which IIRC don't even have terminfo; not that
               | it'd help since the legacy Windows console uses
               | ioctl()-like interface instead of the escape sequences)
               | -- and is _actually_ easy.
        
       | binarybard wrote:
       | Amazing!! Love seeing these tools from charmbracelet!
       | 
       | On a side note - VHS and mods have been super helpful to me.
        
       ___________________________________________________________________
       (page generated 2024-11-19 23:01 UTC)