|
|
|
% Options for packages loaded elsewhere
|
|
|
|
\PassOptionsToPackage{unicode}{hyperref}
|
|
|
|
\PassOptionsToPackage{hyphens}{url}
|
|
|
|
|
|
|
|
\documentclass[
|
|
|
|
]{article}
|
|
|
|
\usepackage{amsmath,amssymb}
|
|
|
|
\usepackage{titlesec}
|
|
|
|
\usepackage{titling}
|
|
|
|
\usepackage{lmodern}
|
|
|
|
\usepackage{xcolor}
|
|
|
|
\usepackage{iftex}
|
|
|
|
\usepackage[margin=1in]{geometry}
|
|
|
|
\ifPDFTeX
|
|
|
|
\usepackage[T1]{fontenc}
|
|
|
|
\usepackage[utf8]{inputenc}
|
|
|
|
\usepackage{textcomp} % provide euro and other symbols
|
|
|
|
\else % if luatex or xetex
|
|
|
|
\usepackage{unicode-math}
|
|
|
|
\defaultfontfeatures{Scale=MatchLowercase}
|
|
|
|
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
|
|
|
|
\fi
|
|
|
|
% Use upquote if available, for straight quotes in verbatim environments
|
|
|
|
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
|
|
|
\IfFileExists{microtype.sty}{% use microtype if available
|
|
|
|
\usepackage[]{microtype}
|
|
|
|
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
|
|
|
}{}
|
|
|
|
\makeatletter
|
|
|
|
\@ifundefined{KOMAClassName}{% if non-KOMA class
|
|
|
|
\IfFileExists{parskip.sty}{%
|
|
|
|
\usepackage{parskip}
|
|
|
|
}{% else
|
|
|
|
\setlength{\parindent}{0pt}
|
|
|
|
\setlength{\parskip}{1pt plus 2pt minus 1pt}}
|
|
|
|
}{% if KOMA class
|
|
|
|
\KOMAoptions{parskip=half}}
|
|
|
|
\makeatother
|
|
|
|
\definecolor{myblue}{RGB}{24, 102, 201}
|
|
|
|
\titleformat{\section}
|
|
|
|
{\huge\bfseries\color{myblue}}
|
|
|
|
{}
|
|
|
|
{0em}
|
|
|
|
{}[\titlerule]
|
|
|
|
|
|
|
|
\titleformat{\subsection}
|
|
|
|
{\Large\bfseries}
|
|
|
|
{}
|
|
|
|
{0em}
|
|
|
|
{}
|
|
|
|
|
|
|
|
\titleformat{\subsubsection}[runin]
|
|
|
|
{\bfseries}
|
|
|
|
{}
|
|
|
|
{0em}
|
|
|
|
{}[:]
|
|
|
|
|
|
|
|
\titlespacing{\subsubsection}
|
|
|
|
{0em}{0.75em}{0.5em}
|
|
|
|
|
|
|
|
\titlespacing{\subsection}
|
|
|
|
{0em}{1em}{0.65em}
|
|
|
|
|
|
|
|
\titlespacing{\maketitle}
|
|
|
|
{0em}{0em}{0em}
|
|
|
|
\renewcommand{\maketitle}{
|
|
|
|
\begin{center}
|
|
|
|
{\huge\bfseries \theauthor}\\
|
|
|
|
\vspace{.35em}
|
|
|
|
\href{https://sufyaan.me/terminal}{sufyaan.me/terminal}
|
|
|
|
\end{center}
|
|
|
|
}
|
|
|
|
\usepackage{color}
|
|
|
|
\usepackage{fancyvrb}
|
|
|
|
\newcommand{\VerbBar}{|}
|
|
|
|
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
|
|
|
|
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
|
|
|
% Add ',fontsize=\small' for more characters per line
|
|
|
|
\newenvironment{Shaded}{}{}
|
|
|
|
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
|
|
|
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
|
|
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
|
|
|
|
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
|
|
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
|
|
|
|
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
|
|
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
|
|
|
|
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
|
|
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
|
|
|
|
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
|
|
|
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
|
|
|
|
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
|
|
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
|
|
|
|
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
|
|
|
\newcommand{\ExtensionTok}[1]{#1}
|
|
|
|
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
|
|
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
|
|
|
|
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
|
|
|
|
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
|
|
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
|
|
|
\newcommand{\NormalTok}[1]{#1}
|
|
|
|
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
|
|
|
|
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
|
|
|
|
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
|
|
|
|
\newcommand{\RegionMarkerTok}[1]{#1}
|
|
|
|
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
|
|
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
|
|
|
|
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
|
|
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
|
|
|
|
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
|
|
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
|
|
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
|
|
|
\providecommand{\tightlist}{%
|
|
|
|
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
|
|
|
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
|
|
|
|
\ifLuaTeX
|
|
|
|
\usepackage[bidi=basic]{babel}
|
|
|
|
\else
|
|
|
|
\usepackage[bidi=default]{babel}
|
|
|
|
\fi
|
|
|
|
\babelprovide[main,import]{english}
|
|
|
|
% get rid of language-specific shorthands (see #6817):
|
|
|
|
\let\LanguageShortHands\languageshorthands
|
|
|
|
\def\languageshorthands#1{}
|
|
|
|
\ifLuaTeX
|
|
|
|
\usepackage{selnolig} % disable illegal ligatures
|
|
|
|
\fi
|
|
|
|
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
|
|
|
|
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
|
|
|
\urlstyle{same} % disable monospaced font for URLs
|
|
|
|
\hypersetup{
|
|
|
|
pdftitle={(POST) Why I Use Terminal Apps},
|
|
|
|
pdflang={en},
|
|
|
|
colorlinks=true,
|
|
|
|
linkcolor=blue,
|
|
|
|
filecolor=blue,
|
|
|
|
urlcolor=blue,
|
|
|
|
pdfcreator={LaTeX via pandoc}}
|
|
|
|
|
|
|
|
\title{Sufyaan's Website}
|
|
|
|
\author{Sufyaan's Website}
|
|
|
|
\date{}
|
|
|
|
|
|
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
|
|
|
|
|
|
|
|
|
|
\section[Why I Use Terminal Apps]{Why I Use Terminal
|
|
|
|
Apps}\label{why-i-use-terminal-apps}
|
|
|
|
|
|
|
|
\textbf{13 March 2023}
|
|
|
|
|
|
|
|
|
|
|
|
\textbf{Category: }Linux \& Software
|
|
|
|
|
|
|
|
\emph{``Ah, yes. Graphical-user interface (GUI) apps. They are so
|
|
|
|
comfortable and easy to use. You just click some buttons and get your
|
|
|
|
computer to do what you want.''}
|
|
|
|
|
|
|
|
That was what I thought before I learned how spectacular terminal
|
|
|
|
applications are. \textbf{I do not use a calendar or email GUI app. I
|
|
|
|
use its terminal equivalent.} Specifically, I use Calcurse for my
|
|
|
|
calendar/todo, neomutt for my email, sxiv for my image viewing, mpv for
|
|
|
|
my video playing and even Joplin (CLI) for my notes. I am still actively
|
|
|
|
looking for more apps like terminal file managers (lf, ranger, mc) and
|
|
|
|
terminal versions of GUI apps I use (Bitwarden?). What compelled me to
|
|
|
|
switch?
|
|
|
|
|
|
|
|
\hypertarget{the-right-tool-for-the-right-job}{%
|
|
|
|
\subsection[The Right Tool For The Right Job]{The Right Tool For The
|
|
|
|
Right Job}\label{the-right-tool-for-the-right-job}}
|
|
|
|
|
|
|
|
Firstly, I realized that apps that allow me to use my keyboard and
|
|
|
|
reduce mouse usage to as little as possible saved me a lot of time. By a
|
|
|
|
lot of time, I don\textquotesingle t mean a few minutes. I mean hours in
|
|
|
|
the long run. Moving your hand to your mouse and clicking a button takes
|
|
|
|
at least three seconds. Multiply that hundreds of times a day and 365
|
|
|
|
days an year. That leads to a lot of time wasted just moving your hand
|
|
|
|
to your mouse.
|
|
|
|
|
|
|
|
\hypertarget{fast.-very-fast.}{%
|
|
|
|
\subsection[Fast. Very Fast.]{Fast. Very Fast.}\label{fast.-very-fast.}}
|
|
|
|
|
|
|
|
The speed of terminal apps have helped me get a lot more productive.
|
|
|
|
Getting myself to start working immediately helped me a lot. I use
|
|
|
|
Neovim for my text editor, and whenever I need to write text, its much
|
|
|
|
faster to press a shortcut to open a blank file in Neovim than to open a
|
|
|
|
GUI equivalent. It is also much faster to press a shortcut than to open
|
|
|
|
my applications menu and search for my calendar app and wait a few
|
|
|
|
seconds for the bloated app to open up. Terminal apps are just more
|
|
|
|
lightweight. As a result, they operate faster and save me more than just
|
|
|
|
a few seconds.
|
|
|
|
|
|
|
|
\hypertarget{professionals-have-standards}{%
|
|
|
|
\subsection[\emph{"Professionals Have
|
|
|
|
Standards"}]{\texorpdfstring{\emph{"Professionals Have
|
|
|
|
Standards"}}{"Professionals Have Standards"}}\label{professionals-have-standards}}
|
|
|
|
|
|
|
|
CLI apps are more standardized. With a GUI, the procedure for solving an
|
|
|
|
issue or using the application\textquotesingle s functionality is
|
|
|
|
similar to this:
|
|
|
|
|
|
|
|
\begin{enumerate}
|
|
|
|
\tightlist
|
|
|
|
\item
|
|
|
|
Click \textquotesingle button1\textquotesingle{} on the top right.
|
|
|
|
\item
|
|
|
|
Hover over \textquotesingle dialogue2\textquotesingle{}
|
|
|
|
\item
|
|
|
|
Click on \textquotesingle button3\textquotesingle{}
|
|
|
|
\item
|
|
|
|
Scroll down to \textquotesingle setting4\textquotesingle{}
|
|
|
|
\item
|
|
|
|
Change the value to False.
|
|
|
|
\item
|
|
|
|
Click on Apply and OK.
|
|
|
|
\end{enumerate}
|
|
|
|
|
|
|
|
This is the sole reason that you see the terminal being used so much in
|
|
|
|
Linux. It\textquotesingle s easier to say ``Open your terminal and type
|
|
|
|
this'' than to blabber a long list of instructions that will become
|
|
|
|
redundant if the application in question decides to change their UI in
|
|
|
|
an update.
|
|
|
|
|
|
|
|
\hypertarget{run-them-on-a-potato}{%
|
|
|
|
\subsection[Run Them on a Potato!]{Run Them on a
|
|
|
|
Potato!}\label{run-them-on-a-potato}}
|
|
|
|
|
|
|
|
Due to the lightweight nature of the command line, your tools can run on
|
|
|
|
just about any computer. It does not matter if your computer has a
|
|
|
|
Pentium processor or a 12th-generation i9. GUI tools have system
|
|
|
|
requirements and if it is a robust tool with a fancy interface, chances
|
|
|
|
are that the requirements just for the app to look good knocks that tool
|
|
|
|
off your app list on your 10-year-old computer.
|
|
|
|
|
|
|
|
\hypertarget{exponential-learning-curve}{%
|
|
|
|
\subsection[Exponential Learning Curve]{Exponential Learning
|
|
|
|
Curve}\label{exponential-learning-curve}}
|
|
|
|
|
|
|
|
While GUI apps are simple to use initially, your speed using the apps
|
|
|
|
remains slow all the time. Sure, you may learn where every button is and
|
|
|
|
be able to open any setting you want quickly, but that speed is nothing
|
|
|
|
compared to one of a command line. With a command line, your speed is
|
|
|
|
slower than a snail at first. However, after some time of using the
|
|
|
|
program, you can do things at a similar speed as a GUI app.
|
|
|
|
|
|
|
|
If you daily-drive a terminal program, it takes only a few days for you
|
|
|
|
to become faster at it than using a GUI program. After that, you will be
|
|
|
|
able to understand your most used commands and use aliases to shorten
|
|
|
|
them.
|
|
|
|
|
|
|
|
For example, if you view your free space regulary, instead of typing a
|
|
|
|
50-character command to print your free space, you can just alias that
|
|
|
|
command to \textquotesingle free-space\textquotesingle. Doing this will
|
|
|
|
make it so that whenever you type
|
|
|
|
\textquotesingle free-space\textquotesingle, it performs the
|
|
|
|
aforementioned 50-character command and displays the output. This will
|
|
|
|
save your more than just a few hours of time.
|
|
|
|
|
|
|
|
\hypertarget{the-choices-never-end}{%
|
|
|
|
\subsection[The Choices Never End!]{The Choices Never
|
|
|
|
End!}\label{the-choices-never-end}}
|
|
|
|
|
|
|
|
With terminal apps, you have a plethora of choices. I can almost
|
|
|
|
guarantee that an app with functionality you wish existed does exist in
|
|
|
|
the form of a command line application. There are obscure apps with
|
|
|
|
spectacular functionality which can change your computing experience
|
|
|
|
that you will miss out on if you stay away from the terminal.
|
|
|
|
|
|
|
|
\hypertarget{bathe-in-possibilities}{%
|
|
|
|
\subsection[Bathe In Possibilities!]{Bathe In
|
|
|
|
Possibilities!}\label{bathe-in-possibilities}}
|
|
|
|
|
|
|
|
When it comes to GUI apps, you have to be honest. They do not have 100\%
|
|
|
|
functionality. It is simply implausible to fit every single function in
|
|
|
|
a GUI app. Doing so would result in a lot of code to maintain, an
|
|
|
|
extremely heavy app and a confusing layout. However, with a terminal
|
|
|
|
app, all you have to do is type:
|
|
|
|
|
|
|
|
\texttt{man\ command}
|
|
|
|
|
|
|
|
or
|
|
|
|
|
|
|
|
\texttt{command\ -\/-help}
|
|
|
|
|
|
|
|
and get the complete functionality of the app, all within less than 5\%
|
|
|
|
of the app size of its GUI equivalent.
|
|
|
|
|
|
|
|
\hypertarget{skip-the-middlemen}{%
|
|
|
|
\subsection[Skip The Middlemen]{Skip The
|
|
|
|
Middlemen}\label{skip-the-middlemen}}
|
|
|
|
|
|
|
|
All GUI apps are basically middlemen for the command line. They
|
|
|
|
essentially use the command line for you. When you ditch the GUI and go
|
|
|
|
straight for the terminal, you talk directly to the computer in a way in
|
|
|
|
which the computer understands.
|
|
|
|
|
|
|
|
\hypertarget{first-impressions-matter}{%
|
|
|
|
\subsection[First Impressions Matter]{First Impressions
|
|
|
|
Matter}\label{first-impressions-matter}}
|
|
|
|
|
|
|
|
When people first look at the terminal, it becomes set in their mind
|
|
|
|
that it is difficult to use and that mentality stays for an
|
|
|
|
extraordinarily long time. Due to this, they never experiment or even
|
|
|
|
open the terminal application. If they run into an issue which requires
|
|
|
|
the use of the terminal to fix, they decide to just live with the issue
|
|
|
|
instead of using the terminal. However, if people use the terminal for a
|
|
|
|
few weeks, they realize that it outpaces almost every other GUI app in
|
|
|
|
almost everything.
|
|
|
|
|
|
|
|
\hypertarget{nothing-is-perfect...}{%
|
|
|
|
\subsection[Nothing is Perfect...]{Nothing is
|
|
|
|
Perfect...}\label{nothing-is-perfect...}}
|
|
|
|
|
|
|
|
... including terminal applications. Terminal applications are amazing.
|
|
|
|
They allow me to do so much. However, there are extremely rare cases in
|
|
|
|
which I have no choice but to use a GUI. This is if the GUI application
|
|
|
|
in question requires you to use only their app. There are also some
|
|
|
|
specific use-cases in which GUI apps just make more sense. Video
|
|
|
|
editing, advanced photo manipulation and 3D modelling are great
|
|
|
|
examples.
|
|
|
|
|
|
|
|
\hypertarget{to-sum-it-all-up...}{%
|
|
|
|
\subsection[To Sum It All Up...]{To Sum It All
|
|
|
|
Up...}\label{to-sum-it-all-up...}}
|
|
|
|
|
|
|
|
...terminal applications should be used as much as possible. They are
|
|
|
|
swift. They can be used quickly and also use less resources and space
|
|
|
|
while running on just about anything. They are not as difficult as they
|
|
|
|
look and can be used for uses which GUI apps do not have. They cannot be
|
|
|
|
used all the time because there are rare exceptions in which GUI
|
|
|
|
applications have to be used. However, these are so little that I do not
|
|
|
|
mind keeping GUI apps just for these use cases.
|
|
|
|
|
|
|
|
\end{document}
|