<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>K Notes &#187; Yakuake</title>
	<atom:link href="http://knotes.ru/tag/yakuake/feed/" rel="self" type="application/rss+xml" />
	<link>http://knotes.ru</link>
	<description>Всё о KDE</description>
	<lastBuildDate>Tue, 10 Aug 2010 09:03:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>D-Bus для чайников</title>
		<link>http://knotes.ru/2009/05/d-bus-tutorial/</link>
		<comments>http://knotes.ru/2009/05/d-bus-tutorial/#comments</comments>
		<pubDate>Fri, 08 May 2009 01:30:26 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Для разработчиков]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[D-Bus]]></category>
		<category><![CDATA[Yakuake]]></category>

		<guid isPermaLink="false">http://knotes.ru/?p=1185</guid>
		<description><![CDATA[Во времена KDE3 продвинутые пользователи владели скрытым знанием, имя которому было DCOP. DCOP расшифровывается как Desktop COmmunication Protocol. Если верить русской Википедии, то цель DCOP — обеспечивать межпроцессное взаимодействие и распределять сложные задачи. Для нас важно, что используя этот интерфейс, можно было управлять поведением KDE-приложений извне: из своих скриптов или повесив нужное действие на сочетание [...]]]></description>
			<content:encoded><![CDATA[<p>Во времена KDE3 продвинутые пользователи владели скрытым знанием, имя которому было DCOP. DCOP расшифровывается как Desktop COmmunication Protocol. <a href="http://ru.wikipedia.org/wiki/DCOP">Если верить русской Википедии</a>, то цель DCOP — обеспечивать межпроцессное взаимодействие и распределять сложные задачи. Для нас важно, что используя этот интерфейс, можно было управлять поведением KDE-приложений извне: из своих скриптов или повесив нужное действие на сочетание клавиш.</p>
<p>К примеру, поводом для написания этой статьи стал вот этот комментарий к заметке о Yakuake:</p>
<blockquote>
<p>C yakuake уже больше года. В kde3 с помощью DCOP автоматически при заходе на определенный хост называл вкладки: <code>dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "host_xx"</code></p>
</blockquote>
<p>Пользователи других оконных оболочек на самом деле страшно завидовали, что в KDE можно хоть из командной строки “сказать” KMail’у запустить проверку почты, или Amarok’у переключиться на следующий трек, или рабочему столу сменить фоновую картинку… Поэтому в рамках проекта freedesktop.org разработчики KDE и Gnome совместно разработали межпрограммный интерфейс D-Bus, который стал стандартом для различных оконных сред, а для KDE4 — наследником DCOP.</p>
<p>По информации из <a href="http://ru.wikipedia.org/wiki/D-Bus">всё той же Википедии</a>, D-Bus-интерфейсы есть для Glib, Java (GCJ), Mono, Qt и Python. В наших примерах мы будем использовать консольную утилиту <code>qdbus</code>.</p>
<p>Итак, если в свежезапущенном yakuake набрать <code>qdbus org.kde.yakuake</code>, то вы увидите примерно такую картину:</p>
<p><img src="http://knotes.ru/wp-content/uploads/2009/05/dbus1.png" alt="" /></p>
<p>Немного терминологии. <code>org.kde.yakuake</code> — это название <strong>сервиса</strong>. В результате выполнения команды в терминале имеем список <strong>объектов</strong> этого сервиса. У объектов, в свою очередь, есть <strong>методы</strong>:</p>
<p><img src="http://knotes.ru/wp-content/uploads/2009/05/dbus2.png" alt="" /></p>
<p>Через эти методы и осуществляется связь с приложением. Для начала возьмём простой метод — <code>method void org.kde.yakuake.addSession()</code>. Всё, что нам нужно сделать — это ввести команду <code>qdbus org.kde.yakuake /yakuake/sessions addSession</code>, и в Yakuake откроется новая вкладка.</p>
<p>Другие методы могут требовать передачи параметров или даже возвращать какие-либо значения:</p>
<p><img src="http://knotes.ru/wp-content/uploads/2009/05/dbus3.png" alt="" /></p>
<p>Всё, что я сделал — это набрал команду <code>qdbus org.kde.yakuake /yakuake/sessions runCommand "echo moo"</code>. Вторая команда появилась в результате выполнения метода runCommand с соответствующим параметром.</p>
<p>Возвращаясь к вопросу о переименования вкладок, для начала нам необходимо получить номер текущей сессии:</p>
<p><img src="http://knotes.ru/wp-content/uploads/2009/05/dbus4.png" alt="" /></p>
<p>Если вы используете эту команду в bash-скрипте, то вы наверняка захотите сохранить это значение в переменную. Примерно так:</p>
<pre><code>S=`qdbus org.kde.yakuake /yakuake/sessions activeSessionId`
</code></pre>
<p>Затем нам остаётся только вызвать метод <code>setTabTitle</code> объекта <code>/yakuake/tabs</code>:</p>
<p><img src="http://knotes.ru/wp-content/uploads/2009/05/dbus5.png" alt="" /></p>
<p>В скрипте это было бы</p>
<pre><code>qdbus org.kde.yakuake /yakuake/tabs setTabTitle $S &lt;ваш заголовок&gt;
</code></pre>
<p>Чтобы получить список всех D-Bus сервисов, запустите <code>qdbus</code> без параметров. Кстати, есть ещё и графическая утилита — <code>qdbusviewer</code>.</p>
<p>Найти подробную информацию о D-Bus API конкретных приложений бывает непросто, но Google всегда будет преданным спутником в ваших исследованиях. Более подробно об использовании D-Bus и создании приложений, предоставляющих D-Bus-интерфейсы, вы можете узнать из <a href="http://techbase.kde.org/Development/Tutorials#D-Bus">соответствующих туториалов на Techbase</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://knotes.ru/2009/05/d-bus-tutorial/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Yakuake &#8211; квартальный отчёт</title>
		<link>http://knotes.ru/2009/04/quarterly-report-yakuake/</link>
		<comments>http://knotes.ru/2009/04/quarterly-report-yakuake/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 20:50:13 +0000</pubDate>
		<dc:creator>SeaJey</dc:creator>
				<category><![CDATA[Ход разработки]]></category>
		<category><![CDATA[Yakuake]]></category>

		<guid isPermaLink="false">http://knotes.ru/?p=975</guid>
		<description><![CDATA[Juan Carlos G. Torres ака Jucato опубликовал квартальный отчёт о ходе разработки Yakuake — графической Linux-консоли в стиле Quake III.
Первым представленным новшеством стала возможность перетаскивания вкладок по панели с помощью левой кнопки мыши. Сначала это было сделано в Konsole — теперь и в Yakuake.

Из контекстного меню стало возможным заблокировать вкладку, т.е. обезопасить её от закрытия. [...]]]></description>
			<content:encoded><![CDATA[<p>Juan Carlos G. Torres ака Jucato опубликовал квартальный <a href="http://jucato.org/blog/quarterly-report-yakuake/">отчёт о ходе разработки Yakuake</a> — графической Linux-консоли в стиле Quake III.<br />
Первым представленным новшеством стала возможность перетаскивания вкладок по панели с помощью левой кнопки мыши. Сначала это было сделано в Konsole — теперь и в Yakuake.<br />
<img src="http://knotes.ru/wp-content/uploads/2009/04/yakuake1.jpeg" alt="перетаскивание табов" /></p>
<p>Из контекстного меню стало возможным заблокировать вкладку, т.е. обезопасить её от закрытия. При попытке закрыть появится диалог подтверждения действия. &laquo;Замок&raquo; накладывается на все терминалы в этой вкладке, в том числе и те, что были &laquo;разделены&raquo;. Есть и ограничения — команда &laquo;exit&raquo; в самом терминале, комбинация Ctrl+D и встроенный в Konsole метод (вызывается через контекстное меню или по Ctrl+Shift+W ) не экранируются.<br />
<img src="http://knotes.ru/wp-content/uploads/2009/04/yakuake2.jpeg" alt="блокировка вкладки" /></p>
<p>Другой тип блокировки — “Disable Keyboard Input” (отключить ввод с клавиатуры) — т.е. терминал переводится в режим &laquo;read only&raquo;. Ультимативное решение для настоящих ценителей.<br />
<a href="http://knotes.ru/wp-content/uploads/2009/04/yakuake3.jpeg"><img src="http://knotes.ru/wp-content/uploads/2009/04/yakuake3-300x84.jpg" alt="" title="yakuake3" width="300" height="84" class="aligncenter size-medium wp-image-978" /></a></p>
<p>И последнее &#8211; новый визуальный эффект “Visual Effect Overlay”, позволяет накинуть полупрозрачное &laquo;покрывало&raquo; поверх терминала. Например, если вы печатаете в заблокированном терминале &#8211; он будет мигать красным на протяжении всего процесса, или при выборе из меню, какую консоль заблокировать, та что сейчас под курсором будет подсвечена голубым:<br />
<a href="http://knotes.ru/wp-content/uploads/2009/04/yakuake4.jpeg"><img src="http://knotes.ru/wp-content/uploads/2009/04/yakuake4-300x128.jpg" alt="" title="yakuake4" width="300" height="128" class="aligncenter size-medium wp-image-982" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://knotes.ru/2009/04/quarterly-report-yakuake/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Yakuake 2.9</title>
		<link>http://knotes.ru/2008/03/yakuake-29/</link>
		<comments>http://knotes.ru/2008/03/yakuake-29/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 10:59:56 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Релизы]]></category>
		<category><![CDATA[Yakuake]]></category>

		<guid isPermaLink="false">http://knotes.ru/2008/03/yakuake-29/</guid>
		<description><![CDATA[LOR сообщает о выходе стабильной версии Yakuake KDE4-ветки. В принципе, Yakuake теперь распространяется как часть KDE, так что пользователи KDE4 большую часть нововведений уже видели.
]]></description>
			<content:encoded><![CDATA[<p>LOR <a href="http://www.linux.org.ru/jump-message.jsp?msgid=2548005">сообщает</a> о выходе стабильной версии Yakuake KDE4-ветки. В принципе, Yakuake теперь распространяется как часть KDE, так что пользователи KDE4 большую часть нововведений уже видели.</p>
]]></content:encoded>
			<wfw:commentRss>http://knotes.ru/2008/03/yakuake-29/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
