- OS: Ubuntu 18.04
- WM: AwesomeWM
- Terminal: Kitty
- File Manager: Nemo for GUI, Ranger for terminal
- Launcher: Rofi
- Editor: Vim
- Org editor: Remacs
- Browser: Firefox
Anti-aliased rounded corners | App drawer | Lock screen - See it in action here |
---|---|---|
Here is a complete list of dependencies needed for making these themes work.
If you install all of them you will have a (mostly) smooth out of the box experience.
Of course, not all of them actually do something useful (see fortune-mod
dependency).
Also if you are willing to edit a few configuration files, which you will have to do at some point, most of these dependencies can be replaced. For example you can replace rofi
with dmenu
,maim
with scrot
.
If you notice that something is missing, please open an issue so I can add the dependency to this table.
Dependency | Description | Why/Where is it needed? |
---|---|---|
awesome (git master branch) |
Window manager | (explains itself) |
rofi |
Window switcher, application launcher and dmenu replacement | (explains itself) |
light |
Gets/Sets screen brightness | Brightness keybinds |
lm_sensors |
CPU temperature sensor | CPU temperature widgets |
upower |
Abstraction for enumerating power devices, listening to device events and more | Battery widgets |
acpid |
Daemon for delivering ACPI events | Charger notifications |
pulseaudio , libpulse |
Sound system (Installed by default on most distros) | Volume widgets and keybinds |
jq |
Parses json output |
Weather widgets |
fortune-mod |
Displays random quotations (fortune cookies) | Fortune widget |
redshift |
Controls screen temperature | Night mode command |
mpd |
Server-side application for playing music | Music widgets |
mpc |
Minimalist command line interface to MPD | Music widgets |
maim |
Takes screenshots (improved scrot ) |
Screenshot keybinds |
feh |
Image viewer and wallpaper setter | Screenshot previews, wallpapers |
openweathermap key | Provides weather data | Weather widgets |
- Typicons
- Material Icons
- Icomoon - download
- Nerd Fonts
- Iosevka - download my custom build
- Anka/Coder
- Scriptina
- Google Sans
- Roboto Condensed
- San Francisco Display
-
Backup your current
~/.config/awesome
directory if you have one and copy this repo'sconfig/awesome
directory in its place. -
Configure user preferences
In
rc.lua
there is a User variables and preferences section where user preferences and default applications are defined. There include the terminal, editor, file manager, screenshot directory, weather widget configuration and more. You should change those to your liking. -
Configure autostart applications in
autostart.sh
The commands in
autostart.sh
will run every time AwesomeWM restarts. If you would like to run something only once on login, I suggest you create the file~/.xprofile
, make it executable and put the commands you want there. -
(Optional) Load any
Xresources
colorscheme (xrdb -merge <colorscheme file>
). In the .xfiles directory I provide you with a few of my own colorschemes, but you can also use your favorite one. All of my AwesomeWM themes take their colors fromxrdb
. -
Have a general idea of what my keybinds do
My keybinds will most probably not suit you, but on your first login you might need to know how to navigate the desktop.
See the Basic keybinds section for more details.
You are now ready to login with AwesomeWM!
- Terminals: Termite / Kitty / urxvt / st
- File managers: Nemo / Thunar
- Launchers: Rofi / dmenu
- Browsers: Firefox (with Vimium extension) / Qutebrowser
- Editors: Vim / Sublime Text (with NeoVintageous plugin) / Spacemacs
- Music players: mpd (with ncmpcpp)
- bin/bunnyfetch script - Display some system info
neofetch
- Display a ton of system info- even-better-ls - Icons for the
ls
command cava
- Audio visualizer
I have split my rc.lua
into multiple files for organization purposes.
-
The
noodle
directory contains widgets that usually take up more than 50 lines of code.I prefer not filling my files with a ton of widget configurations, but also not making a seperate file for every widget.
-
The
evil
directory contains daemons (processes that run in the background) which emit system info.They provide an easy way of writing widgets that rely on external information. All you need to do is subscribe to the signal a daemon provides. No need to remember which shell command gives you the necessary info or bother about killing orphan processes. Evil takes care of everything.
-
In
themes
you can find a directory for each available theme.Such a directory should include at least a
theme.lua
and optionally icons, wallpaper, and whatever asset you need that is theme-specific. -
In
bars
you can find a.lua
file for each available bar or bar group.Multiple bars can be created in one file. Every bar theme provides the global functions
toggle_wibars()
andtoggle_tray()
which you can bind to any keys you want.
I use super
AKA Windows key as my main modifier.
super + enter
- Spawn terminalsuper + shift + enter
- Spawn floating terminalsuper + d
- Launch rofisuper + shift + q
- Close clientsuper + control + space
- Toggle floating clientsuper + [1-0]
- View tag AKA change workspace (for you i3 folks)super + shift + [1-0]
- Move focused client to tagsuper + s
- Tiling layoutsuper + shift + s
- Floating layoutsuper + w
- Maximized / Monocle layoutsuper + [arrow keys] / [hjkl]
- Change focus by directionsuper + shift + [arrow keys] / [hjkl]
- Move client by direction. Move to edge if it is floating.super + control + [arrow keys] / [hjkl]
- Resizesuper + f
- Toggle fullscreensuper + m
- Toggle maximizesuper + n
- Minimizesuper + shift + n
- Restore minimizedsuper + c
- Center floating clientsuper + u
- Jump to urgent client (or back to last tag if there is no such client)super + shift + b
- Toggle barsuper + =
- Toggle tray- ... And many many more.
left click
- Dismiss all notifications, close sidebar and main menudouble left click
- Jump to urgent client (or back to last tag if there is no such client)right click
- App drawermiddle click
- Start screenscroll up/down
- Cycle through tagsmove to left/right edge
- Show sidebar- ... And more.
left click
- Focus and raiseleft click (drag)
- Moveright click (drag)
- Resizemiddle click
- Close- ... And more.
AwesomeWM can anti-alias titlebars, but not the client content itself.
If user.anti_aliasing
is enabled in the configuration, the top titlebar corners are antialiased and a small titlebar is also added at the bottom in order to round the bottom corners.
If it is disabled, the client shape will STILL be rounded, just without anti-aliasing, according to your theme's border_radius
variable.
In some cases, (check wants_equal_padding(c)
function in titlebars.lua
) 4 titlebars are added instead of 2 in order to create equal padding around all client sides.
Anti-aliasing can be applied to any wibox by making its background color transparent and putting all its items in a shaped container with the desired background color.
Here is an example of an anti-aliased wibox.
-- Load these libraries (if you haven't already)
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
-- Create the box
local anti_aliased_wibox = wibox({visible = true, ontop = true, type = "normal", height = 100, width = 100})
-- Place it at the center of the screen
awful.placement.centered(anti_aliased_wibox)
-- Set transparent bg
anti_aliased_wibox.bg = "#00000000"
-- Put its items in a shaped container
anti_aliased_wibox:setup {
-- Container
{
-- Items go here
wibox.widget.textbox("Hello!"),
-- ...
layout = wibox.layout.fixed.vertical
},
-- The real background color
bg = "#111111",
-- The real, anti-aliased shape
shape = gears.shape.rounded_rect,
widget = wibox.container.background()
}
-
For the custom titlebars to work your terminal or application needs to be able to set its own class or name
Example: For the mpd titlebar it needs to have class "music" or name "Music Terminal". You can change this in
titlebars.lua
. You can find an example script that launches a terminal like this inbin/music_terminal
# Termite termite --class music --exec ncmpcpp # st / xst st -c music -e ncmpcpp # urxvt urxvt -T "Music Terminal" -e ncmpcpp
-
Of course you can set your own custom titlebars for any application as long as you know its class, name, instance, whatever and then creating a custom titlebar setup in the existing if-else block in
titlebars.lua
. For exampleif c.class == "Thunar" ...
-
You can find details such as class, name, and others for any client with the
xprop
utility.
- Activate it with
super+F1
, or by middle clicking anywhere on the desktop. - Dismiss with
escape
,q
orF1
ormiddle click
. - You can scroll on the calendar to switch to the previous / next month. Left click to reset.
- The fortune box requires
fortune-mod
. Clicking it gives you a new fortune cookie :) - The brightness bar requires
light
. - The bell icon suspends / re-enables notifications on click.
- The camera icon takes a screenshot instantly on left click and with a 5 second delay on right click. Requires "screenshot.sh" from my repo. Alternatively you can set your own screenshot command.
- Can be toggled with
super+grave
. - Can be activated by moving the mouse to the edge of the screen and hidden by moving the mouse out of it (these settings can be easily enabled/disabled in your
user
preferences in rc.lua). - By default it is always above windows, and does not grab your keyboard (so you can have it open while doing something else, or just toggle it for a second to check your battery while you are watching something in fullscreen).
- Most widgets (volume, search, exit, music...) are clickable.
- Volume and music update only when they need to, as they are subscribed to pulse and mpd events respectively.
- For the weather widget I modified this polybar custom script. It uses the openweathermap API. If you want this to work, you will need to create an account there, get your key, look for your city ID, and place them in
noodle/weather.lua
. (Same goes fortext_weather.lua
)
- Activate it with
super+escape
, by clicking Exit on the sidebar, or in the right click menu (awesome -> quit) - Mouse controls: Click on any icon to execute the command,
right click
ormiddle click
anywhere to cancel. - Keyboard controls:
escape
orq
orx
to cancelp
to poweroffr
to reboots
to suspende
to exit (logout)l
to lock
-
You can open an issue if you have any questions / problems.
Do not forget to search through old issues first. They could already contain an answer to your question. Also make sure you have the latest version of the repo. Little fixes happen all the time.
-
If you are new to AwesomeWM...
I suggest you start from the default configuration and add pieces you like to it instead of trying to modify someone else's configuration. Even if you feel really comfortable with that specific config, you will realize that you have no idea how anything works and how you can modify things to your own liking. Trust me, I've been there.
-
Don't forget to use the API Documentation for AwesomeWM.
It is well written and has plenty of examples.
-
You can also post your questions on /r/awesomewm
Theme | Preview | Reddit post |
---|---|---|
Skyfall | Skyfall | |
Lovelace | Mechanical Love | |
Manta | Cake Day | |
Reasons | 25 reasons why you need a tiling WM |