Skip to content

Commit

Permalink
feat: add Arch Linux customization guide documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris1320 committed Apr 6, 2024
1 parent 29e22a7 commit 6edcd8f
Show file tree
Hide file tree
Showing 12 changed files with 797 additions and 1 deletion.
52 changes: 52 additions & 0 deletions Operating Systems/Arch Linux/Arch Linux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<div align="center">
<h1>Arch Linux Dotfiles</h1>
<img
src="https://img.shields.io/github/directory-file-count/SetupGuides/ArchLinux/dotfiles?color=%23cba6f7&label=Dotfiles&style=for-the-badge"
alt="Dotfiles"
/>
<img
src="https://img.shields.io/github/directory-file-count/SetupGuides/ArchLinux/scripts?color=%23b4befe&label=Scripts&style=for-the-badge"
alt="Scripts"
/>
<img
src="https://img.shields.io/github/issues-raw/SetupGuides/ArchLinux?color=%23f38ba8&style=for-the-badge"
alt="Issues"
/>
<img
src="https://img.shields.io/github/last-commit/SetupGuides/ArchLinux?color=%23f9e2af&style=for-the-badge"
alt="Last Commit"
/>
</div>

---

## Description

This repository contains most of my dotfiles and notes that are used in my Arch Linux installation. You can use the [auto-install script](Contents/Automatic%20Customization.md)] to automatically install Arch Linux and the dotfiles in your system.
However, I don't guarantee that the installer covers all your needs. In such cases (or you probably do not want to start from scratch), this guide assumes that...

