Ignore (Un)Grab focus notifies

When a keyboard grab activate/deactives, the input focus jumps to the window
which does the grab. These FocusIn events sometimes managed to confuse awesome.
The symptom was that a newly mapped/started client didn't receive the input
focus:

- You press your key-combo to start a terminal. This activates a passive grab
  and the input focus jumps to the root window
- The terminal opens and the "manage" rule does client.focus = c
- This doesn't set the focus yet, but instead causes
  globalconf.focus.need_update = true and .client = new_terminal
- Before the focus is updated, the key combo is released and the focus jumps
  back to the previously focused client
- The FocusIn with mode == Ungrab causes awesome to think that the previously
  focused client got focused again and thus globalconf.client.focus gets re-set
  to what it was before
- Finally the focus is refreshed and the previously focused client gets focused

The fix is simple: We don't need the FocusIn events which are generated when a
grab activates or deactivates, so we can just ignore them.

Thanks to Majic for reporting this to me.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Unminimize before checking for tag switch (FS#1020)

For a minimized client, c:isvisible() is always false which is not what we want
here. So instead, unminimize the client before checking if it's visible.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Print signal number while dying

Signed-off-by: Uli Schlachter <psychon@znc.in>
Handle execv() errors

Previously, awesome would just crash when execv() fails, because it already
destroyed all of its internal state, but then tries to do another main loop
iteration. Whoops.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Move some helper functions to draw.h

Signed-off-by: Uli Schlachter <psychon@znc.in>
root: Add a wallpaper setter

This allows lua code to set a wallpaper directly instead of having to spawn some
external tools which possibly aren't installed.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Remove all traces of awsetbg and wallpaper setters

Signed-off-by: Uli Schlachter <psychon@znc.in>
gears.wallpaper: Import

This is a lua module for managing the wallpaper.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Re-add wallpapers to the themes

The commit "Remove all traces of awsetbg and wallpaper setters" removed these.
This commit adds them back, but they are now applied a little different. The
main reason is that this makes it really easy for the user to ignore the
wallpaper that a theme specifies.

Signed-off-by: Uli Schlachter <psychon@znc.in>
common/util.h: dodgy non-__GNUC__ p_delete

I assume nobody have tried to compile Awesome with GNU uncompatible
compiler for ages and thus non-__GNUC__ p_delete version got
overlooked for quite some time.
First of all, a problem I see is that it assigns void** to a variable
of type void* and then dereferences the same void* variable.
None of the compilers I am aware of will let you go through this
without an error.
And second of all, lets have one portable p_delete.

Signed-off-by: Arvydas Sidorenko <asido4@gmail.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
awful.client: Add a missing "local"

Reported by | and his strict.lua.

Signed-off-by: Uli Schlachter <psychon@znc.in>
run_or_raise: fix for lua 5.2 upgrade

Signed-off-by: Anurag Priyam <anurag08priyam@gmail.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
Add awful.client.setmaster

This function is the counterpart of awful.client.setslave.

Windows is moved to the first position in the stack.

Signed-off-by: Sébastien Luttringer <seblu@seblu.net>
Signed-off-by: Uli Schlachter <psychon@znc.in>
Add mousegrabber and keygrabber isrunning luadoc

Signed-off-by: Sébastien Luttringer <seblu@seblu.net>
Signed-off-by: Uli Schlachter <psychon@znc.in>