I’ve been trying to spend more time in the command line, and less in graphical applications. I’ve even set up my Slackware machine to not load X11 by default. It turns out that shell job control is a reasonable substitute for a multiplexer like tmux for my use case. Oddly enough, emacs seems as responsive in the console as vim.
The downside to living in the console is that there isn’t a single console font that fully supports UTF-8. So my little pentagrams show up as squares. Likewise for heavy metal umlauts. It isn’t as easy to set up a compose key, either, though you can supposedly use the alt key and a four-digit code on your number pad if you’ve got a full-sized keyboard.
keyboard references
Please note that I’ll be using Emacs-style keyboard references throughout this post. If you’re not familar with that editor, here’s a quick guide based on an ANSI keyboard.
C-x
means control + x.M-x
means alt + x.
shell job control commands:
C-z
- Suspend whatever you’re currently working on.
jobs
- Get a list of all jobs associated with the current shell.
bg
- Move a job to the background. Without an argument it should background the most recently suspended job.
fg
- Move a job to the foreground. Without an argument it should foreground the most recently suspended job.
<command> &
- Run a command in the background. Its output may still appear onscreen. Use C-l to redraw the screen when this happens.
nohup <command> &
- Run a command in the background and disconnect it from the current shell.
unicode text input
Even if the characters don’t get rendered properly, I’ve found it’s still possible to input characters outside the basic US ASCII set with C-x 8 RET
. I can then select characters by name and GNU Emacs will do the rest.
Now that I think of it, that was probably how I handled non-ASCII characters on Linux before I learned how to remap Caps Lock to Compose in X11.
unicode text display
This doesn’t seem possible in text-mode, at least not on Slackware. While Slackware comes with the terminus fonts so I can set the console font to a size suitable for use on a large high-resolution display (2560x1440), the text console seems to only support 512 different glyphs rather than the full UTF-8 character set. Maybe there’s a knob I haven’t figured out how to adjust yet.
This isn’t a huge deal, except for my music player. Some of the bands I like fill out the “artist” field in Japanese, and I like my heavy metal umlauts. :)
generating unique identifiers in emacs
I haven’t figured out how to copy text with the mouse using gpm and paste with a button click, but if I do M-!
and run uuidgen -t
, the output shows up in the minibuffer. Clicking in the minibuffer opens up the Messages buffer in a separate pane. I can then switch to Messages using C-x o
and then navigate and select the text I need using standard Emacs bindings.
Kinda clunky, but it’s good enough for now.
keep on rocking the command line
I wanted to use cmus
as my text-mode music player, but I haven’t figured out how to get it to play in the background. Fortunately, mpd
is made to play in the background. I can suspend my current process, pull up ncmpcpp
, get a playlist going, quit ncmpcpp
, and return to what I was doing with a quick fg.
exploring gemini space
This isn’t a problem in text mode thanks to CLI gemini clients like acdw’s bollux
or amfora
.
got mail?
I wanted to like Drew DeVault’s aerc
. It’s a new text-mode email client with modern design sensibilities. Unfortunately, it doesn’t work really well when your $EDITOR is Emacs because it uses C-x
for its own purposes even when you’re in emacs to compose a message. Of course, this isn’t a problem when EDITOR
is vi
or vim
.
Fortunately, neomutt
plays nicely with Emacs. Sure, I could use the default mutt
that comes with Slackware, but default mutt
can’t seem to keep an IMAP connection going.
caught in a web
If I really wanted to view web sites I’ve got lynx
and links
. But for JavaScript-dependent web apps like Mastodon I’m stuck firing up X11 so I can run Firefox.
Case Duckworth suggested using brutaldon, but like the toot app it didn’t work for me.
Attempting to connect to my home instance, mastodon.art, via Brutaldon requires OAuth authentication. Attempting to access the relevant API results in a “connection refused” error. The same thing happens with toot.
This is probably for the best. I’ve been experimenting with text-mode life as a means of better enabling deep work. Being able to dick around with social media without having to start X11 would be counterproductive.
if you can read this you don’t need glasses
I found a better-looking font than Terminus that also gives me my heavy metal umlauts, but the individual glyphs are too damn small for a 2560x1440 display. Fortunately, adding "video=1280x720"
to /etc/lilo.conf
, running lilo -v
as root, and then rebooting gives me something I can work with.
why do this?
Why not? Sure, it’s 2020, but all that means to me is that it’s been over 40 years since GUIs were first researched at Xerox PARC and we still haven’t made them universally useful. They might be handy if you have no proficiency with a computer, but once you get some proficiency, especially with a command-line interface GUIs start to suffer from diminishing returns for a lot of use cases. I spend most of my computer time editing text, unless I’ve allowed myself to get sucked into social media. A mouse doesn’t help much. Neither does having lots of windows on the screen.
On the other hand, there’s no reason I couldn’t create an X11 session that used a full-screen terminal instead of a window mangler. That would solve my problems with Unicode support and copy/paste using a mouse. It would also let me use decent-looking fonts.