Home

Awesome

Awesome WM theme

A theme for the Awesome window manager 4.x.

Screenshots

Light mode

clear_desktop hotkeys_popup titlebar panel_bottom panel_left panel_right panel_widgets

Dark mode

clear_desktop_dark hotkeys_popup_dark titlebar_dark

Prerequisites

Installation

> git clone https://github.com/Relz/awesome-wm-theme.git ~/.config/awesome

Customization

Default applications and tools

In rc.lua in section "Variable definitions" you can set some variables:

Panels

In rc.lua in section "Panels" you can declare panel(s). Object of class "Panel" has properties:

Screens

In rc.lua in section "Screens" you can declare screen(s). Object of class "Screen" has properties:

Widgets

In rc.lua in section "Widgets" you can setup widgets. Most widgets support single icon view and icon + label view. Setting first constructor argument to true enables icon + label view.

Key bindings

In rc.lua in section "Key bindings" you can set key bindings. There are author's key binding, so you should leave only necessary ones for you, but don't remove awesome-specific, system-specific and default application specific key bindings.

Client rules

In rc.lua in section "Rules" you can set rules for clients. For example, some applications have own titlebar so Awesome WM titlebar is needless for them.

application_with_own_titlebar

Autostart

In rc.lua in section "Autostart" you can set commands to execute during Awesome WM startup.

Theme mode

You can switch theme mode in menu.

PS: also in rc.lua and theme.lua you can make your own experiments, suggestions are appreciated. For example, you can create widget for bluetooth, add calendar popup to ClockCalendarWidget, extend theme modes. Let's make the world better together!

Extend connected bluetooth device info with battery level

Bluetooth widget shows alias name for connected bluetooth device. There is a way to show battery level also. This feature is not enabled by default. You have to turn on it manually. To do it, edit bluetooth.service file by adding --experimental flag to bluetooth daemon executing:

ExecStart=/usr/lib/bluetooth/bluetoothd

change to

ExecStart=/usr/lib/bluetooth/bluetoothd --experimental

Subscribe to Direct Rendering Manager change event

There is update_screens function in rc.lua that configures xrandr output. It's useful to call this function when external monitors is connected/disconnected.

To make it happens, you need to add udev rule:

ACTION=="change", SUBSYSTEM=="drm", RUN+="notify-awesome %k"

Then add script which will be executed to /lib/udev/notify-awesome:

#!/bin/sh

_PID=$(pgrep -x awesome)
_UID=$(ps -o uid= -p $_PID)
USER=$(id -nu $_UID)
DBUS_ADDRESS_VAR=$(cat /proc/$_PID/environ | grep -z "^DBUS_SESSION_BUS_ADDRESS=")

notify() {
    su - $USER -c "/bin/bash \
        -c ' \
            export DISPLAY=:0; \
            export XAUTHORITY='/home/$USER/.Xauthority'; \
            export $DBUS_ADDRESS_VAR; \
            dbus-send --dest=org.awesomewm.awful --type=method_call \
                / org.awesomewm.awful.Remote.Eval string:"update_screens\\\(\\\"$1\\\"\\\)" \
        ' \
    "
}

notify $1 &

Then reload udev rules:

# udevadm control --reload-rules