Resizing Window Vertically

Alexander Tsepkov picture Alexander Tsepkov · Jul 17, 2013 · Viewed 11.9k times · Source

EDIT: this question/answer is from 2013, back when Awesome was still on version 3.4/3.5, a lot has changed since then as Awesome was rewritten in version 4+ and what you see here may be different now. I'm adding this disclaimer because I'm seeing new responses/views for this question.

I'm trying to map my awesome wm shortcuts similar to tmux. I like tmux's alt+arrow combination to resize the pane in either dimension. I'm aware that awesome's awful.tag.incmwfact() function will work vertically or horizontally depending on layout. However, I'd also like a function that resizes in the other dimension under the same layout as well. This would be useful for maximizing one of the smaller windows vertically without invading the space of the largest window on the other half of the screen:

+----------+----------+
|          |          |
|          |     ^    |
|          +-----|----+
|          |     v    |
|          |          |
+----------+----------+

I found the awful.client.moveresize() function as well, but it only seems to work in floating layout. I know this is doable since I can resize the windows with a mouse, even in tiling layouts. I just don't know which function the mouse hooks into.

Answer

Alexander Tsepkov picture Alexander Tsepkov · Jul 18, 2013

Figured it out, posting the answer for others who need this functionality as well:

awful.key({ modkey, "Mod1"    }, "Right",     function () awful.tag.incmwfact( 0.01)    end),
awful.key({ modkey, "Mod1"    }, "Left",     function () awful.tag.incmwfact(-0.01)    end),
awful.key({ modkey, "Mod1"    }, "Down",     function () awful.client.incwfact( 0.01)    end),
awful.key({ modkey, "Mod1"    }, "Up",     function () awful.client.incwfact(-0.01)    end),

Basically, instead of tag's incmwfact, use the client's own incwfact function. Also, this will only work in tiling layouts, in floating it will cause an error bubble.