My Primary Operating System 2021—present

Screenshot of Operating System


Operating System

I am now using Arch Linux. I previously used a base install of Debian on which I installed i3, but since I was already customizing many things, moving to a distribution that is designed for a customized installation, such as Arch, made sense. Also, Arch's packages are generally much more up-to-date than Debian's packages, and the fact that it is a rolling release distribution allows me to use the system indefinitely with out a full reinstall.

Arch is known for being difficult to install and maintain. Its updates are also known for breaking things. Consequently, I was concerned that it might not be practical. However, it was much easier to install than I expected. In fact, despite never having installed it before, I was able to install it faster than I normally install Debian (mostly because the Wi-Fi drivers were pre-installed). I was also under the impression that I would have to compile the kernel, but that was not the case. Its installation was far simpler than I expected.

Additionally, despite the reputation of Arch's updates, I have never installed an update that broke anything major. Occasionally, I have experienced an update that had minor mistakes, such as miss-coloring a button, but those are rare and relatively inconsequential. In general, I have found Arch to be reliable.

Hardware

I am running this operating system on an HP G72-250US laptop. I think that my family purchased it as a Windows 7 laptop in 2011 and used it until the hard drive began to die in late 2019. It has a 2 Core 1.86 GHz Intel Pentium P6000 CPU and 4 GB of ram.

My family has a different laptop now, so I decided to add a new hard drive to this old one in order to use it myself. I bought a cheap 150 GB HDD on eBay, which was a sufficient replacement. I do not need very much hard drive space because I keep most of my files on extremal drives. In fact, I only partitioned about half of the drive for my operating system, leaving the rest in case I decide that I want to add another operating system.

My main complain about the machine is that it becomes very hot and constantly runs its fan loudly. Sometimes the fan can actually be louder than the speakers. One time, when I was browsing the internet, the computer unexpectedly cut power to itself in order to prevent the processor from overheating. However, while its running, it has enough processing power to comfortably do everything that I need to do on a regular basis. However, I cannot use it for resource intensive tasks such as videoconferencing.

Partitioning Scheme

sda1 150M /boot

sda2 6G swap

sda3 35G /

sda4 35G /home

Initial System Setup

I recorded these as the initial commands that I used to set up the system after its first boot. I do not remember very much about them, so I will not comment on them.

# pacman -S networkmanager
# systemctl enable NetworkManager
# pacman -S grub
# grub-install --target=i386-pc /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg
# passwd
# vim /etc/locale.gen
# vim /etc/locale.gen
# locale-gen
# vim /etc/locale.conf
# ln -sf /usr/share/zoneinfo/America/New_York
# ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
# vim /etc/hostname
# vim /etc/hosts
# vim /etc/hostname
# exit

Connecting to Wi-Fi

Here is how I connected the machine to a Wi-Fi network.

# info NetworkManager
# nmcli dev wifi list
# nmcli device wifi connect NETWORK_NAME password PASSWORD
# nmcli connection
# ping various-and-sundry.com

Adding A User

I created a user and gave it sudo privilege by adding %wheel ALL=(ALL) ALL to the /etc/sudoers file using visudo.

# useradd -m user
# usermod -aG wheel user
# export EDITOR="/usr/bin/vim"
# visudo

Programs Installed Via Pacman

I installed xorg-server because I want to be able to run X programs.

$ pacman -S xorg-server
resolving dependencies...
looking for conflicting packages...

Packages (43) freetype2-2.10.4-1 graphite-1:1.3.14-1 harfbuzz-2.8.2-1 libdrm-2.4.107-1 libedit-20210522_3.1-1 libepoxy-1.5.8-1 libevdev-1.11.0-1 libfontenc-1.1.4-3 libglvnd-1.3.3-1 libgudev-236-1 libinput-1.18.0-1 libomxil-bellagio-0.9.3-3 libpciaccess-0.16-2 libpng-1.6.37-3 libunwind-1.5.0-1 libwacom-1.11-1 libx11-1.7.2-1 libxau-1.0.9-3 libxcb-1.14-1 libxdamage-1.1.5-3 libxdmcp-1.1.3-3 libxext-1.3.4-3 libxfixes-6.0.0-1 libxfont2-2.0.4-3 libxkbfile-1.1.0-2 libxshmfence-1.3-2 libxxf86vm-1.1.4-4 llvm-libs-12.0.1-1 lm_sensors-1:3.6.0.r41.g31d1f125-1 mesa-21.1.4-1 mtdev-1.1.6-1 pixman-0.40.0-1 vulkan-icd-loader-1.2.183-1 wayland-1.19.0-1 xcb-proto-1.14.1-3 xf86-input-libinput-1.1.0-1 xkeyboard-config-2.33-1 xorg-fonts-encodings-1.0.5-2 xorg-server-common-1.20.12-1 xorg-setxkbmap-1.3.2-2 xorg-xkbcomp-1.4.5-1 xorgproto-2021.4-1 xorg-server-1.20.12-1

Total Download Size: 52.82 MiB
Total Installed Size: 246.23 MiB

I installed Wget because I like to use it to download files. I initially installed it so that I could download dwm, dmenu, and st.

$ pacman -S wget
resolving dependencies...
looking for conflicting packages...

Packages (1) wget-1.21.1-1

Total Download Size: 0.72 MiB
Total Installed Size: 2.99 MiB

I installed xorg-xinit because I want to run X programs.

$ pacman -S xorg-xinit
resolving dependencies...
looking for conflicting packages...

Packages (8) libice-1.0.10-3 libsm-1.2.3-2 libxmu-1.1.3-2 libxt-1.2.1-1 xorg-xauth-1.1-2 xorg-xmodmap-1.0.10-2 xorg-xrdb-1.2.0-2 xorg-xinit-1.4.1-3

Total Download Size: 0.80 MiB
Total Installed Size: 3.15 MiB

I installed xorg because I want to run X programs. I do not know why I installed all of these X packages separately.

