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!
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.
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 / Functionality | Name | Package | AUR | Remarks |
---|---|---|---|---|
Clipboard | xclip | xclip | ||
Statusbar | Polybar | polybar | x | |
Lockscreen | Betterlockscreen | betterlockscreen | x | Does double duty by looking nice |
Notifications | Dunst libnotify | dunst libnotify | Lightweight notification daemon/server An implementation of the Desktop Notifications Specification, requires server/daemon like Dunst | |
Background setter | feh | feh | ||
Screenshots | scrot | scrot | ||
File manager | GUI: PCManFM Terminal: nnn | pcmanfm nnn | ||
Media player | mpv | mpv | ||
Fonts | Hack Noto Symbola | ttf-hack noto-fonts ttf-symbola | x | Handy for Unicode support |
Terminal emulator | rxvt-unicode st | rxvt-unicode st | x | I plan on trying st in the foreseeable future |
PDF reader | Zathura zathura-pdf-mupdf | zathura zathura-pdf-mupdf | ||
Sound server | Pulseaudio Pulseaudio ALSA Pulseaudio Bluetooth Pavucontrol | pulseaudio pulseaudio-alsa pulseaudio-bluetooth pavucontrol | Needed for pairing bluetooth devices Volume control GUI | |
Brightness | xbacklight | xorg-xbacklight | ||
Generic menu | dmenu | dmenu | Can be used for pretty much anything, from mounting drives to launching applications and running scripts. You name it. | |
Network manager | NetworkManager | networkmanager | Contains 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 / Functionality | Name | Package | AUR | Remarks |
---|---|---|---|---|
Firmware updates | fwupd | fwupd | Command line tool for LVFS updates | |
Pacman wrapper and AUR helper | yay | yay | x* | *If you have another AUR helper you can install Yay from there. Build from source otherwise |
Partition manager | GParted | gparted | ||
GUI directory tree analyzer | baobab | baobab | ||
USB | usbutils | usbutils | Useful 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
Tools
One of the greatest assets of a programmer are the tools. These are the basic ones I’d recommend having installed:
Type / Functionality | Name | Package | AUR | Remarks |
---|---|---|---|---|
Version Control | Git | git | ||
Editor | Visual Studio Code Nano | code nano | Used for smaller edits like config files | |
Containerization | Docker Docker Compose | docker docker-compose | Running compose files containing orchestration instructions for multiple docker images | |
REST client | Insomnia | insomnia | x | |
FTP | FileZilla | filezilla |
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 / Functionality | Name | Package | AUR | Remarks |
---|---|---|---|---|
Tiling Window Manager | i3-gaps | i3-gaps | You can also opt for the regular i3 if you don’t mind losing out on the gaps | |
Emoji fonts | Font Awesome JoyPixels Material Design Icons | ttf-font-awesome ttf-joypixels ttf-material-design-icons | x | |
Markdown rendering in CLI | Glow | glow | x | |
Fancy system information | Neofetch | neofetch | ||
System theme changer | Pywal | python-pywal | Generates a color palette from the dominant colors in an image | |
GTK theme | Arc Solid | arc-solid-gtk-theme | ||
GTK theme switcher | LXAppearance | lxappearance |
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 / Functionality | Name | Package | AUR | Remarks |
---|---|---|---|---|
File converter | Pandoc | pandoc | Has a huge number of Haskell dependencies, I’m looking for something more minimal | |
Cronjobs | Cronie | cronie | Cronjob implementation / daemon. By default Arch uses systemd timers | |
Keyboard configuration | setxkbmap | xorg-setxkbmap | Useful 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!