Console only computing — GNUcode.me

Console only computing

by Joshua Branson — February 12, 2022

For about two weeks now, I have been using Guix System in console mode only. That means that my laptop currently cannot display images or video. It also means that I do not have much use for a mouse. It has been an interesting experience.

Of course, the average reader of this blog must be asking, “Why?”. Well you are familiar with dumb and smart phones, yes? Have you ever heard of a life computer? A life computer, is a computer that is so useless, that you want to stop using it and live your life instead. I personally have been using my laptop to consume tons of entertainment tv shows, movies, etc. I am starting to feel like that this is just wasting my life. Some of my good friends do not have time for useless entertainment-seeking. Since I want to emulate the best of my friends, I would like to make it nearly impossible for me to consume mindless entertainment.

Emacs has been an absolute Godsend for this little experiment. Since, I am somewhat familiar with Emacs, I am still able to check email (though I still struggle with reading email with Emacs), write these blog posts, use dired, etc. I am not certain that I could live in a console only operating system without Emacs. Also Emacs’s org-mode is wonderful!

I also found out that Alt-<left arrow key> and Alt-<right arrow key> is a quick way to cycle through virtual consoles. I am having some issues with being unable to use numerous websites. This is pretty obvious, because most console web browsers have little to no support for javascript.

I am currently wanting to listen to some librevox recordings, but I am not certain how to navigate the website in console mode. Lynx spits out some errors that the HTML is badly formatted or something. For now, I am just using the work computers to download said files. I wonder if there is some sort of free software tool that will let you search and download audio files from the command line…I am sure it exists somewhere. youtube-dl would probably be it, but I feel awkward downloading files from youtube, because I am not certain which videos are legal for me to download.

I am planning on continuing to run a console only OS for the forseeable future. Since I do not feel like I have the power to NOT use my computer to watch lots of tv shows/movies, I gave my friend the root password to my computer, and I removed my user ’joshua’ from the wheel group:

(users (cons* (user-account
               (name "joshua")
               (comment "Joshua Branson")
               (group "users")
               (home-directory "/home/joshua")
               (supplementary-groups
                '("audio" "kvm" "netdev"
                  )))
              %base-user-accounts))

I also set up my computer to use a modified bare-bones.scm, which means that I am using ’%base-services’ instead of ’%desktop-services’. I kind of wonder how lean I could make a custom Linux kernel since I am restricting myself to console computing only.

I am finding that I would prefer to run some commands as root, like halt, reboot, and adding in a new wifi network connection. It has actually been a pleasure to read through man 5 sudoers, which is the file on your computer that determines who can run which commands. I have not quite figured out how to set up my user joshua to be able do various tasks like halt, reboot, kill, etc., but I am looking forward to figuring it out. It will probably look like something below. Note that I have NOT tested this bit of code.

;; I can read 'man 5 suoders' for tips about the syntax of suoders file.
;; the very end of the file has some examples.
(sudoers-file
 (plain-file "sudoers"
             (string-append (plain-file-content %sudoers-specification)
                            "CMD_Alias KILL = /run/current-system/profile/bin/kill
                            CMD_Alias SHUTDOWN = /run/current-system/profile/bin/shutdown
                            CMD_Alias HALT = /run/current-system/profile/bin/halt
                            CMD_Alias REBOOT = /run/current-system/profile/bin/reboot
                            CMD_Alias HERD = /run/current-system/profile/bin/HERD
                            CMD_Alias NMCLI = /run/current-system/profile/bin/nmcli
                            joshua ALL = KILL, SHUTDOWN, HALT, REBOOT, HERD, NMCLI, \
                            sudoedit /etc/somefile, /etc/another-file"
                            )))

That’s all that I have for today. See you next time.