$ pacman -S xorg
:: There are 48 members in group xorg:
:: Repository extra
1) xf86-video-vesa 2) xorg-bdftopcf 3) xorg-docs 4) xorg-font-util 5) xorg-fonts-100dpi 6) xorg-fonts-75dpi 7) xorg-fonts-encodings 8) xorg-iceauth 9) xorg-mkfontscale 10) xorg-server 11) xorg-server-common 12) xorg-server-devel 13) xorg-server-xephyr 14) xorg-server-xnest 15) xorg-server-xvfb 16) xorg-sessreg 17) xorg-setxkbmap 18) xorg-smproxy 19) xorg-x11perf 20) xorg-xauth 21) xorg-xbacklight 22) xorg-xcmsdb 23) xorg-xcursorgen 24) xorg-xdpyinfo 25) xorg-xdriinfo 26) xorg-xev 27) xorg-xgamma 28) xorg-xhost 29) xorg-xinput 30) xorg-xkbcomp 31) xorg-xkbevd 32) xorg-xkbutils 33) xorg-xkill 34) xorg-xlsatoms 35) xorg-xlsclients 36) xorg-xmodmap 37) xorg-xpr 38) xorg-xprop 39) xorg-xrandr 40) xorg-xrdb 41) xorg-xrefresh 42) xorg-xset 43) xorg-xsetroot 44) xorg-xvinfo 45) xorg-xwayland 46) xorg-xwd 47) xorg-xwininfo 48) xorg-xwud
resolving dependencies...
looking for conflicting packages...

Packages (68) fontconfig-2:2.13.94-1 libxaw-1.0.14-1 libxcomposite-0.4.5-3 libxcursor-1.2.0-2 libxft-2.3.3-2 libxi-1.7.10-3 libxinerama-1.1.4-3 libxpm-3.5.13-2 libxrandr-1.5.2-3 libxrender-0.9.10-4 libxtst-1.2.3-4 libxv-1.0.11-4 xcb-util-0.4.0-3 xcb-util-image-0.4.0-3 xcb-util-keysyms-0.4.0-3 xcb-util-renderutil-0.3.9-3 xcb-util-wm-0.4.1-3 xorg-fonts-alias-100dpi-1.0.4-1 xorg-fonts-alias-75dpi-1.0.4-1 xorg-util-macros-1.19.3-1 xf86-video-vesa-2.5.0-1 xorg-bdftopcf-1.1-2 xorg-docs-1.7.1-3 xorg-font-util-1.3.2-2 xorg-fonts-100dpi-1.0.3-7 xorg-fonts-75dpi-1.0.3-7 xorg-fonts-encodings-1.0.5-2 xorg-iceauth-1.0.8-2 xorg-mkfontscale-1.2.1-2 xorg-server-1.20.12-1 xorg-server-common-1.20.12-1 xorg-server-devel-1.20.12-1 xorg-server-xephyr-1.20.12-1 xorg-server-xnest-1.20.12-1 xorg-server-xvfb-1.20.12-1 xorg-sessreg-1.1.2-2 xorg-setxkbmap-1.3.2-2 xorg-smproxy-1.0.6-3 xorg-x11perf-1.6.1-2 xorg-xauth-1.1-2 xorg-xbacklight-1.2.3-2 xorg-xcmsdb-1.0.5-3 xorg-xcursorgen-1.0.7-2 xorg-xdpyinfo-1.3.2-4 xorg-xdriinfo-1.0.6-2 xorg-xev-1.2.4-1 xorg-xgamma-1.0.6-3 xorg-xhost-1.0.8-2 xorg-xinput-1.6.3-2 xorg-xkbcomp-1.4.5-1 xorg-xkbevd-1.1.4-3 xorg-xkbutils-1.0.4-4 xorg-xkill-1.0.5-2 xorg-xlsatoms-1.1.3-2 xorg-xlsclients-1.1.4-2 xorg-xmodmap-1.0.10-2 xorg-xpr-1.0.5-2 xorg-xprop-1.2.5-1 xorg-xrandr-1.5.1-2 xorg-xrdb-1.2.0-2 xorg-xrefresh-1.0.6-2 xorg-xset-1.2.4-2 xorg-xsetroot-1.1.2-2 xorg-xvinfo-1.1.4-2 xorg-xwayland-21.1.2-1 xorg-xwd-1.0.7-2 xorg-xwininfo-1.1.5-2 xorg-xwud-1.0.5-2

Total Download Size: 27.46 MiB
Total Installed Size: 42.71 MiB
Net Upgrade Size: 37.95 MiB

I installed Emacs because I use it for text editing and file management and such. I eventually configured dwm to start Emacs when Super-o is pressed. I had already installed Vim using pacstrap.

$ sudo pacman -S emacs
resolving dependencies...
looking for conflicting packages...

Packages (69) adobe-source-code-pro-fonts-2.038ro+1.058it+1.018var-1 adwaita-icon-theme-40.1.1-1 alsa-lib-1.2.5.1-3 alsa-topology-conf-1.2.5.1-1 alsa-ucm-conf-1.2.5.1-1 aom-3.1.1-1 at-spi2-atk-2.38.0-1 at-spi2-core-2.40.3-1 atk-2.36.0-1 avahi-0.8+20+gd1e71b3-1 brotli-1.0.9-4 cairo-1.17.4-5 cantarell-fonts-1:0.301-1 dav1d-0.9.0-1 dconf-0.40.0-1 desktop-file-utils-0.26-1 flac-1.3.3-3 fribidi-1.0.10-1 gd-2.3.2-4 gdk-pixbuf2-2.42.6-1 giflib-5.2.1-2 glib-networking-1:2.68.1-1 gsettings-desktop-schemas-40.0-3 gtk-update-icon-cache-1:4.2.1-2 gtk3-1:3.24.30-1 hicolor-icon-theme-0.17-2 iso-codes-4.6.0-1 json-glib-1.6.2-1 lcms2-2.12-1 libasyncns-0.8+3+g68cd5af-3 libavif-0.9.2-1 libcanberra-0.30+2+gc0620e4-5 libcloudproviders-0.3.1-2 libcolord-1.4.5-4 libcups-1:2.3.3op2-3 libdatrie-0.2.13-1 libde265-1.0.8-1 libheif-1.12.0-1 libjpeg-turbo-2.1.0-1 libogg-1.3.5-1 libotf-0.9.16-3 libproxy-0.4.17-2 libpulse-14.2-3 librsvg-2:2.50.7-1 libsndfile-1.0.31-1 libsoup-2.72.0+10+gfe1e295d-1 libthai-0.1.28-2 libtiff-4.3.0-1 libusb-1.0.24-2 libvorbis-1.3.7-2 libwebp-1.2.0-1 libxkbcommon-1.3.0-1 libyuv-r2212+dfaf7534-2 lzo-2.10-3 m17n-db-1.8.0-3 m17n-lib-1.8.0-10 opus-1.3.1-2 pango-1:1.48.7-1 rav1e-0.4.1-1 rest-0.8.1-3 shared-mime-info-2.0+57+gc1d1c70-1 sound-theme-freedesktop-0.8-4 speex-1.2.0-3 speexdsp-1.2.0-2 svt-av1-0.8.7-1 tdb-1.4.4-1 wayland-protocols-1.21-1 x265-3.5-1 emacs-27.2-1

