Start with the programs
You should begin with the programs you’re willing to use, then choose the suitable hardware with your targeted OS in mind. Examples:
- The free version of Davinci Resolve on Linux doesn’t support H264 codec unlike Windows, but supports AV1, so you need a graphic card with AV1 encoder or to buy the paid version of Davinci Resolve.
- If you’ll use Blender then, you should buy some Nvidia GPU as CUDA is very supported on Blender. Blender and CUDA works very well on both Linux and Windows.
- Running LLMs locally, VRAM will be very important, Apple’s unified memory may be very useful.
- Adobe programs, Microsoft Office, Valorant, … Not working on Linux but very supported on Windows.
Have a program or two to run on Windows? Very simple, dual-boot.
Choosing a Linux distribution
In my opinion easing the use of Linux makes it harder. Any problem may faces you, you’re on your own to fix it. So, at least the ability to read and write English well is a must to get started e.g. to:
- Search online or ask AI tools like ChatGPT
- Read a wiki or documentation
- Read forums and Reddit posts
- Read a comprehensive guide like this
The fear and difficulty of using a terminal is what makes you a beginner, and “Easy distros” is very bad in making you in no need to open a one.
Searching, basic commands, basic vim usage, basic knowledge about Linux filesystem and the most important is… getting started.
Why Arch Linux
I’ve had a good experience with Arch Linux + Hyprland. What I mean by good experience is whether the system fits my needs or not.
- Arch Wiki is one of the most comprehensive and valuable resources for Linux users not just Arch.
- Rolling release Arch Linux follows a rolling release model, meaning it receives continuous updates instead of periodic major releases
- Bleeding-edge packages and drivers You get access to the latest versions of software, libraries, and drivers as soon as they’re released.
- Endless Software Availability The AUR is a community-driven repository that offers packages not included in the official Arch Linux repositories.
- Community You’ll find so many solved problems you may face in Arch Linux, also there’s a newbie corner that almost will cover all beginner’s questions.
My reasons to use Arch Linux
- Building the latest versions of open-source projects like Hyprland, Waybar and Quran-Companion to modify and tinker with the code.
- New packages and drivers, specially Nvidia GPU drivers. A newer GPU driver may affect the performance to make Arch Linux better than gaming distros like Nobara Linux
- AUR make it very easy to install latest versions of libraries, IDEs, programs. e.g. clipse-bin, google-chrome, clion, intellij, android-studio, … instead of building from source or installing appimage from a website. AUR helpers like yay makes it more easier to manage and update these packages.
Installing Arch Linux + Hyprland
Connect to internet (WIFI)
rfkill unblock wifi
iwctl
device list
# replace wlan0 with your device
station wlan0 scan
station wlan0 connect SSID
archinstall
proceed with minimal profile with NetworkManager, pipewire and grub selected.
Post fresh minimal installation
sudo without password
To run all commands without password (you still need sudo for root permission)
# add this at the end of /etc/sudoers
%wheel ALL=(ALL:ALL) NOPASSWD: ALL
connect to internet:
nmtui # Activate connection
Install yay (AUR helper):
mkdir .src
cd .src
git clone https://aur.archlinux.org/yay.git
cd yay-git
makepkg -si
Enable multilib from /etc/pacman.conf
[multilib]
Include = /etc/pacman.d/mirrorlist
Install Hyprland dependencies:
git clone https://github.com/hyprwm/hyprland-wiki
open using vim pages/Getting Started/Installation
copy the dependencies of Arch Linux manual installation (y in vim)
:term
in vim and paste it and enjoy you don’t have to write them one by one :‘D
Build and install Hyprland
git clone --recursive https://github.com/hyprwm/hyprland
cd Hyprland
make all && sudo make install
Install kitty, the default terminal for Hyprland and give a look to the default keybindings, just the necessary ones until you apply your configuration.
sudo pacman -S kitty
Multi-GPU or NVIDIA
Display manager and Hyprland session
The recommended way to start Hyprland is using uwsm in systemd distros (or just write Hyprland after login in tty). Also you can use SDDM with some fancy theme.
Using uwsm (Universal Wayland Session Manager)
sudo pacman -S uwsm vim
To launch Hyprland directly after tty login : paste this in your shell profile (mostly ~/.bashrc)
if uwsm check may-start; then
exec uwsm start hyprland.desktop
fi
Using SDDM
sudo pacman -S sddm
sudo systemctl enable sddm
Install or make your dots
I already have configs for my workflow on Hyprland on a GitHub repo. You can also clone them and edit to fit yours. https://github.com/abdalrahmanshaban0/Arch-Dots
Install all your favorite programs from a script
You may install some programs or dependencies on demand or don’t remember to write then in a single script for installation, a tip for that is to open ~/.bash_history and search for every -S and collect these packages in a script. But first, you must know and choose what these programs are.
Programs
Fonts
sudo pacman -S noto-fonts noto-fonts-emoji ttf-liberation ttf-jetbrains-mono ttf-hack-nerd ttf-dejavu
Text editor
yay -S neovim gvim
Wallpapers
yay -S swww waypaper
Network manager and Bluetooth
yay -S network-manager-applet bluez bluez-utils bluez-obex blueman
sudo systemctl enable bluetooth.service
Firewall
sudo pacman -S ufw
sudo ufw enable
sudo systemctl enable ufw.service
File manager and archiving
sudo pacman -S thunar gvfs gvfs-mtp ntfs-3g thunar-volman ffmpegthumbnailer tumbler man-db lsd bzip2 gzip p7zip unrar zip unzip
Terminal
sudo pacman -S alacritty
Clipboard
yay -S wl-clipboard wl-clip-persist clipse-bin
In ~/.conf/hypr/hyprland.conf
exec-once = clipse -listen
windowrulev2 = float, class:(clipse)
windowrulev2 = size 622 652, class:(clipse)
windowrulev2 = stayfocused, class:(clipse)
bind = $mainMod SHIFT, V, exec, alacritty --class clipse -e clipse
Audio
yay -S pipewire pipewire-pulse pipewire-alsa wireplumber pavucontrol
Authentication for GUI apps
sudo pacman -S hyprpolkitagent
# exec-once = systemctl --user start hyprpolkitagent
Optional (just to be cool)
yay -S cava neofetch cmatrix
# A dock if you want
yay -S nwg-dock-hyprland
Notification daemon
sudo pacman -S mako jq
Screenshots
sudo pacman -S grim slurp
this script to take selected area screen shot and save it in ~/Pictures/Screenshots
mkdir -p ~/Pictures/Screenshots && grim -g "$(slurp)" - | wl-copy && wl-paste > ~/Pictures/Screenshots/Screenshot-$(date +%F_%T).png && notify-send "Screenshot saved in ~/Pictures/Screenshots" -t 3000
Web browser
yay -S brave-bin google-chrome firefox
PDF viewer
yay -S evince xournalpp
GTK settings (themes)
yay -S nwg-look papirus-icon-theme
# I use Catppuccin Mocha GTK Theme
# Download it from https://www.gnome-look.org/p/1996672
# unzip it and copy it to /usr/share/themes
media player
yay -S mpv playerctl
poweroff, reboot, logout, lock
yay -S wlogout hyprlock
Note taking
yay -S obsidian
Brightness control
yay -S brightnessctl
git commands UI
yay -S lazygit
System monitoring
yay -S btop
Image viewer and editor tool
yay -S swappy
Printing
yay -S cups cups-pdf ghostscript gsfonts gutenprint system-config-printer
Status bar (Waybar)
sudo pacman -S waybar
My Islamic prayer timings daemon and custom-module for Waybar.
Nice icons:
yay -S ttf-font-awesome ttf-bootstrap-icons ttf-nerd-fonts-symbols
Fid your icons:
Photo editing
yay -S gimp
# mostly I use online AI tools
Wine (Run windows programs)
enable multilib in /etc/pacman.conf
sudo pacman -Syyu wine wine-mono wine-gecko winetricks
Quran
yay -S quran-companion
Screen sharing
yay -S obs-studio xdg-desktop-portal-hyprland
Video editing
Kdenlive sucks and Davinci Resolve on Linux doesn’t support H.264 codec (the paid version does, also you can transcode all of your project videos for some hours and torture your hardware). The best solution for me is using a GPU that supports AV1 video encoder. For audio, the ACC is not supported, so I use PCM 24-bit, For further information about Supported Condecs
I’m currently using an AMD CPU that contains an integrated graphics that has AV1 encoder and Nvidia RTX4060 that also has AV1 encoder (I use the 4060 of course). This is my OBS studio settings:
Installing Davinci Resolve
After installing the program from the official website:
# necessary packages
sudo pacman -S libxcrypt libxcrypt-compat pango
# run the application with this command:
LD_PRELOAD="/usr/lib/libgio-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libglib-2.0.so" /opt/resolve/bin/resolve
# Note: you can edit the exec in the application launcher of davinci resolve at /usr/share/applications/com.blackmagicdesign.resolve.desktop
Exec=env LD_PRELOAD="/usr/lib/libgio-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libglib-2.0.so" /opt/resolve/bin/resolve %u
AMD GPU
You need to download packages to support OpenCl to make Davinci Resolve work:
sudo pacman -S rocm-opencl-runtime opencl-rusticl-mesa
Note: Maybe you’ll need to download packgaes for ROCm of AMD if Davinci Resolve supports it.
Nvidia GPU
# If needed only (No GPU problem)
sudo pacman -S cuda
Digital Camera as webcam
First make sure that your cam in Supported Cameras. Also you need to see the ArchWiki for more details.
sudo pacman -S v4l2loopback-dkms v4l2loopback-utils v4l-utils gphoto2 gvfs-gphoto2
First, connect your camera by usb to your computer. Runs this command and make sure you see your camera name gphoto2 --auto-detect
. Show connected devices: v4l2-ctl --list-devices
. You may find /dev/video0
, in a laptop you may find 2 devices.
Loading v4l2loopback
kernel module:
# create /etc/modprobe.d/webcam.conf
options v4l2loopback card_label=Video-Loopback exclusive_caps=1
This is my aliases for some controls of my DSLR (Canon 2000d).
alias dslrcam="gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0"
alias dslrphoto="gphoto2 --capture-image-and-download"
In OBS studio, add video capture device, this is my settings:
In my case, I don’t have a capture card, I connect the camera using usb, so the resolution I have is
1024x576
so I add a filer for upscaling to 1920x1080
:
I recommend using capture card if your camera has
clean HDMI output
, if not you may try to crop the portion of the video the focus square appears in.
Gaming
sudo pacman -S lutris mangohud gamemode libxnvctrl goverlay vulkan-tools
Torrent client
sudo pacman -S qbittorrent
Dual Boot
I’m dual booting on 2 different drives and choose which one to boot in using Grub. This is the easier way, the order of installing linux or windows doesn’t matter.
If you want to dual boot on the same drive, Install Linux first with manual partitioning and let a free (unallocated) space at the end for Windows. like this:
To make Grub supports that :
yay -S os-prober
Edit /etc/default/grub to uncomment the line (maybe last line) :
GRUB_DISABLE_OS_PROBER=false
You can add a Grub theme (install one from gnome-look). The theme dir usually contains install.sh
that you can run as root to install the theme.
For manual way, copy the theme dir (that contains theme.txt) to either /usr/share/grub/themes
or /boot/grub/themes
. Then edit this line in /etc/default/grub
with the theme.txt path like this:
GRUB_THEME="/boot/grub/themes/Xenlism-Arch/theme.txt"
update grub (generating grub.cfg)
sudo grub-mkconfig -o /boot/grub/grub.cfg