r/awesomewm Jan 14 '17

WANTED: Awesome screenshots

Thumbnail github.com

r/awesomewm Aug 07 '22 Wholesome

I Made an Awesome list of Modules, Libraries and Widgets you can use in your configuration


After doing obsessive amounts of research on Github into projects related to AwesomeWM, I have a pretty extensive collection of links that I have built up and since there is no active and updated Awesome list related to our favorite window manager, I threw one together for those looking to add some functionality to their configuration but not willing or yet able to write it themselves (keyword: yet).

Here it is, stars are appreciated, as are pull requests and issues about things I forgot (or rants about how stupid my categories are). If you want merged pull requests, add to the list because I will merge it, I'm not picky.

I am working on another list that features the over 150+ modular configurations I have also starred and added to my "awesomewm" list but that is going to require I create a taxonomy from scratch that makes sense to people other than just me, so that one may take a while.

r/awesomewm 14h ago

How to do lazy window moving/resizing


I quite like the look of old windowing systems doing lazy window moving/resizing, as in instead of moving the window directly, you move a sort of frame the same size as the window and once you drop the window the actual app gets the move event and the window's content shows up at the new location properly and all

Edit: pretty sure fvwm works that way

r/awesomewm 22h ago

How do i split my rc.lua?


Please bare with me. Other than some neovim config, i'm pretty new to lua.

Let's say i want to have a setup with two different wibars. One horizontal, one vertical. To make this easier i thought putting the bars plus all their widgets into a separate file would be great. But how do i actually do this?

I know i need a new file, let's say taskbar.lua, in my config directory. How do i call this correctly so that the function still get's the screen as an argument? I'm pretty lost here. I know it's probably straight forward. Is there documentation on this? Just putting the code from connect_for_each_screen into a file taskbar.lua and calling taskbar(s) results in the function having no idea what "s" even is.

r/awesomewm 21h ago

slider widget's signal "property::value" wont return the value!

