How to Install and Configure Awesome WM on Arch Linux

How to Install and Configure Awesome WM on Arch Linux

Arch Linux is known for its simplicity, flexibility, and minimalism, which makes it a perfect environment for lightweight window managers like Awesome WM. Awesome is a highly configurable, dynamic window manager for X. It is particularly targeted at power users, developers, and anyone who wants to fine-tune their desktop environment for maximum productivity.

This article will guide you through the installation, basic configuration, and post-install enhancements of Awesome WM on Arch Linux. By the end of this tutorial, you will have a functional and personalized Awesome WM setup.


🧰 Prerequisites

Before diving into the installation, make sure that:

  • You have Arch Linux installed.
  • You have access to the internet.
  • You are familiar with using the terminal.
  • You have a user account with sudo privileges.
  • You have a working X environment or at least the basic X server packages installed.

If your system does not have a graphical environment yet, make sure to install the Xorg server:

sudo pacman -S xorg-server xorg-xinit xterm

🚀 Step 1: Install Awesome WM

Awesome is available in the official Arch Linux repositories. You can install it with pacman:

sudo pacman -S awesome

This installs the core Awesome WM binaries and its Lua-based configuration files.


🎨 Step 2: Install a Display Manager or xinit

You can launch Awesome either through a Display Manager (DM) like GDM, LightDM, or through startx.

Option A: Using startx and .xinitrc

If you want to keep things minimal:

  1. Edit or create the ~/.xinitrc file:
nano ~/.xinitrc
  1. Add the following line:
exec awesome
  1. Save and exit, then start X with:
startx

Option B: Using a Display Manager

If you prefer a graphical login, install a DM like LightDM:

sudo pacman -S lightdm lightdm-gtk-greeter
sudo systemctl enable lightdm.service
sudo systemctl start lightdm.service

Awesome will appear as a session option in the DM’s session menu.


🛠️ Step 3: Configure Awesome WM

Awesome uses Lua for its configuration. The default config files are located in /etc/xdg/awesome/. However, it’s recommended to copy them to your home directory:

mkdir -p ~/.config/awesome
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/

Now you can begin customizing:

nano ~/.config/awesome/rc.lua

Let’s break down some of the key sections of rc.lua:

Key Areas in rc.lua

  1. Theme: Awesome uses themes for visual elements like colors and fonts. You can switch themes by editing:

    beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
    

    You can replace "default/theme.lua" with another theme path.

  2. Key Bindings: This section defines how you interact with the WM using the keyboard. You can add your own hotkeys or modify existing ones.

    Example:

    awful.key({ modkey }, "Return", function () awful.spawn(terminal) end,
              {description = "open a terminal", group = "launcher"})
    

    This binds Mod + Enter to open your default terminal.

  3. Autostart Applications: Add a section near the top of your config to autostart programs:

    awful.spawn.with_shell("picom &")
    awful.spawn.with_shell("nm-applet &")
    awful.spawn.with_shell("volumeicon &")
    

🧩 Step 4: Install Essential Utilities

To make Awesome more functional and user-friendly, install the following:

1. Terminal Emulator

sudo pacman -S kitty

Set it as your default terminal in rc.lua:

terminal = "kitty"

2. File Manager

You can use Thunar or PCManFM:

sudo pacman -S thunar

3. Compositor (for transparency and effects)

sudo pacman -S picom

Autostart it by adding to your config:

awful.spawn.with_shell("picom --config ~/.config/picom.conf")

4. Network Manager Applet

sudo pacman -S network-manager-applet

Autostart with:

awful.spawn.with_shell("nm-applet")

🌈 Step 5: Enhance the Look

Install a Theme

You can install themes manually or use a theme manager like awesome-wm-widgets or clone from GitHub:

git clone https://github.com/lcpz/awesome-copycats ~/.config/awesome/themes/copycats

Adjust your rc.lua accordingly:

beautiful.init("~/.config/awesome/themes/copycats/multicolor/theme.lua")

Font & Icon Themes

sudo pacman -S ttf-nerd-fonts-symbols ttf-font-awesome

Install icon themes:

sudo pacman -S papirus-icon-theme

Set icon theme via lxappearance:

sudo pacman -S lxappearance

⌨️ Step 6: Customize Keybindings

Keybindings are configured in rc.lua. Here’s how to add custom ones:

Open Browser (Mod + B)

awful.key({ modkey }, "b", function () awful.spawn("firefox") end,
          {description = "open browser", group = "launcher"})

Lock Screen

Install a screen locker:

sudo pacman -S i3lock

Bind it:

awful.key({ modkey, "Control" }, "l", function () awful.spawn("i3lock") end,
          {description = "lock screen", group = "system"})

⚙️ Step 7: Autostart with autorun.sh

For complex startup routines, use an external script:

  1. Create the script:
mkdir -p ~/.config/awesome
nano ~/.config/awesome/autorun.sh
  1. Example contents:
#!/bin/bash
nm-applet &
picom &
volumeicon &
  1. Make it executable:
chmod +x ~/.config/awesome/autorun.sh
  1. In rc.lua:
awful.spawn.with_shell("~/.config/awesome/autorun.sh")

🧪 Step 8: Restart and Test

To apply changes:

  • Restart Awesome with Mod + Ctrl + r.
  • Alternatively, log out and log back in.

Use the terminal or keybindings to verify everything works. You can troubleshoot by running:

awesome -k  # check config syntax

or

awesome --replace  # reload awesome in place

🧠 Tips for Productivity

  • Use dmenu or rofi for application launching:
sudo pacman -S rofi

Launch with:

awful.spawn("rofi -show drun")
  • Use workspaces (tags) effectively.
  • Customize widget bars with awesome-wm-widgets.
  • Monitor system with conky or Awesome widgets.

🧹 Optional: Remove GNOME/KDE Services

If you’re migrating from a heavier desktop environment:

sudo systemctl disable gdm.service
sudo pacman -Rns gnome

Be cautious and only remove packages you no longer need.


✅ Conclusion

Awesome WM is an exceptional tool for users who want a fast, minimalist, and fully configurable desktop experience. While it has a learning curve, especially due to its Lua-based configuration, it rewards users with a high level of control and performance.

With this guide, you’ve gone from a base Arch install to a polished Awesome WM setup. From here, you can explore more advanced Lua scripting, create custom widgets, or even build your own themes.