It started as a stupid project cause I was bored. How much can you actually do without a windowing environment?
After finding out how to post to lemmy from a TTY, I realized that I can do most things I do daily using text.
Browsing the web in links, which opens all sorts of files in the corresponding programs if configured correctly.
Opening images in fbi, PDFs in fbpdf, listening to music in cmus, watching movies in mplayer, using e-mail in alpine, creating documents in vim and latex, …
The only thing that still requires a GUI is image editing and a few websites I need that don’t work without JavaScript.
And it’s actually really nice…more focused, without loading times, animations, popups, ads, or other distractions, and everything is scriptable.
Anyway, sorry for the blog post.
How much can you actually do without a windowing environment? […] Opening images in fbi, PDFs in fbpdf, listening to music in cmus, watching movies in mplayer
Maybe not an “environment” but it sounds like you’re at least using a window manager. The PDFs and videos, not to mention web browser, are gonna be hard to pull off from a raw shell.
But that’s a detail. Otherwise I share your enthusiasm, I’ve been doing things this way for a while. Basically: tiling window manager + TUI file manager + scripts which do precisely what I want, if possible in the terminal, if necessary by launching a GUI app. In practice the GUI apps are Firefox, mapping app, and messaging apps.
The general discovery I made was this: for the small price of foregoing pretty colors and buttons and chrome, you can get a computer to do exactly what you want it to do much quicker. Assuming a willingness to learn a bit of shell scripting, of course.
For example: I have a button which runs a script with
getmail
that pulls in my email and then deploysripmime
andweasyprint
to convert it to datestamped PDF files, which it dumps with any attachments directly into an inbox folder. In other words, I have maderanger
into my email client and I never need to “download” anything, it’s already there.And those PDFs I can then manipulate with a bunch of shell scripts that use standard utilities, i.e. to split them, merge them, shrink them, clean them of metadata, even make them look like them come from photocopied paper (dumb bank!). All the stupid shit I once did with 10 manipulations hunting thru menus with a pointer in a fiddly app and always forgetting how it was done. Now I just select the file in the terminal, hit a button and it’s done, I don’t even see the PDF.
Of course, it’s not for everyone, but this is the promise of free computing.
No, I’m not using a window manager, X nor Wayland.
Images, PDFs and video can be rendered on the framebuffer, which has been the standard output for Linux TTY’s for a while now.
For multitasking, I use tmux, which works a lot like a tiling window manager, but for the text console.Great! I guessed that going full framebuffer would be trickier than that. You’ve laid me down a new challenge.
The general discovery I made was this: for the small price of foregoing pretty colors and buttons and chrome, you can get a computer to do exactly what you want it to do much quicker. Assuming a willingness to learn a bit of shell scripting, of course.
I find the emphasis people put on speed interesting, because by far the slowest part of any interaction I have with my computer is caused by me just figuring out what I’m doing next. When I’m functioning at top speed not needing to click around, or say, having the perfect keyboard shortcut, would save me only fractions of a second.
Actually… to add to this I think the cognitive load of visually navigating is much lower than typing specific things it. I think this is why I find I’d prefer to click around my bookmarks or files to find something than just pull up a “Find” dialog and type something reasonable in.
Fair point about raw speed. I never found the keyboard-vs-mouse speed debate very interesting either.
But cognitive load is a double-edged sword. Sure, the first time you attempt a task, the abstraction of a GUI is really helpful. There’s nothing to remember, you just point and click around and eventually the task is done. But when you have a task with 7 steps which you have to do every 2 weeks, then the GUI becomes a PITA in my experience. GUIs are all but impossible to script, and so you’re gonna need a good memory if you want to get it done quickly and accurately. This is where CLI scripting becomes genuinely useful. Personally I have quite a few such tasks.
I’d love to be able to ditch the gui entirely, I’ve found working from a TTY really helps me focus on the actual work I’m supposed to be doing
Unfortunately the one impossible hurdle is the web browser. Have kinda got around the need for it mostly with an llm cli for basic questions but will always find myself needing to fire up a window manager just to get a browser eventually
Also doesn’t help that I’m primarily a web developer
always find myself needing to fire up a window manager just to get a browser eventually
A chromeless tiling WM is basically invisible and AFAIK has almost zero performance impact. That’s roughly what I do.
I usually use gamescope for that purpose but it’s still a bit of a pain and takes me out of the tmux/helix loop
cage
is a minimalist Wayland compositor that only shows a single application in fullscreen. When you close the app, it drops you back to your console.
It’s compatible with programs that need X11 through XWayland, and it has practically no loading times.cage -ds firefox
would open Firefox in fullscreen.
Option-d
hides client-side decorations and-s
allows you to switch from Wayland to another TTY using Ctrl+Alt+F[1-6]I put aliases for the programs I use in my .bashrc so I can just type FF[Enter] and a second later I have Firefox open.
What about the Lynx browser…it’s TTY isn’t it…?
yes it only shows the filename of an image. But you can set it up to open images in an external image viewer when you click on it.
Tried browsh ?
Yes. I have absolutely no idea what its purpose or use case is.
On a TTY, it has no mouse click support. It also has no keyboard navigation support in general. So how am I supposed to navigate websites?
On a terminal inside a graphical environment it’s completely useless, cause I’m in a graphical environment and can just use Firefox.Seriously, if anyone is using Browsh or Carbonyl productively, I’d love to know for what.
Reject pixel-graphics, install aalib
;^)
Okay, I’ve wanted to do the same thing for ages. Time to follow up my words with action!
Give browsh a try
I did. It doesn’t accept mouse clicks from gpm, and it doesn’t offer keyboard navigation. Both issues are long-standing bugs that also affect the Chrome version, Carbonyl.
Your post made me wonder, so I checked and of course it exists. Behold, a text-mode Lemmy client: Neon Modem Overdrive
Tried it. Didn’t work.
Well, that’s disappointing.
Try it if you’re interested. It worked for enough other people that the dev closed my issue.
I couldn’t get it to show any content, on 3 different distros and 4 different home instances.
Maybe I’m just really dumb, though.
You’re following the Unix philosophy.
And I understand why some people are fonts enthusiasts, now.
On the console, you only have 16 colors and 1 font to customize your “desktop”.
How about a console with cursive writing font? That’s probably the reason why it’s named cursive. Because of all the curses of the users.
You can Install more fonts, but not all of them are any good.
What did you use to do so?
I tried w3m, lynx, links and elinks, which all failed cause they don’t support JavaScript, which is necessary to log in.
Then I tried Browsh and Carbonyl, which failed cause they both don’t accept mouse clicks in a TTY and offer no keyboard navigation.Then I tried Neonmodem Overdrive, a CLI fediverse browser, which I just couldn’t get to show any posts.
In the end, @[email protected] gave me the hint that some instances have alternative “old-reddit-like” frontends that allow logging in without JavaScript.
And my home instance with old.feddit.org is one of them. So now I’m using links, cause it’s the most user-friendly text browser IMO.Not sure if you know, but you can setup links to pipe images (and whatever other media you want) to external programs through the Associations menu.
Afterwards pressing Enter or I when an image is selected, a new option “open” will appear.
Yes I set it up to open in FBI without prompt.
OP shared the tools they used, you’ve probably missed it.
- browser - links
- image viewer - fbi
- PDFs - fbpdf
- music - cmus
- movies -mplayer
- e-mail - alpine
- documents - vim, latex
Open up fbi
Ah gotcha. I’m on cell so it just looks unformated text.
Forget gpus. A framebuffer is all you need :)
it’s all just curling some jsons and slapping some paint and shit on top of that.
Sometimes it’s nice to put the ADHD away and just have simple fucking interfaces without all the stupid distractions.
This was my exact experience browsing the Social Media on gemini:// – it was glorious how less can actually be more.
I’d love to put the ADHD away sometimes :(
Lol so cool. My fav text apps are toot for mastodon and maybe gomuks or iamb for matrix/element. Also what Lemmy app r u using?
I’m just using the Links browser and fbi for the images.
Does feddit.org work without JS? Does this depend on the front-end that the instance uses?
The standard frontend doesn’t let you log in without JS, but on old.feddit.org it works.
Same with the other instances I tested.
So weird I’m used to hearing about FBI using us for images. 🤔 Lol
Why alpine instead of mutt? It must be some 20 years since I least heard about pine or any of its forks
Alpine is an email client.
Mutt is a maildir reader which you can use as a part of your DIY email client.
… what? mutt can talk imap and smtp natively, I don’t know what else you need to qualify as an “email client”
Since when? I made two attempts over many years and an elaborate offlineimap and msmtp setup was needed both times.
🤷♀️ I was using mutt for both smtp and imap in 2002, don’t know how long before that it worked — but at least since then.
Alright then, I guess it’s time for attempt #3 with the newly acquired knowledge. Thanks!
Because I’m too dumb to configure mutt.
I remember using Reddit years ago on Links. New Reddit was borderline unusable, old Reddit worked… okayish. How is Default web UI Lemmy on Links? Is there a nice TUI client that I guess you would use more regularly?
The default Lemmy UI doesn’t work on Links, it won’t let you log in without JavaScript.
I use the alternative UI old.feddit.org (also exists for lemmy.world, sdf.org and probably others).
And that works really well.There is Neonmodem as a TUI client
Tried it. Didn’t show any posts or comments no matter what I tried. I sent my logs to the dev, they released a new version, still didn’t work. So I gave up.