Installing and configuring Awesome WM in Archlinux

Start by installing xorg and nvidia graphics

pacman -S xorg-server xorg-server-utils xorg-xinit xorg-utils xorg-twm xorg-xclock xterm xorg-xrandr nvidia nvidia-libgl xf86-input-evdev



Install awesome, touchpad support and vicious

pacman -S awesome xf86-input-synaptics vicious hddtemp alsa-utils wireless_tools

Create .xinitrc

echo "exec awesome" >> ~/.xinitrc

Create the configuration folder and copy config file

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

Get the PCI address for the NVIDIA card. It’s the first seven characters of the line that contains NVIDIA.

lspci | grep -E "VGA|3D"

Edit /etc/X11/xorg.conf and in BusID use the PCI address from the step before. Attention: if your PCI address is something like 01:00:00, here you will have to use in this format: 1:0:0.


Section "Module"
    Load "modesetting"

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID ""
    Option "AllowEmptyInitialConfiguration"

Add to .xinitrc, so it looks like that

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
setxkbmap be
exec awesome

Get the modeline for the resolution you want to test

cvt 1368 768

Test your resolution (mine is 1368×768)

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync
xrandr --addmode eDP-1 1368x768_60.00
xrandr --output eDP-1 --mode 1368x768_60.00

Once you are satisfied with your resolution tested with xrandx, persist it by editing /etc/X11/xorg.conf.d/10-monitor.conf with:

Section "Monitor"
    Identifier "eDP-1"
    Modeline "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync
    Option "PreferredMode" "1368x768_60.00"

Section "Screen"
    Identifier "Screen0"
    Monitor "eDP-1"
    DefaultDepth 24
    SubSection "Display"
        Modes "1368x768_60.00"

Install xcompmgr, rxvt-unicode and ttf-dejavu

pacman -S xcompmgr rxvt-unicode ttf-dejavu

Place this after the awful request in your ~/.config/awesome/rc.lua:

awful.util.spawn_with_shell("xcompmgr -c -C -t-5 -l-5 -r4.2 -o.55 &")

Still in rc.lua, modify the terminal from xterm to urxvt

terminal = "urxvt"

Create .Xdefauls with the config you want. Edit this example as you like:

# transparency – true or false (default)
URxvt*transparent: true

# tint with any color; i.e., blue, red, tomato4, olivedrab2, etc.
#   some nice listings are at:
#URxvt*tintColor: Blue

# shading – 0 to 99 darkens, 101 to 200 lightens.
#   Don’t use with tintColor; just use a darker or lighter color instead.
#URxvt*shading: 40

# scrollback buffer lines – 65535 is max on most machines (64 is default)
URxvt*saveLines: 12000

# font color (default is black)
URxvt*foreground: White

# background color (prior to tinting) (default is white)
URxvt*background: Blue

# Xft (X FreeType) with Bitstream, DejaVu, Liberation, or Terminus fonts:
#  Fedora/debian packages: libXft/libxft2
#  An anti-aliased font setup with Xft looks fantastic; it can be a bit choppy
#  on older systems. You can always turn off anti-aliasing (antialias=false) if
#  your terminal is sluggish. Use only ONE of the Xft pairs below:
# Xft: Bitstream fonts
#  Fedora/debian packages: bitstream-vera-sans-mono-fonts/ttf-bitstream-vera
#URxvt*font: xft:Bitstream Vera Sans Mono:pixelsize=12:antialias=true:hinting=true
#URxvt*boldFont: xft:Bitstream Vera Sans Mono:bold:pixelsize=12:antialias=true:hinting=true
# Xft: DejaVu fonts
#  Fedora/debian packages: dejavu-sans-mono-fonts/ttf-dejavu
URxvt*font: xft:DejaVu Sans Mono:pixelsize=12:antialias=true:hinting=true
URxvt*boldFont: xft:DejaVu Sans Mono:bold:pixelsize=12:antialias=true:hinting=true
# Xft: Liberation fonts
#  Fedora/debian packages: liberation-mono-fonts/ttf-liberation
#URxvt*font: xft:Liberation Mono:pixelsize=13:antialias=true:hinting=true
#URxvt*boldFont: xft:Liberation Mono:bold:pixelsize=13:antialias=true:hinting=true
# Xft: Terminus fonts
#  Fedora/debian packages: terminus-fonts/xfonts-terminus
#URxvt*font: xft:terminus:pixelsize=15
#URxvt*boldFont: xft:terminus:bold:pixelsize=15