Total Download Size: 85.77 MiB
Total Installed Size: 317.10 MiB

I installed flameshot because it is my favorite screenshot program right now. I configured dwm to launch it when prt sc is pressed.

$ sudo pacman -S flameshot
resolving dependencies...
looking for conflicting packages...

Packages (8) double-conversion-3.1.5-2 libxkbcommon-x11-1.3.0-1 md4c-0.4.8-1 qt5-base-5.15.2+kde+r210-1 qt5-svg-5.15.2+kde+r7-1 tslib-1.22-1 xdg-utils-1.1.3+19+g9816ebb-1 flameshot-0.9.0-1

Total Download Size: 13.94 MiB
Total Installed Size: 68.27 MiB

I installed Firefox because it is my favorite browser.

$ sudo pacman -S firefox
resolving dependencies...
:: There are 8 providers available for ttf-font:
:: Repository extra
1) gnu-free-fonts 2) noto-fonts 3) ttf-bitstream-vera 4) ttf-croscore 5) ttf-dejavu
:: Repository community
6) ttf-droid 7) ttf-ibm-plex 8) ttf-liberation
looking for conflicting packages...

Packages (38) dbus-glib-0.112-1 ffmpeg-2:4.4-4 gnu-free-fonts-20120503-8 gsm-1.0.19-1 hidapi-0.10.1-1 jack-0.125.0-9 l-smash-2.14.5-2 lame-3.100-3 libass-0.15.1-1 libavc1394-0.5.4-4 libbluray-1.3.0-1 libibus-1.5.24-1 libiec61883-1.2.0-6 libmfx-21.2.3-1 libmodplug-0.8.9.0-3 libraw1394-2.1.2-3 libsamplerate-0.2.1-1 libsoxr-0.1.3-2 libssh-0.9.5-1 libtheora-1.1.1-5 libva-2.12.0-1 libvdpau-1.4-1 libvpx-1.10.0-1 mailcap-2.1.53-1 opencore-amr-0.1.5-5 openjpeg2-2.4.0-1 sdl2-2.0.14-1 srt-1.4.3-1 sysfsutils-2.1.1-1 v4l-utils-1.20.0-1 vid.stab-1.1-3 vmaf-1.5.3-1 x264-3:0.161.r3039.544c61f-1 xvidcore-1.3.7-2 zimg-3.0.1-2 zita-alsa-pcmi-0.3.2-3 zita-resampler-1.8.0-1 firefox-90.0-1

Total Download Size: 96.25 MiB
Total Installed Size: 414.11 MiB

I installed Thunderbird because it is my favorite e-mail client.

$ sudo pacman -S thunderbird
resolving dependencies...
looking for conflicting packages...

Packages (4) botan-2.18.1-1 hunspell-1.7.0-3 libevent-2.1.12-1 thunderbird-78.12.0-1

Total Download Size: 47.42 MiB
Total Installed Size: 184.60 MiB

I installed htop because I like using it to check processes and check CPU and memory usage.

$ sudo pacman -S htop
resolving dependencies...
looking for conflicting packages...

Packages (1) htop-3.0.5-1

Total Download Size: 0.11 MiB
Total Installed Size: 0.27 MiB

I installed zathura because it is my favorite PDF viewer, and I need to view PDF file's quite often. I really like being able to navigate with Vim keybindings, and I like that it it updates the displayed PDF automatically if the file that it is reading from is updated.

$ sudo pacman -S zathura
resolving dependencies...
looking for conflicting packages...

Packages (3) girara-0.3.6-1 libsynctex-2021.58686-3 zathura-0.4.7-1

Total Download Size: 0.31 MiB
Total Installed Size: 0.97 MiB

This must have been needed by zathura for some reason. I do not remember what or why.

$ sudo pacman -S zathura-pdf-poppler
resolving dependencies...
looking for conflicting packages...

Packages (3) poppler-21.07.0-1 poppler-glib-21.07.0-1 zathura-pdf-poppler-0.3.0-1

Total Download Size: 1.56 MiB
Total Installed Size: 8.13 MiB

I installed texlive-core so that I can use LaTeX. I use LaTeX for most important college papers (basically any papers that include citations) and documents that need sophisticated formatting.

$ sudo pacman -S texlive-core
resolving dependencies...
looking for conflicting packages...

Packages (9) harfbuzz-icu-2.8.2-1 libpaper-1.1.28-1 libsigsegv-2.13-1 potrace-1.16-2 run-parts-4.11.2-1 t1lib-5.1.2-8 texlive-bin-2021.58686-3 zziplib-0.13.72-1 texlive-core-2021.58710-2

Total Download Size: 164.46 MiB
Total Installed Size: 460.03 MiB

I installed unzip because I need to unzip zip files sometimes.

$ sudo pacman -S unzip
resolving dependencies...
looking for conflicting packages...

Packages (1) unzip-6.0-14

Total Download Size: 0.14 MiB
Total Installed Size: 0.31 MiB

