Introduction

Archi3 Linux is a lean desktop environment for Arch Linux running on x86_64 or AArch64 systems, incl. Apple Silicon / Apple M. It is based on the window manager i3, and it is by design as lightweight as possible and thus only contains the absolutely necessary components, such as a status bar (Polybar), a file manager (PCManFM), an application launcher (Rofi) - have a look at the contained software.

A browser, a mail client etc. do not come with Archi3 Linux. It is up to the user to install the applications of his/her choice.

screenshot of Archi3 Linux

Technically, Archi3 Linux is an Arch Linux package that can be installed during the normal Arch Linux installation process for the different architectures (x86_64, AArch64 (generic) or Apple M1) - have a look at the installation instructions for details.

Predefined configuration

To ensure that the Archi3 system is running in a consistent and integrated fashion, it comes with a predefined configuration.

The i3 configuration of Archi3 is not opinionated in the sense that the i3 default key bindings are substituted by Archi3-specific bindings. Instead, wherever possible, the i3 standard is used.

In some rare cases, the default i3 bindings do not launch i3 default applications but Archi3-specific scripts ($mod+D is starting a Rofi-based application launcher instead of dmenu, for example).

The i3 modifier key can be selected by the user upon first login after installation via the i3-config-wizard.

If Archi3 is installed in a virtual machine it might be the case that the SUPER/WINDOWS key is not forwarded to the VM (this behaviour was observed with Virtualbox). To circumvent this, select the ALT key as modifier.

It is up to the user to adjust the system configuration to his/her needs and desires. Read more about automation of Arch Linux installation and the utilization of meta packages.

Installation

The installation on x86_64 systems follows in essence the standard guide from Arch Linux, while the installation on AArch64 systems follows the platform and device specific installation procedures from Arch Linux ARM or Asahi Linux (for Apple M) extended by parts of the standard guide.

Below, the # sign is used as root prompt.

On x86_64 Systems

  1. Start the installation of Arch Linux on your machine (by following this guide, for example).

    For the rest of this guide, we assume that you have mounted the new root to /mnt. If that’s not the case in your environment, adjust the commands accordingly. # followed by SPACE indicates the root prompt.

  2. To install the basic system, execute

     # pacstrap /mnt base linux-firmware <KERNEL> <MICROCODE> <EDITOR> <MISC_PKGS>
    

    Whereas, …

    • <KERNEL> means the Linux kernel of your choice
    • <MICROCODE> means the microcode for your platform
    • <EDITOR> stands for the text editor of your choice
    • <MISC_PKGS> represents further packages that might be needed. Some file systems can require additional tools - if you use Btrfs for your root partition, the package btrfs-progs is required, for example.
  3. Go forward with the installation and configuration of your system. Finally, install and configure the boot loader.

    Remain in the chroot environment and do not reboot yet!

  4. Adjust /etc/pacman.conf:

    • (Optional, but this makes the installation faster) Enable parallel download of packages by removing the comment sign from the line

        #ParallelDownloads = 5
      
    • Make the Archi3 Linux package repository known to pacman by adding the following lines at the end of the file:

        [archi3linux]  
        Server = https://getpackages.org/repos/archlinux/$repo/$arch  
      
  5. Import GPG key:

     # pacman-key --recv-keys 223AAA374A1D59CE
     # pacman-key --finger 223AAA374A1D59CE
     # pacman-key --lsign-key 223AAA374A1D59CE
    
  6. Update the system and install Archi3 Linux by executing

     # pacman -Syu archi3linux-x
    
  7. Create an (admin) user and set a password for the new user:

     # useradd -mU -s /usr/bin/zsh -G wheel,uucp,sys,users <USER>
     # passwd <USER>
    
  8. Exit the chroot environment, unmount /mnt and reboot.

  9. The i3-config-wizard starts upon first login of the new user asks you to make some basic decisions as described here.

  10. Have fun with your system!

