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