I installed this because I wanted to have all of the default LaTeX packages rather than just texlive-core.

$ sudo pacman -S texlive-most
:: There are 12 members in group texlive-most:
:: Repository extra
1) texlive-bibtexextra 2) texlive-core 3) texlive-fontsextra 4) texlive-formatsextra 5) texlive-games 6) texlive-humanities 7) texlive-latexextra 8) texlive-music 9) texlive-pictures 10) texlive-pstricks 11) texlive-publishers 12) texlive-science
resolving dependencies...
looking for conflicting packages...

Packages (13) perl-file-which-1.24-2 texlive-bibtexextra-2021.58697-1 texlive-core-2021.58710-2 texlive-fontsextra-2021.58704-1 texlive-formatsextra-2021.57972-1 texlive-games-2021.56833-1 texlive-humanities-2021.58589-1 texlive-latexextra-2021.58668-2 texlive-music-2021.58331-1 texlive-pictures-2021.58558-1 texlive-pstricks-2021.58293-1 texlive-publishers-2021.58683-1 texlive-science-2021.58667-1

Total Download Size: 629.40 MiB
Total Installed Size: 2116.49 MiB
Net Upgrade Size: 1728.35 MiB

I installed PulseAudio because I am not going to use ALSA on its own.

$ sudo pacman -S pulseaudio
resolving dependencies...
looking for conflicting packages...

Packages (4) orc-0.4.32-1 rtkit-0.13-1 webrtc-audio-processing-0.3.1-3 pulseaudio-14.2-3

Total Download Size: 1.75 MiB
Total Installed Size: 8.13 MiB

I installed alsa-utils. I apparently needed it, and it did not come as a dependency of PulseAudio.

$ sudo pacman -S alsa-utils
resolving dependencies...
looking for conflicting packages...

Packages (1) alsa-utils-1.2.5.1-1

Total Download Size: 1.13 MiB
Total Installed Size: 2.21 MiB

I installed Git because I need it and use it all of the time (including for maintaining this web site).

$ sudo pacman -S git
resolving dependencies...
looking for conflicting packages...

Packages (4) perl-error-0.17029-3 perl-mailtools-2.21-5 perl-timedate-2.33-3 git-2.32.0-1

Total Download Size: 5.98 MiB
Total Installed Size: 32.52 MiB

I think that I installed hunspell because I needed it in order to use flyspell mode in Emacs. If it is the spell check program that I use in Emacs, I do not think that it is very good.

$ sudo pacman -S hunspell
resolving dependencies...
looking for conflicting packages...

Packages (1) hunspell-1.7.0-3

Total Installed Size: 0.77 MiB
Net Upgrade Size: 0.00 MiB

I think that I installed this in order to store Git passwords, but I did not end up using it for that. However, It is now a dependency of something else, so I cannot uninstall it.

$ sudo pacman -S libsecret
resolving dependencies...
looking for conflicting packages...

Packages (1) libsecret-0.20.4-1

Total Installed Size: 2.18 MiB
Net Upgrade Size: 0.00 MiB

I installed GNU Chess so that I can play chess against the computer. I have only used it a handful of times, and I always forget how to use chess notation. Also, GNU chess uses an incredible amount of processing power, quickly making the computer become very hot.

$ sudo pacman -S gnuchess
resolving dependencies...
looking for conflicting packages...

Packages (1) gnuchess-6.2.8-1

Total Download Size: 0.24 MiB
Total Installed Size: 0.63 MiB

I installed R so that I can learn how to use it and so that I can do fun things such as plotting COVID-19 data.

$ sudo pacman -S r
resolving dependencies...
looking for conflicting packages...

Packages (4) blas-3.10.0-1 lapack-3.10.0-1 zip-3.0-9 r-4.1.0-1

Total Download Size: 57.99 MiB
Total Installed Size: 87.11 MiB

I installed sxiv because it is probably the best image viewer in existence. That might be true just because of its Vim keybindings. However, it also provides an incredibly convenient thumbnail mode that allows me to quickly locate an image within a group (which eliminates the last reason that I might need a graphical file manager). It also allows me to select images and send their file paths to standard output, which is incredibly useful.

$ sudo pacman -S sxiv
resolving dependencies...
looking for conflicting packages...

Packages (4) imlib2-1.7.2-1 libexif-0.6.22-1 libid3tag-0.15.1b-11 sxiv-26-1

Total Download Size: 1.05 MiB
Total Installed Size: 3.97 MiB

I do not remember why I installed ispell. I probably needed it for Emacs.

$ sudo pacman -S ispell
resolving dependencies...
looking for conflicting packages...

Packages (1) ispell-3.4.04-1

Total Download Size: 0.36 MiB
Total Installed Size: 1.40 MiB

I do not know what this is or why I needed it.

$ sudo pacman -S exiv
resolving dependencies...
looking for conflicting packages...

Packages (28) babl-0.1.86-1 exiv2-0.27.4-2 gegl-0.4.30-5 ghostscript-9.54.0-2 graphviz-2.48.0-2 gsfonts-20200910-2 gtk2-2.24.33-2 gts-0.7.6.121130-2 ijs-0.35-3 imath-3.1.2-1 jasper-2.0.32-1 jbig2dec-0.19-1 lensfun-0.3.95-4 libgexiv2-0.12.2-1 libmng-2.0.3-3 libmypaint-1.6.1-1 libraw-0.20.2-1 libspiro-1:20200505-2 libwmf-0.2.12-2 luajit-2.0.5-3 metis-5.1.0.p10-2 mypaint-brushes1-1.3.1-1 netpbm-10.73.34-1 openexr-3.0.5-2 poppler-data-0.4.10-1 suitesparse-5.10.1-1 tbb-2020.3-1 gimp-2.10.24-5

Total Download Size: 70.03 MiB
Total Installed Size: 318.84 MiB

This was apparently a dependence that was needed for some R libraries.

$ sudo pacman -S tk
resolving dependencies...
looking for conflicting packages...

