Add awesome.composite_manager_running
Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
019f55a1da
commit
360e1a5f92
45
luaa.c
45
luaa.c
|
@ -27,6 +27,8 @@
|
|||
|
||||
#include <basedir_fs.h>
|
||||
|
||||
#include <xcb/xcb_atom.h>
|
||||
|
||||
#include "awesome.h"
|
||||
#include "config.h"
|
||||
#include "objects/timer.h"
|
||||
|
@ -60,6 +62,43 @@ extern const struct luaL_Reg awesome_screen_meta[];
|
|||
/** Path to config file */
|
||||
static char *conffile;
|
||||
|
||||
/** Check whether a composite manager is running.
|
||||
* \return True if such a manager is running.
|
||||
*/
|
||||
static bool
|
||||
composite_manager_running(void)
|
||||
{
|
||||
xcb_intern_atom_reply_t *atom_r;
|
||||
xcb_get_selection_owner_reply_t *selection_r;
|
||||
char *atom_name;
|
||||
bool result;
|
||||
|
||||
if(!(atom_name = xcb_atom_name_by_screen("_NET_WM_CM", globalconf.default_screen)))
|
||||
{
|
||||
warn("error getting composite manager atom");
|
||||
return false;
|
||||
}
|
||||
|
||||
atom_r = xcb_intern_atom_reply(globalconf.connection,
|
||||
xcb_intern_atom_unchecked(globalconf.connection, false,
|
||||
a_strlen(atom_name), atom_name),
|
||||
NULL);
|
||||
p_delete(&atom_name);
|
||||
if(!atom_r)
|
||||
return false;
|
||||
|
||||
selection_r = xcb_get_selection_owner_reply(globalconf.connection,
|
||||
xcb_get_selection_owner_unchecked(globalconf.connection,
|
||||
atom_r->atom),
|
||||
NULL);
|
||||
p_delete(&atom_r);
|
||||
|
||||
result = selection_r != NULL && selection_r->owner != XCB_NONE;
|
||||
p_delete(&selection_r);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Quit awesome.
|
||||
* \param L The Lua VM state.
|
||||
* \return The number of elements pushed on stack.
|
||||
|
@ -423,6 +462,12 @@ luaA_awesome_index(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
if(A_STREQ(buf, "composite_manager_running"))
|
||||
{
|
||||
lua_pushboolean(L, composite_manager_running());
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ module("awesome")
|
|||
-- @field version The version of awesome.
|
||||
-- @field release The release name of awesome.
|
||||
-- @field conffile The configuration file which has been loaded.
|
||||
-- @field composite_manager_running True if a composite manager is running.
|
||||
-- @class table
|
||||
-- @name awesome
|
||||
|
||||
|
|
Loading…
Reference in New Issue