Skip to content

Collection of my configuration files for Arch Linux

License

Notifications You must be signed in to change notification settings

fer-hnndz/dotfiles

Repository files navigation

Dotfiles

This is a collection of configuration files for my Arch installation.

Table of Contents

Window Manager and Login

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)

Installing GNOME

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.

Setting up dotfiles

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.

Installing Hyprland

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.

Building the Basic Environment

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.

Wallpapers

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.

Audio

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.

Equalizer

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

Brightness and Eye Care

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.

Monitor Setup

Refer to Hyprland's Monitor Setup

Trackpad Gestures

Refer to Hyprland Touchpad Settings

Session Locker

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.

Bluetooth

I use bluez and blueman to manage bluetooth devices.

$ sudo pacman -S bluez blueman
$ sudo systemctl enable bluetooth.service

Boot Screen

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.

Extra Tools

In this section I'm going to detail some extra tools that I use in my Arch environment that speed up my workflow.

Program Launcher

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

AUR Helper (yay)

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

Applets

Easily control the network with an applet.

$ sudo pacman -S network-manager-applet

Notification Support

With Hyprland no further notification setup is needed aside from installing a notification daemon.

sudo pacman -S mako

OhMyZsh

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

Extra Software

Network Time Protocol (NTP)

To ensure clock is always correct, install ntp.

$ sudo pacman -S ntp
$ sudo systemctl enable ntpd.service

TRIM

You can find TRIM utilities in util-linux package.

$ sudo pacman -S util-linux
$ sudo systemctl enable fstrim.timer

Software

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