Packages (3) libxss-1.2.3-3 tcl-8.6.11-1 tk-8.6.11.1-1

Total Download Size: 4.40 MiB
Total Installed Size: 11.48 MiB

I use Audacity for quite a few things. However, because the project has been bought, I will probably need to move to one of its forks eventually.

$ sudo pacman -S audacity
resolving dependencies...
looking for conflicting packages...

Packages (15) gst-plugins-base-libs-1.18.4-1 gstreamer-1.18.4-1 libnotify-0.7.9-1 lilv-0.24.12-1 portsmf-234-2 serd-0.30.10-1 sord-0.16.8-1 soundtouch-2.2-1 sratom-0.6.8-1 suil-0.10.10-1 twolame-0.4.0-2 vamp-plugin-sdk-2.10.0-1 wxgtk-common-3.0.5.1-2 wxgtk3-3.0.5.1-2 audacity-1:2.4.1-4

Total Download Size: 18.50 MiB
Total Installed Size: 81.22 MiB

Flite is by favorite text to speech program. It is tiny and fast and uses almost no resources.

$ sudo pacman -S flite
resolving dependencies...
looking for conflicting packages...

Packages (1) flite-2.2-1

Total Download Size: 5.19 MiB
Total Installed Size: 9.26 MiB

This program converts .docx files to plain text. For some reason, my college professors constantly send out M$ Word documents rather than PDF documents or any other sensible file types for documents that are not meant to be edited. I use this program to read them because I do not really want to install or use LibreOffice. LibreOffice is a great program, but docx2txt is faster, smaller, and sufficient for my purposes.

$ sudo pacman -S docx2txt
resolving dependencies...
looking for conflicting packages...

Packages (1) docx2txt-1.4-5

Total Download Size: 0.01 MiB
Total Installed Size: 0.02 MiB

I installed the Java JRE because I need to write Java programs for some of my college computer science courses.

$ sudo pacman -S jre-openjdk
resolving dependencies...
looking for conflicting packages...

Packages (4) java-runtime-common-3-3 jre-openjdk-headless-16.0.2.u7-1 libnet-1:1.1.6-1 jre-openjdk-16.0.2.u7-1

Total Download Size: 39.65 MiB
Total Installed Size: 182.64 MiB

I installed the Java JDK because I need to write Java programs for some of my college computer science courses.

$ sudo pacman -S jdk-openjdk
resolving dependencies...
sudo pacman -S jdk-openjdk
resolving dependencies...
looking for conflicting packages...

Packages (2) java-environment-common-3-3 jdk-openjdk-16.0.2.u7-1

Total Download Size: 80.66 MiB
Total Installed Size: 93.19 MiB
looking for conflicting packages...

Packages (2) java-environment-common-3-3 jdk-openjdk-16.0.2.u7-1

Total Download Size: 80.66 MiB
Total Installed Size: 93.19 MiB

PDFtk is my favorite PDF manipulation program. It allows me to split, rotate, and concatenate PDF files.

$ sudo pacman -s pdftk
resolving dependencies...
looking for conflicting packages...

Packages (1) pdftk-3.3.1-1

Total Download Size: 0.93 MiB
Total Installed Size: 0.98 MiB

I started using ImageMagick just to conveniently convert between different image file formates. However, I now think that it is amazing for a variety of tasks. In particular, I can write scripts to automate tasks that would otherwise be laborious. However, at least for now, I still need GIMP.

$ sudo pacman -S imagemagick
resolving dependencies...
looking for conflicting packages...

Packages (3) liblqr-0.4.2-3 libraqm-0.7.1-1 imagemagick-7.1.0.7-1

Total Download Size: 2.60 MiB
Total Installed Size: 10.19 MiB

I installed rsync because it is very useful for backing up files on external drives without unnecessary recopying files that were already in the backup.

$ sudo pacman -S rsync
resolving dependencies...
looking for conflicting packages...

Packages (2) xxhash-0.8.0-1 rsync-3.2.3-4

Total Download Size: 0.37 MiB
Total Installed Size: 0.85 MiB

I have now started using RSS, and I use the newsboat RSS reader. I really like RSS now. However, I do not intend to create a various-and-sundry.com RSS feed because there is nothing on this site of which one would want to be notified. If you want to see what is new, please refer to the sites Git history.

$ sudo pacman -S newsboat
resolving dependencies...
looking for conflicting packages...

Packages (2) stfl-0.24-5 newsboat-2.25-1

Total Download Size: 2.31 MiB
Total Installed Size: 10.83 MiB

I installed biber so that I can easily use various citation styles in LaTeX. I use it for college papers.

$ sudo pacman -S biber
resolving dependencies...
looking for conflicting packages...

