A theme for the Awesome window manager 4.x.
- 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)
> git clone https://github.com/Relz/awesome-wm-theme.git ~/.config/awesome
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.
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.
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.
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.
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.
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.
In rc.lua in section "Autostart" you can set commands to execute during Awesome WM startup.
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!
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
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