On AArch64 Systems

  1. Choose the correct installation guide for the AArch64 platform for your specific device:

    • This one is for the Raspberry Pi 4, for example. The RPi4 guide contains a section for ARMv7 and another one for AArch64 - go for the latter.
    • For Apple M1, please install Asahi Linux according to this documentation. Choose the Asahi Linux Minimal OS option (which is in fact also Arch Linux ARM).

    Follow the instructions of the installation guide until the end.

  2. Execute the following steps from the standard guide (the examples below are for a German system, please adjust that according to your needs). # followed by SPACE indicates the root prompt:

    • Set the host name:

        # echo <YOUR-HOSTNAME> > /etc/hostname
      
    • Set locale:

        # echo LANG=de_DE.UTF-8 > /etc/locale.conf
      

      Uncomment the following rows of /etc/locale.gen:

        #de_DE.UTF-8 UTF-8
        #de_DE ISO-8859-1
        #de_DE@euro ISO-8859-15
      

      Generate locale:

        # locale-gen
      
    • Set keyboard layout and font:

        # echo KEYMAP=de-latin1 > /etc/vconsole.conf
        # echo FONT=lat9w-16 >> /etc/vconsole.conf
      
    • Set time zone:

        # ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
      
    • Define hosts in /etc/hosts:

        #<ip-address>	<hostname.domain.org>	<hostname>
        127.0.0.1	<YOUR-HOSTNAME>.localdomain	<YOUR-HOSTNAME>
        ::1		localhost.localdomain	localhost
      
    • Set the root password (that’s optional, if you don’t do this the default password root is kept):

        # passwd
      
  3. Adjust /etc/pacman.conf:

    • (Optional, but this makes the installation faster) Enable parallel download of packages by removing the comment sign from the line

        #ParallelDownloads = 5
      
    • Make the Archi3 Linux package repository known to pacman by adding the following lines at the end of the file:

      For Apple M:

        [archi3linux]  
        Server = https://getpackages.org/repos/archlinux/$repo/apple_m  
      

      Otherwise:

        [archi3linux]  
        Server = https://getpackages.org/repos/archlinux/$repo/$arch  
      
  4. Import GPG key:

     # pacman-key --recv-keys 223AAA374A1D59CE
     # pacman-key --finger 223AAA374A1D59CE
     # pacman-key --lsign-key 223AAA374A1D59CE
    
  5. Update the system and install Archi3 Linux by executing

     # pacman -Syu archi3linux-x
    
  6. Create an (admin) user and set a password for the new user:

     # useradd -mU -s /usr/bin/zsh -G wheel,uucp,sys,users <USER>
     # passwd <USER>
    
  7. Reboot the system

  8. The i3-config-wizard starts upon first login of the new user and asks you to make some basic decisions as described here.

  9. Have fun with your system!

Usage

Given the applications that come with Archi3 Linux, its usage one would expect.

Contained Software

The following table shows the most important applications that are contained in Archi3 Linux:

Task/Area Software in Archi3 Linux
Application Launching Rofi
Automated System Locking xidlehook
Background Setting Nitrogen
Editor nano
File Manager PCManFM
Key Manager Gnome Keyring
Manage and select monitor layouts (in case of multiple monitor setups) autorandr, Rofi
Network Manager NetworkManager, nm-applet
Notifications dunst
Screen Locking i3lock
Shell zsh
Shutdown, Reboot, Suspend, etc. Rofi
Status Bar Polybar
Terminal Emulator Alacritty
Themes Adwaita Dark, Numix (Icons), Noto (Fonts)
Volume Control Pavucontrol
Window Manager i3 (i3-wm)
Window Switching Rofi

In some areas Archi3 Linux deviates from the i3 standard. Rofi is used as application launcher instead of dmenu, Polybar is used instead of i3bar and i3status.

screenshot of application launcher

Key Bindings

Wherever possible, Archi3 Linux uses the standard i3 key bindings. However, there are also some minor modifications and enhancements:

Task Key Binding
Start application launcher (but using Rofi instead of dmenu) $mod+d
Switch windows Alt+Tab
Exit i3 (start dialog for lock, log out, reboot, suspend, hibernate, shutdown using Rofi) $mod+Shift+e
Switch monitors (in case of a setup with multiple monitors) using Rofi) $mod+p

Status Bar

screenshot of status bar