Packages (112) libxslt-1.1.34-6 perl-alien-build-2.42-1 perl-alien-libxml2-0.17-2 perl-autovivification-0.18-7 perl-b-hooks-endofscope-0.24-4 perl-business-isbn-3.004-8 perl-business-isbn-data-20140910.003-8 perl-business-ismn-1.201-5 perl-business-issn-1.003-5 perl-capture-tiny-0.48-5 perl-class-accessor-0.51-2 perl-class-data-inheritable-0.09-1 perl-class-factory-util-1.7-10 perl-class-inspector-1.36-4 perl-class-load-0.25-2 perl-class-singleton-1.5-4 perl-clone-0.45-3 perl-data-compare-1.25-9 perl-data-dump-1.25-1 perl-data-optlist-0.112-1 perl-data-uniqid-0.12-9 perl-datetime-1.54-2 perl-datetime-calendar-julian-0.04-7 perl-datetime-format-builder-0.8100-8 perl-datetime-format-strptime-1.75-5 perl-datetime-locale-1.32-1 perl-datetime-timezone-2.47-1 perl-devel-stacktrace-2.04-1 perl-dist-checkconflicts-0.11-7 perl-encode-locale-1.05-8 perl-eval-closure-0.14-7 perl-exception-class-1.45-1 perl-exporter-tiny-1.002002-3 perl-ffi-checklib-0.28-2 perl-file-chdir-0.1011-4 perl-file-find-rule-0.34-8 perl-file-listing-6.14-2 perl-file-sharedir-1.118-1 perl-file-sharedir-install-0.13-5 perl-file-slurp-tiny-0.004-7 perl-file-slurper-0.012-5 perl-html-parser-3.76-2 perl-html-tagset-3.20-11 perl-http-cookies-6.10-2 perl-http-daemon-6.12-1 perl-http-date-6.05-4 perl-http-message-6.33-1 perl-http-negotiate-6.01-9 perl-inc-latest-0.500-8 perl-io-html-1.004-2 perl-io-socket-ssl-2.072-1 perl-io-string-1.08-12 perl-ipc-run3-0.048-9 perl-libwww-6.57-1 perl-lingua-translit-0.28-6 perl-list-allutils-0.16-3 perl-list-moreutils-0.430-2 perl-list-moreutils-xs-0.430-2 perl-list-someutils-0.56-5 perl-list-utilsby-0.11-5 perl-log-log4perl-1.54-2 perl-lwp-mediatypes-6.02-9 perl-lwp-protocol-https-6.10-2 perl-math-round-0.07-4 perl-mime-charset-1.012.2-8 perl-module-build-0.4231-5 perl-module-implementation-0.09-7 perl-module-runtime-0.016-2 perl-mozilla-ca-20200520-4 perl-mro-compat-0.13-6 perl-namespace-autoclean-0.29-3 perl-namespace-clean-0.27-7 perl-net-http-6.21-2 perl-net-ssleay-1.90-2 perl-number-compare-0.03-11 perl-package-deprecationmanager-0.17-7 perl-package-stash-0.39-2 perl-package-stash-xs-0.29-5 perl-params-util-1.102-2 perl-params-validate-1.30-1 perl-params-validationcompiler-0.30-4 perl-parse-recdescent-1.967015-2 perl-path-tiny-0.118-2 perl-perlio-utf8-strict-0.007-7 perl-regexp-common-2017060201-4 perl-role-tiny-2.002004-1 perl-sort-key-1.33-10 perl-specio-0.47-1 perl-sub-exporter-0.988-1 perl-sub-exporter-progressive-0.001013-7 perl-sub-identify-0.14-9 perl-sub-install-0.928-7 perl-sub-name-0.26-3 perl-test-fatal-0.016-2 perl-text-bibtex-0.85-7 perl-text-csv-2.00-2 perl-text-glob-0.11-8 perl-text-roman-3.5-8 perl-tie-cycle-1.225-6 perl-try-tiny-0.30-6 perl-unicode-linebreak-2019.001-4 perl-uri-5.09-2 perl-variable-magic-0.62-6 perl-www-robotrules-6.02-9 perl-xml-libxml-2.0207-2 perl-xml-libxml-simple-0.99-5 perl-xml-libxslt-1.99-3 perl-xml-namespacesupport-1.12-4 perl-xml-sax-1.02-1 perl-xml-sax-base-1.09-4 perl-xml-writer-0.625-7 biber-1:2.15-2

Total Download Size: 7.62 MiB
Total Installed Size: 28.34 MiB

I do not know what this is or why I have it.

$ sudo pacman -S libharu
resolving dependencies...
looking for conflicting packages...

Packages (1) libharu-2.3.0-4

Total Download Size: 0.45 MiB
Total Installed Size: 0.93 MiB

This package allows me to turn num lock on or off. It allows the numeric keypad to be activated when X is started by adding a line to my xinitrc. I prefer the keypad to be activated by default.

$ sudo pacman -S numlockx
resolving dependencies...
looking for conflicting packages...

Packages (1) numlockx-1.2-5

Total Download Size: 0.01 MiB
Total Installed Size: 0.01 MiB

I think that I installed this package so that I can mount NTFS volumes.

$ sudo pacman -S ntfs-3g
resolving dependencies...
looking for conflicting packages...

Packages (3) fuse-common-3.10.5-1 fuse2-2.9.9-4 ntfs-3g-2021.8.22-1

Total Download Size: 0.66 MiB
Total Installed Size: 2.20 MiB

I installed this package so that I can have a Monero wallet. I do not really use it though. If I eventually begin using it, I will probably end up just using the command-line version and uninstalling the GUI version. However, I thought having the GUI version might be useful when I first learn to use Monero.

$ sudo pacman -S monero-gui
resolving dependencies...
looking for conflicting packages...

Packages (16) boost-libs-1.78.0-1 dnssec-anchors-20190629-3 fstrm-0.6.1-1 hiredis-1.0.2-1 ldns-1.8.1-1 monero-0.17.3.0-3 pcsclite-1.9.5-1 protobuf-3.19.1-1 protobuf-c-1.4.0-2 qt5-declarative-5.15.2+kde+r41-1 qt5-graphicaleffects-5.15.2-1 qt5-quickcontrols-5.15.2-1 qt5-quickcontrols2-5.15.2+kde+r8-1 qt5-xmlpatterns-5.15.2-1 unbound-1.14.0-2 monero-gui-0.17.3.0-4

Total Download Size: 33.01 MiB
Total Installed Size: 141.11 MiB

I installed openSSH so that I can SSH into a Raspberry Pi. Please see the Raspberry Pi Server SSH page.

$ sudo pacman -S openssh
resolving dependencies...
looking for conflicting packages...

Packages (1) openssh-8.8p1-1

Total Download Size: 0.99 MiB
Total Installed Size: 5.90 MiB

I needed cmake to compile a program. I do not really know anything about it.

$ sudo pacman -S cmake
resolving dependencies...
looking for conflicting packages...

Packages (4) jsoncpp-1.9.5-1 libuv-1.42.0-1 rhash-1.4.2-1 cmake-3.22.1-5

Total Download Size: 10.38 MiB
Total Installed Size: 63.80 MiB

I do not remember why I installed this package or what it does.

$ sudo pacman -S dosfstools
resolving dependencies...
looking for conflicting packages...

Packages (1) dosfstools-4.2-1

Total Download Size: 0.13 MiB
Total Installed Size: 0.43 MiB

