How to Install and Configure Awesome WM on Arch Linux
Categories:
5 minute read
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:
- Edit or create the
~/.xinitrc
file:
nano ~/.xinitrc
- Add the following line:
exec awesome
- 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
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.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.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:
- Create the script:
mkdir -p ~/.config/awesome
nano ~/.config/awesome/autorun.sh
- Example contents:
#!/bin/bash
nm-applet &
picom &
volumeicon &
- Make it executable:
chmod +x ~/.config/awesome/autorun.sh
- 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
orrofi
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.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.