This is a collection of configuration files for my Arch installation.
- Window Manager and Login
- Setting up
dotfiles
- Building the Basic Environment
- Extra Tools
- Extra Software
My preffered Window Manager is Hyprland. But I also use GNOME in case I want to use a more traditional desktop environment.
Before setting up the window manager, install some fonts to avoid issues.
$ sudo pacman -S ttf-dejavu ttf-liberation noto-fonts noto-fonts-cjk ttf-font-awesome
I also use some custom fonts, but these can be installed later:
- Mononoki (Nerd Font)
- Montserrat (available on Google Fonts)
- apple-fonts-ttf (AUR)
- ttf-segoe-ui (AUR)
First I prefer to install GNOME since it avoids the hassle of setting up lots of stuff.
$ sudo pacman -S gdm gnome-shell gnome-terminal gnome-control-center gnome-menus evince xdg-desktop-portal-gnome gnome-keyring nautilus
Once that is done, enable GDM and restart your computer.
$ sudo systemctl enable gdm.service
You may now login into GNOME and tweak the settings to your liking.
Important
To setup the dotfiles repository, make sure to setup Git properly.
Open a terminal and with a text editor edit your .bashrc
file.
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
Once you have added the alias, clone the dotfiles repository
$ git clone --bare git@github.com:fer-hnndz/dotfiles.git $HOME/.dotfiles
$ dotfiles config --local status.showUntrackedFiles no
Now, proceed with the Hyprland installation before restoring the dotfiles.
First, install Hyprland and some other tools for suspending, locking, screenshots, etc. and its dependencies.
# Terminal
$ sudo pacman -S kitty
# Hyprland
$ sudo pacman -S hyprland hypridle hyprlock hyprshot hyprutils hyprpolkitagent waybar qt5-wayland qt6-wayland xdg-desktop-portal-hyprland qt5-graphicaleffects qt5-quickcontrols2
# Clipboard tools
$ sudo pacman -S wl-clipboard cliphist
You can now login into Hyprland and restore the dotfiles.
$ dotfiles checkout
I suggest to start editing ~/.config/hyprland/hyprland.conf
to your liking, in case you need to setup different monitors, input devices, etc.
Warning
To avoid having weird issues with text display, make sure to install the fonts mentioned above. You can now exit GNOME and login into Hyprland.
In this section I'm going to details the tools I use in my Hyprland environment.
GNOME should pretty much work out of the box.
To setup wallpapers, install swww.
$ sudo pacman -S swww
Note
swww's config is done on the Hyprland config file.
You can also use $ swww {path}
to set a wallpaper once the swww-daemon is running.
I use Pipewire for audio. Refer to the installation guide for setup details.
$ sudo pacman -S pipewire pipewire-audio pipewire-pulse pipewire-alsa pipewire-jack
To add control via CLI or GUI install pamixer
andpavucontrol
respectively.
$ sudo pacman -S pavucontrol pamixer
Installing and rebooting should be enough to get audio working.
I use EasyEffects
.
I've also included some presets in the extra-config
folder.
To apply the presets, move them to ~/.config/easyeffects/output
and select them in the EasyEffects GUI.
For equalizer effects to work, install EasyEffects and the required plugins:
$ sudo pacman -S easyeffects calf lsp-plugins
To control the brightness of the screen, you can use brightnessctl
.
You can also install wlsunset to control the color temperature of your screen.
$ sudo pacman -S brightnessctl wlsunset
$ wlsunset -l LAT -L LON
wlsunset is setup in Hyprland's config file. You can change the location and the color temperature to your liking.
Refer to Hyprland's Monitor Setup
Refer to Hyprland Touchpad Settings
I use hyprlock to lock the session.
My configuration automatically invokes hyprlock when returning from a suspend.
$ sudo pacman -S hyprlock
To show the correct avatar, edit the avatar image to the correct path in the Hyprlock's config file.
I use bluez
and blueman
to manage bluetooth devices.
$ sudo pacman -S bluez blueman
$ sudo systemctl enable bluetooth.service
I use Plymouth as my boot screen.
To apply the configuration, copy the file plymouthd.conf
located in extra-config
to /etc/plymouth/
.
Also, make sure to copy mkinitcpio.conf
to /etc/
and run sudo mkinitcpio -P
to apply the changes.
In this section I'm going to detail some extra tools that I use in my Arch environment that speed up my workflow.
Rofi is a program launcher just like MacOS's Spotlight.
Also install some icons so it looks better with the config.
You can install it with:
$ sudo pacman -S rofi papirus-icon-theme
To avoid all the hassle of building and installing packages from the AUR, I suggest to install yay
to simplify those tasks.
Install the necessary tools for building packages and then clone the yay git repo.
$ sudo pacman -S base-devel
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si
Easily control the network with an applet.
$ sudo pacman -S network-manager-applet
With Hyprland no further notification setup is needed aside from installing a notification daemon.
sudo pacman -S mako
I use zsh
as my shell and oh-my-zsh
as my configuration manager.
To install zsh
and oh-my-zsh
:
$ sudo pacman -S zsh
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Install the zsh-autosuggestions
, zsh-syntax-highlighting
and zsh-shift-select
plugins.
$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
$ git clone https://github.com/jirutka/zsh-shift-select.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-shift-select
To ensure clock is always correct, install ntp
.
$ sudo pacman -S ntp
$ sudo systemctl enable ntpd.service
You can find TRIM utilities in util-linux
package.
$ sudo pacman -S util-linux
$ sudo systemctl enable fstrim.timer
Below is the rest of programs that I use that don't need detailed explanation or configuration.
Software | Description |
---|---|
Less | Pager for Git and Arch journal |
visual-studio-code-bin (AUR) | Propietary VsCode (for extension sync support) |
spotify (AUR) | ¯_(ツ)_/¯ |
Discord | Chat |
NeoVim | Text editor |
Firefox | Web browser |
Gedit | Simple graphical text editor |
obs-studio (Flatpak) | Screen recording |
Droidcam OBS Plugin (Flatpak) | Android camera plugin for OBS |
btop | System monitor |
postman-bin (AUR) | API testing tool |
cmatrix | Matrix screensaver |
galculator | Calculator |
filelight | Disk usage analyzer |
evince | PDF viewer |
7zip | 7zip |
mirage (AUR) | Image Viewer |
dbvis | Database Visualizer Tool |