I had never used a clipboard manager before, but I am very glad that I now use one. I benefit from being able to recall prior clipboard items. That is especially useful when X programs close and clear the clipboard. It can recall things from both the primary and secondary clipboards, which can also be surprisingly useful.

I have bound it to Super-c. The main thing that I dislike about it is that it installed dmenu via pacman as a dependency even though I already had dmenu installed.

$ sudo pacman -S clipmenu
resolving dependencies...
looking for conflicting packages...

Packages (5) clipnotify-1.0.2-2 dmenu-5.0-1 xdotool-3.20211022.1-1 xsel-1.2.0.20190821-1 clipmenu-6.2.0-2

Total Download Size: 0.12 MiB
Total Installed Size: 0.30 MiB

I had the VLC media player installed for quite a while. However, I did not use it frequently. One day, I wanted to listen to something while I was doing something else. I decided to download an audio presentation by Luke Smith and listen to it using VLC. During the presentation, he related people who use VPN services to people who use VLC instead of MPV. I did not know anything about MPV, and I usually do not hastily install programs. However, in my experience, when Mr. Smith recommends one program over another, he is generally correct. Therefore, I stopped the audio, uninstalled VLC, installed MPV, and finished listening to the presentation. Mr. Smith was right again. MPV is smaller than VLC and can much more easily be controlled from the command-line. Although I do not think that it can do all of the things that VLC can do, the functions that I use are more accessible and it has some functions that VLC does not have. I can easily change the playback speed to anything that I want and I can easily step through video one frame at a time (neither of which I could do in VLC).

$ sudo pacman -S mpv
resolving dependencies...
looking for conflicting packages...

Packages (15) fftw-3.3.10-1 glslang-11.7.1-3 libcddb-1.3.2-6 libcdio-2.1.0-2 libcdio-paranoia-10.2+2.0.1-2 libdvdnav-6.1.1-1 libdvdread-6.1.2-1 libplacebo-4.192.0-1 mujs-1.2.0-1 openmpi-4.1.2-1 rubberband-2.0.1-1 shaderc-2021.3-1 spirv-tools-2021.4-1 uchardet-0.0.7-1 mpv-1:0.34.1-2

Total Download Size: 8.69 MiB
Total Installed Size: 58.26 MiB

I wanted to be able to open URLs from within newsboat. I was initially going to use urlview, but it is not in the Arch repository. I used urlscan instead, but I do not think that it is as nice as urlview.

$ sudo pacman -S urlscan
resolving dependencies...
looking for conflicting packages...

Packages (2) python-urwid-2.1.2-3 urlscan-0.9.9-1

Total Download Size: 0.36 MiB
Total Installed Size: 2.15 MiB

Although sxiv is my favorite image viewer, it cannot view images over the Internet. I wanted an image viewer that could do that so that I could view images from newsboat without using a web browser. Consequently, I installed feh.

$ sudo pacman -S feh
resolving dependencies...
looking for conflicting packages...

Packages (1) feh-3.8-1

Total Download Size: 0.18 MiB
Total Installed Size: 0.43 MiB

Program Configuration

dwm

My prior and first tiling window manager was i3. However, I have now moved to dwm. It is more minimal, and, most importantly, it is dynamic. I also like that it is written in C. I really like it.

I have not configured X to start by default. Sometimes, I do not need it, and when I do, I can simply type startx

I downloaded the source code from the dwm web site. Although I initially left all of its defaults (other then changing the Mod key from Alt to Super), over time, I made a number of changes. Here are my configured dwm config.h and dwm.c files. Here is a list of the noteworthy changes that I made.

When I first set up the holdbar patch, the status bar would flicker because the space bar would repeat. I fixed that by adding [ -f ~/.config/xprofile ] && . ~/.config/xprofile to my .xinitrx file. Then I created a xprofile file in ~/.config file and added xset -r 65. Now, the space bar no longer repeats when I hold it down.

I also added the following script to my bin directory to update what is displayed by my status bar. It is called when the status bar is displayed.

#!/bin/sh

xsetroot -name " `amixer get Master | awk 'NR==5 {gsub(/[\[\]]/,""); print $4;}'` | `date +%I:%M` | `date +%D` "
dwm not showing status bar
dwm showing status bar

st and dmenu

I installed st and dmenu from source. I changed the appearance st, but I do not think that I modified dmenu. Here are the config.h files for my versions of st and dmenu.


xinitrc

This makes my caps lock key function as an escape key, turns num lock on, starts flameshot and clipmenu, and finally starts dwm.

numlockx &

setxkbmap -option caps:escape &

flameshot &

clipmenud &

[ -f ~/.config/xprofile ] && . ~/.config/xprofile
[[ -f ~/.config/Xresources ]] && xrdb -merge -I$HOME ~/.config/Xresources

exec dwm

bashrc

export PS1="\[\e[1;36m\][\[\e[1;37m\]\W\e\[[1;36m]\]#\[\e[0m\] "

EDITOR="/usr/bin/vim"
BROWSER="/bin/webview"

export PS1
export BROWSER

alias a="alsamixer"
alias e="emacs -nw"
alias v="vim -p"

alias mv="mv -i"
alias cp="cp -i"
alias ls="ls --color"

alias mkpaper="printf \".nr PS 12\n.nr VS 24\n.nr HM 1.0i\n.nr FM 1.0i\n.nr PO 1.0i\n.nr LL 6.25i\" > paper.ms"
alias weather="curl wttr.in/oyracuse"
alias mkin="vim instructions.txt"
alias mine="~/programs/xmrig/build/xmrig -o gulf.moneroocean.stream:10128 -u 46aEg4xk19WZP6PJg4NCxQ6eqpkA9p3UGQMGFRkdEUL7hycVEqazRu3bk2qkfHdRZB6GQmL4gDWXsbkcYcGrZ6yGGzJLmY3 -p HP"
alias backup="rsync -vur ~/college /mnt/j/"

cman(){
less ~/documents/man/$1
}

eg() {
emacs $1 & exit
}

n(){
echo "$1 $2: " >> $1_$2.txt
vim $1_$2.txt
}

