« BackShow HN: Chawan TUI web browserchawan.netSubmitted by shiomiru 9 hours ago
  • mariusor 6 minutes ago

    I've always tried to make my websites look good in Links and now it looks like I have a new candidate.

    Having support for some CSS makes it a bit more difficult, as spacing between elements is now an issue, where previously links would ignore margins and padding all together which were used to display cleaner inline list elements (for menus and such).

    • tra3 33 minutes ago

      Love it!

      Slightly off topic but I’d love to see a list of mainly text sites.

      My two favourites are https://plaintextsports.com/ and https://lite.cnn.com/

    • FerretFred an hour ago

      Very nice! I compiled this from source on my Lenovo M8 4h gen running termux: I only had to install nim. It even installed nicely despite there being no "root" user.

      • b0a04gl 34 minutes ago

        terminal browsers are hobby projects because no one's cracked input handling, rendering consistency, and real world JS compat in a clean stack. chawan looks nice, but using external binaries for protocols feels like sidestepping the real engineering. also still tied to niche image formats like sixel/kitty which barely anyone supports. it's a cool demo, yeah, but if your terminal isn't tuned right or you're on mac, you're still wrestling with keybinds and broken visuals. this isn't ready for real usage outside the dev echo chamber

        • akkartik 10 minutes ago

          Nobody thinks it is. Please see yourself out, your visa to the dev echo chamber has been revoked :)

          • baq 16 minutes ago

            You can get close tho: https://www.brow.sh/

          • noufalibrahim an hour ago

            This is beautifully done. I'm going to use this for some of my daily work and see how far I can get with it. HN looks exceptionally good. Thank you!

            • isaacvando 7 hours ago

              This is super cool! Bravo. Awesome to see it written in Nim too.

              When I do `cha example.com` I can't figure out how to use any of the commands (hjkl, etc). The only keys I've found that have any effect are typing numbers which show up in the bottom left. Haven't figured out how to do anything with those. Am I missing something obvious about how to use this or could this be a bug?

              I built from source on MacOS Sequoia 15.5 Apple Silicon using Nim 2.24. Pages load correctly, I just can't get the commands to work. Thanks!

              • isaacvando 6 hours ago

                I tried it in Ghostty, iTerm2, and Terminal.app and they all behaved the same.

                • shiomiru 6 hours ago

                  It's a bug, thanks for reporting. I've created a ticket: https://todo.sr.ht/~bptato/chawan/63

                  Could you please pull the macos-input branch from https://git.sr.ht/~bptato/chawan and report back on what the `a` file includes after opening a site and typing some commands? (Should be created in the current working directory.)

                  • isaacvando 5 hours ago

                    Here's the contents of a. Let me know if there are any other commands you'd like me to type.

                    ``` handleCommandInput 1, buffer "" c 'j' handleCommandInput 2, buffer "" c 'j' after handleCommandInput, buffer 0x104c5b780"j" c 'j' handleCommandInput 1, buffer "" c 'k' handleCommandInput 2, buffer "" c 'k' after handleCommandInput, buffer 0x104ca8b70"k" c 'k' handleCommandInput 1, buffer "" c 'l' handleCommandInput 2, buffer "" c 'l' after handleCommandInput, buffer 0x104c5bab0"l" c 'l' handleCommandInput 1, buffer "" c 'k' handleCommandInput 2, buffer "" c 'k' after handleCommandInput, buffer 0x104ca8d20"k" c 'k' handleCommandInput 1, buffer "" c 'j' handleCommandInput 2, buffer "" c 'j' after handleCommandInput, buffer 0x104c5b480"j" c 'j' handleCommandInput 1, buffer "" c 'h' handleCommandInput 2, buffer "" c 'h' after handleCommandInput, buffer 0x104ca89c0"h" c 'h' handleCommandInput 1, buffer "" c 'g' handleCommandInput 2, buffer "" c 'g' after handleCommandInput, buffer 0x104cae780"g" c 'g' handleCommandInput 1, buffer "" c '1' after handleCommandInput, buffer "" c '1' handleCommandInput 1, buffer "" c '2' after handleCommandInput, buffer "" c '2' handleCommandInput 1, buffer "" c '3' after handleCommandInput, buffer "" c '3' handleCommandInput 1, buffer "" c '1' after handleCommandInput, buffer "" c '1' handleCommandInput 1, buffer "" c '2' after handleCommandInput, buffer "" c '2' handleCommandInput 1, buffer "" c '2' after handleCommandInput, buffer "" c '2' handleCommandInput 1, buffer "" c '3' after handleCommandInput, buffer "" c '3' handleCommandInput 1, buffer "" c '\3' handleCommandInput 2, buffer "" c '\3' after handleCommandInput, buffer 0x104cae690"\3" c '\3' handleCommandInput 1, buffer "" c '\3' handleCommandInput 2, buffer "" c '\3' after handleCommandInput, buffer 0x104adaed0"\3" c '\3' handleCommandInput 1, buffer "" c '\3' handleCommandInput 2, buffer "" c '\3' after handleCommandInput, buffer 0x104ca8720"\3" c '\3' handleCommandInput 1, buffer "" c '\4' handleCommandInput 2, buffer "" c '\4' after handleCommandInput, buffer 0x104bf8d80"\4" c '\4' handleCommandInput 1, buffer "" c '\3' handleCommandInput 2, buffer "" c '\3' after handleCommandInput, buffer 0x104caaa80"\3" c '\3' handleCommandInput 1, buffer "" c '\4' handleCommandInput 2, buffer "" c '\4' after handleCommandInput, buffer 0x104ca8e40"\4" c '\4' ```

                    • shiomiru 4 hours ago

                      Strange, so it sees your input but still doesn't evaluate the commands...

                      OK, let's try something else. On master, is anything written to the status line if you press `p` when started with

                          cha -o'page.p="pager.alert(config.page.j)"' -V
              • zquestz 3 hours ago

                This works great, been playing with it through s-search and it works way better than w3m. =)

                • higon 2 hours ago

                  Long time w3m user here. Tried it and I can love it. Very nice.

                  Is that your design choice not having "Open URL"(Address bar) feature?

                  • silasdb 5 hours ago

                    Wonderful! Thanks!

                    I see you don't use termcap/ncurses anymore. Do you perform terminal handling yourself directly?

                    Thanks again!

                    • shiomiru 4 hours ago

                      Chawan never really used ncurses, only termcap. (ncurses just happens to implement termcap too.)

                      I started with termcap because I was already familiar with it through w3m. But termcap is an obsolete interface, and cannot describe the only useful attribute for modern terminals (true color). Its only benefit was "maybe it accidentally works on a hardware terminal from the 80s", which is cool but not really worth the extra failure mode.

                      So instead of migrating to terminfo, I ditched it completely in favor of terminal queries (which were already necessary for other reasons). There is still a built-in terminal database, to detect known TERM values with XTerm incompatibilities. But a terminal that correctly responds to queries will work out of the box, even if its TERM value is unknown.

                    • hecanjog 9 hours ago

                      I love this browser, thank you for building it!

                      • shiomiru 9 hours ago

                        Glad you like it :)

                      • greenspam 7 hours ago

                        Finally a good tool to view HN in terminal. Thank you! Where can I find the keyboard shortcuts? I can move with vim key binding, but can go back.

                        • shiomiru 7 hours ago

                          cha-config(5) or about:chawan. The former also has an online version: https://chawan.net/doc/cha/config.html#pager-actions

                          For navigation in particular you'd use capital D to discard the current buffer and return to the previous page. There's also , (comma, back) and . (period, forward), which non-destructively cycle through the stack.

                          (Well, it's really a tree, but the UI mostly treats it as a stack.)

                          • greenspam 6 hours ago

                            Thank you so much!

                        • ijustlovemath 8 hours ago

                          My jaw dropped when HN loaded first try from Termux! Nice work!

                        • elcritch 7 hours ago

                          I recommend perusing the code. Since it’s in Nim it’s pretty approachable (and performant). There’s still lots of gnarly bits like implementing HTML DOM and web specs, but it doesn’t take you days to grasp the basic setup.

                          • etaioinshrdlu 9 hours ago

                            I rabbit-holed a little and apparently Chrome and Safari no longer even fully pass Acid2 and Acid3?

                          • mikeponders 7 hours ago

                            Gotta love Nim

                            • desireco42 an hour ago

                              I think making markdown browser would totally make sense for terminal and would work really well. Come to think about it, you can even, Netscape style even allow editing of the pages. Now that would be something.

                              Nim is wonderful language and I am glad to see it used for this.

                              • corv 8 hours ago

                                Awesome and in Nim!

                                • lucideer 6 hours ago

                                  Absolutely incredible. And it even supports gopher.

                                  • agumonkey 7 hours ago

                                    as a tiny web fan, it's lovely to see projects like these, *claps*

                                    • marcodiego 9 hours ago

                                      GPM support?

                                      • shiomiru 8 hours ago

                                        No GPM yet, but it does recognize XTerm's mouse protocol.