Misc: Add properties to the registration window
Add WM_CLASS, COMPTON_VERSION, and _NET_WM_PID properties to the registration window, to ease the development of pcman's compton-conf.
This commit is contained in:
parent
46e6abdd2a
commit
c02a867e6f
|
@ -4543,8 +4543,31 @@ register_cm(session_t *ps) {
|
||||||
if (ps->redirected)
|
if (ps->redirected)
|
||||||
XCompositeUnredirectWindow(ps->dpy, ps->reg_win, CompositeRedirectManual);
|
XCompositeUnredirectWindow(ps->dpy, ps->reg_win, CompositeRedirectManual);
|
||||||
|
|
||||||
|
{
|
||||||
|
XClassHint *h = XAllocClassHint();
|
||||||
|
if (h) {
|
||||||
|
h->res_name = "compton";
|
||||||
|
h->res_class = "xcompmgr";
|
||||||
|
}
|
||||||
Xutf8SetWMProperties(ps->dpy, ps->reg_win, "xcompmgr", "xcompmgr",
|
Xutf8SetWMProperties(ps->dpy, ps->reg_win, "xcompmgr", "xcompmgr",
|
||||||
NULL, 0, NULL, NULL, NULL);
|
NULL, 0, NULL, NULL, h);
|
||||||
|
cxfree(h);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set _NET_WM_PID
|
||||||
|
{
|
||||||
|
long pid = getpid();
|
||||||
|
if (!XChangeProperty(ps->dpy, ps->reg_win,
|
||||||
|
get_atom(ps, "_NET_WM_PID"), XA_CARDINAL, 32, PropModeReplace,
|
||||||
|
(unsigned char *) &pid, 1)) {
|
||||||
|
printf_errf("(): Failed to set _NET_WM_PID.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set COMPTON_VERSION
|
||||||
|
if (!wid_set_text_prop(ps, ps->reg_win, get_atom(ps, "COMPTON_VERSION"), COMPTON_VERSION)) {
|
||||||
|
printf_errf("(): Failed to set COMPTON_VERSION.");
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
unsigned len = strlen(REGISTER_PROP) + 2;
|
unsigned len = strlen(REGISTER_PROP) + 2;
|
||||||
|
|
|
@ -337,9 +337,7 @@ isdamagenotify(session_t *ps, const XEvent *ev) {
|
||||||
*/
|
*/
|
||||||
static inline XTextProperty *
|
static inline XTextProperty *
|
||||||
make_text_prop(session_t *ps, char *str) {
|
make_text_prop(session_t *ps, char *str) {
|
||||||
XTextProperty *pprop = malloc(sizeof(XTextProperty));
|
XTextProperty *pprop = cmalloc(1, XTextProperty);
|
||||||
if (!pprop)
|
|
||||||
printf_errfq(1, "(): Failed to allocate memory.");
|
|
||||||
|
|
||||||
if (XmbTextListToTextProperty(ps->dpy, &str, 1, XStringStyle, pprop)) {
|
if (XmbTextListToTextProperty(ps->dpy, &str, 1, XStringStyle, pprop)) {
|
||||||
cxfree(pprop->value);
|
cxfree(pprop->value);
|
||||||
|
@ -350,6 +348,25 @@ make_text_prop(session_t *ps, char *str) {
|
||||||
return pprop;
|
return pprop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a single-string text property on a window.
|
||||||
|
*/
|
||||||
|
static inline bool
|
||||||
|
wid_set_text_prop(session_t *ps, Window wid, Atom prop_atom, char *str) {
|
||||||
|
XTextProperty *pprop = make_text_prop(ps, str);
|
||||||
|
if (!pprop) {
|
||||||
|
printf_errf("(\"%s\"): Failed to make text property.", str);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
XSetTextProperty(ps->dpy, wid, pprop, prop_atom);
|
||||||
|
cxfree(pprop->value);
|
||||||
|
cxfree(pprop);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
run_fade(session_t *ps, win *w, unsigned steps);
|
run_fade(session_t *ps, win *w, unsigned steps);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue