Let's try out Awesome

So I’ve always liked the idea of using just simple window manager and controlling my desktop mostly using keyboard shortcuts and keybindings. So far only WM I’ve had in daily use is i3, i3-gaps to be precise.

I’ve noticed some members here have had some interest to try AwesomeWM, so I decided to document my journey with it. This thread is intended to be semi-guide, semi-blog of me figuring out stuff and sharing the information here. That doesn’t mean others are not welcome here. If you want to test out awesome or are already a seasoned guru with it feel free to drop in and share your experiences and knowledge. I created separate #awesomewm tag that others can use for their own threads if someone feels like it.

I’m going to make some comparisons to i3 along the way, like “this is how stuff worked in i3, and this is how I figured it out in Awesome”.

Here’s some reasons why I wanted to try AwesomeWM

  • Lua, and extensibility. Main configuration and themes use configuration files written in Lua programming language, meaning Awesome is highly extendable and customizable. I already know my skills or lack of imagination will be the limitation for me to go all out with customization, but hey, at least I’m going to have options. :stuck_out_tongue: Also the fact that the configuration uses Lua files will force me to dip my toes into re-learning at least a little bit of programing.

  • Curiosity. I’m just interested at trying out new stuff and Awesome as a concept feels interesting.

  • Availability in official software repositories. Problem with i3-gaps is there’s not many distributions that had official repository for i3-gaps. However awesome is quite popular WM and is pre-packaged in many distributions: https://awesomewm.org/download/

And I also just wanted to challenge myself. I’m in general quite bad at reading manuals and documentation, so with Awesome I try to make clear attempt at following official documentation when configuring things. And I have to emphasize word “attempt”, because this is me reading documentation and manuals:

Inb4 this is the reaction when someone is reading my wall of text

There’s probably many other good reasons to give Awesome a try, but these were my main reasons.

Once you have managed to install Awesome I highly recommend that you read trough My first Awesome setup, it should give you the basic understanding of how Awesome works.

Oh, and remember shortcut Super + s. This will show you the cheat sheet for key combinations for Awesome, so you don’t need to check the documentation all the time.

How to control screen layout in Awesome?

With i3 I remember vaguely you were able to input the xrandr information directly to your i3 config file and i3 handled the rest. It’s been few years since I last time tinkered with i3 so I might remember this completely wrong.

With Awesome I simply don’t manage screen layout. I let X do it’s work. I’m using Nvidia GPU so the solution was to enable full composition pipeline to both screens and set the displays as I wanted in nvidia control panel, and then saved the configuration to xorg.config.

How to set different wallpapers to each screen?

I’m currently using multi-monitor setup, one display being vertical position, and getting different wallpapers to each monitor was my first problem that I had to figure out. There’s probably multiple ways to achieve this, but here’s my current solution. Credit to this goes 100% to @freqlabs since this method is direct ripoff from him.

-- Set different wallpaper for each monitor

wp_prefix = "/home/even/Pictures/awesomebg/"

gears.wallpaper.maximized(wp_prefix .. "2.jpg", 1)

gears.wallpaper.maximized(wp_prefix .. "w4.jpg", 2)

And this is the current end result at the moment.

Yes, waifu papes are a must.


I will share stuff and configs that I find in this thread, and probably ask for help if I get stuck.

Again please note that I don’t plan to treat this as personal awesomewm blog (though it might end up being one eventually), everyone interested are free to come and jump in testing and configuring awesome and sharing opinions and tips. :slight_smile:

8 Likes

A problem I had couple days ago that I managed to fix but forgot to document here.

Transparent application windows

To get transparency working you need a compositor, and Awesome does not include compositor of it’s own. Compton is probably the most popular compositor out there (personal opinion), so you simply have to have Compton or any other compositor installed and running and you should be good to go.

Again, there’s probably many ways to make Awesome launch applications at startup, but this was the solution which worked for me.

First I created executable shell script:

#!/usr/bin/env bash

function run {
  if ! pgrep -f $1 ;
  then
    $@&
  fi
}

run compton

Placed that in my Awesome config folder, and then added this line in my rc.lua so that Awesome will run the script on startup:

-- AUTORUN PROGRAMS
awful.util.spawn_with_shell("~/.config/awesome/autorun.sh")

