martijnvos.dev

What my Arch Linux setup currently looks like

February 01, 2020 • 3 min read

I ended my last post with the following:

Keep your eyes peeled for some Arch Linux installation & configuration notes coming to you shortly!

Well, it obviously didn’t age well considering that was posted December 11th last year. Better late then never though, let’s dive in!

neofetch in terminal displaying some stats

This blog post will only discuss the packages I use thus far. I'm planning on writing separate posts about configuring them.

Staring into the dark (quite literally)

When you have just installed Arch Linux the system is completely free of unnecessary programs/packages. You’ll be dropped off in a TTY, without a graphical user interface like a desktop environment (think Gnome or KDE, etc.) or even a window manager (i3, bspwm, etc.).

While that might seem jarring to you at first, it also means that you have full control over the installation and can customize it to your heart’s desire. That’s what makes Arch Linux so interesting.

Note that all of the links I used above point to the Arch Wiki. This is THE place to be for all your questions. The carefully crafted pages will let you know exactly what’s possible and/or necessary for the topic at hand. Even more importantly: due to the sheer amount of documentation you’ll pretty much always find what you’re looking for.

Some assumptions

This post assumes you have installed Arch Linux and know at least the basics of package management. Seeing that you managed to get Arch Linux working there’s a good chance you already know that kind of stuff.

As this setup is made by and specifically for myself I can’t guarantee that everything I describe here is your cup of tea. Don’t take this as gospel, tackle challenges gradually and make sure you understand core concepts before moving on.

Regarding sudo: always ask yourself the question ‘What would sudowoodo do?’

Show me your packages already!

There are quite a few packages here, so I separated them into sections in an attempt to make them easier to glance over.

If you think something is missing or you have a suggestion, I'd love for you to get in contact!

The essentials

It’s been around 2 months since I first started using Arch Linux on my laptop. The dust has settled and the honeymoon phase is beginning to wear off a bit. During this time I’ve noticed the importance of a few of the packages I installed. These are the ones I’d reinstall immediately if I had to start from scratch:

Type / FunctionalityNamePackageAURRemarks
Clipboardxclipxclip
StatusbarPolybarpolybarx
LockscreenBetterlockscreenbetterlockscreenxDoes double duty by looking nice
NotificationsDunst libnotifydunst libnotifyLightweight notification daemon/server An implementation of the Desktop Notifications Specification, requires server/daemon like Dunst
Background setterfehfeh
Screenshotsscrotscrot
File managerGUI: PCManFM Terminal: nnnpcmanfm nnn
Media playermpvmpv
FontsHack Noto Symbolattf-hack noto-fonts ttf-symbolaxHandy for Unicode support
Terminal emulatorrxvt-unicode strxvt-unicode stxI plan on trying st in the foreseeable future
PDF readerZathura zathura-pdf-mupdfzathura zathura-pdf-mupdf
Sound serverPulseaudio Pulseaudio ALSA Pulseaudio Bluetooth Pavucontrolpulseaudio pulseaudio-alsa pulseaudio-bluetooth pavucontrolNeeded for pairing bluetooth devices Volume control GUI
Brightnessxbacklightxorg-xbacklight
Generic menudmenudmenuCan be used for pretty much anything, from mounting drives to launching applications and running scripts. You name it.
Network managerNetworkManagernetworkmanagerContains nmtui for switching WiFi networks in terminal

System maintenance

Keeping the system in tip-top shape is of great importance. Not only does it reduce the amount of resources used, it also makes sure you have a good overview of what different parts of your configuration do. Once junk files start to pile up you quickly lose track.

These are the tools I use for keeping everything up-to-date and clean:

Type / FunctionalityNamePackageAURRemarks
Firmware updatesfwupdfwupdCommand line tool for LVFS updates
Pacman wrapper and AUR helperyayyayx**If you have another AUR helper you can install Yay from there. Build from source otherwise
Partition managerGPartedgparted
GUI directory tree analyzerbaobabbaobab
USBusbutilsusbutilsUseful for commands like ‘lsusb’

If you want to know more about maintenance the Arch Wiki’s excellent writeup is a great place to start.

Development

Now that we’ve got a stable system (or at least think we do) we can move on to actually creating with it. For that I had to install a few languages with their corresponding tools,

Languages

|
└───JavaScript
│   │   NodeJS, which includes npm
│   
└───C#
|   │   dotnet-runtime
|   │   dotnet-sdk
|   |   dotnet-host
│   
└───Python
|   │   python
|   │   python-pip
│   
└───Java / Kotlin (Android)
    │   android-udev
    │   android-tools
    |   android-emulator
    |   android-studio
    |   jdk8-openjdk
Keep in mind that your configuration might vary wildly depending on the work you do. Don't just install this for the sake of it.

Tools

One of the greatest assets of a programmer are the tools. These are the basic ones I’d recommend having installed:

Type / FunctionalityNamePackageAURRemarks
Version ControlGitgit
EditorVisual Studio Code Nanocode nanoUsed for smaller edits like config files
ContainerizationDocker Docker Composedocker docker-composeRunning compose files containing orchestration instructions for multiple docker images
REST clientInsomniainsomniax
FTPFileZillafilezilla

Ricing

While you’re at it, why not make your setup look pretty? If we look at our screens for a substantial amount of hours per day it can’t hurt to spice it up a little. In my setup I’m aiming for the perfect balance between efficiency and beauty by leveraging minimalism.

Type / FunctionalityNamePackageAURRemarks
Tiling Window Manageri3-gapsi3-gapsYou can also opt for the regular i3 if you don’t mind losing out on the gaps
Emoji fontsFont Awesome JoyPixels Material Design Iconsttf-font-awesome ttf-joypixels ttf-material-design-iconsx
Markdown rendering in CLIGlowglowx
Fancy system informationNeofetchneofetch
System theme changerPywalpython-pywalGenerates a color palette from the dominant colors in an image
GTK themeArc Solidarc-solid-gtk-theme
GTK theme switcherLXAppearancelxappearance

Ofcourse there’s much more to ricing, but I think I’ve made a pretty good start with these.

Miscellaneous

These are the kind of packages you only need once in a blue moon. When you do though, you will be happy you have them.

Type / FunctionalityNamePackageAURRemarks
File converterPandocpandocHas a huge number of Haskell dependencies, I’m looking for something more minimal
CronjobsCroniecronieCronjob implementation / daemon. By default Arch uses systemd timers
Keyboard configurationsetxkbmapxorg-setxkbmapUseful for setting compose key among other things

Closing words

I realize that it might be hard to get a grasp of what these applications/packages can do. That’s why I plan on publishing detailed configuration posts for them. If you have any specific ones you’d like to see first, please tweet them at me.

Talk to you later!


Martijn Vos

A software blog showcasing and documenting learnings.
Written by Martijn Vos.

Found a bug? Please file an issue on GitHub

Twitter GitHub