Show HN: Browsh – A modern, text-based browser(brow.sh)
brow.sh
Show HN: Browsh – A modern, text-based browser
https://www.brow.sh
322 comments
Can it be made not to show WebGL, embedded video, and so forth? I enjoy a very serene internet using w3m set to monochrome, with mouse and images turned off. Every now and then it's necessary to use a graphical browser, and it's the sensory equivalent of being woken up by a toddler at 5:30 on Christmas morning.
Seeing as images are so pixelated as to be near-indistiguishable, I think it would be nice for browsh to have a status line where it shows accessibility metadata (e.g. alt="" attributes) of whatever element is currently in focus.
It might also be nice to have a mode where images are just replaced by filled boxes that are more visually distinguished from the surrounding content.
It might also be nice to have a mode where images are just replaced by filled boxes that are more visually distinguished from the surrounding content.
> Its main purpose is to significantly reduce bandwidth and thus both increase browsing speeds and decrease bandwidth costs.
How does it reduce bandwidth exactly? It still has to grab all the html/css/js for the site being rendered.
How does it reduce bandwidth exactly? It still has to grab all the html/css/js for the site being rendered.
Very cool! I find the pixelated images to be quite charming. One thing I noticed, when I go to https://text.brow.sh it reads: `Welcome to the Browsh plain text client.
You can use it by appending URLs like this;
https://html.brow.sh/https://www.brow.sh`. Should it be `https://text.brow.sh/https://www.brow.sh` instead?
I'm not sure what the desired outcome should be but successive iterations has strange results:
https://html.brow.sh/https://html.brow.sh/https://html.brow....
https://html.brow.sh/https://html.brow.sh/https://html.brow....
Sadly it doesn't seem like it can render even basic HTML forms, which other text browsers can do. Otherwise it'd be very useful.
[1] https://html.brow.sh/https://ichi.moe/
[1] https://html.brow.sh/https://ichi.moe/
Also check out: Emacs eww. Handy when you are reading through a manual with lots of code examples, and copy pasting from a web page becomes work by itself.
Just in case you're put off by the thought of Emacs keychords, note that you can also use mouse to move backward and forward through history (it has icons for those), and of course you can click links.
But more importantly, it's Emacs. So if you wanted, you can press a key have the code copy-pasted to a temp file, run the compiler on that, display the result in a new window and file away both the code and the result to an org file for further studying.
Just in case you're put off by the thought of Emacs keychords, note that you can also use mouse to move backward and forward through history (it has icons for those), and of course you can click links.
But more importantly, it's Emacs. So if you wanted, you can press a key have the code copy-pasted to a temp file, run the compiler on that, display the result in a new window and file away both the code and the result to an org file for further studying.
Pretty sweet!
Curious: why headless firefox and not headless chrome? Also: 'its main purpose is...to reduce bandwidth.' How does this reduce bandwidth? Is the assumption that you would deploy browsh on a server and ssh/mosh against that, and the bandwidth savings are to the client? (But full bandwidth usage to the server)?
Curious: why headless firefox and not headless chrome? Also: 'its main purpose is...to reduce bandwidth.' How does this reduce bandwidth? Is the assumption that you would deploy browsh on a server and ssh/mosh against that, and the bandwidth savings are to the client? (But full bandwidth usage to the server)?
Reminds me a bit of reading about (I don't recall actually using one) web accelerators, or proxies that would retrieve and strip down content requested by a low powered/bandwidth client. I think these have pretty much disappeared over the last 10 years as bandwidth increased and mobile devices became more powerful.
Added: I guess https://www.opera.com/turbo still provides this feature. Is there anything comparable that can be self-hosted?
Added: I guess https://www.opera.com/turbo still provides this feature. Is there anything comparable that can be self-hosted?
The algorithm used in chafa for img→unicode would improve the image quality: https://github.com/hpjansson/chafa/
Is there a way to point it to a different Firefox installation path? It only looks at Program Files{x86} and then quits as it doesn't find the FF installation at Program Files.
This kind of stuff helps restore my faith in humanity. It makes me feel like a hacker again. Life starts and ends with the command line.
$ ssh brow.sh
All of Browsh's servers are currently busy. Please try again soon.
Connection to brow.sh closed.
Seems like a cool way to do a demo for something that's a bit painful to install on macOS (would love to see $ brew install browsh). I'll have to give it another look once the HN effect has died down.Can someone explain the usecase for Text-based browsers? While they're fun to show off to my non-tech friends when running without X11 and looking like a hacker, I've never needed one.
Mind blown how accurate this is, I've sent you some BTC as token of appreciation even though I do not have any application for what you've built right now. A lot of work has gone into this and it shows.
edit: it's so good that I got confused about which window I was looking at and tried to click links with the mouse :)
edit: it's so good that I got confused about which window I was looking at and tried to click links with the mouse :)
Neat project. It seems to have trouble rendering text from some text heavy pages. For instance, see the missing characters in the posts here: https://html.brow.sh/https://old.reddit.com/
Just a heads up: enter https://www.brow.sh:443/ url here http://sitereview.bluecoat.com/lookup
"As of writing in 2018, the average website requires downloading around 3MB and making over 100 individual HTTP requests. Browsh will turn this into around 15kb and 2 HTTP requests - 1 for the HTML/text and the other for the favicon."
Does "100 individual HTTP requests" mean 100 TCP connections?
As far as I know, according to RFC 2616, connection keep-alive was intended to promote making numerous HTTP requests. In fact, IME, most web servers default to setting max-requests at 100. Some are higher.
Following the guidance of the RFCs, for decades I have been using this HTTP feature to make 100 requests to a site in a single connection. That is 100 pages of HTML in one quick TCP connection. If I retrieve 3MB, it is 3MB of HTML from the website and zero from third parties. (Further, I have written filters to remove junk from the HTML and print only the content I want, e.g. for reading or to import into database. If I need to split into separate files, which is rare, csplit works nicely.)
In order to achieve this efficiency I could not and do not use a popular browser authored by ad-supported entities. I am an avid text-based web user who has no need for ads, graphics, and other external resources, e.g. Javascript. As such, I can use clients that can support http pipelining according to the RFCs. It works very well; no complaints.
Best of luck with this project.
Does "100 individual HTTP requests" mean 100 TCP connections?
As far as I know, according to RFC 2616, connection keep-alive was intended to promote making numerous HTTP requests. In fact, IME, most web servers default to setting max-requests at 100. Some are higher.
Following the guidance of the RFCs, for decades I have been using this HTTP feature to make 100 requests to a site in a single connection. That is 100 pages of HTML in one quick TCP connection. If I retrieve 3MB, it is 3MB of HTML from the website and zero from third parties. (Further, I have written filters to remove junk from the HTML and print only the content I want, e.g. for reading or to import into database. If I need to split into separate files, which is rare, csplit works nicely.)
In order to achieve this efficiency I could not and do not use a popular browser authored by ad-supported entities. I am an avid text-based web user who has no need for ads, graphics, and other external resources, e.g. Javascript. As such, I can use clients that can support http pipelining according to the RFCs. It works very well; no complaints.
Best of luck with this project.
For someone stuck in the ssh demo, as myself. Ctrl+Q will exit the browser and end the ssh connection.
What I really love is that (when the server is working) you can
ssh brow.sh
And then have a graphical browser from anywhere :D. $ ssh brow.sh
(It starts, prints "Waiting for Firefox to connect")Then...
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x6de976]
goroutine 11 [running]:
browsh/interfacer/src/browsh.handleMouseEvent(0xc4203d3b00)
/home/travis/gopath/src/browsh/interfacer/src/browsh/tty.go:151 +0x36
browsh/interfacer/src/browsh.readStdin()
/home/travis/gopath/src/browsh/interfacer/src/browsh/tty.go:46 +0xd3
created by browsh/interfacer/src/browsh.TTYStart
/home/travis/gopath/src/browsh/interfacer/src/browsh/browsh.go:185 +0xf2
Connection to brow.sh closed.What happens if do this:
https://text.brow.sh/http://text.brow.sh/http://text.brow.sh...
https://text.brow.sh/http://text.brow.sh/http://text.brow.sh...
Well, it works as expected https://html.brow.sh/http://motherfuckingwebsite.com/
This is cool. Had you not considered using a pixellated Sean Connery as the logo?
Really cool to see how far this has come since it was Texttop.
It reminds me of the txt-web app I created based on my html2text golang pkg. It takes a different (simpler and less sophisticated) approach- bottom up, no fancy rendering:
https://txt.gigawatt.io/jaytaylor.com
(Site source code: https://jaytaylor.com/txt-web)
Powered by the go html2text pkg: https://jaytaylor.com/html2text
It reminds me of the txt-web app I created based on my html2text golang pkg. It takes a different (simpler and less sophisticated) approach- bottom up, no fancy rendering:
https://txt.gigawatt.io/jaytaylor.com
(Site source code: https://jaytaylor.com/txt-web)
Powered by the go html2text pkg: https://jaytaylor.com/html2text
Requiring a full version of WebExtensions Firefox is a real deal-breaker in terms of memory hogging (that and only having an x64 Windows binary). Why not do what Pale Moon, SRWare Iron, Chrome-Opera, Vivaldi (i.e. Opera-Chrome 2), and others have done, and create a full browser based on the FF code instead of requiring a separate install?
Still, I think for all the major benefits of text-based browsing, Lynx, Links, and eLinks are still far preferable as lightweight solutions.
Still, I think for all the major benefits of text-based browsing, Lynx, Links, and eLinks are still far preferable as lightweight solutions.
The nice thing about text based browsers is that you can use them at work and everyone thinks you're cranking code but you're really just on HN
Tom, RE that Kubernetes Slack artifacts in the video (4:45), this doesn't look like Browsh bug - it's just a new weird trend that happens on Slack/Discord, of people spamming with emoji reactions, often making them spell out something obscene. Browsh handled this very well, IMO (to be honest, it looked better than on a normal browser, because the actual spam content was pixelized).
I love text-based browsers, and this is the one whose display looks best (but i would like to disable images/animations). This being a work in progress, the most important feature needed immediately is a boost in performance. I have a very powerful workstation, and just following a link and rendering the next page takes almost a second. (In lynx, w3m and in elinks it is instantaneous.)
Also, I'd be interested in any opinions here about how to financially support this project. At the very least I'd just love to somehow make this my job.