I did try run_once in rc.lua but for what ever reason it didn’t work. Could have been just typing error or something. Anyway, I actually prefer the autorun script method, this way I can easily add or remove applications that I want to run on start up and thus keep main Awesome config file simpler. I might try to integrate the application autorun to main configuration script in the future but for now this works well enough for me.

I’ve also read some use “patched” version of Compton with Awesome, but I haven’t found out yet why. Regular version that I installed from Ubuntu repos works just fine for now.

4 Likes

I just installed openSUSE on an old Dell Vostro laptop last night. I did the bare minimum setup as to have as lean of a system as possible. Awesome will hopefully be installed soon, thanks to your blog which finally inspired me to do this!

2 Likes

Great to hear! Feel free to share your thoughts and opinions! :slight_smile:

2 Likes

Nice man. The multiple wallpaper thing drove me nuts lol. Glad you figured it out! Well, glad @freqlabs figured it out :wink:

Awesome seems to blend i3 with sensible mouse controls. I really enjoyed my time with it. I didn’t want to spend a few hours learning the workflow and keyboard shortcuts, but now that I can properly rice my system with shitty cyberpunk wallpapers I might give it a shot.

2 Likes

I can’t praise enough Super + s shortcut. That’s saved my ass many times.

But I understand what you mean, it’s really hard to learn anything new if you have strong muscle memory for doing things in certain way.

My current plan is to stick with awesome for now, customize this as I like and then reinstall everything when Ubuntu 20.04 is released.

2 Likes

Badass. I got all wallpapers going.

Thank you @Even747 and @freqlabs!!!


Weird, the other image is too big to upload lol. I’ll figure something out :wink:

3 Likes

free-bsd-16

2 Likes

OMG that’s adorable.

1 Like

It’s time i return to i3wm or start to play with sway (because of Python)

1 Like

I made a separate thread about starting awesome, but I am going to merge it here to consolidate and honor @Even747’s intentions when he started this thread.

1 Like

I am trying AwesomeWM on Arch.

So far I like it. It is fast and I like how it handles tiling.

That said, this is my first time going pure window manager and I’m running into some puzzles. So I have some questions for anyone out there who uses or has used Awesome.

  1. Do you run it alone or on top of a DE? Which DE? If no DE, then do you prefer GTK or QT applications?

I am using Brave browser which has already pulled GTK, so I feel like I want to avoid QT for simplicity, but I’m open to suggestions.

  1. What File Manager do you use?

I installed Nautilus per GTK bias, but I see that I have 2 sets of window controls (minimize/maximize/close). I have also managed to accidentally maximize one window over another and now it is not respecting the AwesomeWM tiling…

  1. What screenshot utility do you use?

  2. What lockscreen do you use?

Haven’t really thought about these yet, but I will need them.

  1. Assuming no DE, do you use any GUI system configuration or just edit conf files?

I can manually edit conf files, but for some things like audio device switching and monitor arrangement, a gui is ideal.

  1. I am seeing some screen tearing during browser scroll. GPU is a Radeon 5100wx, so no nvidia driver nonsense and this wasn’t an issue on previous Linux installs on this system. Do I need to do something to make this go away?

  2. Is there a good beginners guide to configuring Awesome? I know they have docs, but I didn’t see anything resembling a guide. Looking for something like “first 10 things to configure in awesomewm”. Right away, I need to increase the size of the menu bar and would like to have gaps…


Anyway, thanks to anyone who can share some insight! I am excited to get my hands dirty.

Shameless mentions: @Even747 @freqlabs

3 Likes

I use i3wm, but I feel like most of your questions are related to the nature of the WM and not the specific WM you’re using (and I’m not trying to sell i3 here; it’s just the first one I tried and I stuck with it).

  1. I run it alone, and I’ve seen people running it inside of xfce. I don’t really see any huge benefit in doing so though, but it’ll be up to each individual user to decide what sort of features they want. I have no dog in the GTK/Qt fight. :wink:

  2. I’ve tried numerous file managers, but at the end of the day I keep coming back to DoubleCommander. Since I always have a terminal open, I’ll use that as well (particularly useful if I want to move only files with a 1 or a 6 in the name) and Thunar gets to join in some times too when I want to post a screenshot and I desire a thumbnail view. I guess it’s task specific when I think about it.

  3. scrot if I just want something written to disk immediately, or a wrapper script I wrote for maim if I want specific windows/portions of windows. This then also uploads to a server so I can share image links.

  4. I don’t use one. Kinda. Ctrl+Alt+F2 to move to a different tty, and then I rely on user ignorance for the rest. :smile:

  5. I edit conf files. I don’t enjoy it, but I suppose not everything in life is meant to be enjoyed.