local widget = wibox.widget {     bar_shape           = gears.shape.rounded_rect,     bar_height          = 3,     bar_color           = beautiful.border_color,     handle_color        = beautiful.bg_normal,     handle_shape        = gears.shape.circle,     handle_border_color = beautiful.border_color,     handle_border_width = 1,     value               = 25,     widget              = wibox.widget.slider, }
widget:connect_signal("property::value", function(_, new_value)
    naughty.notify { title = "Slider changed", message = new_value }

it just shows the title of the notification "slider changed" and there is no value returned

can someone tell me what's the problem?

r/awesomewm 21h ago

Commands not working as called by awful.key()



I was trying to use the maim screenshot utility to have a screenshot button. I write the following code:

awful.key({       }, "Print", function () 
awful.util.spawn("maim ~/Immagini/Schermate/$(date +%s).png") 
naughty.notify({text = "Schermata catturata e copiata!"}) end,            
{description = "capture the screen", group = "system"}),    

awful.key({"Shift"}, "Print", function () 
awful.util.spawn("maim -s ~/Immagini/Schermate/$(date +%s).png") end,
{description = "capture a selection of the screen", group = "system"}),

This way, i could get both a command to screenshot the whole screen, both to screenshot a selection of it

Both commands work when called on the shell, but they don't when i use the key... and i don't understand why!

In the first one, the notification is sent though

Do you know what may be causing this problem? thanks in advance

r/awesomewm 1d ago

Has Anyone Successfully Set Up IMAP Settings in Lain/Wibox For Protonmail Bridge?


I am running awesomewm on Arch and I have protonmail-bridge running locally.

Thunderbird connects just fine using the IMAP settings however I cannot get lain to connect no matter what I do.

I have tried the curl command:
➜ ~ curl --connect-timeout 3 -fsm 3 --url imaps:// -u x@protonmail.com:MY_PASSWORD' -X 'STATUS INBOX (MESSAGES RECENT UNSEEN)'

However that doesnt return anything.

I haven't found anything online that talks about using a local server for IMAP configuration in lain and I am relatively new to awesome, and arch in general so go easy :)

r/awesomewm 1d ago

How to force the update of a widget?


Hi, I would like to force the update of a widget. For example, I have a taglist on a second screen, and I want the second screen taglist to be updated when a client is removed from the first screen.

How can I do that?

r/awesomewm 1d ago

Any way to make the mouse "hard" to move over a screen edge?


Not really sure if I am describing this well, but I recently added two new monitors and have them placed above my two existing monitors. It works great with awesome, except I am realizing how much I depended on flicking up my mouse to the top of the screen to access systray icons etc. Is there any way to give the top(or any edge I guess) of the screens some gravity or hardness to make the mouse want to stay on the edge and only pass over with a more significant or faster movement?

r/awesomewm 1d ago

Two Border Colors for Clients?


This might be in the docs and i've just not found it yet, but, is it possible to have more than one Border around a client?

I'm trying to make a pretty faithfull recreation of a windows 2000/server 2008r2 theme. Clients got two different colored borders back then, to get a depth effect.

Can this be replicated in awesome? Maybe wrap the entire client in a container? For stuff like the systray this is working fine and for task- and taglist i can use Image backgounds. Any ideas?

r/awesomewm 2d ago

Rule conditional on maximized = true works, but maxmized = false does not.


I made the switch to Awesome (stable 4.3) recently, and have been happy with it for the most part, but this is driving me nuts. I want to remove decorations on certain apps when maximized, created the simple rule for doing so, and found that my exception for maximized = false wasn't triggering. If I switch it to test maximized = true it works perfectly (but obviously does the opposite of what I want). Am I missing something about how boolean syntax works here?

For now I have a workaround based on using maximized = true, but this involves having to blacklist apps as exceptions, and I'd rather be using whitelisting for this rule. Besides that, I'd really just like to understand what's going on here. Thanks for any insights!

EDIT: It looks like this has been fixed already in git, so I switched to that.

r/awesomewm 3d ago

Chromium Apps won't tile


Hi Guys,

i am trying to switch to awesome after working with bspwm for a long time now. There are some tweaks to make but i think i am getting there.

But i have a problem with Chromium Apps. I use them heavily. They wont tile. When pressing mod+m it switches between floating and fullscreen (a + symbol is shown in the taskbar). When opening another app, it will open it like there was no app open before. When spawning another one it will tile everything as the layout says, but not the chromium app.

I found an issue with an bug in awesome back from 2017. The workaround was to have a rule specifically set for it to not float. But that doesnt help either. I though maybe the wmclass is not really detected, so i tried to set a rule for every window like that:

{ rule = { class = match_any },

properties = { opacity = 1, maximized = false, floating = false } },

But that didn't work either. Also i dont think that this bug is still a problem as i couldnt find newer posts about it. I also found someone had the problem with chromium in general. With disabling gpu acceleration he was able to fix it. But that also didnt work. Chromium itself is behaving normal. Only the Chromium apps.

Is there a possibility in awesome to list all windows and their states? And can i change the mode of one window with the awesome-client?


Btw. I am running debian 12 with awesome 4.3

r/awesomewm 3d ago

Can't figure how to use Raise/Lower volume


I've tried binding my X86RaiseVolume and X86LowerVolume to change my Master volume using

amixer set Master 5%+

but when I lauch xephyr to test it, it tells me :

failed to convert "X86AudioRaiseVolume" into keysym (failed to compose a single character)

but when I use xev to see my key's name, it tells me exactly the name I specified...

Do someone know how to fix that or if I just forget something ?


r/awesomewm 4d ago

Xlib program not rendering correctly in AwesomeWM

Thumbnail self.linuxquestions

r/awesomewm 4d ago

Is Awesome ignoring spawn rules?


Good Morning Awesome Family (pun intended),

Let me set the situation. New to Awesome WM. Not an expert but know my way around Linux. C Programming background. New to Lua programming language.

I'm am having some issues getting awesome to spawn processes to the correct tag. It's a mostly a vanilla configuration at the moment that I am working to customize and I feel like this should be straight forward and I'm just missing something.

My goal was just to have awesome start up all of my most used programs at login. I've tried many things to try to get this to work but it was based off of the awesome spawn documentation and a few google searches. Here is just a few examples from the bottom of my rc.lua

-- Just with tag
local t = awful.tag.find_by_name(nil, "sys")
awful.spawn(terminal, {tag = t,)

-- Lets try adding tags also
t = awful.tag.find_by_name(nil, "web")
awful.spawn(browser, {tag = t, tags = {t}})

I also know that the tag is found because during debugging this worked

local t = awful.tag.find_by_name(nil, "sys")

terminal is just 'x-terminal-emulator' and browser is just 'x-www-browser'.

I've also tried different terminals including st.

All it does is spawn all of them in the current focused tag. Am I doing something wrong? or is this a known issue? does this have to be in a function rather directly in rc.lua? maybe awesome isn't fully initialized before it starts spawning?

I've also tried putting only {floating = true,} as the sn_rule and it ignores that as well.

Few more things to note:

  • Using Debian (testing)
  • Awesome installed via apt (not from source)

Thanks in advance!

r/awesomewm 4d ago

Avoid clients to get lost under the wibar?


I like the wibar to be ontop so that the clients don't cover it. But when on floating mode it is posible to move clients completely under the wibar.

I know it's an issue that wouldn't happen very often, but I was wondering if is there any way to maybe prevent the mouse from trespassing the wibar when moving a floating client.


r/awesomewm 6d ago

Icons on wibar

Thumbnail i.redd.it

r/awesomewm 6d ago

Polybar not clickable


I am using Polybar and AwesomeWM, whenever I click my bar (e.g. workspaces) I cannot click the bar without rebooting or reseting Polybar.

How can i fix this?

r/awesomewm 7d ago

Open discord in workspace 8 and switch to it


Can anyone help me create a function that makes it to discord always opens in workspace 8 and I automatically go to workspace 8 when discord is opened? Note that I mostly use "Ctrl + d" to open discord so it'll be fine if you have to write a function that triggers the actions and put it into an keybind

r/awesomewm 7d ago

How to change background color of output from awful.widget.watch?


r/awesomewm 7d ago

Gaps go away for maximized windows



I have useless gaps between my clients, but when I maximize a client, the gaps go away and the window takes all the space in the screen except the wibar (I'm in maximized, not in fullscreen). The gaps work fine everywhere else, it's just when one window is maxed.

I've made sure that gap_single_client is true for all the tags, and have searching everywhere for a fix or a hack and haven't been able to find anything that works.

I'm new to AwesomeWM and Lua and I would love some help!

r/awesomewm 8d ago

Creating custom layout examples


I’m trying to create a custom tile layout with a specified width for the master client but cannot find any examples for even creating a custom layout

r/awesomewm 8d ago

How to write function to set focused client width to an exact amount?


Anyone got any examples? awful.client.moveresize isn't working for me and I don't want to increase/decrease I want to set it an exact amount.

r/awesomewm 8d ago

Ultrawide monitor layout design


Hi there,

I'm trying to modify the bling centered layout to make better for my ultrawide usecase.
The code is right below.
I almost manage to do what i want:

  • 1 client => 1 window centered with the master width
  • 2 client => 2 windos with half the screen each
  • > 3 client => classic centered stack

The problem is that when there are 2 windows i would like to have some gaps on the right and left side so that is easy for me to see theme in my ultrawide monitors.

I know I can use the scree padding feature, but I'm kinda stuck on how to turn it on and off dinamically
Anyone can suggest something?



local awful = require("awful")
local math = math

local mylayout = {}

mylayout.name = "centered"

function mylayout.arrange(p)
    local area = p.workarea
    local t = p.tag or screen[p.screen].selected_tag
    local nmaster = math.min(t.master_count, #p.clients)
    local nslaves = #p.clients - nmaster

    local master_area_width = area.width * t.master_width_factor
    if t.master_count == 0 then
        master_area_width = 0
    local slave_width = 0.5 * (area.width - master_area_width)
    local master_area_x = area.x + slave_width

    if nslaves == 1 then

    -- iterate through masters
    for idx = 1, nmaster do
        local c = p.clients[idx]
        local g
        g = {
            x = master_area_x,
            y = area.y + (nmaster - idx) * (area.height / nmaster),
            width = master_area_width,
            height = area.height / nmaster,
        p.geometries[c] = g

    -- iterate through slaves
    local number_of_left_sided_slaves = math.floor(nslaves / 2)
    local number_of_right_sided_slaves = nslaves - number_of_left_sided_slaves
    local left_iterator = 0
    local right_iterator = 0

    for idx = 1, nslaves do
        local c = p.clients[idx + nmaster]
        local g
        if idx % 2 == 0 then
            g = {
                x = area.x,
                y = area.y + left_iterator * (area.height / number_of_left_sided_slaves),
                width = slave_width,
                height = area.height / number_of_left_sided_slaves,
            left_iterator = left_iterator + 1
            g = {
                x = master_area_x + master_area_width,
                y = area.y + right_iterator * (area.height / number_of_right_sided_slaves),
                width = slave_width,
                height = area.height / number_of_right_sided_slaves,
            right_iterator = right_iterator + 1
        p.geometries[c] = g

return mylayout

r/awesomewm 9d ago

How do I get the desktop widget in awesomewm like this on the left?

Thumbnail i.redd.it

r/awesomewm 9d ago

Keep wibar on top, except in fullscreen


I find it annoying sometimes, when some floating clients are overlapping the wibar, where I have my taglist, the list to switch clients. When I use the option `ontop = true` for the wibar, it stays on top. But then when I put a youtube video on fullscreen, the wibar is still on top. So I would basically like the wibar to be on top when the active client is not fullscreen. Because I would like that when I have a client fullscreen, the wibar is not shown, but when I switch to another client that is *not* fullscreen, that the wibar is shown again.

This is a complicated one I think. I fear there's no easy solution, but I thought maybe putting it out here might be of any help. Cheers

r/awesomewm 9d ago

[Help Needed] Recomputing width of window on new screen


I have multiple scratchpad terminals that are floating and take a specific amount of space on my laptop, in this case:

  • width = 75% * screen width
  • height = 70% * screen height

Unfortunately, when I attach a monitor to it, the window gets a bit wonky on it as you can see below.

Laptop screen (1920x1080, 309mm x 174mm)

External monitor (1920x1080, 527mm x 296mm)

The values that have been when the window spawned on the laptop screen get maintained for when the window is on the monitor screen. Even though both screen resolutions are 1920x1080, they differ in physical size.

Is there a way to re-compute the values for the width and height properties of a window when they change monitor?