{"id":21675902,"url":"https://github.com/sumithemmadi/archlinux-installation-guide","last_synced_at":"2026-04-02T02:06:51.194Z","repository":{"id":131340422,"uuid":"600054215","full_name":"sumithemmadi/ArchLinux-Installation-Guide","owner":"sumithemmadi","description":"This is a guide for arch linux installation with  Openbox Window Managers","archived":false,"fork":false,"pushed_at":"2023-03-08T09:42:53.000Z","size":375,"stargazers_count":21,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-10T22:07:02.352Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sumithemmadi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-10T13:34:34.000Z","updated_at":"2025-05-07T12:46:37.000Z","dependencies_parsed_at":"2023-03-22T22:16:04.511Z","dependency_job_id":null,"html_url":"https://github.com/sumithemmadi/ArchLinux-Installation-Guide","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sumithemmadi/ArchLinux-Installation-Guide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumithemmadi%2FArchLinux-Installation-Guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumithemmadi%2FArchLinux-Installation-Guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumithemmadi%2FArchLinux-Installation-Guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumithemmadi%2FArchLinux-Installation-Guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sumithemmadi","download_url":"https://codeload.github.com/sumithemmadi/ArchLinux-Installation-Guide/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumithemmadi%2FArchLinux-Installation-Guide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31294398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T01:43:37.129Z","status":"online","status_checked_at":"2026-04-02T02:00:08.535Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T14:11:29.885Z","updated_at":"2026-04-02T02:06:51.170Z","avatar_url":"https://github.com/sumithemmadi.png","language":null,"readme":"# ArchLinux-Installation-Guide\n\nThis is a guide for arch linux installation with  Openbox Window Manager.\n\n![Image](https://raw.githubusercontent.com/sumithemmadi/EasyOpenboxWM/main/images/openbox.png)\n\n---\n\n## Installing Arch Linux\n\n### Small notes before we start\n\n- Arch Linux now comes with an installer, so if you just want a minimal system ready in a few minutes, you're better off just doing \n  ```sh\n  archinstall\n  ```\n- The only officially supported architecture by Arch Linux is **x86_64**, so make sure your computer uses that architecture before attempting to install it.\n- This guide is for UEFI only, not BIOS.\n- so you should enable the UEFI mode and disable the secure boot option on your BIOS system. (Also remember to change the boot order to boot through your USB device).\n\n### Bootable Flash Drive\n\nFirst of all, you need the Arch Linux image, that can be downloaded from the [Official Website](https://www.archlinux.org/download/).\nAfter that, you should create the bootable flash drive with the Arch Linux image.\n\n- Write the [Arch Linux ISO](https://www.archlinux.org/download/) into a USB drive. There are several tools available for this, like [dd](https://man.archlinux.org/man/dd.1.en), [balenaEtcher](https://www.balena.io/etcher/).\n\nIf you're on a GNU/linux distribution, you can use the `dd` command for it. Like:\n\n```sh\ndd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync \u0026\u0026 sync\n```\n\n\u003e Note that you need to update the `of=/dev/sdx` with your USB device location (it can be discovered with the `lsblk` command).\n\nOtherwise, if you're on `Windows`, you can use [balenaEtcher](https://www.balena.io/etcher/) or [Rufus](https://rufus.ie/en/).\nYou can follow this [tutorial](https://wiki.archlinux.org/index.php/USB_flash_installation_media#In_Windows)\n\n---\n\n- Disable **Secure Boot** in the UEFI.\n\n- Boot from the USB drive.\n\n### Check boot mode\n\nTo check if the UEFI mode is enabled, run:\n\n```sh\nls /sys/firmware/efi/efivars\n```\n\nIf the directory does not exists, the system may be booted in BIOS (not UEFI).\n\n### (Dual Boot) Disable Fast Startup in Windows\n\n\u003chttps://help.uaudio.com/hc/en-us/articles/213195423-How-To-Disable-Fast-Startup-in-Windows-10\u003e\n\n---\n\n### Pre installation\n\nTime to connect to the Internet:\n\n- If you're not going to use DHCP, [check the Arch Wiki on how to manually set a static IP](https://wiki.archlinux.org/title/Network_configuration#Static_IP_address).\n- If you're using a wired connection (recommended), it should already be working.\n- If you're using a wireless connection, the live system comes with `iwd` enabled, so you can use `iwctl`. `iwctl`'s man page (`man iwctl`) shows a simple example on how to connect to a network.\n  ![iwctl](https://raw.githubusercontent.com/sumithemmadi/ArchLinux-Installation-Guide/main/images/fileOHRD6BQC.jpg)\n- If scanning with `iwctl` isn't working (you get no networks found), simply do `systemctl restart iwd` and try again.\n- Do `ping -4c4 archlinux.org` to verify that everything is working properly.\n\n  ```sh\n  ping -4c4 archlinux.org\n  ```\n\n### Update System Clock\n\nEnsures that the system clock is accurate.\n\n  ```sh\n  timedatectl set-ntp true\n  ```\n\n### Partitioning\n\nFirst, define your partitions size. There's no rules about this process.\n\n\u003e Tip: If you use a SSD drive, it's recommended to leave 25% of his storage free. More info [here](https://wiki.archlinux.org/index.php/Solid_State_Drives#TRIM).\n\nMy SSD has 512GB of storage. I want to have Dual-Boot with Windows11. If Windows was installed first, then you could see it's partitions. For that example, I have 4 Windows partitions already created:\n(in my case, I'll work with `/dev/nvme0n1` disk. Use `fdisk -l /dev/nvme0n1` to list partitions)\n\n| Name |      Size       | Type |\n| :--: | :-------------: | :--: |\n| nvme0n1p1 | 625M       | Windows recovery environment  |\n| nvme0n1p2 | 100M       | EFI System |\n| nvme0n1p3 | 16M        | Microsoft Reserved |\n| nvme0n1p4 | 356G      | Microsoft Basic Data |\n\nEFI partition was created by Windows, so we don't need to care about it. We need to create additional partitions for Linux installation.\n\n| Name |    Mount     |      Size       | Type |\n| :--: | :----------: | :-------------: | :--: |\n| nvme0n1p5 | `swap`  | 4G       | Linux Swap  |\n| nvme0n1p6 | `/`     | 32G      | Linux Root x86-64 (Ext4) |\n| nvme0n1p7 | `/home` | Remaining Space        | Linux Home (Ext4) |\n\nLook at partitioning layout examples: \u003chttps://wiki.archlinux.org/index.php/partitioning#Example_layouts\u003e\n\n#### Create Partitions\n\nUse [fdisk](https://wiki.archlinux.org/index.php/Fdisk) to create partitions.\n\nTo create partitions, I'll use `gdisk` since to work on UEFI mode we need GPT partitions.\n\nFirst, list partitions (Informational only) with the following command\n\n```sh\nfdisk -l /dev/nvme0n1\n```\n\nHere's a table with some handy gdisk commands\n\n| Command | Description            |\n| :-----: | ---------------------- |\n| p       | Print partitions table |\n| n       | Add a new partition       |\n| d       | Delete a partition       |\n| w       | Write table to disk and exit        |\n| l       | List known partition types                   |\n| t       | Change a partition type                   |\n| m       | Help                   |\n\n1. Enter in the interactive menu\n\n    ```sh\n     fdisk /dev/nvme0n1\n    ```\n\n1. Create boot partition (If not Dual-Boot)\n    - Type `n` to create a new partition\n    - Partition Number: default (return)\n    - First Sector: default\n    - Last Sector: `+512M`\n    - Type: `1` - EFI System\n\n1. Create root partition\n    - Type `n` to create a new partition\n    - Partition Number: default\n    - First Sector: default\n    - Last Sector: `+32G`\n    - Type: `24` - Linux Root (x86-64)\n\n1. Create swap partition\n    - Type `n` to create a new partition\n    - Partition Number: default\n    - First Sector: default\n    - Last Sector: `+4G`\n    - Type: `19` - Linux Swap\n\n1. Create home partition\n    - Type `n` to create a new partition\n    - Partition Number: default\n    - First Sector: default\n    - Last Sector: default\n    - Type: `28` - Linux Home\n\n1. Save changes with `w`\n\n#### Format partitions\n\nOnce the partitions have been created, each (except swap) should be formatted with an appropriated file system. So run:\n\n```sh\nmkfs.btrfs -L arch_root /dev/nvme0n1p6  #-- root partition\nmkfs.btrfs -L HOME /dev/nvme0n1p7       #-- home partition\n\n```\n\nIf not Dual Boot format partition for EFI boot\n\n```sh\nmkfs.fat -F32 -n BOOT /dev/nvme0n1p2  #-- boot partition\n```\n\nThe process for swap partition is slight different:\n\n```sh\nmkswap -L swap /dev/nvme0n1p5\nswapon /dev/nvme0n1p5\n```\n\n\u003e To check if the swap partition is working, run `swapon -s` or `free -h`.\n\n#### Mount file system\n\n1. Mount root partition:\n\n    ```sh\n     mount /dev/nvme0n1p6 /mnt\n    ```\n\n1. Mount home partition:\n\n    ```sh\n    mkdir -p /mnt/home\n    mount /dev/nvme0n1p7 /mnt/home\n    ```\n\n1. Mount boot partition: (to use `grub-install` later)\n\n    ```sh\n    mkdir -p /mnt/boot\n    mount /dev/nvme0n1p2 /mnt/boot\n    ```\n\n    Do `lsblk` to verify everything is correct.\n\n---\n\n## Installation\n\nNow we'll install arch on disk\n\n### Select Mirror\n\nBefore installation,It is recommended to select the best mirror servers.\n\nSo open the file `/etc/pacman.d/mirrorlist` (again, you can use `nano` or `vi` to do that) and move the best mirror to the top of the file.\n\n\u003e **Tip**: That [link](https://www.archlinux.org/mirrorlist/) generates a mirror list based on your location, you can use them as reference.\n\n### Install Base Packages\n\nNow that the mirrors are already set, use `pacstrap` to install the base package group:\nOpen the file `/etc/pacman.conf` and uncomment the line `#ParallelDownloads = 5`\n\n  ```sh\n  pacstrap /mnt base{,-devel} btrfs-progs dkms linux{{,-lts}{,-headers},-firmware} nano\n  ```\n\n- If the install failed because of signature issues, run below command to update the keyring and try again\n  ```sh\n  pacman -Sy --needed archlinux-keyring\n  ```\n\n### Generate fstab\n\nNow you should generate the fstab with the `genfstab` script:\n\n```sh\ngenfstab -p /mnt \u003e\u003e /mnt/etc/fstab\n```\n\n\u003e Optional: You can add `noatime,commit=60,barrier=0` to the generated `fstab` file (on root and home partitions) to increase IO performance. \u003chttps://wiki.archlinux.org/index.php/ext4#Improving_performance\u003e\n\n### Chroot\n\nNow, we'll change root into the new system\n\n```sh\narch-chroot /mnt\n```\n\n### Check pacman keys\n\n```sh\npacman-key --init\npacman-key --populate archlinux\n```\n\n---\n\n## Basic system configuration\n\n- Again open the file `/etc/pacman.conf` and uncomment the line `#ParallelDownloads = 5`\n\n  ```sh\n  nano /etc/pacman.conf\n  ```\n\n- Uncomment this line `#ParallelDownloads = 5`\n- Press `CRTL + S` to save and `CRTL + X` to exit\n\nInstall some important packages with\n\n  ```sh\n  pacman -S dhclient git man-{db,pages} nano networkmanager openssh polkit vi vim\n  ```\n\n- Edit the file `/etc/NetworkManager/conf.d/dhcp.conf` to contain the following:\n\n  ```conf\n  [main]\n  dhcp=dhclient\n  ```\n\n- Edit the file `/etc/NetworkManager/conf.d/dns.conf` to contain the following:\n\n  ```conf\n  [main]\n  dns=systemd-resolved\n  ```\n\n- If you want to enable [mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) support, which is useful for adding network printers for example, do the following:\n  - Edit the file `/etc/systemd/resolved.conf` and uncomment the line `#MulticastDNS=yes`\n  - Edit the file `/etc/NetworkManager/conf.d/dns.conf` and add the following lines:\n\n    ```conf\n    [connection]\n    connection.mdns=2\n    ```\n\n---\n\n- Do `ln -svf /usr/share/zoneinfo/$(tzselect | tail -1) /etc/localtime` to set your timezone.\n- Example\n\n  ```sh\n  ln -svf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime\n  ```\n  \n- Then, do `hwclock -w` to update the hardware clock.\n- You can do `hwclock -r` to see the current time stored by the hardware clock. You'll notice that it takes the timezone into account.\n\n---\n\n- Open the file `/etc/locale.gen`. Uncomment the `en_US.UTF-8` and any other locales you want to use.\n- Do `locale-gen` to generate the uncommented locales.\n- Do \u003ccode\u003eecho LANG=**LOCALE** \u003e /etc/locale.conf\u003c/code\u003e, **LOCALE** being your preferred locale from the ones you just generated.\n- Example\n\n  ```gen\n  echo LANG=en_US.UTF-8 \u003e /etc/locale.conf\n  ```\n\n- Now you'll have to execute the following command:\n\n  ```sh\n  locale-gen\n  ```\n  \n- Do \u003ccode\u003eecho KEYMAP=**KEYMAP** \u003e /etc/vconsole.conf\u003c/code\u003e, **KEYMAP** being the name of the keymap you're using (set when you used the `loadkeys` command earlier).\n- Example:\n\n  ```sh\n  echo KEYMAP=mac-us \u003e /etc/vconsole.conf\n  ```\n\n- Do `echo FONT=lat0-16 \u003e\u003e /etc/vconsole.conf`. You can find all fonts available in `/usr/share/kbd/consolefonts`.\n\n---\n\n- Do \u003ccode\u003eecho **HOSTNAME** \u003e /etc/hostname\u003c/code\u003e, **HOSTNAME** being the name you want your system to have.\n- The hostname must be compatible with the following regex expression: `^(:?[0-9a-zA-Z][0-9a-zA-Z-]{0,61}[0-9a-zA-Z]|[0-9a-zA-Z]{1,63})$`.\n- You can [click here](https://regexr.com/4f7ah) and put the hostname you want your computer to have in the text field to see if you can actually use it.\n- Edit the file `/etc/hosts` to contain the following:\n\n  \u003cpre\u003e\u003ccode\u003e\n  # Static table lookup for hostnames.\n  # See hosts(5) for details.\n\n  127.0.0.1   localhost\n  ::1         localhost\n  127.0.1.1   HOSTNAME\n  \u003c/code\u003e\u003c/pre\u003e\n\n  \u003e Note: **HOSTNAME** being the hostname you chose in the previous command.\n\n---\n\n- Enable some services with\n\n  ```sh\n  systemctl enable sshd NetworkManager systemd-resolved\n  ```\n\n- If you have an SSD, do\n\n  ```sh\n  systemctl enable fstrim.timer\n  ```\n\n- Run below commad for the system to automatically update the pacman keyring.\n\n  ```sh\n  systemctl enable archlinux-keyring-wkd-sync.timer\n  ```\n\n### Initramfs\n\n- Edit the file `/etc/mkinitcpio.conf` and change `udev` to `systemd` in the `HOOKS` list.\n  https://wiki.archlinux.org/index.php/Installation_guide#Initramfs\n\n- Creating a new initramfs is usually not required.\n\n  ```sh\n  mkinitcpio -P linux\n  ```\n\n## How To Set the Root Password\n\nYou may want to set a password for the root user because why not? To do so, execute the following command:\n\n```sh\npasswd\n```\n\nThe passwd command lets you change the password for a user. By default it affects the current user's password which is the root right now.\n\nIt'll ask for a new password and confirmation password. Input them carefully and make sure you don't forget the password.\n\n---\n\n## How To Install Microcode\n\nAccording to PCMag,\n\n\u003e A set of elementary instructions in a complex instruction set computer (CISC). The microcode resides in a\nseparate high-speed memory and functions as a translation layer between the machine instructions and the\ncircuit level of the computer. Microcode enables the computer designer to create machine instructions\nwithout having to design electronic circuits.\nProcessor manufacturers such as Intel and AMD often release stability and security updates to the\nprocessor. These updates are crucial for the system's stability.\n\nIn Arch Linux, microcode updates are available through official packages that every user should install on their systems.\n\nJust installing these packages is not enough though. You'll have to make sure that your bootloader is loading them. You'll learn about it in the next section.\n\n- Time to install the microcode updater:\n  - If you're using an Intel CPU, do\n\n    ```sh\n    pacman -S intel-ucode\n    ```\n\n  - If you're using an AMD CPU, do\n\n    ```sh\n    pacman -S amd-ucode\n    ```\n\n---\n\n## How To Install and Configure a Boot Loader\n\n- Run below command to install grub and efibootmgr.\n\n  ```sh\n  pacman -S grub efibootmgr os-prober\n  ```\n- If you're dual-booting with other operating systems, you'll have to enable os-prober before generating the configuration file. To do so, open the `/etc/default/grub` file in nano text editor. Locate the following line and uncomment it:\n  \n  ```grub\n  # GRUB_DISABLE_OS_PROBER=false\n  ```\n\n  \u003e This should be the last line in the aforementioned file so just scroll to the bottom and uncomment it.\n\n- Then do \n  ```sh\n  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch\\ Linux\n  ```\n- Then do\n\n  ```\n  grub-mkconfig -o /boot/grub/grub.cfg\n  ```\n\n- Do `exit` and then `umount -R /mnt`.\n- You can now do `shutdown now`.\n\n## Congratulations! You've installed Arch Linux\n\n***But we're not done yet. We still have to create a user and do some final touches***\n\n---\n---\n---\n\n## Creating a user\n\n- Start by logining in as **`root`**. Do `ln -svf /run/systemd/resolve/resolv.conf /etc/resolv.conf`.\n\n  ```sh\n  ln -svf /run/systemd/resolve/resolv.conf /etc/resolv.conf\n  ```\n\n  ```sh\n  sudo pacman -S zsh\n  ```\n\n- Change **`root`**'s shell by doing `chsh -s /bin/zsh`.\n- Do `timedatectl set-ntp true` and `timedatectl status` again to make sure the time is setup correctly. The RTC and Universal time should be in UTC and the Local time in your timezone.\n\n---\n\n- Now add a user by doing \u003ccode\u003e useradd -m -U -G wheel -s /bin/zsh -c \"**REAL NAME**\" **USERNAME**\u003c/code\u003e, **REAL NAME** being the user's real name, and **USERNAME** a valid username.\n  Example:\n  ```sh\n  useradd -m -U -G wheel -s /bin/zsh -c \"Sumith Emmadi\" sumithemmadi\n  ```\n- Usernames in Unix-like OSs are valid if they're compatible with the regex expression `^[a-z_]([0-9a-z_-]{0,31}|[0-9a-z_-]{0,30}\\$)$`.\n\n- You can check if a username is valid by clicking [here](https://regexr.com/4f7er).\n\n- Set the user's password with \u003ccode\u003e passwd **USERNAME**\u003c/code\u003e.\n  Example:\n\n  ```sh\n  passwd sumithemmadi\n  ```\n\n- Finally, you'll have to enable sudo privilege for this new user. To do so, open the `/etc/sudoers` file using nano. Once open, locate the following line and uncomment it:\n\n  ```txt\n  # %wheel ALL=(ALL:ALL) ALL\n  ```\n\n- Add the line `Defaults pwfeedback`, preferably before `## Runas alias specification` in same file, if you want asterisks when inputting your password.\n\n- This file essentially means that all users in the wheel group can use sudo by providing their password. Save the file by hitting Ctrl + S and exit nano by hitting Ctrl + X. Now the new user will be able to use sudo when necessary.\n\n---\n\n- Do `nmtui` and setup your Internet connection.\n- Open the file `/etc/pacman.conf` and perform the following:\n\n  - Uncomment the line `#ParallelDownloads = 5`.\n  - Uncomment the line `#[multilib]` and the line below it.\n\n- Do `pacman -Syu` to update `pacman`'s configuration and to perform any updates available.\n- Reboot by doing `shutdown -r now`.\n\n---\n---\n---\n\n## User configuration\n\n- Login as the user you've created. In the ZSH configuration, continue to configure zsh or press *q* to quit if you already have a configuration in your dotfiles.\n\n  ```sh\n  sudo pacman -S bat lm_sensors neofetch\n  ```\n\n---\n\n### Additional Tools\n\n#### Install Paru AUR helper in Arch Linux, EndeavourOS, Manjaro Linux\n\nInstalling Paru in Arch Linux is easy!\n\n- First, install git and base-devel package group that includes tools needed for building (compiling and linking) packages from source.\n  \n  ```sh\n  sudo pacman -S --needed git base-devel\n  ```\n  \n- Git clone Paru repository using command:\n\n  ```bash\n  git clone https://aur.archlinux.org/paru-bin.git\n  ```\n\n  \u003e This command will download the contents of the Paru GitHub repository in a local directory named paru-bin.\n\n- Change into the paru directory:\n\n  ```bash\n  cd paru-bin\n  ```\n\n- Finally, build and install Paru AUR helper in Arch Linux using the following command:\n\n  ```bash\n  makepkg -sri\n  ```\n\n- After the installation is done, do `cd ..`, and then `rm -rf paru-bin`.\n\n- Now you can use `paru` for install packages from [AUR](https://aur.archlinux.org/paru.git)\n\n- From now on we'll be using `paru` instead of `sudo pacman`.\n\n  ```sh\n  paru -S xdg-user-dirs pacman-cleanup-hook\n  ```\n\n#### oh-my-zsh\n\n1. Setup zsh with [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) framework.\n\n   ```bash\n   paru -S oh-my-zsh-git oh-my-zsh-plugin-syntax-highlighting oh-my-zsh-plugin-autosuggestions\n   ```\n\n## Extras\n\n### Set-up TTF Fonts\n\n  Follow [this tutorial](https://gist.github.com/cryzed/e002e7057435f02cc7894b9e748c5671)\n\n### Bluetooth Headphone\n\nTo connect the headphone:\n\n1. Install required packages:\n\n    ```sh\n    sudo pacman -S pulseaudio pulseaudio-bluetooth pavucontrol bluez-utils\n    ```\n\n1. Edit `/etc/pulse/system.pa` and add:\n\n    ```sh\n    load-module module-bluez5-device\n    load-module module-bluez5-discover\n\n1. Connect to bluetooth device\n\n    ```sh\n    $ bluetoothctl\n    # power on\n    # agent on\n    # default-agent\n    # scan on\n    # pair HEADPHONE_MAC\n    # trust HEADPHONE_MAC\n    # connect HEADPHONE_MAC\n    # quit\n    ```\n\nTo auto switch to A2DP mode:\n\n1. Edit `/etc/pulse/default.pa` and add:\n\n    ```sh\n    .ifexists module-bluetooth-discover.so\n    load-module module-bluetooth-discover\n    load-module module-switch-on-connect  # Add this line\n    .endif\n    ```\n\n1. Modify (or create) `/etc/bluetooth/audio.conf` to auto select AD2P profile:\n\n    ```sh\n    [General]\n    Disable=Headset\n    ```\n\n1. Reboot PC to apply changes `reboot` .\n\n---\n\n### Congratulations! You finally have Arch Linux installed, and it's actually usable now.\n\n---\n\n## How to install Openbox Window Manager\n\nInstalling Openbox\n\n- To have audio, do `paru pipewire` and select the following packages:\n\n  - `extra/pipewire`\n  - `extra/pipewire-alsa`\n  - `extra/pipewire-jack`\n  - `extra/pipewire-pulse`\n  - `extra/wireplumber`\n  - `multilib/lib32-pipewire`\n  - `multilib/lib32-pipewire-jack`\n\n  or \n  ```bash\n  paru -S \\\n    extra/pipewire \\\n    extra/pipewire-alsa \\\n    extra/pipewire-jack \\\n    extra/pipewire-pulse \\\n    extra/wireplumber \\\n    multilib/lib32-pipewire \\\n    multilib/lib32-pipewire-jack\n  ```\n\n- For fonts, run below command \n\n  ```\n  paru -S noto-fonts{,-{cjk,emoji,extra}} ttf-fira-code\n  ```\n\n- To install Rust (which we'll need to compile packages from the AUR):\n  - Do `paru -S rustup`.\n  - Do `rustup default stable`.\n\n- I use a simple TUI greeter. To install it, do `paru -S greetd{,-tuigreet}`.\n  - For the provider of `greetd`, simply select `greetd`.\n\n- Edit `/etc/greetd/config.toml`:\n  - Change the `command` setting to `tuigreet -itrc 'systemd-cat -t xinit xinit -- :1'`.\n\n- Do `sudo systemctl enable greetd`.\n\n- For the base of the graphical environment, do `paru -S alacritty openbox  xorg-{server,xinit}`.\n  - Get the default configuration files by doing the following commands:\n    - `cp /etc/X11/xinit/xinitrc ~/.xinitrc`.\n    - `cp /etc/X11/xinit/xserverrc ~/.xserverrc`.\n  - Edit `~/.xinitrc` and replace the last block of commands with `exec openbox-session`. Remove all last lines from `twm \u0026` to last line.\n\n    ![image](https://raw.githubusercontent.com/sumithemmadi/ArchLinux-Installation-Guide/main/images/draw.png)\n  \n  - replace the last block of commands with `exec openbox-session`\n\n    ![image](https://raw.githubusercontent.com/sumithemmadi/ArchLinux-Installation-Guide/main/images/draw1.png)\n\n  - Edit `~/.xserverrc` so that the contents of the file are the following:\n\n    ```sh\n    #!/bin/sh\n    exec /usr/bin/X -nolisten tcp -nolisten local \"$@\" vt$XDG_VTNR\n    ```\n\nIf you want to use **openbox** with the setup I use =\u003e  [EasyOpenboxWM](https://github.com/sumithemmadi/EasyOpenboxWM.git).\n\n- Install required dependencies\n\n  ```bash\n  pacman -S  xorg xorg-font-util xorg-xrdb xorg-xdm  xorg-server xorg-xinit sxhkd \\\n  xfce4-settings xfce4-terminal polybar ranger rofi startup-notification thunar   \\\n  openbox   obconf xarchiver dbus desktop-file-utils elinks gtk2 gtk3 man flameshot \\\n  zsh git  vim nano curl wget jq xarchiver firefox imagemagick geany alacritty gedit \\\n  bc bmon calc calcurse feh htop scrot mpc mpd mutt ncmpcpp neofetch  openssl leafpad \\\n  xmlstarlet xbitmaps ranger  xcompmgr nitrogen brightnessctl alsa-utils imv maim mpv \n  ```\n\n- Clone this repository\n\n  ```sh\n  cd ~/\n  git clone https://github.com/sumithemmadi/EasyOpenboxWM.git\n  cd EasyOpenboxWM\n  ```\n\n- Run below command to install open box config files.\n\n  ```bash\n  configs=($(ls -A $(pwd)/files))\n  for _config in \"${configs[@]}\"; do\n     cp -rf $(pwd)/files/$_config $HOME;\n  done\n  ```\n\n- And wait for some time untill installation is done.\n\n  Start Openbox Window Manager:\n\n  ```bash\n  startx\n  ```\n\n- If not working, restart your PC and run again.\n  \u003e If it shows a black screen then press `CTRL + AL + F1` and with your username.\n\n\n## Enabling Tap-to-click\n\nFollow these steps to enable tap-to-click in window manager.\n\nFollow these steps carefully, they require root privileges! ⚠️\n\n  Install this package.\n\n  ```sh\n  sudo pacman -S --needed xf86-input-libinput\n  ```\n\n  Then Edit this file.\n\n  ```sh\n  sudo nano /etc/X11/xorg.conf.d/30-touchpad.conf\n  ```\n\n  Paste this text into 30-touchpad.conf\n\n  ```conf\n  Section \"InputClass\"\n    Identifier \"touchpad\"\n    Driver \"libinput\"\n    MatchIsTouchpad \"on\"\n    Option \"tapping\" \"on\"\n    Option \"AccelProfile\" \"adaptive\"\n    Option \"TappingButtonMap\" \"lrm\"\nEndSection\n  ```\n\n\n  Save the file (Ctrl + S)\n  Quit the editor (Ctrl + X)\n  \n  Reboot\n\nTap to click should now be enabled!\n\n## Keybindings\n\nHere's some shortcut keys you want to use to speed up your work. For more, `Right click on desktop \u003e Keybinds`\n\n|Keys|Action| ----- |Keys|Action|\n|--|--|--|--|--|\n| `W-1` | Go To Desktop 1 |  |`S-W-1` | Send To Desktop 1 |\n| `W-2` | Go To Desktop 2 |  |`S-W-2` | Send To Desktop 2 |\n| `W-3` | Go To Desktop 3 |  |`S-W-3` | Send To Desktop 3 |\n| `W-4` | Go To Desktop 4 |  |`S-W-4` | Send To Desktop 4 |\n| `W-5` | Go To Desktop 5 |  |`S-W-5` | Send To Desktop 5 |\n||||||\n| `W-S-Left` | Send To Prev Desktop |  | `W-S-Right` | Send To Next Desktop |\n| `A-Tab` | Next Window (Current Workspace) |  |`W-Tab` | Next Window (All Workspaces) |\n||||||\n| `W-h` | Move to TopLeft |  | `W-j` | Move to BottomLeft |\n| `W-k` | Move to TopRight |  | `W-l` | Move to BottomRight |\n| `W-Left` | Move To Left Edge |  | `W-Right` | Move To Right Edge |\n| `W-Up` | Maximized |  | `W-Down` | Unmaximized |\n||||||\n| `W-q/c` | Close Windows |  | `A-r/m` | Toggle Resize/Move |\n| `W-Space` | Openbox Menu |  | `W-p/A-F1` | App Launcher |\n| `W-d` | Toggle Desktop |  | `W-v` | Set Tasks |\n||||||\n| `W-f` | File Manager |  | `W-e` | Text Editor |\n| `W-t/return` | Terminal |  | `W-w` | Web Browser |\n| `W-x` | Exit Menu |  | `W-m` | Music Menu |\n| `W-b` | Battery Menu |  | `W-n` | Network Menu |\n| `C-A-v` | Vim |  | `C-A-r` | Ranger |\n| `C-A-h` | Htop |  | `C-A-n` | Nano |\n\n## References\n\n- \u003chttps://wiki.archlinux.org/index.php/installation_guide\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsumithemmadi%2Farchlinux-installation-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsumithemmadi%2Farchlinux-installation-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsumithemmadi%2Farchlinux-installation-guide/lists"}