129 comments

[ 3.6 ms ] story [ 146 ms ] thread
"You need to have Firefox 57 or newer installed"

browsh is in no way a replacement for lynx in any way. It's a nice project nonetheless.

Agree. Being able to verify web functionality on a remote box through lynx can be surprisingly helpful. There’s also just something helpful about being able to do stuff in just a terminal or all keyboard.
The docker image does contain that, though.

It's a suprisingly powerful way of running a full browser on a "mainframe" (ha!), and ssh/moshing in from a terminal on a bad link.

I guess it's outside of the scope of what mosh is trying to achieve, but if they could add the ability to port-forward into it, that would be great.

I often use SSH as a poor's man VPN through a SOCKS proxy in areas where some VPN protocols won't go through, and having the resiliency of mosh would be great.

mosh is so resilient partly because of its own UDP protocol...which gets dropped in many places. If VPNs don't go through, don't expect mosh to do so :( If in a hard place, I usually need to fall back to SSH on port 443...and even that may not be vanilla enough.
May I recommend links[0] as a replacement? It is as far as I can tell still actively maintained and is one of the first things I install on a new Linux system.

[0] http://links.twibright.com/

Yep. Seems much better than Lynx.
i see your links and raise my elinks
That's the one I prefer to use as well. It has better compatibility with colors, it might also have some js compatibility, I think. Basically, it looks like I often get a better result with it.

And of course, duckduckgo is very usable with elinks. mediawiki and wordpress sites tend to be quite good as well!

Slightly off topic, but I never realized that Twibright maintained links. I remember seeing their 10Mbps optical links years ago and thinking they were pretty cool, and didn't notice all of their other projects, even though I was using one of them.
Unlike what the article might suggest, lynx isn't dead. It is still maintained.
Alternatives to lynx: links, elinks, and my preferred console browser, w3m.

Like links/elinks, w3m supports tables and other layouts. It adds in vim-like keybindings, which I find vastly more memorable than lynx's keybindings, or the menu-driven approaches of links/elinks.

If you're now using lynx, you'll probably keep on prefering it. If you're coming from the vim camp, you may well want to try w3m.

Other features I like: the extensive configurability, colour schemes, and numerous URI handlers which can be specified. Nominally, those are for launching other browsers, but you could just as well chain in scripts or processes for various workflow uses.

So I need a full install of Firefox to use Browsh for just text-based browsing?

Thats like Lynx requiring Electron for text-only web browsing, which sounds more like a massive downgrade in the view of a minimalist user's point of view.

Nevertheless, a great project feature-wise with having most if not all of Firefox's features in a text-only fashion.

The project is interesting enough on its own merits—introducing it as a replacement for Lynx just seems like bad positioning.

It’s like saying “New minimalist transportation mode that replaces the bicycle! (Requires an existing car and jet engine)”

> So I need a full install of Firefox to use Browsh for just text-based browsing?

Yes, but at the server side you SSH into so your local connection isn't downloading the full images/other and your local compute resource isn't processing them.

Of course you can run it all in one place, but as you suggest that would be a little pointless beyond the "cool plaything" factor.

Lynx doesn't appear to actually be "dead". Last patch was in August.

https://lynx.invisible-island.net/current/CHANGES

Browsh is fun, but at first I thought they were implying Lynx had been officially deprecated or something.

(Lynx is usually my rough benchmark tool for whether or not my personal site is accessible enough)

"X is dead, long live Y", is a meme. I wouldn't read into it past, "I'm switching from X to Y".
The meme is actually "X is dead, long live X" - it's been misused here.
It is X and Y, the original phrase used the word 'king' in both places but it refers to a different person each time (i.e., the dead king and their successor). It would not make sense to say "Lynx is dead, long Live Lynx" as that implies Lynx's successor is itself. In the words of Robert Cecil: "The League is dead. Long live the United Nations."
(comment deleted)
But the word play is important, this fact seems lost on the OP.
Is it, though? The title obviously communicates that a project called Browsh aims to be a sort of successor to Lynx.
This is more like attempted regicide than succession!
> The original phrase was translated from the French: Le roi est mort, vive le roi!, which was first declared upon the accession to the French throne of Charles VII after the death of his father Charles VI in 1422.

Charles VII would have probably not been amused by this historic statement being called a meme :-D

It is actually a (pretty silly) meme itself that being a meme is derogatory :)
IDK, is a meme really a derogatory name for an idiom?

I tend to think of memes as simply more attached to the current era. Sure our current era is devolving into madness, but I like to believe in a world with beautiful memes and healthier societies.

On the other hand, Charles VII is dead, and thus in no position to object to the accurate description of this historic statement as a meme.