The final two questions are ones I don’t feel I can offer any input on. But in general, just try things out if you’re curious. I’ve been meaning to give bspwm a go, but at the end of the day I’m a very lazy person and what I have right now works (well enough).

2 Likes
  1. I run Awesome currently on Ubuntu 20.04, so I have Gnome installed, and everything else that Ubuntu is shipped with.

  2. Ranger if I want to use terminal based file manager, Nautilus and Thunar are both installed on my current system. As far as I know Nautilus is much more Gnome dependent that what Thunar is to XFCE, so I don’t have or want to have gnome installed then Thunar is my go-to file manager.

  3. Scrot if I want to capture everything, Flameshot if I want more flexibility.

  4. err, the one that comes with Ubuntu? :smile: no but real talk, I think I have GDM since it’s default display manager for Ubuntu. SDDM and LightDM are also nice options.

  5. I prefer to use GUI conf editors, but it’s not huge problem if I have to use Nano or Vim to edit conf files manually. I use Pavu control for sound settings.

  6. Afaik AwesomeWM don’t have compositor built in. Try to install Compton and make awesome run it at boot.

  7. I did look for one, but eventually I just googled “how to add gaps to AwesomeWM”, “how to disable title bars from windows in AwesomeWM” etc. If you have patience to learn Lua a little that will help a lot, and doing so you can write your own scripts and so on. Oh, and take a look what others have in their rc.lua config files.

Oh and obligatory shill :slight_smile: :Let's try out Awesome

5 Likes

Can I merge this thread into yours? Rereading your OP, it looks like you wanted others to pile on over time. I like the idea of keeping it consolidated.

1 Like

Sure, go a head. I have some ideas for tweaking my awesome config but I’ve been procrastinating way too much recently. Should be fun to have a common thread where others can share ideas.

1 Like

Well, I run Fvwm, but close enough, I hope:

  1. I don’t use a DE, they add little but bloat, at least for me.
  2. The shell (zsh in my case). Really, all file managers I’ve used are varying degrees of suck. If I do use something “graphical” it’s Dired inside Emacs.
    I’m by no means a master of my shell (not by a very long shot) but I find that there is very little I can’t simply do faster through the shell than with a graphical file manager. Probably isn’t for everyone, but I’d consider it worth trying at some point to figure out whether it ‘clicks’.
  3. import, from ImageMagick since I usually have that installed anyway
  4. xscreensaver, if you mean display manager (like xdm, gdm,…) then I don’t use one, I just use good ol’ startx and the usual shortcuts same as @kontroll
  5. Configuration files, at least those can be easily commented, diffed, backed up (as in, stuffed in Git :wink: ), etc. Graphical tools tend to ruin all that, and binary configuration files are the spawn of Satan and should be put to the stake.
1 Like

How do I change the background color of the wibar? It’s not respecting any of the theme values. Just black.

I can force it when I initialize awful.wibar, but would still like it to respect the theme values…

I’ll take a look later today when I finish working. I think I changed the color of the wibar. Probably :thinking:

Did you fork new theme completely, or are you editing some default theme?

1 Like

@oO.o I have these values in my theme.lua file. I took the default theme, copied it and started messing with it so a lot of stuff was already here. I’ve just been changing values mainly.

theme.bg_normal     = "#222222"
theme.bg_focus      = "#660066"
theme.bg_urgent     = "#ff0000"
theme.bg_minimize   = "#444444"
theme.bg_systray    = theme.bg_normal

theme.fg_normal     = "#aaaaaa"
theme.fg_focus      = "#ffffff"
theme.fg_urgent     = "#ffffff"
theme.fg_minimize   = "#ffffff"

theme.useless_gap   = dpi(7)
theme.border_width  = dpi(2)
theme.border_normal = "#000000"
theme.border_focus  = "#660066"
theme.border_marked = "#91231c"
1 Like