[BRLTTY] Is there a feature-compatible text-based browser
Nicolas Pitre
nico at fluxnic.net
Tue Sep 16 15:57:22 UTC 2025
On Tue, 16 Sep 2025, kperry at blinksoft.com wrote:
> Instead of trying to maintain a stand-alone text browser like Lynx, wouldn't
> it be easier to build a command-line browser that uses a modern engine like
> Chrome or Firefox as the backend? You'd only need some X libraries
> installed, but not an actual running desktop. Interaction could be handled
> through text, while the backend stays updated automatically as Chrome or
> Firefox updates.
Well well...
I wanted to have something more functional and stable before I post it
here ... but here's the README as a teaser for the project I'm working
on when time permits. There are still many issues and bugs, but I was
able to log into my Facebook account, even with MFA active, for the
first time using a text-based interface. I didn't publish the code yet
but I'm willing to share with people with development skills eager to
contribute (this is not ready for casual user yet).
=====
# Firelynx: Where Firefox Meets lynx
⚠️ **EXPERIMENTAL ALPHA SOFTWARE** - Firelynx is in early development.
While functional for many websites, expect bugs, limitations, and breaking
changes. Use at your own risk and keep backups of important work.
The web has moved on, but accessible browsing hasn't kept up.
Firelynx changes that by creating a bridge between the excellent
accessibility of lynx and the modern web compatibility of Firefox.
## The Problem: When the Web Left Accessibility Behind
If you're a blind user, you know the frustration. Traditional text browsers
like lynx work beautifully with braille displays and screen readers - they're
fast, efficient, and give you exactly the semantic information you need.
But try to use Google Search, Facebook, or most modern websites, and you're
out of luck. These sites require JavaScript to function, leaving lynx users
stuck with broken layouts, completely blank pages, or worse - some sites
simply refuse to serve you if your browser isn't one of the big ones.
On the other hand, Firefox is a powerhouse that handles any modern website
perfectly. But running Firefox in a GUI environment when you're using a
braille display is like using a sledgehammer to crack a nut. You're forced
to navigate through complex visual interfaces, deal with mouse-centric
designs, and lose the clean, efficient text-based interaction that makes
computing accessible in the first place.
### What About term.everything?
You might have heard of [term.everything](https://github.com/mmulet/term.everything) -
a project that promises to render GUI applications in the terminal as ASCII
art. Sounds perfect, right? Unfortunately, it doesn't solve our problem at
all.
When term.everything displays Firefox, you get something like this:
```
🬽 ▀▀▀▀▀▀🬼 ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
˛🬠▂▂▂ ▌ ┃ 🬼 ▎
```
This is just visual noise to a braille display. There's no semantic
structure, no way to understand what's a heading versus a link versus body
text. It's graphics made of text characters - completely inaccessible to
the tools that blind users rely on.
## The Solution: Firelynx
The breakthrough came from realizing we didn't need to choose between lynx
and Firefox. What if we could use Firefox as a backend engine to process
modern websites, then serve the results through lynx's familiar,
accessible interface?
That's exactly what Firelynx does. It creates an HTTP proxy server that
sits between lynx and the web. When you browse with lynx, the proxy
intercepts your requests, processes them through a headless Firefox
instance (complete with JavaScript execution), extracts the meaningful
content, and serves it back to lynx as clean, semantic HTML.
The result? You get to keep lynx's excellent accessibility - all your
customizations, keyboard shortcuts, and the clean interface that works
perfectly with your braille display in a text-based terminal with
[BRLTTY](http://brltty.app/) - while gaining access to any modern website
that Firefox can handle.
## Features That Make It Work
**Modern Web Compatibility**: Google Search, Facebook, complex JavaScript
sites - they all work because Firefox handles the heavy lifting.
**Seamless lynx Experience**: Every lynx feature works exactly as before.
Your muscle memory, customizations, and workflow remain unchanged.
**Smart Content Extraction**: The system intelligently finds and
prioritizes main content while filtering out navigation clutter and ads.
**Runtime Content Filtering**: Choose your preferred balance between showing
everything (bridge mode) and clean reading (filtered mode) with instant
switching between filter levels.
## Installation
### Fedora Linux
```bash
# Install the packages
sudo dnf install python3-selenium selenium-manager firefox lynx
# Get and install Firelynx
git clone [your-repo-url] firelynx
cd firelynx/
./install.sh
# Now you can use 'firelynx' from anywhere
firelynx https://example.com
```
### Debian/Ubuntu
```bash
# Install the packages
sudo apt update
sudo apt install python3-selenium firefox lynx
# Note: No additional geckodriver installation needed!
# Modern Selenium (4.x+) automatically downloads geckodriver on first use
# Get and install Firelynx
git clone [your-repo-url] firelynx
cd firelynx/
./install.sh
# Now you can use 'firelynx' from anywhere
firelynx https://example.com
```
## How to Use
**Start browsing any website:**
```bash
firelynx https://facebook.com
firelynx google.com
firelynx
```
This launches lynx connected to the Firefox proxy. Navigate exactly as you
normally would in lynx - press 'g' to go to URLs, follow links normally,
fill out forms as usual. You now have a much greater chance for
JavaScript-heavy sites to work to some extent.
**For quick text output without interactive lynx:**
```bash
firelynx --dump --search "python tutorial"
firelynx --dump https://example.com
firelynx --dump --search "weather forecast" --engine bing
```
## Current Limitations
**JavaScript Modal Dialogs**: Some modal dialogs (like Facebook's device
trust prompts) don't convert properly yet. The detection system is there
but needs refinement.
**Google Search CAPTCHAs**: Google still detects the automation and shows
robot verification. Use DuckDuckGo instead - it works perfectly and doesn't
have this issue.
**MFA Timing**: On sites like Facebook, if you press the "continue" button
too quickly during multi-factor authentication, you might not get the
expected retry prompts.
**Some False Positives**: Occasionally sites like Amazon trigger MFA
warnings when no authentication is actually required.
Despite these quirks, the browser handles many websites well, including
complex authentication flows, form submissions, and JavaScript-heavy content
that traditional text browsers simply can't access.
More information about the BRLTTY
mailing list