
Archlinux Post Install with minimal plasma
Introduction
This is the continuation of the Arch Linux installation’s part one. In the part one, we’ve installed Arch with as little effort as possible. In this part we’ll install from desktop environment to our GRUB setup with BTRFS snapshots integration and a lot of possibilities! In case you haven’t checked part one yet, it’s recommended if you want to install to Arch from scratch,
Prerequisite
If you’ve followed my part one, you are probably in a black background with white bash prompt. Feel free to login with your username, ‘root’ and your root account’s password. Now let’s check our system a bit,
Internet
Check your internet connection with ping,
|
|
Tip: Ctrl + c to stop a process
And it should work out of the box for Ethernet. But you have to manually setup if you are using wireless connections. If you encounter any problem, check NetworkManager ’s status with,
|
|
If it’s disabled, you can enable and start with, systemctl enable and systemctl start command or just rebooting your system.
For Wi-Fi connection, you can use
nmtui(NetworkManager TUI) for an easy interactive curses interface:
1nmtuiOr use
nmcli, the command line tool for network manager. For guidance, check:
Boot time
Try, systemd-analyze to print your boot time. If your boot time is less than 15 seconds, you can check Arch wiki for performance guideline.
With an old HDD, my boot time was around 11 seconds.
User Management
To learn deeply about user management I would recommend you to read the arch wiki. For now, I’ll create a user with root privileges so that I don’t have to stay in root. Later after installing KDE plasma desktop, I can manage users in the system setting, so, for now let’s create a user.
|
|
Here,
-mto create a home directory. And if it exists then it won’t be overwritten. And the-Gflag is to set a group. Herewheelgroup users can actually runsudocommands. And finallyarchis my username.
Now, let’s set a password for our new user, arch,
|
|
Now we’ve to give access to wheel group users to actually able to run sudo commands, to do so, edit a file with the following command,
|
|
Here, nano is the text editor’s name. Feel free to use your favorite text editor.
Then, I’ll un-comment the line (removing # from a line),
|
|
In
nanotext editor you can usectrl + wto search. Then press,ctrl + oto save, followed by anenterand thenctrl + xto exit.
Installing KDE Plasma
When installing KDE Plasma on Arch Linux, there are two distinct approaches:
- Minimal Installation (Recommended): Build up your desktop from
plasma-desktopplus only the essential utilities you actually use. This avoids background services, game controllers, and development SDKs you might never need. - Full Group Alternative (
pacman -S plasma): If you want everything KDE offers out-of-the-box, you can install the full 75-packageplasmagroup by pressingEnterto accept all defaults. If you take this route, you can easily clean up unnecessary packages afterwards:1sudo pacman -Rns plasma-bigscreen plasma-sdk krdp wacomtablet plymouth-kcm
Recommended Minimal Plasma Installation
We will install minimal Plasma alongside the modern PipeWire audio stack, Wayland portal integration, polkit authentication agent, power management, and essential apps:
|
|
Now, it’ll prompt you for provider choices (e.g. for fonts or backends). You can go with the default values. For fonts choose noto-fonts (or noto-sans), and for media thumbnail backend in the file manager choose vlc or ffmpegthumbs.
Here is what these essential components do:
| Application name | Application’s description |
|---|---|
plasma-desktop |
The core KDE Plasma desktop shell and basic settings. |
xdg-desktop-portal-kde |
Essential Wayland portal for screen sharing, file pickers, and flatpak integration. |
polkit-kde-agent |
Graphical authentication dialogue prompt for elevated sudo/root privileges. |
pipewire-pulse / wireplumber |
Modern, low-latency audio server replacing legacy PulseAudio. |
plasma-nm |
NetworkManager applet integration for easy Wi-Fi/Ethernet management. |
plasma-pa |
Audio volume management applet powered by PipeWire (via pipewire-pulse). |
dolphin |
Highly configurable file manager for Plasma. |
konsole |
Terminal emulator with native Plasma theme integration. |
kscreen |
Display and multi-monitor management daemon and settings module. |
plasma-systemmonitor |
Modern, visual task manager and system resource monitor. |
spectacle |
Full-featured screenshot and screen recording tool with annotation support. |
Display Manager (plasma-login-manager)
Instead of older display managers like SDDM which require separate theme packages and configurations, we’ll use KDE’s official first-party display manager: plasma-login-manager (PLM).
Why plasma-login-manager?
- Unified Theming: Seamlessly inherits your Plasma lockscreen and global theme styling without needing separate SDDM KCM modules.
- Native Wayland Support: Built natively for modern Wayland sessions from the ground up.
- Clean & Lightweight: Eliminates display-manager shutdown hangs and legacy dependency overhead.
Install and enable plasma-login-manager:
|
|
Now on reboot, you’ll be greeted with a modern, beautifully integrated Plasma login greeter!
Drivers
Firmware Security
For firmware security, try fwupd to update your firmware. It’s a daemon to manage firmware updates. And it’s recommended to install it. To install it, try,
|
|
GPU
In linux, drivers are mostly included in the kernel. But for some proprietary drivers like Nvidia, you may need to install them manually. It’s better to directly read the wiki for your use case.
And also check the following for your hardware acceleration. Can come handy while using hardware video encoding or recording.
Don’t have GPU? Well, you can look for vulkan drivers!
Packages
Official packages
Arch has a great collection of free and open source software. And they are quite strict about their collection. You can browse through them from here,
AUR
AUR means Arch User Repository. It contains more packages than the official one and undoubtedly one of the main reason for a lot of people to actually use Arch Linux. Learn more about it from here,
Installing a AUR packages are rather simple! You can also use AUR helpers which do the job in the background so that you don’t have to make your hands dirty. Now yay and paru AUR helpers are quite popular.
To install an AUR package git clone it and then build it with makepkg or directly build and install with makepkg -si.
Third party repo
If you’ve used AUR then you may know how time consuming certain builds can be. Some AUR packages even take several hours for example browsers. That’s where third party repository comes in. One of the popular one is chaotic-AUR. They build packages automatically and put the binary in a hosting service so that you don’t have to build manually.
Chaotic AUR
Once you install chaotic-AUR you can just use your pacman to install from chaotic AUR. To setup chaotic AUR you can go to it’s official website and follow along. Or, make sure wget is installed (sudo pacman -S --needed wget) and run this script, it’ll do the job for you(made by me). Just open terminal and run,
|
|
Package management
Pacman
Arch linux use pacman to manage its packages. It’s really good and fast. You can learn about it with more details in the archwiki.
And for quick reference, you can check my handy reference,
And for configuration, you can set mirror just like you did in the arch installation process (part one),
Reflector
With reflector you can easily set a mirror. To do that, first let’s make sure our package list is with sync with server by,
|
|
then, let’s install reflector,
|
|
then, you can use reflector to generate a mirrolist. Here’s an example,
My country is Bangladesh so I can display my available local mirrors in this way,
1reflector -c BDand, I can save this list to my mirrorlist in this way,
1reflector -c BD --save /etc/pacman.d/mirrorlistAnd in case you want to get the latest 20 mirrors, sorted by speed, you can also do this,
1reflector --latest 20 --sort rate --save /etc/pacman.d/mirrorlist
Manually mirror setup
We can use a text editor to edit the mirrorlist and set our desired mirrors also. To do that, you can use nano or vim text editor or install any CLI-based text editor if you need. And there’s an online arch mirror list generator,
Simply edit the mirrorlist file, like,
|
|
Colored pacman
And another thing, you can actually make pacman’s output colored! To do so, just edit the /etc/pacman.conf file and un-comment the line Color (removing # from a line),
|
|
Auto pacman cache cleanup
Simply install the following package, which will set up a pacman hook to do the heavy lifting…
|
|
Multilib
Multilib is a repository that contains 32-bit software for 64-bit systems. If you’re using a 64-bit system then you might want to enable it. To do so, just edit the /etc/pacman.conf file and un-comment the lines,
|
|
Parallel download
You can also enable parallel download in pacman. To do so, just edit the /etc/pacman.conf file and un-comment the line ParallelDownloads (removing # from a line),
|
|
Bit of ASCII art
And if you’re a fan of ASCII art then you can enable it in pacman. To do so, just edit the /etc/pacman.conf file and add the line ILoveCandy,
|
|
Where to put it? I just put it after
colordue to similarity.
Yay
Yay is mainly an AUR helper, that can install AUR packages automatically. And you can install it from chaotic-aur or aur. If you’re downloading from aur, then perhaps you can go with yay-bin which is a binary of yay. So you don’t have to wait for it to finish installation.
If you’ve installed chaotic-aur, then install yay with,
|
|
Or, if you wish to install from AUR, try in this way,
|
|
Pamac
Pamac is a graphical installer for pacman with AUR support. And it can help you to install dependency packages much more easily. With sorting you can also list you orphaned packages or other packages into different categories. So if you wish to use pamac, you can install it from chaotic AUR, or from AUR.
If you’ve yay installed, then you can use it now in this way,
|
|
Shell
Bash and zsh
By default your shell is bash. And you can enhance your possibilities with an another shell like zsh or fish. You can also do a lot with your .bashrc file. If you’re looking for a nice beautiful zsh shell with useful plugins like, auto coloring, auto completion then I’ve a separate tutorial for you.
- Zsh and antigen (Not recommended anymore…)
Autostart
To autostart something, for example fastfetch (a neofetch alternative), or something funny like cowsay or fortune or pokemon-colorscripts, you can add it in your ~/.bashrc or ~/.zshrc file. Just open the file with a text editor and add the command at the end of the file. For example, for fastfetch,
|
|
Or, pokemon-colorscripts? It’s pokemon-colorscripts -r to get a random pokemon 🙃.
Libnotify
You can use libnotify to get notifications from your terminal. It’s really useful when you’re running a long process and you want to get notified when it’s done. To install it, you can use pacman,
|
|
Snapper & GRUB Snapshots
Now let’s configure automated, copy-on-write snapshot management with Snapper, snap-pac (automatic pre/post snapshots for pacman updates), and grub-btrfs (snapshot boot entries in GRUB).
Install Snapper & Tools
First, install the necessary packages:
|
|
Link Snapper to the @snapshots Subvolume
In part one we created an isolated @snapshots subvolume and mounted it to /.snapshots. Snapper’s default create-config creates its own nested subvolume at /.snapshots, which would obscure our mount. Let’s link Snapper properly to our @snapshots subvolume:
|
|
Enable Automatic Timeline Snapshots & Cleanup
Snapper includes systemd timers to take periodic hourly snapshots and clean up old snapshots automatically based on limits:
|
|
Enable Automatic GRUB Snapshot Menu Generation
To make sure new snapshots are automatically detected and added to your GRUB bootloader menu on the fly, enable the grub-btrfsd daemon:
|
|
How to Roll Back a Snapshot
If a system update or tinkering breaks your installation:
- Reboot your computer and select Arch Linux snapshots from the GRUB menu.
- Select the snapshot you want to boot into (it boots into a read-only snapshot of that exact point in time).
- Once booted into the desktop/terminal, restore the snapshot:
- GUI method: Launch
btrfs-assistantand click restore on your snapshot. - CLI method: Run
sudo snapper-rollback <snapshot_id>or usesnapperto replace the default subvolume, then reboot normally!
- GUI method: Launch
GRUB Customization
GRUB timeout
Every time you start your system GRUB shows up and waits 5 seconds for you, right? You can actually remove it. And grub will be shown if and only if you hold shift key while starting. In order to achieve the fastest possible boot, instead of having GRUB wait for a timeout, it is possible for GRUB to hide the menu, unless the Shift key is held down during GRUB’s start-up.
In order to achieve this, you should add the following line to /etc/default/grub:
|
|
Then create the file /etc/grub.d/31_hold_shift with,
|
|
Then, open the file with sudo nano:
|
|
and paste following codes, source
|
|
then make it executable,
|
|
And finally regenerate the grub configuration with,
|
|
Note: This setup uses keystatus to detect keypress event so it may not work on some machines.
Info screen after grub
When you system starts first comes grub, and then? Something like, stating linux-zen-…., right? And do you remember when you were installing arch, while booting you say some green and white combination type progress like interface. You can actually toggle them. You have to remove a kernel parameter, called quiet.
To edit kernel parameters, edit /etc/default/grub.
And regenerate the grub.cfg with,
|
|
Detecting other OS
Probing for other operating systems is disabled for security reasons. If still want to enable this functionality install os-prober and uncomment to detect and include other operating systems.
Edit /etc/default/grub (grub config file)
|
|
And finally regenerate the grub.cfg with,
|
|
Extra partitions
Modern Linux kernels mount NTFS drives natively using the built-in ntfs3 driver without needing third-party drivers. However, it’s highly recommended to install ntfs-3g so you have access to user-space utilities like ntfsfix, which is essential if Windows Fast Startup or hibernation leaves an NTFS drive in an unclean or “dirty” state:
|
|
If Windows ever locks an NTFS partition and prevents Linux from mounting it read-write, you can easily repair it with:
|
|
Other partitions
If you want you can easily set other partitions to mount by default with the help of partitionmanager or gnome-disk-utility and it’s recommend to avoid errors. You can also edit fstab manually.
KDE partition manager
It’s recommended to use /mnt directory. If you want you can create a sub directory inside first with,
|
|
Later launch kde partition manager, select your partition. From the right click menu, select Edit mount point and select the path /mnt/data. Finally click ok and you can reboot your session to check changes.
Gnome Disk Utility
The same as kde partition manager but you don’t have to create the directory manually.
Editing fstab
You can manually set by editing, /etc/fstab and create an entry. To find the UUID try,
|
|
To learn more, try arch wiki,
Here’s a sample /etc/fstab for ntfs drive with path. Don’t forget to make the directly first (/mnt/DATA) first!
|
|
Performance & Memory Management
Btrfs Swapfile Setup
In part one, we avoided locking up disk space in a rigid swap partition. On Btrfs, we can create an elastic swapfile with Copy-on-Write properly disabled:
|
|
Verify your swap with:
|
|
zram (Compressed RAM Swap)
With zram-generator, you can compress RAM dynamically instead of (or alongside) a swapfile. It creates a compressed swap device directly in RAM:
Install zram-generator:
|
|
Create /etc/systemd/zram-generator.conf:
|
|
Start the service:
|
|
nohang
A low ram handler. First install nohang from AUR or chaotic AUR. It can prevent OOM (Out of Memory). Learn more here….
Start and enable nohang.service or nohang-desktop.service after installing:
|
|
nohang-desktopprovides notification when you’re almost out of memory.
TRIM for SSD
If you are using SSD, you might want to turn on TRIM for your SSD health. Read more here,
To verify TRIM support, run:
|
|
And check the values of DISC-GRAN (discard granularity) and DISC-MAX (discard max bytes) columns. Non-zero values indicate TRIM support.
For SATA SSDs only, the hdparm package can detect TRIM support via hdparm -I /dev/sda | grep TRIM as the root user. hdparm does however not support NVMe SSDs.
To enable periodic TRIM, you might like to try the following service,
|
|
It’s not applicable for every single SSD out there. Please execute with caution.
Configuration
Hosts
You can edit host files to do more than just redirecting your localhost. Like, ad-blocking, adult sites blocking and even more! Here’s a good collection of hosts and it’s regularly updated,
In the repository you’ll find a file named, host, or just follow this link, and edit your /etc/hosts file and enter those texts. And then, just run,
|
|
For convenience you can use kate text editor as it can edit system text files.
Vpn with NetworkManager
By default NetworkManager may not support ’em, but with plugins, you can do a variety of things, like connecting to openvpn without any external tool. Take a look here,
Arch Mate
To make things more easy, I’ve a python script for you. With the support of that script, you can automate chaotic AUR installation, pacman packages inspection, installing essential packages etc. Here’s the repository,
If you know python and want to contribute, feel free to send merge request or, contact with me!
Essential packages
Plasma extras
-
As for your convenience you can try some powerful applications from KDE plasma! First of all, you can try
plasma-firewallalongside a back-end (ufworfirewalld). -
Then to manage archives, you can try
ark. It’s pretty much strong. But you may also have to install some optional dependencies as well to make it more strong. For example, to know what to install, head over to arch packages website, ark (x86_64)
You can install it with,
|
|
Now on the same page, scroll down a bit, you’ll notice,
- arj (optional) - ARJ format support
- lrzip (optional) - LRZ format support
- lzop (optional) - LZO format support
- p7zip (optional) - 7Z format support
- unarchiver (optional) - RAR format support
- unrar (optional) - RAR decompression support
- extra-cmake-modules (make)
- kdoctools (make)
We can avoid, (make) cause we are not building this! We just want to enhance it with more formats support. We can install those normally with pacman -S but later if you uninstall ark, these optional dependencies will be little hard to find. So here’s what we will do, we can install those as dependencies, with the following command,
|
|
FLAGS
–asdeps = as dependency.
– needed = it won’t reinstall if already exists in system.
-
In the same way, let’s install
gwenviewwith optional dependencies as our image viewer. And it can even supportPSDwith optional dependency! Here you can installqt5-imageformatsandkimageformatsas optional. -
For text editing you can
kate. You can use it simply or can enhance it with plugins. To enable LSP-server and markdown support, install it with full optional dependency. -
Now if you’re thinking about power management, you can install
powerdevil. With it you can manage your power settings right from your setting in plasma. -
plasma-systemmonitor, a nice looking system monitor that you may want to try. You can also avoid it if you’re happy withhtopor anything else -
And finally for taking screenshots, we’ve
spectacle. It has annotation support, and also it can integrate with your system perfectly if you’re using KDE plasma! -
Use
kinfocenterto get detailed information about your system. It’s a great tool to know about your system.
Upstream KDE has package and setup recommendations to get a fully-featured Plasma session. Check this out for optional features!
Bluetooth
To install bluetooth support, try,
|
|
bluedevilis only recommended when you’re installing plasma. It’ll integrate your bluetooth with kde’s setting. So you can manage your bluetooth right from kde plasma’s setting.
Then enable bluetooth service with,
|
|
Printer
Install cups, and enable it’s service with,
|
|
Navigate to http://localhost:631 to manage your printer.
Recommendations
Now it’s time to install your favorite packages, I guess. For the list of essential and well-refined packages for your system I’ve a list for you. Check,
Plasma Specials
Spell check
Make sure sonnet is installed with hunspell or anything similar. And also don’t forget to install a language pack for hunspell.
If you install LibreOffice it’ll be done automatically and I’ve a guide for you, check,
KDE Wallet Manager
You may find kde wallet whenever you connect your WiFi, or open your browser, asking for passwords. Instead of disabling it, you can actually use empty string as password. And then it won’t ask for password anymore. Use kwalletmanager to set it up.
KDE Connect
You can install kdeconnect to connect your phone with your system. It’s a great tool to manage your phone from your system. You can also use it to share files, notifications, and even to control your system with your phone!
Fonts
To enhance performance for terminal and other places you might want to Install noto-fonts, especially for emoji-picker, noto-fonts-emoji.
There are some issues like, emojies doesn’t work in the notification. To fix, edit ~/.config/fontconfig/fonts.conf and use the following lines,
|
|
If above file doesn’t exist, create one!
Microsoft fonts
You can install ttf-ms-fonts to get Microsoft fonts. It’s a good choice if you’re working with Microsoft Office files. This package is available in AUR or chaotic AUR.
Laptop Battery Saving
Try power-profiles-daemon for power profiles support for powerdevil. It’s a great tool to manage your power settings.
Acknowledgements
For helping me to collect more information and revising, special thanks to,