diff --git a/Operating Systems/Arch Linux/Arch Linux.md b/Operating Systems/Arch Linux/Arch Linux.md index c3fd9c3..7196e69 100644 --- a/Operating Systems/Arch Linux/Arch Linux.md +++ b/Operating Systems/Arch Linux/Arch Linux.md @@ -40,7 +40,7 @@ This repository contains most of my dotfiles and notes that are used in my Arch - You have made a [[System Installation#Add A Non-Root User Account|non-root user]] 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. +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. > [!WARNING] > @@ -48,17 +48,8 @@ Some, if not all of the dotfiles, can also be used in other operating systems/di ## Table of Contents -- Introduction (you are here!) +- [[Arch Linux|Introduction]] (you are here!) - [[Environment]] - [[System Installation]] - [[Automatic Customization]] - [[Manual Customization]] - - [[Setting Up Hyprland]] - - [[Setting Up Kitty]] - - [[Setting Up SDDM]] - - [[Setting Up dunst]] - - [[Setting Up Waybar]] - - [[Setting Up Rofi]] - - [[Setting Up Hyprlock]] - - [[Audio and Video]] - - [[Setting Up The Browsers]] diff --git a/Operating Systems/Arch Linux/Contents/Audio and Video.md b/Operating Systems/Arch Linux/Contents/Audio and Video.md deleted file mode 100644 index d9e9832..0000000 --- a/Operating Systems/Arch Linux/Contents/Audio and Video.md +++ /dev/null @@ -1,16 +0,0 @@ -# Audio and Video - -PipeWire is now superseding PulseAudio when it comes to handling audio and video streams on Linux systems. We are going to install it on our system. - -```bash -paru -S pipewire pipewire-audio pipewire-pulse lib32-pipewire \ - easyeffects playerctl wireplumber \ - gst-libav gst-plugins-base \ - gst-plugins-{good,bad,ugly} gstreamer-vaapi \ - x265 x264 lame -``` - ------ - -- Previous: [[Setting Up Hyprlock]] -- Next: [[Setting Up The Browsers]] diff --git a/Operating Systems/Arch Linux/Contents/Installing Useful Software.md b/Operating Systems/Arch Linux/Contents/Installing Useful Software.md deleted file mode 100644 index 8e0d0c3..0000000 --- a/Operating Systems/Arch Linux/Contents/Installing Useful Software.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Installing Useful Software -description: My Arch Linux (btw) dotfiles. -draft: false -tags: - - linux - - linux/distro ---- - -# Installing Useful Software - -## Installing Neovim - -Neovim is the best text editor and IDE on Linux btw (fight me). We'll have to install some packages that are required by the plugins first. - -```bash -paru -S neovim tree-sitter tree-sitter-cli -# Customize Neovim -bash <(curl -sSf https://raw.githubusercontent.com/Chris1320/SetupGuides-Neovim/main/install) -``` - -## Others - -```bash -paru -S localsend-bin pfetch github-cli -pipx install howdoi yt-dlp magika jupyterlab -``` diff --git a/Operating Systems/Arch Linux/Contents/Manual Customization.md b/Operating Systems/Arch Linux/Contents/Manual Customization.md index 7bcf92f..804d0de 100644 --- a/Operating Systems/Arch Linux/Contents/Manual Customization.md +++ b/Operating Systems/Arch Linux/Contents/Manual Customization.md @@ -7,9 +7,8 @@ Now that you have a new Arch Linux system, we will now start performing customiz [Install Paru](https://github.com/Morganamilo/paru). This is the AUR helper that we will use. ```bash -sudo pacman -S --needed base-devel rustup # If it is not yet installed - # Install the latest stable version of Rust +sudo pacman -S --needed rustup rustup toolchain install stable # Clone the repo in a temp directory. @@ -28,42 +27,87 @@ unset $PARU_TMP_DIR ## Downloading the Dotfiles -Install `git` and `git-lfs`, and clone this repository. +Clone the [Chris1320/SetupGuides-dotfiles](https://github.com/Chris1320/SetupGuides-dotfiles) and [Chris1320/SetupGuides-ArchLinux](https://github.com/Chris1320/SetupGuides-ArchLinux) repositories. ```bash -paru -S git git-lfs mkdir ~/Temp + +git clone https://github.com/Chris1320/SetupGuides-dotfiles.git ~/Temp/SGDotfiles git clone https://github.com/Chris1320/SetupGuides-ArchLinux.git ~/Temp/ArchLinuxDotfiles + cd ~/Temp/ArchLinuxDotfiles git submodule init # Initialize git submodules git submodule update # Pull submodules from remote git lfs pull # Download LFS files ``` -> [!NOTE] From now on, this guide will assume that you are in `~/Temp/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. +- **Primary Fonts**: `ttf-jetbrains-mono-nerd ttf-noto-nerd noto-fonts-cjk ttf-opensans noto-fonts otf-apple-fonts` +- **Primary Icons**: `papirus-icon-theme papirus-folders-catppuccin-git` +- **Icon Fonts**: `otf-font-awesome ttf-material-icons-git` +- **Cursor Icons**: `catppuccin-cursors-mocha` + ```bash -paru -Syu otf-font-awesome ttf-jetbrains-mono-nerd ttf-noto-nerd \ +paru -Syu ttf-jetbrains-mono-nerd ttf-noto-nerd noto-fonts-cjk \ + ttf-opensans noto-fonts otf-apple-fonts \ papirus-icon-theme papirus-folders-catppuccin-git \ - ttf-material-icons-git + otf-font-awesome ttf-material-icons-git \ + catppuccin-cursors-mocha ``` -> [!CAUTION] If `papirus-folders-catppuccin-git` fails to install, just re-login or reboot the system after installing `papirus-icon-theme`. - ## Useful Packages It is recommended to install and enable the following packages. +### Essentials + +`acpid` is a daemon that listens for events related to power management. `avahi` is a service that is responsible for the discovery of services and hosts on a local network using the mDNS (Multicast DNS) protocol. + +```bash +paru -S acpid avahi dkms net-tools +systemctl enable \ + acpid.service \ + avahi-daemon.service \ + systemd-timesyncd.service +``` + +### Input Devices + +Some peripherals require these packages to work properly. + ```bash -paru -S acpid avahi -systemctl enable acpid.service avahi-daemon.service +paru -S xf86-input-synaptics xf86-input-libinput xf86-input-evdev ``` -### Enable Bluetooth support +> [!TIP]- Additional Package to Install on Virtual Machines +> +> ```bash +> paru -S xf86-input-vmmouse +> ``` + +### Audio and Video + +PipeWire is now superseding PulseAudio when it comes to handling audio and video streams on Linux systems. We are going to install it on our system. + +```bash +paru -S pipewire pipewire-audio pipewire-pulse lib32-pipewire \ + easyeffects playerctl wireplumber \ + alsa-utils pipewire-jack \ + gst-libav gst-plugins-base \ + gst-plugins-{good,bad,ugly} gstreamer-vaapi \ + x265 x264 lame +``` + +> [!NOTE] PipeWire and The Whole Setup +> +> The dotfiles are configured to manipulate audio and video via PipeWire as well. If you are not going to use PipeWire, you might have to change a lot of scripts to use whatever you are going to use. + +Read more at [Arch Linux Wiki > PipeWire](https://wiki.archlinux.org/title/PipeWire). + +### Bluetooth Support ```bash paru -S bluez bluez-utils blueman @@ -73,7 +117,9 @@ systemctl start bluetooth.service I also install required Bluetooth drivers in this part, if necessary. For example, my laptop has Broadcom devices, so I also install `broadcom-bt-firmware` from the AUR via `paru`. -### Enable Printer Support +### Printer Support + +These are needed to enable printing in our machine. ```bash paru -S system-config-printer sane \ @@ -91,8 +137,21 @@ systemctl enable fstrim.timer ### Essential Utilities +These are packages that I always keep in my machine installed. + +```bash +paru -S mc localsend-bin pfetch github-cli \ + tar unzip unrar p7zip zip xz rsync rclone trash-cli \ + nfs-utils cifs-utils ntfs-3g exfat-utils gvfs udisks2 \ + ffmpeg pavucontrol \ + btop socat jq +``` + +#### Flatpak + ```bash -paru -S flatpak mc tar unzip unrar p7zip zip trash-cli +paru -S flatpak +flatpak install flathub com.github.tchx84.Flatseal ``` #### Development Tools @@ -100,7 +159,7 @@ paru -S flatpak mc tar unzip unrar p7zip zip trash-cli ```bash # Install C/C++, .NET, and Python development tools paru -S gcc dotnet-sdk python python-pip python-pipx -pipx install poetry +pipx install poetry jupyterlab # Install Node Version Manager and the latest NodeJS version curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh" | bash @@ -109,9 +168,327 @@ nvm install node # Install Java Development Kit and PHP development tools paru -S jdk-openjdk php composer + +# Android tools +paru -S android-tools android-udev +usermod -aG adbusers "$(whoami)" + +# Other useful stuff +pipx install howdoi yt-dlp magika +``` + +##### Neovim + +[[Neovim]] is the best text editor and IDE on Linux btw (fight me). If I installed the packages from the [[#Development Tools]], then might as well use Neovim to write code. We'll have to install some packages that are required by the plugins first. + +```bash +paru -S neovim tree-sitter tree-sitter-cli +# Customize Neovim using my Neovim dotfiles +bash <(curl -sSf https://raw.githubusercontent.com/Chris1320/SetupGuides-Neovim/main/install) +``` + +#### Image and Video Viewers + +```bash +paru -S imv mpv ``` +## Setting Up SDDM + +SDDM will be the display manager that our setup will use. It will be your +"login screen". Install and enable the SDDM service to start the display +manager on boot. + +```bash +paru -S sddm qt6-svg qt6-virtualkeyboard qt6-multimedia-ffmpeg +systemctl enable sddm.service +``` + +I use [Keyitdev](https://github.com/Keyitdev)'s [sddm-astronaut-theme](https://github.com/Keyitdev/sddm-astronaut-theme) +as my SDDM theme. Clone their SDDM configuration files to their designated +locations. I also changed the wallpaper included in their repository, so +we'll have to copy that from `~/Temp/ArchLinuxDotfiles` as well. + +> [!NOTE] +> +> Make sure that git submodules are pulled before attempting to copy the files from `./dotfiles/sddm/sddm-astronaut-theme` directory. +> +> ```bash +> git submodule update --init --recursive --remote +> ``` + +```bash +sudo cp -r ./dotfiles/sddm/sddm-astronaut-theme /usr/share/sddm/themes/sddm-astronaut-theme +sudo mkdir -p /etc/sddm.conf.d +sudo cp -r ./dotfiles/sddm/sddm.conf /etc/sddm.conf.d/sddm.conf +printf '[General]\nInputMethod=qtvirtualkeyboard' | sudo tee /etc/sddm.conf.d/virtualkbd.conf + +sudo mkdir -p /usr/share/wallpapers +sudo cp "./assets/wallpapers/" /usr/share/wallpapers/sddm-bg +``` + +> [!TIP] Currently, I use `5am_Train_1920x1080.jpg` as my SDDM background. + +Edit the `/usr/share/sddm/themes/sddm-astronaut-theme/Themes/theme1.conf` file +and change the following lines: + +| Key | Value | +| -------------- | ------------------------------- | +| `Background` | `/usr/share/wallpapers/sddm-bg` | +| `FormPosition` | `left` | + +Related Links: + +- [Arch Linux Wiki > SDDM](https://wiki.archlinux.org/title/SDDM) +- [GitHub - Keyitdev/sddm-astronaut-theme: Modern looking sddm qt6 theme.](https://github.com/Keyitdev/sddm-astronaut-theme) + +## Setting Up Hyprland + +[Hyprland](https://hyprland.org/) will be our tiling compositor. I chose this over other DEs/WMs because it is easy to configure, has beautiful animations, and I really like its dynamic tiling. To start, install Hyprland by running the following command: + +```bash +paru -S hyprland hyprpaper \ + brightnessctl fcitx5 \ + grim slurp swappy \ + polkit-gnome gnome-keyring \ + seahorse libsecret \ + nm-connection-editor \ + wl-clipboard cliphist +``` + +> [!TIP] If you ever need help, Hyprland has their own wiki, so [read it](https://wiki.hyprland.org/Getting-Started/Master-Tutorial/)! + +To start customizing Hyprland, just copy the dotfiles to `~/.config/`. Running Hyprland at this time is **not yet recommended** since we haven't customized the rest of the programs yet. + +```bash +# Make sure you're still at the repository's root directory +cp -r ./dotfiles/hypr ~/.config/hypr +cp -r ./scripts ~/.config/scripts +``` + +Also copy your desired background image to `~/.config/background`. + +```bash +cp "./assets/wallpapers/" ~/.config/background +# I personally use `evening-sky.png` as my wallpaper. +``` + +Now, Hyprland's configuration files are in place, but we still need to configure +the rest of the system for it to function properly. + +> [!BUG] If you are having problems with Hyprland, see their [wiki](https://wiki.hyprland.org/Crashes-and-Bugs/). + +### GTK Theme + +Currently, this setup uses the [Everforest GTK theme](https://github.com/Fausto-Korpsvart/Everforest-GTK-Theme). + +```bash +paru -S everforest-gtk-theme-git gtk-engine-murrine +``` + +### Hyprcursors + +Hyprland's author introduced a new cursor theme format, called _Hyprcursor_. +It is supposed to be a more efficient and faster cursor theme format. The Catppuccin cursors are already set up in Hyprland's config file, so we just need to update `gsettings` with the appropriate settings. + +Run the following script and select/enter your preferred cursor and cursor size (I use the defaults). + +```bash +~/.config/scripts/set-cursor.sh +``` + +## Setting Up Kitty + +Kitty is my terminal emulator of choice. Install it via `paru` to begin. + +```bash +paru -S kitty +``` + +Since [June 3, 2024](https://github.com/Chris1320/SetupGuides-ArchLinux/commit/edd1e5b5ea67c42c4da9cbb9d754c025210c652d), I moved dotfiles that are used across multiple operating systems to a separate repository. Because of this, the dotfiles for Kitty is not on [SetupGuides-ArchLinux](https://github.com/Chris1320/SetupGuides-ArchLinux), but rather on [SetupGuides-dotfiles](https://github.com/Chris1320/SetupGuides-dotfiles). You will have to clone the repository where it is located, copy the Kitty configuration file, and enable the Catppuccin colorscheme. + +```bash +mkdir -p ~/.config/kitty +cp -r ~/Temp/SGDotfiles/kitty/kitty.conf ~/.config/kitty/kitty.conf +kitty +kitten themes --reload-in=all Catppuccin-Mocha +``` + +> [!NOTE] You now have two SetupGuides repositories on your `~/Temp` directory. + +### Setting Up ZSH + +See [[ZSH]] for more information. + +### Setting Up GPG and SSH + +If you have an existing GPG and SSH keys, you can now start restoring them to your new system. + +#### Importing Your GPG keys + +First, import your GPG private key. + +```bash +gpg --import your_gpg_key.gpg +``` + +Next, edit the key and trust it ultimately. You'll have to get the key ID first. + +```bash +# List secret keys and show their key IDs. +gpg --list-secret-keys --keyid-format=SHORT +# Edit the key +gpg --edit-key +# gpg> trust +# ... +# Your decision? 5 +# Do you really want to set this key to ultimate trust? (y/N) y +# gpg> quit +``` + +##### Using GNOME Keyring as Secrets Manager + +Use GNOME 3 pinentry when asking for GPG password. Edit `~/.gnupg/gpg-agent.conf` and insert the following line: + +```text +pinentry-program /usr/bin/pinentry-gnome3 +``` + +#### Importing Your SSH keys + +First of all, you have to install OpenSSH. + +```bash +paru -S openssh +``` + +Copy your private and public keys to `~/.ssh`, and adjust the permissions. + +```bash +# Create ~/.ssh if it does not exist. +mkdir -p ~/.ssh + +# Copy the public and private keys to the newly-created directory. +# Example 1: ED25519 keys +cp ~/Downloads/your_ed25519_ssh_key ~/.ssh/id_ed25519 +cp ~/Downloads/your_ed25519_ssh_key.pub ~/.ssh/id_ed25519.pub +# Example 2: RSA keys +cp ~/Downloads/your_rsa_ssh_key ~/.ssh/id_rsa +cp ~/Downloads/your_rsa_ssh_key.pub ~/.ssh/id_rsa.pub + +# Adjust permissions +chmod 600 ~/.ssh/* +chmod 700 ~/.ssh +``` + +#### Configuring SSH + +You can also add a host configuration block in `~/.ssh/config` so that you can clone repositories using a shorter command. + +```text +Host gh + HostName github.com + User git + IdentityFile ~/.ssh/id_ed25519 +``` + +If you add this line, all you have to do when cloning GitHub repositories is to +run `git clone gh:username/repo.git`. Make sure that you've set up your GitHub +account correctly first. + +You can test your setup by running the command + +```bash +ssh -T gh +``` + +It should print out something like this: + +```text +Hi Chris1320! You've successfully authenticated, but GitHub does not provide shell access. +``` + +##### Using GNOME Keyring as Secrets Manager + +```bash +systemctl enable --user gcr-ssh-agent.socket +systemctl start --user gcr-ssh-agent.socket +``` + +## Setting Up Waybar + +Waybar is a status bar for Wayland compositors. We will use it to show basic information about our machine at the top of our screen. Install it and copy its configuration file to its designated location. + +```bash +paru -S waybar +cp -r ./dotfiles/waybar ~/.config/waybar +``` + +## Setting Up dunst + +Dunst is a lightweight notification daemon for Linux and Unix-like operating systems. It is highly customizable, allowing us to adjust its appearance, behavior, and the types of notifications it handles. + +To start, install `dunst` and copy its configuration file. + +```bash +paru -S dunst libnotify +mkdir -p ~/.config/dunst +cp ./dotfiles/dunst/dunstrc ~/.config/dunst/dunstrc +``` + +## Setting Up Rofi + +Rofi will be our launcher and interface for window switching, emoji panel, clipboard history panel, and much much more. Install it and copy its dotfiles to its designated locations. + +```bash +paru -S rofi-wayland rofimoji +cp -r ./dotfiles/rofi ~/.config/rofi +``` + +## Setting Up Hyprlock + +```bash +paru -S hyprlock +``` + +Since we've [[Setting Up Hyprland|set up Hyprland]], we wouldn't need any additional setup. + +## Setting Up The Browsers + +```bash +paru -S firefox brave-bin torbrowser-launcher +``` + +## Ricing Up GRUB + +Our whole system mostly uses the [Catppuccin](https://catppuccin.com/) colorscheme, so we're going to use [Catppuccin's GRUB theme](https://github.com/catppuccin/grub) to rice our bootloader. + +First, clone the `catppuccin/grub` repository and copy the themes to `/usr/share/grub/themes`. + +```bash +git clone https://github.com/catppuccin/grub.git ~/Temp/grub && cd ~/Temp/grub +sudo cp -r src/* /usr/share/grub/themes/ +``` + +Edit `/etc/default/grub` and edit the `GRUB_THEME` variable (uncomment if needed). + +```toml +GRUB_THEME="/usr/share/grub/themes/catppuccin-mocha-grub-theme/theme.txt" +``` + +Save the file and update GRUB's configuration by running: + +```bash +sudo grub-mkconfig -o /boot/grub/grub.cfg +``` + +> [!TIP] You can now remove the cloned repository. +> +> ```bash +> cd ~ && rm -rf ~/Temp/grub +> ``` + +> [!ERROR] If you are having problems with theming GRUB, you can read the FAQs section in [catppuccin/grub](https://github.com/catppuccin/grub?tab=readme-ov-file#-faq). + --- - Previous: [[Automatic Customization]] -- Next: [[Setting Up Hyprland]] diff --git a/Operating Systems/Arch Linux/Contents/Ricing Up GRUB.md b/Operating Systems/Arch Linux/Contents/Ricing Up GRUB.md deleted file mode 100644 index 67e4e57..0000000 --- a/Operating Systems/Arch Linux/Contents/Ricing Up GRUB.md +++ /dev/null @@ -1,30 +0,0 @@ -# Ricing Up GRUB - -Our whole system mostly uses the [Catppuccin](https://catppuccin.com/) colorscheme, so we're going to use [Catppuccin's GRUB theme](https://github.com/catppuccin/grub) to rice our bootloader. - -First, clone the `catppuccin/grub` repository and copy the themes to `/usr/share/grub/themes`. - -```bash -git clone https://github.com/catppuccin/grub.git ~/Temp/grub && cd ~/Temp/grub -sudo cp -r src/* /usr/share/grub/themes/ -``` - -Edit `/etc/default/grub` and edit the `GRUB_THEME` variable (uncomment if needed). - -```toml -GRUB_THEME="/usr/share/grub/themes/catppuccin-mocha-grub-theme/theme.txt" -``` - -Save the file and update GRUB's configuration by running: - -```bash -sudo grub-mkconfig -o /boot/grub/grub.cfg -``` - -> [!TIP] You can now remove the cloned repository. -> -> ```bash -> cd ~ && rm -rf ~/Temp/grub -> ``` - -> [!ERROR] If you are having problems with theming GRUB, you can read the FAQs section in [catppuccin/grub](https://github.com/catppuccin/grub?tab=readme-ov-file#-faq). diff --git a/Operating Systems/Arch Linux/Contents/Setting Up GPG and SSH.md b/Operating Systems/Arch Linux/Contents/Setting Up GPG and SSH.md deleted file mode 100644 index ea59abd..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up GPG and SSH.md +++ /dev/null @@ -1,99 +0,0 @@ -# Setting Up GPG and SSH - -If you have an existing GPG and SSH keys, you can now start restoring them to your new system. - -## Importing Your GPG keys - -First, import your GPG private key. - -```bash -gpg --import your_gpg_key.gpg -``` - -Next, edit the key and trust it ultimately. You'll have to get the key ID first. - -```bash -# List secret keys and show their key IDs. -gpg --list-secret-keys --keyid-format=SHORT -# Edit the key -gpg --edit-key -# gpg> trust -# ... -# Your decision? 5 -# Do you really want to set this key to ultimate trust? (y/N) y -# gpg> quit -``` - -### Using GNOME Keyring as Secrets Manager - -Use GNOME 3 pinentry when asking for GPG password. Edit `~/.gnupg/gpg-agent.conf` and insert the following line: - -```text -pinentry-program /usr/bin/pinentry-gnome3 -``` - -## Importing Your SSH keys - -First of all, you have to install OpenSSH. - -```bash -paru -S openssh -``` - -Copy your private and public keys to `~/.ssh`, and adjust the permissions. - -```bash -# Create ~/.ssh if it does not exist. -mkdir -p ~/.ssh - -# Copy the public and private keys to the newly-created directory. -# Example 1: ED25519 keys -cp ~/Downloads/your_ed25519_ssh_key ~/.ssh/id_ed25519 -cp ~/Downloads/your_ed25519_ssh_key.pub ~/.ssh/id_ed25519.pub -# Example 2: RSA keys -cp ~/Downloads/your_rsa_ssh_key ~/.ssh/id_rsa -cp ~/Downloads/your_rsa_ssh_key.pub ~/.ssh/id_rsa.pub - -# Adjust permissions -chmod 600 ~/.ssh/* -chmod 700 ~/.ssh -``` - -## Configuring SSH - -You can also add a host configuration block in `~/.ssh/config` so that you can clone repositories using a shorter command. - -```text -Host gh - HostName github.com - User git - IdentityFile ~/.ssh/id_ed25519 -``` - -If you add this line, all you have to do when cloning GitHub repositories is to -run `git clone gh:username/repo.git`. Make sure that you've set up your GitHub -account correctly first. - -You can test your setup by running the command - -```bash -ssh -T gh -``` - -It should print out something like this: - -```text -Hi Chris1320! You've successfully authenticated, but GitHub does not provide shell access. -``` - -### Using GNOME Keyring as Secrets Manager - -```bash -systemctl enable --user gcr-ssh-agent.socket -systemctl start --user gcr-ssh-agent.socket -``` - ------ - -- Previous: [[Setting Up ZSH]] -- Next: [[Installing Useful Software]] diff --git a/Operating Systems/Arch Linux/Contents/Setting Up Hyprland.md b/Operating Systems/Arch Linux/Contents/Setting Up Hyprland.md deleted file mode 100644 index 5132787..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up Hyprland.md +++ /dev/null @@ -1,62 +0,0 @@ -# Setting Up Hyprland - -[Hyprland](https://hyprland.org/) will be our tiling compositor. I chose this over other DEs/WMs because it is easy to configure, has beautiful animations, and I really like its dynamic tiling. To start, install Hyprland by running the following command: - -```bash -paru -S hyprland hyprpaper \ - brightnessctl btop fcitx5 \ - grim slurp swappy \ - polkit-gnome gnome-keyring \ - seahorse libsecret \ - nm-connection-editor \ - wl-clipboard cliphist \ - catppuccin-cursors-mocha \ - socat jq -``` - -> [!TIP] If you ever need help, Hyprland has their own wiki, so [read it](https://wiki.hyprland.org/Getting-Started/Master-Tutorial/)! - -To start customizing Hyprland, just copy the dotfiles to `~/.config/`. Running Hyprland at this time is **not yet recommended** since we haven't customized the rest of the programs yet. - -```bash -# Make sure you're still at the repository's root directory -cp -r ./dotfiles/hypr ~/.config/hypr -cp -r ./scripts ~/.config/scripts -``` - -Also copy your desired background image to `~/.config/background`. - -```bash -cp "./assets/wallpapers/" ~/.config/background -# I personally use `evening-sky.png` as my wallpaper. -``` - -> [!TIP] Previewing Images In The Terminal -> -> You can run `icat ./assets/wallpapers/` to -> preview the image in the terminal. - -Now, Hyprland's configuration files are in place, but we still need to configure -the rest of the system for it to function properly. - -> [!BUG] If you are having problems with Hyprland, see their [wiki](https://wiki.hyprland.org/Crashes-and-Bugs/). - -## Hyprcursors - -Hyprland's author introduced a new cursor theme format, called _Hyprcursor_. -It is supposed to be a more efficient and faster cursor theme format. - -```bash -# TODO -``` - -## GTK Theme - -```bash -paru -S gtk-engine-murrine -``` - ---- - -- Previous: [[Manual Customization]] -- Next: [[Setting Up Kitty]] diff --git a/Operating Systems/Arch Linux/Contents/Setting Up Hyprlock.md b/Operating Systems/Arch Linux/Contents/Setting Up Hyprlock.md deleted file mode 100644 index bff51de..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up Hyprlock.md +++ /dev/null @@ -1,12 +0,0 @@ -# Setting Up Hyprlock - -```bash -paru -S hyprlock -``` - -Since we've [[Setting Up Hyprland|set up Hyprland]], we wouldn't need any additional setup. - ------ - -- Previous: [[Setting Up Rofi]] -- Next: [[Audio and Video]] diff --git a/Operating Systems/Arch Linux/Contents/Setting Up Kitty.md b/Operating Systems/Arch Linux/Contents/Setting Up Kitty.md deleted file mode 100644 index 2f8fc43..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up Kitty.md +++ /dev/null @@ -1,23 +0,0 @@ -# Setting Up Kitty - -Kitty is my terminal emulator of choice. Install it via `paru` to begin. - -```bash -paru -S kitty -``` - -Since [June 3, 2024](https://github.com/Chris1320/SetupGuides-ArchLinux/commit/edd1e5b5ea67c42c4da9cbb9d754c025210c652d), I moved dotfiles that are used across multiple operating systems to a separate repository. Because of this, the dotfiles for Kitty is not on [SetupGuides-ArchLinux](https://github.com/Chris1320/SetupGuides-ArchLinux), but rather on [SetupGuides-dotfiles](https://github.com/Chris1320/SetupGuides-dotfiles). You will have to clone the repository where it is located, copy the Kitty configuration file, and enable the Catppuccin colorscheme. - -```bash -git clone https://github.com/Chris1320/SetupGuides-dotfiles.git ~/Temp/SGDotfiles -mkdir -p ~/.config/kitty -cp -r ~/Temp/SGDotfiles/kitty/kitty.conf ~/.config/kitty/kitty.conf -kitty +kitten themes --reload-in=all Catppuccin-Mocha -``` - -> [!NOTE] You now have two SetupGuides repositories on your `~/Temp` directory. - ---- - -- Previous: [[Setting Up Hyprland]] -- Next: [[Setting Up SDDM]] diff --git a/Operating Systems/Arch Linux/Contents/Setting Up Rofi.md b/Operating Systems/Arch Linux/Contents/Setting Up Rofi.md deleted file mode 100644 index 221ee23..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up Rofi.md +++ /dev/null @@ -1,13 +0,0 @@ -# Setting Up Rofi - -Rofi will be our launcher and interface for window switching, emoji panel, clipboard history panel, and much much more. Install it and copy its dotfiles to its designated locations. - -```bash -paru -S rofi-wayland rofimoji -cp -r ./dotfiles/rofi ~/.config/rofi -``` - ------ - -- Previous: [[Setting Up Waybar]] -- Next: [[Setting Up Hyprlock]] \ No newline at end of file diff --git a/Operating Systems/Arch Linux/Contents/Setting Up SDDM.md b/Operating Systems/Arch Linux/Contents/Setting Up SDDM.md deleted file mode 100644 index 6913413..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up SDDM.md +++ /dev/null @@ -1,53 +0,0 @@ -# Setting Up SDDM - -SDDM will be the display manager that our setup will use. It will be your -"login screen". Install and enable the SDDM service to start the display -manager on boot. - -```bash -paru -S sddm qt6-svg qt6-virtualkeyboard ttf-opensans noto-fonts qt6-multimedia-ffmpeg pipewire-jack -systemctl enable sddm.service -``` - -I use [Keyitdev](https://github.com/Keyitdev)'s [sddm-astronaut-theme](https://github.com/Keyitdev/sddm-astronaut-theme) -as my SDDM theme. Clone their SDDM configuration files to their designated -locations. I also changed the wallpaper included in their repository, so -we'll have to copy that from `~/Temp/ArchLinuxDotfiles` as well. - -> [!NOTE] -> -> Make sure that git submodules are pulled before attempting to copy the files from `./dotfiles/sddm/sddm-astronaut-theme` directory. -> -> ```bash -> git submodule update --init --recursive --remote -> ``` - -```bash -sudo cp -r ./dotfiles/sddm/sddm-astronaut-theme /usr/share/sddm/themes/sddm-astronaut-theme -sudo mkdir -p /etc/sddm.conf.d -sudo cp -r ./dotfiles/sddm/sddm.conf /etc/sddm.conf.d/sddm.conf -printf '[General]\nInputMethod=qtvirtualkeyboard' | sudo tee /etc/sddm.conf.d/virtualkbd.conf - -sudo mkdir -p /usr/share/wallpapers -sudo cp "./assets/wallpapers/" /usr/share/wallpapers/sddm-bg -``` - -> [!TIP] Currently, I use `5am_Train_1920x1080.jpg` as my SDDM background. - -Edit the `/usr/share/sddm/themes/sddm-astronaut-theme/Themes/theme1.conf` file -and change the following lines: - -| Key | Value | -| -------------- | ------------------------------- | -| `Background` | `/usr/share/wallpapers/sddm-bg` | -| `FormPosition` | `left` | - -Related Links: - -- [Arch Linux Wiki > SDDM](https://wiki.archlinux.org/title/SDDM) -- [GitHub - Keyitdev/sddm-astronaut-theme: Modern looking sddm qt6 theme.](https://github.com/Keyitdev/sddm-astronaut-theme) - ---- - -- Previous: [[Setting Up Kitty]] -- Next: [[Setting Up dunst]] diff --git a/Operating Systems/Arch Linux/Contents/Setting Up The Browsers.md b/Operating Systems/Arch Linux/Contents/Setting Up The Browsers.md deleted file mode 100644 index 028ff80..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up The Browsers.md +++ /dev/null @@ -1,10 +0,0 @@ -# Setting Up The Browsers - -```bash -paru -S firefox brave-bin torbrowser-launcher -``` - ------ - -- Previous: [[Audio and Video]] -- Next: [[Setting Up ZSH]] diff --git a/Operating Systems/Arch Linux/Contents/Setting Up Waybar.md b/Operating Systems/Arch Linux/Contents/Setting Up Waybar.md deleted file mode 100644 index 4301c5b..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up Waybar.md +++ /dev/null @@ -1,13 +0,0 @@ -# Setting Up Waybar - -Waybar is a status bar for Wayland compositors. We will use it to show basic information about our machine at the top of our screen. Install it and copy its configuration file to its designated location. - -```bash -paru -S waybar pipewire-jack -cp -r ./dotfiles/waybar ~/.config/waybar -``` - ---- - -- Previous: [[Setting Up dunst]] -- Next: [[Setting Up Rofi]] diff --git a/Operating Systems/Arch Linux/Contents/Setting Up ZSH.md b/Operating Systems/Arch Linux/Contents/Setting Up ZSH.md deleted file mode 100644 index 6102570..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up ZSH.md +++ /dev/null @@ -1,8 +0,0 @@ -# Setting Up ZSH - -See [[ZSH]] for more information. - ------ - -- Previous: [[Setting Up The Browsers]] -- Next: [[Setting Up GPG and SSH]] diff --git a/Operating Systems/Arch Linux/Contents/Setting Up dunst.md b/Operating Systems/Arch Linux/Contents/Setting Up dunst.md deleted file mode 100644 index 72d5119..0000000 --- a/Operating Systems/Arch Linux/Contents/Setting Up dunst.md +++ /dev/null @@ -1,16 +0,0 @@ -# Setting Up dunst - -Dunst is a lightweight notification daemon for Linux and Unix-like operating systems. It is highly customizable, allowing us to adjust its appearance, behavior, and the types of notifications it handles. - -To start, install `dunst` and copy its configuration file. - -```bash -paru -S dunst libnotify -mkdir -p ~/.config/dunst -cp ./dotfiles/dunst/dunstrc ~/.config/dunst/dunstrc -``` - ---- - -- Previous: [[Setting Up SDDM]] -- Next: [[Setting Up Waybar]] diff --git a/Operating Systems/Arch Linux/Contents/System Installation.md b/Operating Systems/Arch Linux/Contents/System Installation.md index 22251df..e145fab 100644 --- a/Operating Systems/Arch Linux/Contents/System Installation.md +++ b/Operating Systems/Arch Linux/Contents/System Installation.md @@ -110,10 +110,11 @@ Use [reflector](https://wiki.archlinux.org/title/Reflector) to rank the mirror s ```bash reflector \ - --age 15 \ - --protocol https \ - --sort rate \ - --save /etc/pacman.d/mirrorlist + --latest 10 \ + --age 18 \ + --protocol https \ + --sort rate \ + --save /etc/pacman.d/mirrorlist ``` ### Perform the Base Installation @@ -133,11 +134,13 @@ Use the `pacstrap` command to install Arch Linux into your system. ```bash pacstrap -K /mnt \ base base-devel linux linux-firmware linux-headers \ - iwd networkmanager wpa_supplicant \ + iwd networkmanager networkmanager-openvpn \ + networkmanager-pptp networkmanager-vpnc \ + wireless_tools wpa_supplicant ifplugd \ sysfsutils usbutils btrfs-progs e2fsprogs dosfstools lvm2 \ inetutils dhcping traceroute \ earlyoom nano less which tree sudo reflector \ - man-db man-pages \ + dialog man-db man-pages \ git git-lfs xdg-utils xdg-user-dirs ``` @@ -222,21 +225,41 @@ vm.page-cluster = 0 ### Installing The Graphics Driver +First, install Mesa and Vulkan graphics drivers. + +```bash +pacman -S mesa lib32-mesa vulkan-icd-loader lib32-vulkan-icd-loader +``` + Depending on your graphics card, run the appropriate command to install the graphics drivers needed: -| Manufacturer | Command | -| -------------------- | ------------------------------------------------------------------------------------------------------------ | -| AMD | `pacman -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon libva-mesa-driver mesa-vdpau` | -| Intel | `pacman -S mesa lib32-mesa xf86-video-intel vulkan-intel` | -| Nvidia (Proprietary) | `pacman -S nvidia-dkms nvidia-settings nvidia-utils lib32-nvidia-utils` | -| Nvidia (Nouveau) | `pacman -S mesa xf86-video-nouveau` | +| Manufacturer | Command | +| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| AMD (New) | `pacman -S xf86-video-amdgpu libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau libva-vdpau-driver lib32-libva-vdpau-driver vulkan-radeon lib32-vulkan-radeon` | +| AMD (Old) | `pacman -S xf86-video-ati libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau libva-vdpau-driver lib32-libva-vdpau-driver vulkan-radeon lib32-vulkan-radeon` | +| Intel \[[[#^f23282\|See warning below]]\] | `pacman -S xf86-video-intel vulkan-intel` | +| Nvidia (Nouveau) | `pacman -S xf86-video-nouveau nvidia-utils lib32-nvidia-utils libvdpau lib32-libvdpau` | +| Virtual Machine (Hyper-V) | `pacman -S xf86-video-fbdev` | +| Virtual Machine (Others) | `pacman -S xf86-video-vmware` | + +> [!WARNING]- Troubleshooting +> +> > [!WARNING]- Intel +> > +> > According to [Arch Linux Wiki > Intel Graphics > Installation](https://wiki.archlinux.org/title/Intel_graphics#Installation), there are multiple problems when installing `xf86-video-intel` so you might want to **not install** the package. +> +> > [!WARNING]- NVIDIA +> > +> > If you are having problems, read [Arch Linux Wiki > NVIDIA](https://wiki.archlinux.org/title/NVIDIA). + +^f23282 ### `initramfs` Setup Now, we need to edit our initial ram disk by running `nano /etc/mkinitcpio.conf`. Inside the parenthesis of `MODULES=()`, add the following (separated by a space): - `btrfs` and `ext4`, since we are using Btrfs and EXT4 as our filesystems. -- `amdgpu` if you are running AMD GPU, `i915` if Intel, `nvidia nvidia_modeset nvidia_uvm nvidia_drm` if you use proprietary Nvidia drivers, or `nouveau` if you are using open-source Nvidia drivers. +- `amdgpu` if you are running the new AMD GPU driver, `i915` if Intel, or `nvidia nvidia_modeset nvidia_uvm nvidia_drm` if you use proprietary NVIDIA drivers. As an example, my machine has a built-in Intel GPU so I have the following: @@ -244,13 +267,15 @@ As an example, my machine has a built-in Intel GPU so I have the following: MODULES=(btrfs ext4 i915) ``` +> [!WARNING] If you are running proprietary NVIDIA drivers, remove `kms` inside `HOOKS=()`. + After editing, we run `mkinitcpio -P` to process all preset files. ### Install Bootloader In this step, I assume that you are installing on a UEFI system. Otherwise, check [d3sox](https://arch.d3sox.me/installation/install-bootloader) for more information. -> [!TIP]+ +> [!TIP]+ GRUB OS Prober > > If you want to automatically detect other operating systems, run `nano /etc/default/grub` and add/uncomment the following line: > @@ -342,36 +367,35 @@ And uncomment the following line to allow members of the group `wheel` to execut ### Enable Networking-Related Services -First, enable the `NetworkManager` service. - -```bash -systemctl enable NetworkManager.service -``` - -Then, create or edit `/etc/NetworkManager/conf.d/wifi_backend.conf` and insert the following configuration: +First, create or edit `/etc/NetworkManager/conf.d/wifi_backend.conf` and insert the following configuration: ```toml [device] wifi.backend=iwd ``` -#### Enable Wireless Network Interface - -> [!ERROR] This section will be removed in the future as this is not necessary, and will **result in an error** instead. - -You can enable the WLAN interface by using the `nmcli` command. +Then, enable the `NetworkManager` service. ```bash -nmcli radio wifi on # turn on the WLAN interface -nmcli device status # check the status of the interfaces -nmcli device wifi list # list available APs -nmcli device wifi connect # connect to an AP +systemctl enable NetworkManager.service ``` -More information: [Arch Linux Wiki > Wireless](https://wiki.archlinux.org/title/Network_configuration/Wireless) +> [!TIP] More information: [Arch Linux Wiki > Wireless](https://wiki.archlinux.org/title/Network_configuration/Wireless) ### Enable Other System Services +Edit `/etc/xdg/reflector/reflector.conf` and replace its contents with the following: + +``` +--latest 10 +--age 18 +--protocol https +--sort rate +--save /etc/pacman.d/mirrorlist +``` + +Lastly, enable the services: + ```bash systemctl enable reflector.service systemctl enable earlyoom.service