Even if he weren't, I feel like this would be pretty far down on the list, considering that the intervening centuries have also seen the fall of the French monarchy...

I doubt Charles VII had much opportunity to read Dawkins.
Y=X is a specific instance of the expression.
Back in my time those kinds of ‘memes’ were known as ‘idioms’ and one would be marked down for misusing a term or failing to identify one, but... whatever.
Yeah I hate articles titled like this, I immediately went to check if Thomas Dickey had passed away or something. If something so simple and easy to use, isn't broken I don't know why people continuously think they need to redo the wheel.
Hey mods, may I suggest shortening the title to "Browsh for text-based internet browsing (2018)"?
"She just wanted a text-based web browser, but she never expected THIS".
If I one day have lots of spare time, I think I want to build a neural network and a browser extension that will replace all clickbaits with something. Not sure if it was better to translate them into proper language or just make them even more laughably stupid. Maybe a setting to choose... Wonder if there is a labeled dataset already somewhere?
I also thought about this, but I would replace them with empty or collapsed space.
I wonder if we can get Congress to ban the word "this" from news headlines?
For sure. Done.

(Btw, that was my idea of how to shorten the title too. When you can make a title better simply by taking a substring, that's the best—it minimizes the surgery. The more titles I edit the more I hate having to make up anything, even a single word, to put in there. And sometimes it's sort of magical what you can come up with if you just do a substring search!)

Agreed. Just because Scott Hanselman, or anyone else, says something is so, doesn't mean it is. Some software doesn't actually need or benefit from constant updates, and I think it's fair to say lynx probably falls into this category.
> Lynx is usually my rough benchmark tool for whether or not my personal site is accessible enough

That's a great idea, but the result was a little depressing when I ran the test on my personal site, because it arguably looks better than it does in Firefox...

That's about the same on my end as well—keep it no frills for the most part.
(comment deleted)
Ok, we've removed the exaggerated report of Lynx's death from the title above.
My text oriented browser of choice is M-x eww in emacs. Obviously it doesn't work for everything but it works for some things I care about.

For example going over "who is hiring" posts on HN with full access to the text navigation and search functions in Emacs.

We'll decide when it's dead, thanks.
This is awesome. Normally I use links, but it's limited in what it can do. Basing this off firefox with a text renderer means that I can text mode browse from a remote ssh session to any website with 99% certainty that it will work!
i thought w3m was the go to text-based browser... i already felt like i was missing out when using elinks (which in a sense is better then lynx). Lynx has the nice feature that it can dump out the ascii version of a html page.
I still use w3m, for basically an easier, less cluttered text based version of a page. Cuts the cpu goblins found in adverts too. Some sites just won't work for me in a modern browser without at least some blocking.

Personally I find w3m easier on my eyes. I have tried to run with it as my primary, but oddly enough some of the full baked browsers still feel faster. That I can't really figure out! It could be pre-fetching or pre-renders, or some other trick.

I tend to have at least one JS disabled browser, with my own stylesheet to ape something akin to the console browsers.

I've found a few other interesting uses for w3m over the years:

* Render HTML email in mutt.

I put the following in ~/.mutt/mutrc:

    set mailcap_path=~/.mutt/mailcap
    auto_view text/html
Then in ~/.mutt/mailcap:

    text/html; w3m -T text/html -dump %s; copiousoutput
* Reading Markdown files:

    markdown README.md | w3m -T text/html
AFAIU w3m downloads the full page before it begins rendering. This can take time on complex sites.

Most GUI browsers will begin rendering before the download is complete. Advantage: faster render. Downside: display changes as additional elements are retrieved / sized / rendered (for JS/dynamic elements).

I agree. I love the `-dump` flag (and use it to provide html rendering in my gopher/gemini/finger/file client).
I must be out of touch, I thought elinks was the standard-bearer for text-based internet browsing. This is a cool idea though, might have to test it out.
browsh doesn't work well for me at all.

https://q3k.org/u/d808e1792782743cd58d4bd04a760211dde2075c32...

browsh on the left, links on the right, showing this comment thread.

(the terminal emulator is urxvt, which has so far had no trouble rendering any sort of TUI)

According to the FAQ, this happens if your terminal does not support true (24bit) color.
Try ALT+m to toggle monochrome mode.
Nah, not dead by a long shot, and way less bloated than firefox.

2328M 831M select 0 24:33 2.05% firefox

29656K 9096K ttyin 7 0:00 0.00% lynx

What are these numbers?
Likely ps or top output showing process memory (VSZ/RSS) utilisation.
Requirements:

- Firefox

- Docker

Yeah, it's not replacing Lynx any time soon.

SO someone saw Lynx and thought it wasn't using enough memory? So lets make a lynx that requires a running instance of firefox?

