How and why I attempt to use Links as main browser
dataswamp.org
dataswamp.org
I also highly desire the ability to change the keybindings of any program I use to be what I want, generally following the VI model.
I also do e-waste collection and pride myself on being as fast or faster than others using 10+ year old computers (writing this on my main laptop - a Thinkpad T60).
So with that lead-in, a few months ago I switched to this laptop and had a glitch getting X to start so I decided to push the envelope as far as I can running on the framebuffer, hence "links -driver fb".
The web has gotten slower and slower over the years and while there are some new kids on the block such as the next browser [1] that should give me what I need on X, links has been a win over and over, so far.
No code to share yet, but I finally got (for %95) of website, the browser of my dreams.
Lightning fast. It will fetch and render almost any page in less than a second, but one thing it was missing was some customability and expandability, hence the natural move to embed guile. So I now have a lisp that is my browser and I am in the process of exploring what that means. Full keyboard control, for everything. VI bindings. A cache from heaven that remembers everywhere I've been and never reloads unless I tell it. I can fly around history like you've never seen.
Anyhoe, happy hacking!
This would be a killer feature for me, especially if the cache was fully searchable.
I only had to add a global file exclusion rule .* which prevents the indexer from scanning dotfiles. (The 'interesting' dotfiles are in a repo anyway)
> I desire every program that I use daily to be compiled from source so that I can dig in whenever I need to fix bugs, add features
For those who alter software they didn't write, how do you maintain those changes? I assume pull requests for bug fixes to the maintainer's repo, but what about mods? Do you run a diff during every update?
I am not really keen on software that is 1. large and 2. changing frequently. For example, there are no "updates" when using links. I read the links changelog and do a diff before I decide to upgrade to the latest version. Sometimes I will continue to use older versions. Depends on the changes.
In general, if the software is relatively small and more or less "finished", then, for me, it is more amenable to making changes. When I look at the software I use, it appears I consciously try to choose software that meet those criteria; the most favoured programs all fit that description.
> Lightning fast. It will fetch and render almost any page in less than a second, but one thing it was missing was some customability and expandability, hence the natural move to embed guile. So I now have a lisp that is my browser and I am in the process of exploring what that means. Full keyboard control, for everything. VI bindings. A cache from heaven that remembers everywhere I've been and never reloads unless I tell it. I can fly around history like you've never seen.
Why do you tease us?
More seriously, I'll be interested when/if you do have code to share - this sounds great.
There's apparently an old version of firefox that was able to run in framebuffer at one point.
The links browser with graphics option apparently is a more current and robust option of getting a browser in framebuffer.
Super interested in hearing more about what you're using for a framebuffer browser!
- https://www.brow.sh is a cli (not framebuffer) browser based on a Firefox plugin
- https://www.uzbl.org is a set of python scripts implementing a browser
- https://github.com/balenalabs/balena-wpe is WPEWebkit with framebuffer output
- https://github.com/TOLDOTECHNIK/buildroot-webkit is another WPEWebkit, but I'm not sure if it's got framebuffer support or not
w3m works really great with framebuffer. imho it renders webpages in a cleanset way, compared to all other text browsers. plus it has default vim-like keybindings.
I hear good things about the X1 Carbon. They seem to be plentiful.
The democratic web is dead, and navigating the silo'd web is dreadful without one of the three blessed browsers. It sounds like you've created a ray of hope.
I really like the navigational features, because they seem to be both memorable and predictable based on the layout that you're seeing (whereas others like vimb are totally unpredictable in their behaviour).
When it comes to making the web usable again, with less cache busting being enforced on the client's browser, I guess we share similar goals.
I'm currently trying to solve it via peer-to-peer services and the idea of trusted peers - that also function as caches in the local network and e.g. share download streams with each other once a huge file is being downloaded by a trusted peer. [1]
Personally, though I've been using VIM for as long as I can code, I would not agree that we need another browser that's keyboard-navigated.
For me, the understanding of websites and the semantic automation aspect is far more important so my UI/UX ideas are different. I'm trying to automate by recording user interactions rather than automate by keyboard shortcuts. The underlying idea is that any non-programming user can automate their own actions on the web.
[1] https://github.com/cookiengineer/stealth (currently a PWA with a local node.js process that does all the heavy work)
- Access to Camera & Microphone
- Access to USB devices
- Push Notifications
- Geolocation
- Bluetooth
"deep" is probably the subjective term here.Of course the app use case has grown tremendously and is probably the more important one for casual users which are growing in number in relative terms, so I understand where the sentiment comes from.
Not to say that these are less of a document, just to say that most usecases are still moving toward using the web as an application delivery platform, even if that application purpose is to show documents.
This approach does not work for everything, nor does it work for everyone. Someone creating a blog post is probably going to prefer the use of JS to make their browser work more like a word processor. It can be done without JS, but that typically involves some form of markup that only a handful will enjoy. You can offer a map service without making it behave like an app, but most people will find a more interactive user interface more efficient. You certainly aren't going to be able to create emulators of vintage computers without JS.
That being said, we can do an awful lot in a useful way while serving up static documents.
I would call a site like https://danluu.com/ document focused, while hacker news is focused on being a platform for conversation and a ranked news feed.
If you were to download danluu.com and brouwse it locally you wouldn't miss much, while if you where to do the same for hacker news you would only get one part of the offered experience.
Javascript enables this difference to grow to much greater extents but it is not necessary to me.
However, for desktop it's great - I use it (and web.whatsapp.com) with Chromes --app= parameter to emulate the app experience.
Im all for getting rid of some of the cruft that has developed over the years, but let's not forget the literally world-changing utility that is enabled by the modern web.
Unlike the post I was replying to I'm not so much complaining about webpages that mimic (or are) standalone applications, I'm mostly complaining about webpages that have effectively built their own browser just to display some HTML documents.
Sure some stuff can't be done with a pure HTML document model (at least not without some kind of black-box html element), but plenty of stuff is just displaying some representation of content and (optionally) allowing people to manipulate it which really shouldn't require anywhere near the amount of effort people sometimes throw at it.
What issues does it cause?
You can still view standards-compliant circa-1993 html files in any modern browser, without any issues.
Citation needed.
20 years ago you could make a commercial app with a GUI in no time with things like Delphi or Visual Basic.
Now to do the same we have to learn several standards and languages and libs/frameworks and build tools and server admin tools and...
As you say it's still not trivial (legacy browsers, funny standards, technical challenges of serving loads of users etc.) but Id argue it is substantially easier than the challenges involved in making a program written in visual basic available to billions of people.
And publishers were readily available too, like for any other physical item.
If something was wanted, it did not matter, it would sell and distribute itself. Take a look at things like Lotus, Office, Windows, Doom...
At the same time, I absolutely think it's the online distribution of webapps that is the killer feature. People only need a URL. There's no download and install process (and the less tech-literate users often had difficulties with that), and perhaps even more importantly, there's no patching. As a developer, you know that all your users are running the latest version you got deployed. You don't have version 1.0, 1.01 and 1.12 floating around the Web as downloads, you don't have to beg people to download and install the patches, you just deploy to the production server and that's an automatic update for everyone.
That is IMO why browsers won as an application platform. In my very limited experience coding for the web, it's a remarkably bad application platform. You don't have many useful primitives. You don't really have a choice of language. You're beating protocols meant for documents into submission so they become useful for apps. It's more difficult to create a UI than it was in Visual Basic, Delphi or Borland C++, and so on. But for all of that, you get an application that someone can start using after clicking one link, and that will transparently auto-update.
Browsers have "won" for other reasons: licensing control, unavoidable analytics, subscription mechanics... All that combined is a dream for a publisher.
> With Stores those points are solved. Prominent ones like Valve, Apple, Google, Microsoft etc...
didn't exist 20 years ago...
> Browsers have "won" for other reasons: licensing control, unavoidable analytics, subscription mechanics...
And those stores (and the native app platforms they reinforce) is what allows all these things in native apps, and makes them quite a bit harder to block than in web apps.
So what? I haven't said anything about that.
As a data point, Steam (as a store) was already there 15 years ago.
> And those stores (..) is what allows all these things in native apps
Stores don't change what a native application can or cannot do.
If the old native apps were the gold standard, modern distribution wasn't part of that. If we include modern distribution, then all the supposed advantages you cite for browsers "winning" apply just as well to native apps. And yet.
> Stores don't change what a native application can or cannot do.
and yet all those stores provide licensing control (and DRM), analytics, and subscription mechanics, often unavoidably (Apple) or unavoidably in practice (Google and until very recently, Steam).
Meanwhile, it’s an absolute joy to use as a document browser, especially without JavaScript to mess up basic expected native behavior. I don’t get why there isn’t an “immediate mode” for application-style websites, tbh, that bypasses the DOM to provide more scalable widget layout, rendering, and interaction. I’ve written about a half-dozen “scrollable infinite list” implementations and I’ve never lost more sleep than doing this with the DOM. Probably a major reason why software is slower than ever. Hell, I just filed a bug with Patreon today complaining about how their messaging feature is so slow that, in combination with a double post bug, I ended up harassing a creator with four copies of the same message.
I’d buy this thesis that the browser-as-an-app-platform is a win if people could develop their software with a comparable degree of quality, responsiveness, and resource usage. Java managed this better like 20 years ago even if it did look and behave like ass by default. Instead you now need JavaScript to read basic newspaper articles, completely obscuring the internet‘s content to everyone but google crawlers and WebKit/gecko users.
Surfraw (Shell Users Revolutionary Front Rage Against the Web) is a free public domain POSIX-compliant (i.e. meant for Linux, FreeBSD etc.) command-line shell program for interfacing with a number of web-based search engines. It was created in July 2000 by Julian Assange
Thanks for including this here.
> Browsh is a purely text-based browser that can run in most TTY terminal environments and in any browser. The terminal client is currently more advanced than the browser client.
> The browser client, somewhat confusingly, renders simple HTML or plain text that itself was parsed by Browsh running inside another browser. The point being that the HTML or text that Browsh outputs is extremely lightweight. 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.
I've found that using Browsh together with mosh and tmux, you can get a surprisingly functional remote desktop experience. I've found it especially handy in cases when "normal" remote desktop is too slow, e.g. when tethered to mobile data connection or using an underpowered client device.
I'm also surprised at how poorly Reader Mode fares with "pages" served as text/plain. Is there even a case to be made against text/plain documents being shown with Reader Mode enabled by default if the heuristics can give it a high enough confidence score (with an opt-out escape hatch back to tiny monospace black-on-white for whomever wants it)? Eventually, we could do the same for very simple HTML pages like those found on cr.yp.to or danluu.com. I'd wager we could eliminate a huge part of the "Website Obesity Crisis" if unstyled pages were attractive by default.
This is kind of like the philosophy behind Soylent, but for browsing the web, rather than sustenance.
I use firefox as my daily driver, but I still test in chrome and links.
How unpleasant. Have you found that the W10 VM takes way more disk space then seems reasonable? I had to fire one up the other day, and between the VM image and the VM it took 50ish gigs of space iirc.
Of course, designing with accessibility in mind is important, but I would argue supporting Links isn't.
It'd be interesting to do a market research study on what the impaired population for a given vertical is, and put some data-driven arguments behind adding support for accessibility.
Honestly, doing that would probably improve the UX for people with normal eyesight as well, because it'd force you to think about document layout and component interaction carefully.
I know at some point Firefox offered an ability to define custom CSS to use for all the pages, but I guess that's hidden underneath some about:config options today — I can only see the option to disallow use of custom fonts by a web page. I would like to see someone implement a bare-bones CSS for the modern web that's easy to customize using these browser features.
It seems what I am thinking about is userContent.css: http://kb.mozillazine.org/index.php?title=UserContent.css&pr...
It was always somewhat difficult to maintain custom styles beyond things browsers still let you set like fonts but it’s harder now because it’s so common for developers to not use appropriate semantic HTML.
Firefox reading mode is pretty because it understands the modern web, and is making opinionated choices about what to display to you.
They are different design goals.
I am a very happy using w3m every day. Just occasionally there is a need to use a graphical browser.
There is no JS support though. Don't think there ever was.
Elinks supposedly had it, but you have to compile it in yourself and I'm not sure how it fares these days. Edbrowse has decent support for it, but its rendering is not meant for sighted people and rudimentary (e.g., no color, it doesn't bother with aligning table cells).
[1] https://web.archive.org/web/20100504081232/http://abe.nwr.jp...
I also miss a slightly more useable interface for bookmarks. And touch compatibility (to use it on my PinePhone).
I really like the js-free experience. I've also used elinks in the past, zimbra works quite well with it, and pressing F4 to edit my emails in vim is a breeze :)
DEFAULT DENY
.domain.foo ACCEPT
.domain.foo ACCEPT_SESSIONIt reminded me of what McDonalds "restaurants" try to offer. I put "restaurants" in quotes because noone thinks of them as proper restaurants. Something about the uniform experience maybe? I guess before that every site had its own unique menu and style, that took much longer to serve..
Does the author also prefer talking to people who wear face-masks? Do they shun syntax highlighting? Why take all the fun out of life? Why live like a Unix tool, taking in a plain text stream?
Isn't that more likely than the author wanting an unfun life?
I'd rather something be more usable than arbitrarily "fun." You don't go around making zigzag roads, circle sliding doors, etc., which are arguably more "fun."
Because using a very consistent UI (e.g. everything on terminals) takes less cognitive load.
It is known that having to continuously switch your vision between different fonts, font size, colors and other visual patters across different applications is more tiring.
It's one of the reasons for having an extremely consistent style on aircraft dashboards and similar.
I've noticed the difference myself many times when spending a long day on a bunch of uncluttered terminals VS a heterogeneous mix.
Furthermore, using a mouse requires a continuous feedback loop between hand and eye to aim at buttons. You don't need that on a terminal.
When doing "change management" ops in Amazon the first step was always to unclutter the desktop.
A proper restaurant analogy would be if each and every restaurant reinvented the way to put food into your mouth. Sure, it might be funny once in a while, but currently, when pushing the front door, you have no idea where they'll put your fork, if you will have a fork, if you'll be fed modern times-style, https://xkcd.com/1293/ style, if you'll have to inhale your soup trough the nose or hunt for your food.
You might see it as "the fun of life" if that was common practice. But a standard interface (UX) allows one to focus on the important stuff (namely, enjoying the food: most Asian restaurants I know offer forks as well as chopsticks). Important stuff here would be the piece of info you came for. Be it an article, a picture, some data, etc.
For instance, do you enjoy the "creativity" with which websites design cookie banners instead of having a standard form, or better, obeying the DNT bit?
> Does the author also prefer talking to people who wear face-masks?
Right now, yes, yes I do.
> Do they shun syntax highlighting?
Syntax highlighting performs an actual service, as opposed to being cruft.
> Why take all the fun out of life?
This isn't taking the fun out of life, it's making a tool more useful.
> Why live like a Unix tool, taking in a plain text stream?
See above.
> Right now, yes, yes I do.
Sorry, it seems I didn't make my point clear enough. Also not sure you're not joking. I just meant that if "a uniform experience" is good, having everyone wear a mask (at any moment in history, nothing to do with virus) will make talking to people more uniform and thus better.
I will admit that line was a bit tongue in cheek.
It's not that a "uniform experience" is better in every instance. It's more that a tool whose purpose is to convey information is more efficient when you don't have to deal with formatting that may or may not interfere with comprehension.
Most times, for me, it just is. Or maybe a little 'configure -help' to set some options.
That said, I prefer to create Arch PKGBUILDs to encapsulate that work. Maybe that is more to your liking?
If all you do on the web is read news articles, then having an uniform experience is kind of desirable, but other than that, you're doing more harm to the UX by ditching modern browser support. How is draw.io rendering for you? How does the Bitbucket/GitHub/GitLab diff look for you? How's the YouTube watching going?
I guess those are different groups, but remember when everyone was complaining about all the sites using Bootstrap because they all looked too similar?
However, when I switch back from the mainstream to the frugal environment, I also get the same feeling of relief.
In the frugal environment, I feel very productive and creative. In the mainstream environment, I feel that I have more cognitive bandwidth to just get stuff done.
Anyone out there feeling the same?
Tiling in i3 must feel somewhat constraining after a point, maybe experiment with switching between two different modes/WMs?
I think it has some thing to do with the loneliness of having a very customized environment. It's good, but when you work in a mainstream environment, it feels like there is a lot of energy being put by others into the same environment, which (sometimes) will get you high quality defaults and save you some time.
I wonder if the Stallman setup of getting emails wouldn't be about the same given the amount of proxies used.
I actually had an intern implement something like this long ago. We had a web crawler and what better way to test it than to hook it up to email then rewrite links so it emails them too. It was OK for a few days.
I also find this comment deeply ironic given that the post argues against images on the web, but screenshots would have helped.
How would you possibly know if the images on this page would be informative content, or advertising attention grabbers, when they're all turned off?
I get a dislike for "decorational" images like a photo of a random bridge over a river (c) AStockPhotoSite when talking about building a new bridge in the town: that ain't content. An illustration of the bridge to be, an architectural depiction, would be considered content.
Wikipedia seldom has images of the former type: they are all there to expand the content being represented.
So, I've read the article according to my biases, and I do not see such a strong opinion against images: to me it reads not as if they might, but rather that they do enable them on Wikipedia.
I dream of not having to deal with X and Gnome ever again.
Maybe the modern web needs to change...not your browser.
Recent versions of links should remove the DNS prefetch code.
More menu items should have single key shortcuts. For example, Save formatted document, Flush all caches, Kill all connections and Submit form.
There should be a single key for toggling to html-numbered-links like there is for toggling to displaying images ([IMG] if no graphics).
I swear I spent most of my foray into undergrad CS trying to get third-party software to compile on my machine (i.e. wasting a lot of time).
First I just tried "brew install links". It worked but built it without graphics support.
So I bit the bullet and tried to build it myself. Then I got to needing an X server installed and gave up.
I've grown too impatient and spoiled for this sort of quest.
links gives me a preview of the page in usually under a second, opening a fresh process and all, on a 5yo budget thinkpad.
as a bonus, twitter refuses to work with links, so even if i am tempted to open a twitter link, it just gives a 403, and i don,t have to read whatever mainstream crap is on tv this week.
Personnally I used dillo a lot, it's so god damn lean and instantaneous.. it's crazy. I wanted to add sqlite and lua as a scripting language to make it open to extensions but I got stuck :)
Form controls would be an obvious example of something relevant I think.
Links <= v1 and its forks (elinks) have only text mode.
Other code can run inside of a browser VM as well, including but not limited to: malware, spyware, surveillance capitalism apps, tracking, and other privacy-violating code/apps, and with unpatched flaws and zero-days, privilege escalation/bypass-the-browser-to-run-directly-on-your-OS-code can run, which can be inception points for worms, viruses, and all other manner of unwanted software...
>"On the other hand, Links is a HTML browser."
Thank God someone understands the dangers of modern-day browser VM's!
>"Links is a graphics and text mode web browser, released under GPL. Links is a free software.
• Links runs on Linux, BSD, UNIX in general, OS/2, Cygwin under Windows, AtheOS, BeOS, FreeMint.
• Links runs in graphics mode (mouse required) on X Window System (UNX, Cygwin), SVGAlib, Linux Framebuffer, OS/2 PMShell, AtheOS GUI
• Links runs in text mode (mouse optional) on UNX console, ssh/telnet virtual terminal, vt100 terminal, xterm, and virtually any other text terminal. Mouse is supported for GPM, xterm, and OS/2. Links supports colors on terminal.
• Easy and quick user control via pull-down menu in both text and graphics mode, in 25 languages.
• HTML 4.0 support (without CSS)
• HTTP 1.1 support
• Tables, frames in both graphics and text mode, builtin image display in graphics mode
• Builtin image display for GIF, JPEG, PNG, XBM, TIFF in graphics mode
• Anti-advertisement animation filter in animated GIFs
• Bookmarks
• Background file downloads
• Automatic reconnection in case of TCP connection breakdown
• Keepalive connections
• Background (asynchronous) DNS lookup
• Possibility to hook up external programs for all MIME types, possibility to choose one of more programs at every opening.
• 48-bit high-quality image gamma correction, resampling and Floyd-Steinberg dithering in all color depths.
• Font resampling (antialiasing) for virtually unlimited pitch range, LCD optimization of fonts and images."
• Builtin fonts in the executable without reliance on any fonts installed in the system
• User-adjustable menu, HTML font size and image zoom factor.
• User-adjustable display gammas (red, green, blue), viewing-condition correction gamma and precise calibration of both monitor and Links on a calibration pattern
• Automatic aspect ratio correction for modes like 640x200, 640x400, 320x200 with user-adjustable manual aspect ratio correction.
• Support for one-wheel mice (vertical scroll), two-wheel mice (vertical and horizontal scroll) and smooth scrolling by grabbing the plane with a mouse (no wheel needed).
• Easy installation, the browser is just one executable and no more files.
My comments: Thank you for writing Links!!!
[0]: https://habilis.net/lynxlet/
Edit: ah, my comment and my appreciation for the simple/straightforward design is very much in line with Lynxlet's mantainers, see their webpage for more [1].
[1]: https://habilis.net/
It seems to be Lynx, not Links (an entirely different browser.)
It's even possible that if you're on an old netbook, your emacs is using optimizations which don't exist on your machine causing all kinds of extra processing. Who knows. I also don't use GTK at all, this is a massive speed-up.