コード例 #1
0
static Bool
titleinfoInitWindow (CompPlugin *p,
		     CompWindow *w)
{
    TitleinfoWindow *tw;

    TITLEINFO_SCREEN (w->screen);

    tw = malloc (sizeof (TitleinfoWindow));
    if (!tw)
	return FALSE;

    tw->remoteMachine = NULL;
    tw->title         = NULL;
    tw->owner         = -1;

    w->base.privates[ts->windowPrivateIndex].ptr = tw;

    titleinfoUpdateTitle (w);
    titleinfoUpdateMachine (w);
    titleinfoUpdatePid (w);
    titleinfoUpdateVisibleName (w);

    return TRUE;
}
コード例 #2
0
ファイル: titleinfo.c プロジェクト: AtheistSpacePirate/compiz
static void titleinfoUpdateMachine(CompWindow * w)
{
	TITLEINFO_WINDOW(w);

	if (tw->remoteMachine)
		free(tw->remoteMachine);

	tw->remoteMachine = titleinfoGetTextProperty(w->screen->display, w->id,
						     XA_WM_CLIENT_MACHINE);

	if (titleinfoGetShowRemoteMachine(w->screen))
		titleinfoUpdateVisibleName(w);
}
コード例 #3
0
ファイル: titleinfo.c プロジェクト: noodlylight/fusilli
static void
titleinfoUpdatePid (CompWindow *w)
{
	CompDisplay   *d = &display;
	int pid = -1;
	Atom type;
	int result, format;
	unsigned long nItems, bytesAfter;
	unsigned char *propVal;

	TITLEINFO_DISPLAY (d);
	TITLEINFO_WINDOW (w);

	tw->owner = -1;

	result = XGetWindowProperty (d->display, w->id, td->wmPidAtom,
	                             0L, 1L, False, XA_CARDINAL, &type,
	                             &format, &nItems, &bytesAfter, &propVal);

	if (result == Success && propVal)
	{
		if (nItems)
		{
			unsigned long value;

			memcpy (&value, propVal, sizeof (unsigned long));
			pid = value;
		}

		XFree (propVal);
	}

	if (pid >= 0)
	{
		char path[512];
		struct stat fileStat;

		snprintf (path, 512, "/proc/%d", pid);
		if (!lstat (path, &fileStat))
			tw->owner = fileStat.st_uid;
	}

	const BananaValue *
	option_show_root = bananaGetOption (bananaIndex,
	                                    "show_root",
	                                    w->screen->screenNum);

	if (option_show_root->b)
		titleinfoUpdateVisibleName (w);
}
コード例 #4
0
ファイル: titleinfo.c プロジェクト: AtheistSpacePirate/compiz
static void titleinfoFiniWindow(CompPlugin * p, CompWindow * w)
{
	TITLEINFO_WINDOW(w);

	if (tw->title)
		free(tw->title);

	if (tw->remoteMachine)
		free(tw->remoteMachine);

	tw->remoteMachine = NULL;
	titleinfoUpdateVisibleName(w);

	free(tw);
}
コード例 #5
0
ファイル: titleinfo.c プロジェクト: AtheistSpacePirate/compiz
static void titleinfoUpdateTitle(CompWindow * w)
{
	CompDisplay *d = w->screen->display;
	char *title;

	TITLEINFO_WINDOW(w);

	title = titleinfoGetUtf8Property(d, w->id, d->wmNameAtom);

	if (!title)
		title = titleinfoGetTextProperty(d, w->id, XA_WM_NAME);

	if (tw->title)
		free(tw->title);

	tw->title = title;
	titleinfoUpdateVisibleName(w);
}
コード例 #6
0
ファイル: titleinfo.c プロジェクト: noodlylight/fusilli
static void
titleinfoUpdateMachine (CompWindow *w)
{
	TITLEINFO_WINDOW (w);

	if (tw->remoteMachine)
		free (tw->remoteMachine);

	tw->remoteMachine = titleinfoGetTextProperty (&display, w->id,
	                                              XA_WM_CLIENT_MACHINE);

	const BananaValue *
	option_show_remote_machine = bananaGetOption (bananaIndex,
	                                              "show_remote_machine",
	                                              w->screen->screenNum);

	if (option_show_remote_machine->b)
		titleinfoUpdateVisibleName (w);
}