The status bar is provided by Polybar. On the left side it shows the active desktops, on the right side (as depicted above) it shows …

  1. the keyboard layout
  2. the current core load (one bar per thread)
  3. the percentage of used space of the root file system
  4. the percentage of used memory
  5. the available battery load (in case the computer has a battery)
  6. the current volume (by clicking on the loudspeaker icon, pavucontrol opens and the volume settings can be adjusted)
  7. an Arch Linux icon, indicating if there are updates available (by clicking on the icon - no matter whether it’s highlighted or greyed out - a window opens and the download and installation of updates is triggered)
  8. date and time
  9. the system tray with the current connections (network, bluetooth etc.)

Multiple Monitors

Archi3 Linux supports setups with multiple monitors. It contains autorandr which gives the user the possibility to save monitor layouts and load them either automatically or manually.

In the following, the default system behaviour is described. To change it, please adjust the corresponding configuration

Status Bar

The status bar is by default displayed on each active monitor. The tray is displayed on the primary monitor only.

Screen Lock

All active monitors are dimmed / undimmed via xidlehook timers before they get locked with i3lock.

Monitor Selection

A monitor layout can be selected with Rofi (default key combination $mod+p). The list shows all layouts that the user saved with autorandr - i.e., if no layouts were saved, the list is empty.

Background Images

To display the background images properly in case of multiple active monitors, the Nitrogen configuration must be adjusted: The file ~/.config/nitrogen/bg-saved.cfg must contain one section [xin_N] ... per monitor like so:

[xin_0]
file=<PATH-TO-BACKGROUND-IMAGE1>
mode=5
bgcolor=#000000

[xin_1]
file=<PATH-TO-BACKGROUND-IMAGE2>
mode=5
bgcolor=#000000

[xin_2]
...

Of course, you can adjust the modes and background colors as you like. Also, the same background image can be used for multiple monitors if this is wished.

Configuration

The user-specific configuration files for the most important applications are listed below. Normally, they are stored in the standard locations.

Application Configuration File(s) Remarks
Alacritty ~/.config/alacritty.yml
autorandr ~/.config/autorandr/* The script postswitch ensures that i3 is restarted after the monitor layout was changed.
picom ~/.config/picom.conf
dunst ~/.config/dunst/dunstrc Default config of dunst is used, except: Colors and position. For context information (which must be configured explicitly, if wanted), Rofi is used.
i3wm ~/.config/i3/*
i3lock ~/.config/i3lock/*
Nitrogen ~/.config/nitrogen/*
PCManFM ~/.config/pcmanfm/*, ~/.config/libfm/libfm.conf ~/.config/libfm/libfm.conf contains the configuration which archiving tool and terminal emulator will be used by PCManFM
Polybar ~/.config/polybar/* The script arch-updates.sh provides information whether new updates are available.
Rofi ~/.config/rofi/* See also the section about Rofi scripts below
xidlehook ~/.config/xidlehook/*

Rofi Scripts

The scripts for launching applications, switching windows, exiting the system, etc. are stored in ~/.config/rofi.

Script Key Combination Purpose
launcher.sh $mod+d Launch an application
monitors.sh $mod+p Select a monitor layout
system.sh $mod+Shift+e Execute system command, such as logout, shutdown etc.
windows.sh Alt+Tab Select one of the open windows

Configure Floating Windows in i3

You might want to have some pop-up windows be floating permanently. This can be achieved with the command for_window in the i3 configuration (see the i3 documentation). To determine the necessary window attributes (class, id, title etc.), the script i3-get-window-criteria can be used (see the i3 faq). The script is part of Archi3 Linux.

Troubeshooting

The status bar is not displayed

Open a terminal via $mod+Return and try to start polybar with the command polybar. If an error message appears that a certain version of libjsoncpp.so is missing (libjsoncpp.so.24 for example), create a symbolic link for that version like so:

$ cd /usr/lib
$ ln -s libjsoncpp.so libjsoncpp.so.24

Log out and log in again, now the status bar should appear.

Some or all graphical symbols are not displayed in the status bar

For many symbols, Material Design Icons are used. It seems that sometimes for some of these symbols their code is changed. Then they cannot be displayed anymore in the status bar. To solve this, go to the Material Design Icons website to the “Cheatsheet” and copy the corresponding icons to the polybar configuration files ~.config/polybar/config (for most of the symbols) and/or ~.config/polybar/arch-updates.sh (for the Arch Linux symbol). Restart your system, and all symbols should appear.

References