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.
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.[Hard but not that hard, apparently!]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 they 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.
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.