I don't get it.

The title is terrible because I don't really see Lynx (nor links) and Browsh as competing projects.

The former is a low footprint console browser with it's own rendering engine. So it doesn't always get stuff right -- particularly not on JS heavy sites.

The latter is ostensibly a console frontend for Firefox so it works with JS and all the other goblins of modern websites.

The commonality is obviously the "console" part but that's like saying notepad.exe and Visual Studio are equivalent because they're both Windows GUI applications.

Links is the best text based web browser.
Lynx (and/or Links) is my #2 browser for day-to-day traffic.
I sail on merchant ships and Lynx is my primary browser on extremely slow and laggy satellite connections at sea. You really need to curate what sites you will use with it because most modern sites degrade to unusable. But when you find one that does degrade gracefully, it can be a better experience to use Lynx than a modern browser. I like Lynx so much that I sometimes use it ashore.
Can you name some sites you use? I would use it more, for lack of some more of those sites that degrade gracefully.
Any major websites doing this well? The impression I have is that current technologies are not making it easier for Lynx to survive. In the other hand, I see people that can actually(?) browse without Javascript enabled, which makes me curious about the current state of things.
Funnily enough, HN actually works reasonably well in lynx.
As long as you don’t type « g » « news.ycombinator.com » and then Lynx thinks you’re trying to access a Usenet service via NNTP.

Gotta put in https:// always.

Metafilter always worked wonderfully, but it's been a while since I've tried it.

Not sure that counts as major.

In a way, it’s improved over the past 2 decades because nobody uses Frames anymore.
I don't use Lynx much, but Wikipedia, HN, Everything2 work fairly well.
Thanks for reminding me about Everything2. I used to spend so much time on that site, but somewhat forgot about it over the years.
https://lite.cnn.com/en

Also, the main sites for the BBC, New York Times and Washington Post all work just fine without javascript and in terminal-based browsers (I'm partial to emacs' eww.) In my experience javascript is not necessary for a great many websites, including some major ones. Most links I click through from HN work fine without javascript, although there is some selection bias there.

