/awesome-wm-theme

Awesome WM theme

Primary LanguageLua

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

  • Awesome WM 4.x
  • Lain for Awesome WM 4.x
  • Vicious widgets for the Awesome WM 4.x
  • Droid Sans font (otherwise use another font in theme.lua)
  • LightDM (otherwise specify another session_lock_command in rc.lua)
  • wireless_tools (otherwise Network widget won't work)
  • redshift (otherwise Brightness widget won't let you setup color temperature)
  • geoclue (otherwise Brightness widget won't compute dusk time and dawn time for your geolocation)
  • PulseAudio or PipeWire (otherwise Volume widget won't let you choose input/output devices)

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:

  • terminal. You can execute default terminal by pressing <Mod4> + <Return>. Default value: "alacritty".
  • browser. You can execute default browser by pressing <Mod4> + <Control> + <Shift> + b. Default value: "google-chrome-stable".
  • file_manager. You can execute default file manager by pressing <Mod4> + <Control> + <Shift> + f. Default value: "nautilus".
  • graphic_text_editor. You can execute default graphic text editor by pressing <Mod4> + <Control> + <Shift> + e. Default value: "subl".
  • music_player. You can execute default music player by pressing <Mod4> + <Control> + <Shift> + m. Default value: "spotify".
  • session_lock_command. You can lock your session by pressing <Mod4> + l. Also if you choose "Session lock" power off menu item, this command will be executed. Default value: "dm-tool lock".
  • calendar_command. Calendar will be opened by clicking on calendar and time widgets. Google calendar is used by default.
  • power_manager_settings_command. Power manager settings will be opened by clicking on battery widget. Xfce4 Power Manager Settings is used by default.
  • system_monitor_command. System monitor will be opened by clicking on CPU and memory widget. Gnome System Monitor is used by default.
  • network_configuration_command. Network configuration will be opened by clicking on network widget. NetworkManager Connection Editor is used by default.

Panels

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

  • position. Panel's position. Possible values: "top", "bottom", "left", "right".
  • tags.list. Panel's list of tags. Constructor parameters of class "Tag": text and layout.
  • widgets. Panel's list of widgets. Widget must have properties value and/or icon.

Screens

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

  • wallpaper. Path to wallpaper.
  • panels. List of panels.

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