# Traditional fonts – a more traditional font setup in lieu of xft

# Replace blue folder colors with a lighter shade for clarity. To
#  set colored folders and files within urxvt, xterm, and aterm, add
#  the following line to your ~/.bashrc ($HOME/.bashrc) file under
#  the heading “# User specific aliases and functions”:
#   alias ls=”ls -h –color=auto”
URxvt*color4: RoyalBlue
URxvt*color12: RoyalBlue

# scrollbar – true (default) or false
URxvt*scrollBar: false

# scrollbar position – left=false (default) or right=true
URxvt*scrollBar_right: false

# scrollbar style – rxvt (default), plain, next, or xterm
URxvt*scrollstyle: rxvt

#URxvt*borderLess: true

Add this to the top of ~/.config/awesome/rc.lua

vicious = require("vicious")

Now setup your tags. Modify this as you like:

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {
  names = {
          ":: control", 
          ":: dev",
          ":: www",
          ":: irc",
          ":: mail",
          ":: agenda",
          ":: im",
          ":: rss",
          ":: media "
for s = 1, screen.count() do
-- Each screen has its own tag table.
--  tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1])
tags[s] = awful.tag(tags.names, s)
-- }}}

Now add some Vicious widgets right before the textclock widget. These are just raw examples, you’ll have some more work to do here.

-- Spacer
  spacer = wibox.widget.textbox()
  spacer:set_text(' | ')

-- CPU usage (graph)
  cpuwidget = awful.widget.graph()
  cpuwidget:set_color({ type = "linear", from = { 0, 0 }, to = { 10,0 }, stops = { {0, "#FF5656"}, {0.5, "#88A175"}, {1, "#AECF96" }}})
  vicious.register(cpuwidget, vicious.widgets.cpu, "$1")

-- CPU usage (text)
  tcpuwidget = wibox.widget.textbox()
  vicious.register(tcpuwidget, vicious.widgets.cpu, "$1%")

-- Memory widget (progressbar)
  memwidget = awful.widget.progressbar()
  memwidget:set_color({ type = "linear", from = { 0, 0 }, to = { 10,0 }, stops = { {0, "#AECF96"}, {0.5, "#88A175"}, {1, "#FF5656"}}})
  vicious.register(memwidget, vicious.widgets.mem, "$1", 13)

-- Memory widget (text)
  tmemwidget = wibox.widget.textbox()
  vicious.register(tmemwidget, vicious.widgets.mem, "$1% ($2MB/$3MB)", 13)

-- Network usage widget
  netwidget = wibox.widget.textbox()
  vicious.register(netwidget,, '${wlp3s0 down_kb} ${wlp3s0 up_kb}', 3)

--Battery Widget
batt = wibox.widget.textbox()
vicious.register(batt, vicious.widgets.bat, "Batt: $2% Rem: $3", 61, "BAT0")

Now to display the widgets, add the ones you want before right_layout:add(mytextclock)

-- CPU usage (graph)
-- CPU usage (text)
-- Memory widget (progressbar)
-- Memory widget (text)
-- Network usage widget
-- Battery

Change wallpaper, adding this to the variable definitions.

theme.wallpaper = "/home/dth/Images/Wallpapers/chicago.jpg"

Start Awesome


Leave a Reply

Your email address will not be published. Required fields are marked *

Loading Facebook Comments ...
Loading Disqus Comments ...