cmc/cleberg.net

My personal web garden & blog.

clone: git clone https://gitbay.org/cmc/cleberg.net.git

main: content/blog/2022-06-16-terminal-lifestyle.org · raw

  1#+date:        [2022-06-16 Thu 00:00:00]
  2#+title:       Terminal First: Why the GUI Is Optional
  3#+description: My setup for handling email, browsing, IRC, and RSS from the terminal.
  4#+slug:        terminal-lifestyle
  5#+filetags:    :linux:
  6
  7* Text-Based Simplicity
  8
  9I've detailed my views on web-based minimalism and related topics in other posts
 10throughout the years; e.g., JavaScript/CSS (Cascading Style Sheets) bloat
 11slowing down websites that are essentially a text document. However, I have
 12never really expanded beyond talking about the web and describing how I focus on
 13minimizing distractions in other digital environments.
 14
 15This post is going to set the baseline for how I /try/ to live my digital life.
 16It does not necessarily get into my physical life, which is often harder to
 17control and contain all the noise in our modern world.
 18
 19While there are new things to do every day in our digital world, I find that
 20keeping a core set of values and interests can ground you and keep you mindful
 21of /why/ you are participating in the digital world. For example, if - at your
 22core - you have no interest in what strangers think about random topics, it
 23would be unwise to start participating in social media. However, I am someone
 24who has been dragged in by effective advertising to participate in communities
 25that I realize I do not care for.
 26
 27I won't dive much further into explaining the philosophy of all this, but I will
 28link a few helpful articles that may pique your interest if you're in search of
 29more meaningful experiences:
 30
 31- [[https://en.wikipedia.org/wiki/Mindfulness][Mindfulness]]
 32- [[https://en.wikipedia.org/wiki/Minimalism][Minimalism]]
 33- [[https://en.wikipedia.org/wiki/Stoicism][Stoicism]]
 34
 35* Living Life in the Terminal
 36
 37My personal approach to reducing digital distractions and increasing my focus on
 38the task at hand is to use a terminal for as much as I possibly can.
 39
 40Most days, this means that I have a few tabs open constantly in my terminal:
 41
 421. A web browser
 432. A chat client
 443. An email client
 454. An RSS (Really Simple Syndication) feed reader
 465. A local shell for navigating my computer's files
 476. A remote shell for managing servers and other machines
 48
 49Beyond this, I rarely open other tabs or graphical applications, unless
 50absolutely necessary. If you look, you may be surprised what can be accomplished
 51in the terminal.
 52
 53For example, I have moved my music and entertainment downloads to the terminal,
 54along with my device virtual private network (VPN) connections. I am exploring
 55options for moving my RSS subscriptions to something like [[https://newsboat.org/][Newsboat]], so that I
 56can read my daily articles without all the fuss.
 57
 58Now that we have some examples out of the way, let's dive into the specifics.
 59
 60** Browsing the Web
 61
 62I'm going to start off with a hard topic for those who prefer to live in the
 63terminal: web browsing. This task is made hard mostly by websites and web apps
 64that require JavaScript to run. The other difficult part is that if you're using
 65a text-based browser, that means images won't load (hopefully that's obvious).
 66
 67I am using [[https://lynx.invisible-island.net][Lynx]], a text-based browser that runs quickly and easily in the
 68terminal. Lynx allows me to browser most websites by simply typing =g= and then
 69typing in the URL I want.
 70
 71If you need a search engine while in Lynx, I recommend [[https://lite.duckduckgo.com/lite/][DuckDuckGo (Lite)]], which
 72allows you to search the web using their text-only interface.
 73
 74Eventually, you will run into websites that don't work (or are just too ugly and
 75messy) in a text-only mode, and you'll be forced to switch over to a GUI browser
 76to look at that site. Personally, I don't mind this as it doesn't happen as
 77often as I thought it would.
 78
 79The only time I need to do this is when I want to browse an image/video-focused
 80webpage or if I need to log in to a site, and it doesn't support a text-only
 81login page. For example, I am able to easily log in to [[https://sr.ht][Sourcehut]] in lynx.
 82
 83** Chatting with Friends
 84
 85After web browsing activities, my main form of terminal communication is Matrix.
 86I use the [[https://docs.mau.fi/gomuks/][gomuks]] client currently.
 87
 88This was incredibly easy to install on macOS (but I will need to see if it'll be
 89just as easy on Linux when my new laptop arrives):
 90
 91#+begin_src sh
 92brew install gomuks
 93#+end_src
 94
 95Once you launch gomuks, it will sync and require your username and password to
 96login. After doing so, the only problem I ran into was verifying my gomuks
 97client so that I could participate in rooms with E2EE (end-to-end encryption).
 98
 99Finally, I was able to verify the session by opening the Element desktop app (I
100assume you can do this in the browser and mobile app too, but I'm not sure) and
101manually verifying myself with this process:
102
1031. Open the Element desktop app
1042. Open a room I was a member of
1053. Open the =Room Info= pane
1064. Open the =People= menu and search for myself
1075. Click on my profile name
1086. Click on the session link under the =Security= section and follow the prompts
109   to manually verify the session
110
111Overall, I like gomuks and am able to enjoy all the features I was using in
112Element. The only hiccup I have occurred is manually downloading images to view
113them, which can be annoying.
114
115** Email
116
117Moving email to the terminal has been the hardest of the tasks for me. Unlike
118web browsing, where I can simply decide to not look at a website that does not
119work in the terminal, I cannot simply ignore emails sent to me.
120
121Personally, I am experimenting with [[https://neomutt.org/][neomutt]] as a potential email client.
122
123However, this requires a *TON* of configuration and tweaking to get right. Even
124when I was able to set up neomutt, configure my email account, and customize a
125few personal preferences, a lot of emails still do not display correctly (mostly
126due to HTML (Hypertext Markup Language) and images).
127
128I won't get into the details of configuring =neomutt=; I mostly followed this
129blog post: [[https://gideonwolfe.com/posts/workflow/neomutt/intro/][Email in the Terminal: Configuring Neomutt]].
130
131Finally, I have yet to figure out how to connect my PGP (Pretty Good Privacy)
132keys to =neomutt=, but that's a problem for another day.
133
134** RSS Feed Reader
135
136I have just started using [[https://newsboat.org/][Newsboat]] to read articles in my terminal and have
137found quick success with it.
138
139The configuration was super easy for this app; I simply installed the app,
140created a file for URLs, and imported my OPML (Outline Processor Markup
141Language) subscriptions that I had exported out of my old feed reader:
142
143#+begin_src sh
144brew install newsboat
145#+end_src
146
147#+begin_src sh
148touch ~/.newsboat/urls
149#+end_src
150
151#+begin_src sh
152newsboat -i=my_subscriptions.opml
153#+end_src
154
155** Writing & Programming
156
157Unfortunately, the weak link in my terminal-based environment right now is my
158grasp of the possibilities of editing files within a shell.
159
160I am used to the easy extensions found in VSCodium and Kate, so I am slowly
161learning how to mold the default editing tools to my needs. Currently, this
162means I am using =nano= with the following configuration:
163
164#+begin_src config
165set breaklonglines
166set autoindent
167set linenumbers
168set tabstospaces
169set tabsize 2
170set fill 80
171#+end_src
172
173This configuration allows nano to automatically hard-wrap lines at 80
174characters, autoindent the wrapped lines (if the previous line was indented),
175use 2 spaces per tab, and display line numbers within each file I open.
176
177I am currently looking to see if =vim= or =emacs= would be more useful for my
178current needs, but I'm not in any rush, so I don't expect to find an answer
179anytime soon.
180
181With my current life demands, I am not programming at the moment and have not
182explored the best terminal set-up for programming. However, I have seen many
183peers find success configuring =vim= and =emacs=, so that's where I will start
184when I pick my projects back up.