nip(){
tail -n 1 $1 | xsel -b
}

jfx(){
javac --module-path /lib/javafx-sdk-18/lib/ --add-modules javafx.controls,javafx.fxml $1
java --module-path /lib/javafx-sdk-18/lib/ --add-modules javafx.controls $1
}

root bashrc

This has fewer features than my normal bashrc and makes the prompt red instead of cyan.

export PS1="\[\e[1;31m\][\[\e[1;37m\]\W\e\[[1;31m]\]#\[\e[0m\] "

EDITOR="/usr/bin/vim"

export PS1
export BROWSER

alias a="alsamixer"
alias e="emacs -nw"
alias v="vim -p"

alias mv="mv -i"
alias cp="cp -i"

alias mkpaper="printf \".nr PS 12\n.nr VS 24\n.nr HM 1.0i\n.nr FM 1.0i\n.nr PO 1.0i\n.nr LL 6.25i\" > paper.ms"
alias weather="curl wttr.in/redactedlocation"

cman(){
less ~/documents/man/$1
}

Assorted

I do not remember what this did, but I did it.

unset LANG
source /etc/profile.d/locale.sh

Also, I deleted my ~/R directory and install tidyverse as root (sudo R) so that it would not be in my home directory.

I added Luke Smith's blocked IP addresses to /etc/hosts.


Firefox

I have Firefox's dark theme and strict privacy settings turned on. I have selected Firefox's Always ask you where to save files option, and I also changed the Save files to location so that it would stop creating a ~/Downloads directory. I also set the scroll bar to be always visible because I like to be able to see how far down a page the viewport is. I also disabled all of the home content other than web search.

I use the extensions that are listed below. Dark Reader gives web pages a dark theme, which makes them easier for me to read. DuckDuckGo Privacy Essentials, uBlock Origin, Google Container, Facebook Container, and JSelter help to block trackers. I started using JSelter when it was very new, having fewer then one hundred Firefox users (as reported by Mozilla). Flagfox informs me from what country web sites are hosted. Vimium gives me Vim key bindings in the browser, which is particularly helpful for scrolling and moving back to previous pages. I keep GNU LibreJS disabled, but I have it installed.

Firefox

Thunderbird

I use Thunderbird as my e-mail client. I activated its dark theme and installed the Thunderbird Conversations and ThunderHTMLedit extensions.

Thunderbird

I disabled the use a paragraph text by default because I do not like paragraph text.

Thunderbird Paragraph Text Setting

I do not like hard wrapping email body text, so I disabled that function by setting mailnews.wraplength to 0 in the Config Editor.

Thunderbird Line Wrap

Vim

I have a very simple .vimrc, which is shown below.

set background=dark
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
filetype plugin indent on

set showcmd " Show (partial) command in status line.
set showmatch " Show matching brackets.
set ignorecase " Do case insensitive matching
set smartcase " Do smart case matching
set incsearch " Incremental search
set autowrite " Automatically save before commands like :next and :make
set hidden " Hide buffers when they are abandoned
set mouse=a " Enable mouse usage (all modes)
set spell
set nu
set rnu
set nowrap
set smartcase

syntax on

" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif

Emacs

I have a very simple .emacs file, which is shown below. I made a customized theme that is just the tsdh-dark-theme with a black background.

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(ansi-color-faces-vector
[default default default italic underline success warning error])
'(ansi-color-names-vector
["#212526" "#ff4b4b" "#b4fa70" "#fce94f" "#729fcf" "#e090d7" "#8cc4ff" "#eeeeec"])
'(custom-enabled-themes '(my_theme))
'(custom-safe-themes
'("c4065e2e6d519b4b90abab3f9ccfb177f0328a69082b3ae953bee5173a1f25a5"))
'(horizontal-scroll-bar-mode nil)
'(inhibit-startup-screen t)
'(menu-bar-mode nil)
'(scroll-bar-mode nil)
'(text-mode-hook '(turn-on-flyspell text-mode-hook-identify))
'(tool-bar-mode nil))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
(add-hook 'after-init-hook (lambda () (load-theme 'my_theme)))

Newsboat

My ~/.newsboat/config file contains the following.

include /usr/share/doc/newsboat/contrib/colorschemes/my-theme

auto-reload yes

external-url-viewer "urlscan"

bind-key j down
bind-key k up
bind-key j next articlelist
bind-key k prev articlelist
bind-key G end
bind-key g home
bind-key l open
bind-key h quit
bind-key u show-urls

My theme is shown below.

color listnormal white default
color listnormal_unread white default bold
color listfocus white default reverse
color listfocus_unread white default reverse
color info white default reverse
color background white default
color article white default

highlight article "^(Feed|Link):.*$" white default bold
highlight article "^(Title|Date|Author):.*$" white default bold
highlight article "https?://[^ ]+" white default underline
highlight article "\\[[0-9]+\\]" white default bold
highlight article "\\[image\\ [0-9]+\\]" white default bold
highlight feedlist "^─.*$" white white bold

To allow me to open urls from within articles in newsboat, I installed urlscan. Perhaps urlview is better, but it is not in the Arch repository. After installing urlscan, I ran urlscan -g to create a configured ~/.config/urlscan/config.json file. I then added "h": "quit",, to that file so that I could exit with the h key.

To to allow me to view certain files that url's point to without using Firefox, I added Luke Smith's webview script to my /bin directory and made it my default browser in my .bashrc file. I also installed feh so that I can view online images from urlscan (sxiv cannot view online images).


Mounting and Unmounting Drives

In order to easily mount drives I created the two following scripts, which are in my /bin directory and are named m and u respectably. I created these scripts rather then bash aliases because dmenu can not run bash aliases, and I want to run these functions from dmenu sometimes.

#!/bin/sh

sudo mount -a
#!/bin/sh

sudo umount /mnt/*

I then added the following lines to the /etc/sudoers file so that I can run the above scripts without entering a password.

user HP-Arch = (root) NOPASSWD: /usr/bin/mount
user HP-Arch = (root) NOPASSWD: /usr/bin/umount