(comment deleted)
Have you tried w3m?
Yeah, w3m is now my favorite terminal browser.
Google was lynx friendly for a long time but that seemed to have stopped this year :(. RIP Google
If I was the lead designer of Reddit I'd make this the goal, gracefully degrades to be accessible on Lynx but still looks great in a modern browser, instead of making it 100x more complicated for no reason. They learned nothing from Digg (or HN for that matter).
I'm still using old.reddit.com instead of the modern rework because the old version is fully compatible with Vim browser plugins while the new one has all kinds of issues with keyboard-focused usage.

This is a frequent symptom on websites that consist of more JS than HTML: they often won't even let you scroll the page without a mouse, let alone have UI that's visible to plugins(I never tried it, but I'd bet these same sites would also appear basically empty to screen readers etc.).

Old.reddit.com is fine until you follow someone’s link on reddit and it takes you back to the new reddit. Argh.
There are extensions (at least for Firefox, but I think Chrome has those too) to always redirect to old reddit.
You can also log in and set your preference to old reddit
That does not work in my experience.
(comment deleted)
I can't figure out what the Reddit dev team's plan is. Their front-end is way worse now than it was five years ago - much slower, and nags you to install their app on mobile.
> I can't figure out what the Reddit...'s plan is ... and nags you to install their app on mobile.

That part the cynic in me sees as obvious: easier tracking with the perms that most apps require, so they can command a higher price for any ad impressions.

I think the same is true for a great many apps that could be replaced by a well constructed site or, if offline use is needed, a PWA (the argument of supporting old devices is moot: if your phone is too old to run a well written PWA reasonably then it probably isn't new enough to be well-supported by the related native app either).

When I was developing a custom e-shop 14 years ago, using Lynx was one way it was tested too. :) It still works quite nicely in Lynx, at least for browsing.

https://shakes.cz

Does it bother you when you type in « news.ycombinator.com » and then it tries to make an NNTP connection because of the « news » sub domain?

Gets me every time.

Except this happens to me when I’m running low on my Canadian dataplan and need to ration data because of economic failure limitations, not true physical ones.

Ha - I have the same problem. Then for fun I log into some nntp sites and browse around. I often visit a webpage with lynx and save it locally, then read the file later using emacs or something else. BTW I discovered by accident that Lynx is a lovely filter for Medium.com pages. It does away with all the javascript and provides you with a terminal full of the content. When it's long form content, I find lynx delivers the promise of Medium.com better than the "modern browser" experience does.
Curious: How does Opera Mini fare in comparison?

During 2000s, Opera Mini created a great web browsing experience over 56k dial-ups.

I use it all the time when I’m on a 1gb SIM overseas. Works for 95% of websites.

Since it’s a proxy/VPN, it also gets around paywall limits.

Eh, it's still a captive UI. I'd like to see a browser somehow decomposed into individual actions I can compose in the shell. I have only vague thoughts on what that'd look like, but I keep hoping someone beats me to fleshing it out.
this made me curious :) do you have some written draft of that idea or need to be asked a series of questions to get it out?
I've rambled in a few places, but I don't have something collected and coherent.

The general principle is exercise of a general push against "the application" as unit of functionality. My main inspiration has been nmh (https://www.nongnu.org/nmh/). As compared with traditional mail clients, it pushes individual mail-related actions into the shell.

The mail client has the advantage of not really needing a long-running process, but that isn't really a blocker - put the functionality behind an API and expose it through utilities, talking to a socket based on shell variables, and you can put together a pretty compelling experience. I wrote a libpurple client that worked that way. Where relevant, you can poll in PROMPT_COMMAND.

What does this look like for a web browser? ¯\_(ツ)_/¯

We can mimic a typical web browser experience, with commands to follow links, maybe manage tabs, interact with UX elements, poke the JS on the page?

But maybe we could also move away from the sense-of-place metaphor that puts us "on" one page at a time, and fold in stuff learned in spidering? Once we get thinking outside the box, there might be some really interesting things to find.

Or maybe not.

Please ask any questions you're left with :)

The problem I see is that many websites that rely heavily on JS have become pretty much applications rather than websites and as a result they heavily rely on a long running process. The way I understand this problem, this would rather require a long running browser process and (socket based) API exposed for external commands/apps to work with. But then again this would be not much different than Selenium or the likes. The API could be very different but the general principle (web browser process and an API for external applications to control it) would be the same.
Yeah, I think that's about the shape of it. And I think it's something we don't currently have a good, well established pattern for.

It calls for something more localized than a daemon, but longer lived than a utility. We see something similar with language servers. In that case (IIUC, and I may not) they're typically tied to specific places in the directory structure (eg. listening on a unix socket created in the root of the relevant source tree).

For the chat client I mentioned above, I tied things together with shell and environment variables. The script to start the long-running process read its initial output and set things up so that future commands would know which process to talk to. The code is at https://github.com/dlthomas/genies

That's a bit of a silly comparison. "The only dependency is a recent 57+ version of Firefox." Ha ha ha ha...

It's a nice project by itself, but I have to wonder why there's such heavy emphasis on binary-only distribution - there's no link for a source download, no Makefile, no meaningful notes. guess we have to just grab the files from Github and just poke around for a while until we figure it out?

What's the point of this? It's still running javascript, it's still downloading images, it's still doing DOM layout. This just seems like a gimmick that renders a page as ASCII art. It's cool, but it's not a Lynx replacement in any way.

Lynx and other text based browsers are useful because they save bandwidth/data by not having to fetch a ton of resources, are safe and fast because they don't run javascript, and are accessible since there's no computer built in the past like 30 years that will struggle to run one. The only draw back is that some sites don't work well with them, and the UX will push away non-computer geeks.

All of that is happening on a different computer with a fast connection, and then it's sending you the result of all that rendering in a highly-compressed from.

It's almost like using VNC in some ways...

I think the best course of action is to build elinks-like console interface on top of the Servo[1]. Just without the WebRender and optional JavaScript engine.

[1] https://github.com/servo/servo/

I wish there was actually a curses or console renderer backend to blink or another engine. But seeing what a hell the gtk2 integration was, it showed me that the renderer is so closely tied together this would be impossible with the resources available. Maybe servo is capable of such a thing?
Browsh feels like a graphical browser that’s descended into the terminal (because it basically is, in terms of implementation.)

I’d be much more into a terminal browser with modern JS, CSS and HTML5, but which was written to be terminal based from the ground up.

ASCII art style rendering is a fun novelty, but I didn’t find it ultimately very helpful. Having a JavaScript engine on the other hand absolutely helps, especially for sites with non-trivial login forms.

Is there another browser project that’s more like lynx/links/w3m but with added JavaScript support?

OK, good for the authors of browsh, I like to see open source projects (I am wearing a FSF tee-shirt as we speak).

That said, I just installed and played with browsh and I like lynx better. To be fair, this might just be 25 years of use, so lynx seems very natural to me.

My favorite use for links (I use links not lynx, but they're basically the same tools from an efficiency standpoint) is on an airplane where I have terrible internet connection.

Browsh is not killing _true_ CLI-based text-only browsers any time soon. It's an interesting piece of work, but it's incredibly arrogant to tout it as a lynx/links killer.