<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Xlib и _NET_WM_STATE [C]]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=20435</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=20435&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Xlib и _NET_WM_STATE [C]».]]></description>
		<lastBuildDate>Thu, 23 Feb 2012 08:24:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Xlib и _NET_WM_STATE [C]]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=253319#p253319</link>
			<description><![CDATA[<p>Решил сам, упростив конструкцию до:<br /></p><div class="codebox"><pre><code> if (a != None) {
    Atom prop = XInternAtom(display, &quot;_NET_WM_STATE_SKIP_TASKBAR&quot;, True);
    XChangeProperty(display, window, a, XA_ATOM, 32, PropModeAppend, (unsigned char *) &amp;prop, 1);
    Atom prop1 = XInternAtom(display, &quot;_NET_WM_STATE_SKIP_PAGER&quot;, True);
    XChangeProperty(display, window, a, XA_ATOM, 32, PropModeAppend, (unsigned char *) &amp;prop1, 1);
    Atom prop2 = XInternAtom(display, &quot;_NET_WM_STATE_ABOVE&quot;, True);
    XChangeProperty(display, window, a, XA_ATOM, 32, PropModeAppend, (unsigned char *) &amp;prop2, 1);
    }</code></pre></div><p> И начав вызывать до показа окна.</p>]]></description>
			<author><![CDATA[null@example.com (Cynic)]]></author>
			<pubDate>Thu, 23 Feb 2012 08:24:12 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=253319#p253319</guid>
		</item>
		<item>
			<title><![CDATA[Xlib и _NET_WM_STATE [C]]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=252984#p252984</link>
			<description><![CDATA[<p>День добрый, господа. Возникла проблемка, при программировании под чистый xlib. Значится по мере выполнения задачи возникла потребность - спрятать приложение из pager и так называемой панели задач, а так же постоянно держать форму поверх остальных окон. Долгое гугление и вдумчивое курение документации - навели меня на написание следующих строк:<br /></p><div class="codebox"><pre><code>//убираемся из панели задач и pager
    Atom a = XInternAtom(display, &quot;_NET_WM_STATE&quot;, True);
    if (a != None) {
    Atom prop = XInternAtom(display, &quot;_NET_WM_STATE_SKIP_TASKBAR&quot;, True);
    XChangeProperty(display, window, a, XA_ATOM, 32, PropModeAppend, (unsigned char *) &amp;prop, 1);
    }
    a = XInternAtom(display, &quot;_NET_WM_STATE&quot;, True);
    if (a != None) {
    Atom prop = XInternAtom(display, &quot;_NET_WM_STATE_SKIP_PAGER&quot;, True);
    XChangeProperty(display, window, a, XA_ATOM, 32, PropModeAppend, (unsigned char *) &amp;prop, 1);
    }
    //типа stay on top.
    a = XInternAtom(display, &quot;_NET_WM_STATE&quot;, True);
    if (a != None) {
    Atom prop = XInternAtom(display, &quot;_NET_WM_STATE_ABOVE&quot;, True);
    XChangeProperty(display, window, a, XA_ATOM, 32, PropModeAppend, (unsigned char *) &amp;prop, 1);
    }</code></pre></div><p>Все бы хорошо, однако - по непонятной причине - второй блок if - отрабатывает вообще рандомно, а третий - такое ощущение, что не отрабатывает вовсе. Тоесть - форма по только ей понятной причине: пропадает из панели задач, абсолютно случайно при н-м запуске пропадает из pager, а состояние поверх всех окон - пропадает при любом изменении фокуса. В браузер ткнулся, и все - форма уже не видна. Может быть - у кого нибудь уже есть опыт реализации подобной задачи, и он подскажет, что я таки делаю не так, и главное - как надо?</p>]]></description>
			<author><![CDATA[null@example.com (Cynic)]]></author>
			<pubDate>Wed, 22 Feb 2012 08:33:36 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=252984#p252984</guid>
		</item>
	</channel>
</rss>
