readline
charm
readline | charm | |
---|---|---|
2 | 8 | |
23 | 2,237 | |
- | 2.2% | |
10.0 | 6.3 | |
about 3 years ago | 7 days ago | |
Go | Go | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
readline
-
Charm: a new language in, with, and for Go
... I kind of am, though. Which is why I didn't know what to do. I don't see a lot of free open source projects with extensive documentation in their README. Some, yes, but for example here's the readline library I'm using. I, in my well-meaning ignorance, supplied 50 pages of documentation and people are behaving like I ate a baby 'cos it's in the wrong format. I will now put it all in the README as people would like, but I did genuinely act out of ignorance and not out of a wish to insult the customs of the tribe.
-
Guide: Hush Shell-Scripting Language
> I would like to see a framework for creating rich REPLs that would be language agnostic, so that I could get a state of the art auto-completion dialog no matter which language I decided to make into a shell.
It's doable with existing tools. You have LSP to provide the syntactical framework and there's no shortage of alternatives to readline (I'd written my own[1] to use in murex[2], and open sourced that).
[1] https://github.com/lmorg/readline
[2] https://murex.rocks
The problem you still face is that a good shell will offer autocompletion suggestions for strings that aren't language keywords or function names. eg
- file names; and there's a lot of hidden logic in how to do this. Do you build in fzf-like support, just include fzf wholesale but increase your dependency tree, or go for basic path completion. Do you check metadata (eg hidden files and system files on Windows), include dot-prefixed files on Linux / UNIX, etc. How do you know when to return paths, or paths and files, or even know not to return disk items at all? (see next point)
- flags for existing CLI tools (assuming you want compatibility with existing tools). Fish and murex will parse man pages to populate suggestions, others rely entirely on the community to write autocompletion scripts.
- Are you including variables in your completion of strings. And if so are you reading the variables to spot if it's a path and then following that path. eg `cd $HOME/[tab]` should then return items inside a your home directory even though you've not actually specified your home directory as a string. That means the shell needs to expand the variables to see if it's a valid path. But that's a shell decision rather than a language feature.
Some of these lists might take a while to populate so you then have another problem. Do you delay the autocompletion list (bad UX because it slows the user down) or provide the autocompletion sooner. And if the latter, how do you do that without:
1. changing the items under what you're about to select causing you to accidentally select the wrong option
2. communicate that there are update clearly
3. ensure the UI is consistent when slower loading entries might not fit the same dimensions as the space allocated for the list (if you dynamically size your completions to fit the screen real estate)
4. ensure that there's still something present while you're lazy loading the rest of the suggestions; and that those early entries on the completion list are worthwhile and accurate
5. what about sorting the list? Alphabetical? By feature? etc
The REPL in murex was inspired by IDEs so I've spent a lot of time trying to consider how to provide the best UX around autocompletion. One thing I've learnt is that it's a lot harder to get right than it seems on the surface.
charm
-
Is it too early to use Zig for CLI tooling ideas?
I think zig might actually be the best language for CLI if it had a charm ( https://github.com/charmbracelet/charm ) like eco system
-
How to share terminal apps over ssh just like "ssh git.charm.sh" ?
I think that ssh terminal app is made with this go package: https://github.com/charmbracelet/charm
-
Glow: Render Markdown on the CLI
Run it yourself if youβre concerned =)
https://github.com/charmbracelet/charm
-
Charm: a new language in, with, and for Go
Not too much to say on this but you may want a different name, charms already used for a go terminal library https://github.com/charmbracelet/charm
-
TIL: There's modern go based menu systems for ssh and markdown that work like retro bbses
Basically to translate to functionality not o.g. tech implementation:* https://github.com/charmbracelet/wish - is a Doorlib* https://github.com/charmbracelet/harmonica - RIPGraphics in sixel* https://github.com/charmbracelet/charm - the bbs engine / database / filestore* https://github.com/charmbracelet/bubbletea - UI Widgets for doors / menus* https://github.com/charmbracelet/wishlist - The actual menu system
-
charm VS FINAL CUT - a user suggested alternative
2 projects | 24 Jan 2022
- Charm β tools to make the command line glamorous
- I looking for a TUI liberary/framework with good aesthetics.
What are some alternatives?
Lisp-in-Charm
lipgloss - Style definitions for nice terminal layouts π
stshell
rich - Rich is a Python library for rich text and beautiful formatting in the terminal.
hush - Hush is a unix shell based on the Lua programming language
textual - Textual is a TUI (Text User Interface) framework for Python inspired by modern web development. [Moved to: https://github.com/Textualize/textual]
u-boot - "Das U-Boot" Source Tree
mapscii - πΊ MapSCII is a Braille & ASCII world map renderer for your console - enter => telnet mapscii.me <= on Mac (brew install telnet) and Linux, connect with PuTTY on Windows
shelljs - :shell: Portable Unix shell commands for Node.js
wetty - Terminal in browser over http/https. (Ajaxterm/Anyterm alternative, but much better)
go-regex - A High Performance PCRE Regex Package That Uses A Cache.
textual - The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and a web browser.