- You've successfully installed Arch Linux by following their
[installation guide](https://wiki.archlinux.org/title/Installation_guide)
which can be found in their [wiki](https://wiki.archlinux.org/). Otherwise, follow the [system installation guide](Contents/System%20Installation.md) before proceeding.
- You have made a [non-root user](./Contents/System%20Installation.md#add-a-non-root-user-account) in your system and is currently active.
- You are currently connected to the internet.

Some, if not all of the dotfiles, can also be used in other operating systems/distributions, but it's up to you on how you will do it since I haven't tested it on other systems yet.

> [!NOTE]
>
> This guide is currently under active development. Documentation might be outdated because the dotfiles/scripts are updated frequently.
## Table of Contents

- Introduction (you are here!)
- [Environment](Contents/Environment.md)
- [System Installation](Contents/System%20Installation.md)
- [Automatic Customization](Contents/Automatic%20Customization.md)
- [Manual Customization](Contents/Manual%20Customization.md)
- [Installing and Setting Up The Desktop](Contents/Installing%20and%20Setting%20Up%20The%20Desktop.md)
- [Setting Up Hyprland](Contents/Setting%20Up%20Hyprland.md)
- [Setting Up Kitty](Contents/Setting%20Up%20Kitty.md)
- [Setting Up SDDM](Contents/Setting%20Up%20SDDM.md)
- [Setting Up dunst](Contents/Setting%20Up%20dunst.md)
- [Setting Up Waybar](Contents/Setting%20Up%20Waybar.md)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Automatic Installation

This installation method is still under development. <!-- TODO -->

---

- Previous: [System Installation](System%20Installation.md)
- Next: [Manual Customization](Manual%20Customization.md)
160 changes: 160 additions & 0 deletions Operating Systems/Arch Linux/Contents/Environment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# Environment

## Hardware

I am using Arch Linux on my laptop because it gives me a functional system while having low resource usage. I am using an old Lenovo G50-70 laptop with an Intel Core i3-4030U, 4GB RAM, and 500GB HDD storage.

## Software

### Disk Partitions

During the installation I've configured my machine to have the following
disk partitions:

| Device | Size | Mountpoint | Filesystem | Label | Description |
| ----------- | ----------------------- | ----------- | ---------- | ----- | ----------------- |
| `/dev/sda1` | 300M | `/mnt/boot` | FAT32 | EFI | EFI Partition |
| `/dev/sda2` | 8G | SWAP | SWAP | SWAP | Swap Partition |
| `/dev/sda3` | 60G | `/mnt` | BTRFS | ROOT | `/` Partition |
| `/dev/sda4` | Remaining of the Device | `/mnt/home` | EXT4 | HOME | `/home` Partition |

### Programs Used

This Arch Linux configuration is using the following programs:

<div align="center">
<table>
<tbody>
<tr>
<td rowspan="9">Desktop</td>
<td>Compositor</td>
<td><a href="https://hyprland.org/">Hyprland</a></td>
</tr>
<tr>
<td>Bar</td>
<td><a href="https://github.com/Alexays/Waybar">Waybar</a></td>
</tr>
<tr>
<td>Widgets</td>
<td>
<a href="https://github.com/elkowar/eww">ElKowars wacky widgets</a>
</td>
</tr>
<tr>
<td>Launcher</td>
<td><a href="https://github.com/lbonn/rofi">Rofi</a></td>
</tr>
<tr>
<td>Notification Manager</td>
<td><a href="https://github.com/dunst-project/dunst">Dunst</a></td>
</tr>
<tr>
<td>Wallpaper Utility</td>
<td><a href="https://github.com/hyprwm/hyprpaper">Hyprpaper</a></td>
</tr>
<tr>
<td>Lockscreen</td>
<td>
<a href="https://github.com/jirutka/swaylock-effects">Swaylock</a>
</td>
</tr>
<tr>
<td>Display Manager</td>
<td><a href="https://github.com/sddm/sddm">SDDM</a></td>
</tr>
<tr>
<td>Logout Menu</td>
<td><a href="https://github.com/ArtsyMacaw/wlogout">WLogout</a></td>
</tr>
<tr>
<td rowspan="5">Desktop Applications</td>
<td>Terminal</td>
<td><a href="https://sw.kovidgoyal.net/kitty/">Kitty</a></td>
</tr>
<tr>
<td>Browser</td>
<td><a href="https://firefox.com/">Firefox</a></td>
</tr>
<tr>
<td>File Manager (GUI)</td>
<td>
<a href="https://docs.xfce.org/xfce/thunar/start">Thunar</a>
</td>
</tr>
<tr>
<td>Audio Effects</td>
<td>
<a href="https://github.com/wwmm/easyeffects">Easy Effects</a>
</td>
</tr>
<tr>
<td>Document Viewer</td>
<td><a href="https://pwmt.org/projects/zathura">Zathura</a></td>
</tr>
<tr>
<td rowspan="5">Terminal Applications</td>
<td>Shell</td>
<td><a href="https://www.zsh.org/">ZSH</a></td>
</tr>
<tr>
<td>AUR Helper</td>
<td><a href="https://github.com/Morganamilo/paru">Paru</a></td>
</tr>
<tr>
<td>File Manager (TUI)</td>
<td><a href="https://midnight-commander.org/">mc</a></td>
</tr>
<tr>
<td>Process Viewer</td>
<td><a href="https://github.com/aristocratos/btop">btop</a></td>
</tr>
<tr>
<td>Audio Visualizer</td>
<td><a href="https://github.com/karlstav/cava">cava</a></td>
</tr>
<tr>
<td rowspan="7">Back-End/Utilities</td>
<td>Administration</td>
<td><a href="https://www.sudo.ws/sudo/">sudo</a></td>
</tr>
<tr>
<td>Authentication Agent</td>
<td>
<a href="https://gitlab.gnome.org/Archive/policykit-gnome"
>GNOME Polkit Authentication Agent</a
>
</td>
</tr>
<tr>
<td>Secrets/Password Manager</td>
<td><a href="https://keepassxc.org/">KeePassXC</a></td>
</tr>
<tr>
<td>Network Manager</td>
<td><a href="https://networkmanager.dev/">NetworkManager</a></td>
</tr>
<tr>
<td>Bluetooth Manager</td>
<td>
<a href="https://github.com/blueman-project/blueman">Blueman</a>
</td>
</tr>
<tr>
<td>Audio/Video Processor</td>
<td><a href="https://pipewire.org">Pipewire</a></td>
</tr>
<tr>
<td>Input Method</td>
<td><a href="https://github.com/fcitx/fcitx5">Fcitx5</a></td>
</tr>
</tbody>
</table>
</div>

- Fonts used: [JetBrains Mono (Nerd Fonts)](https://github.com/ryanoasis/nerd-fonts) & [Font Awesome](https://fontawesome.com/)
- Colorscheme: [Catppuccin Mocha](https://github.com/catppuccin/catppuccin)

---

- Previous: [Introduction](../Arch%20Linux.md)
- Next: [System Installation](System%20Installation.md)
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Installing and Setting Up The Desktop

In this part of the customization process, we will install
the following programs and their dependencies:

- [brightnessctl](https://github.com/Hummer12007/brightnessctl) brightness control tool
- [btop](https://github.com/aristocratos/btop) system resources monitor
- [dunst](https://dunst-project.org/) notification daemon
- [libnotify](https://gitlab.gnome.org/GNOME/libnotify) desktop notification library
- [fcitx5](https://github.com/fcitx/fcitx5) input method
- [Firefox](https://www.mozilla.org/en-US/firefox/new/) browser
- [grim](https://git.sr.ht/~emersion/grim) screenshot utility
- [slurp](https://github.com/emersion/slurp) Wayland region selection tool
- [swappy](https://github.com/jtheoof/swappy) snapshot editing tool
- [Hyprland](https://hyprland.org/) tiling compositor
- [catppuccin-cursors-mocha](https://github.com/catppuccin/cursors) cursors
- [catppuccin-gtk-theme-mocha](https://github.com/catppuccin/gtk) GTK theme
- [Hyprpaper](https://github.com/hyprwm/hyprpaper) wallpaper utility
- [GNOME PolicyKit Agent](https://gitlab.gnome.org/Archive/policykit-gnome)
- [KeePassXC](https://keepassxc.org/) password manager
- [Kitty](https://sw.kovidgoyal.net/kitty/) terminal emulator
- [PipeWire](https://pipewire.org) audio/video router and processor
- [EasyEffects](https://github.com/wwmm/easyeffects) audio effects for PipeWire
- [playerctl](https://github.com/altdesktop/playerctl) mpris media player controller
- [WirePlumber](https://pipewire.pages.freedesktop.org/wireplumber/) PipeWire session/policy manager
- [rofi](https://github.com/lbonn/rofi) window switcher, run dialog, and dmenu replacement
- [rofimoji](https://github.com/fdw/rofimoji) character picker for rofi
- [SDDM](https://github.com/sddm/sddm/) display manager
- [Catppuccin for SDDM](https://github.com/khaneliman/catppuccin-sddm-corners)
- [socat](http://www.dest-unreach.org/socat/)
- [swaylock-effects](https://github.com/jirutka/swaylock-effects) screen locker
- [Thunar](https://docs.xfce.org/xfce/thunar/start) file manager
- [Gnome Virtual File System](https://wiki.gnome.org/Projects/gvfs)
- [Thunar Archive Plugin](https://goodies.xfce.org/projects/thunar-plugins/thunar-archive-plugin)
- [file-roller](https://wiki.gnome.org/Apps/FileRoller)
- [Thunar Media Tags Plugin](https://goodies.xfce.org/projects/thunar-plugins/thunar-media-tags-plugin)
- [Thunar Volume Manager](https://goodies.xfce.org/projects/thunar-plugins/thunar-volman)
- [Tumbler](https://gitlab.xfce.org/xfce/tumbler) thumbnail generator
- [ffmpegthumbnailer](https://github.com/dirkvdb/ffmpegthumbnailer) video thumbnailer
- [Folder thumbnailer](https://github.com/j-james/thunar-folder-thumbnails)
- [RAW thumbnailer](https://code.google.com/archive/p/raw-thumbnailer/)
- [Waybar](https://github.com/Alexays/Waybar) Wayland bar
- [wl-clipboard](https://github.com/bugaevc/wl-clipboard) copy/paste utility
- [cliphist](https://github.com/sentriz/cliphist) clipboard manager

```bash
paru -S \
brightnessctl \
btop \
dunst libnotify \
fcitx5 \
firefox \
grim slurp swappy \
hyprland hyprpaper polkit-gnome \
catppuccin-cursors-mocha catppuccin-gtk-theme-mocha \
keepassxc \
kitty \
pipewire pipewire-audio pipewire-pulse lib32-pipewire \
easyeffects playerctl wireplumber \
rofi-lbonn-wayland-git rofimoji \
sddm-git sddm-catppuccin-git \
qt5-graphicaleffects qt5-svg qt5-quickcontrols2 \
socat \
swaylock-effects-git \
thunar gvfs \
thunar-archive-plugin file-roller \
thunar-media-tags-plugin thunar-volman \
tumbler tumbler-extra-thumbnailers raw-thumbnailer \
ffmpegthumbnailer \
waybar-hyprland-git \
wl-clipboard cliphist \
```

You may want to read the installation instructions of each programs in case your hardware/software configuration needs extra installation steps.

---

- Previous: [Manual Customization](Manual%20Customization.md)
- Next: [Setting Up Hyprland](Setting%20Up%20Hyprland.md)
87 changes: 87 additions & 0 deletions Operating Systems/Arch Linux/Contents/Manual Customization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Customization

Now that you have a new Arch Linux system, we will now start performing customizations in it.

## Installing An AUR Helper

[Install Paru](https://github.com/Morganamilo/paru). This is the AUR helper that we will use.

```bash
sudo pacman -S --needed base-devel # If it is not yet installed

# Clone the repo in a temp directory.
export PARU_TMP_DIR=$(mktemp -d)
git clone https://aur.archlinux.org/paru.git "${PARU_TMP_DIR}/paru"

# build and install paru.
cd "${PARU_TMP_DIR}/paru"
makepkg -si

# Go back home and remove the created temp directory.
cd ~
rm -rf $PARU_TMP_DIR
unset $PARU_TMP_DIR
```

## Downloading the Dotfiles

Install `git` and `git-lfs`, and clone this repository.

```bash
paru -S git git-lfs
git clone https://github.com/SetupGuides/ArchLinux.git ~/ArchLinuxDotfiles
cd ~/ArchLinuxDotfiles
```

> [!NOTE] From now on, this guide will assume that you are in `~/ArchLinuxDotfiles` directory unless specified.
## Custom Fonts and Icons

We are going to use the following fonts and icons, so it's best to install it now.

```bash
paru -Syu otf-font-awesome ttf-jetbrains-mono-nerd ttf-noto-nerd \
papirus-icon-theme papirus-folders-catppuccin-git
```

## Useful Packages

It is recommended to install and enable the following packages.

```bash
paru -S acpid avahi
systemctl enable acpid.service avahi-daemon.service
```

### Enable Bluetooth support

```bash
paru -S bluez bluez-utils blueman
systemctl enable bluetooth.service
systemctl start bluetooth.service
```

### Enable Printer Support

```bash
paru -S system-config-printer sane \
foomatic-db foomatic-db-engine \
gutenprint gsfonts \
cups cups-pdf cups-filters
systemctl enable cups.service saned.socket
```

### Enable TRIM for SSDs

```bash
systemctl enable fstrim.timer
```

## Next Steps

- [Installing and Setting Up The Desktop](Installing%20and%20Setting%20Up%20The%20Desktop.md)

---

- Previous: [Automatic Customization](Automatic%20Customization.md)
- Next: [Installing and Setting Up The Desktop](Installing%20and%20Setting%20Up%20The%20Desktop.md)
Loading

0 comments on commit 6edcd8f

Please sign in to comment.