<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF95%3ADCOP</id>
		<title>LXF95:DCOP - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF95%3ADCOP"/>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF95:DCOP&amp;action=history"/>
		<updated>2026-05-13T23:44:01Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.11.1</generator>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF95:DCOP&amp;diff=6484&amp;oldid=prev</id>
		<title>Yaleks: категория</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF95:DCOP&amp;diff=6484&amp;oldid=prev"/>
				<updated>2009-01-07T09:31:04Z</updated>
		
		<summary type="html">&lt;p&gt;категория&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 09:31, 7 января 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=DCOP: Моддинг в ситле KDE=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=DCOP: Моддинг в ситле KDE=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: Нравится идея менеджера виртуальных рабочих столов для KDE? '''Грэм''' &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Моррисон &lt;/del&gt;покажет, как автоматизировать KDE через функции ''DCOP''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: Нравится идея менеджера виртуальных рабочих столов для KDE? '''Грэм &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Моррисон&lt;/ins&gt;''' покажет, как автоматизировать KDE через функции ''DCOP''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;У KDE больше функций на каждый пиксель, чем у любого другого рабочего стола, который я в силах припомнить. Это источник гордости и критики для пользователей, которые или&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;У KDE больше функций на каждый пиксель, чем у любого другого рабочего стола, который я в силах припомнить. Это источник гордости и критики для пользователей, которые или&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 290:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 290:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''Добавление свойств''' Есть две функции '''setWallpaper'''. Вся разница между ними в том, что одна принимает два параметра, а другая три. Двойной щелчок по функции, и можно вводить требуемые данные – путь к изображению, рабочий стол, который вы хотите поменять, и режим масштабирования.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''Добавление свойств''' Есть две функции '''setWallpaper'''. Вся разница между ними в том, что одна принимает два параметра, а другая три. Двойной щелчок по функции, и можно вводить требуемые данные – путь к изображению, рабочий стол, который вы хотите поменять, и режим масштабирования.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Категория:Hardcore Linux]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Категория:Грэм Моррисон]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF95:DCOP&amp;diff=6061&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF95:DCOP&amp;diff=6061&amp;oldid=prev"/>
				<updated>2008-12-16T10:06:17Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''HardcoreLinux''' Проверьте себя как продвинутого пользователя&lt;br /&gt;
&lt;br /&gt;
=DCOP: Моддинг в ситле KDE=&lt;br /&gt;
&lt;br /&gt;
: Нравится идея менеджера виртуальных рабочих столов для KDE? '''Грэм''' Моррисон покажет, как автоматизировать KDE через функции ''DCOP''.&lt;br /&gt;
&lt;br /&gt;
У KDE больше функций на каждый пиксель, чем у любого другого рабочего стола, который я в силах припомнить. Это источник гордости и критики для пользователей, которые или&lt;br /&gt;
обожают, или ненавидят эту бездну настроек. Пользователи KDE привыкли тонко регулировать все аспекты пользовательского интерфейса, как через ''KControl'', так и с помощью диалогов настроек каждого&lt;br /&gt;
приложения. Но большинство пользователей и не подозревают, что&lt;br /&gt;
KDE предоставляет механизм настроек поинтереснее, чем пара-тройка&lt;br /&gt;
панелей и вкладок.&lt;br /&gt;
&lt;br /&gt;
Этот механизм можно задействовать через ''DCOP'' (Desktop Communication Protocol, Протокол взаимодействия рабочего стола).&lt;br /&gt;
Его мало используют и плохо понимают, но он способен добраться до&lt;br /&gt;
самых недр KDE-приложения. И когда я говорю недра, я имею в виду&lt;br /&gt;
недра: в данном случае, это функции, созданные программистом для&lt;br /&gt;
построения своего приложения, которые насколько глубоко вникли во&lt;br /&gt;
KDE, насколько это возможно. На нашем уроке мы создадим скрипт,&lt;br /&gt;
который поможет вам управлять непомерным количеством окон, обычно висящем на типичном рабочем столе KDE. Наш скрипт перекинет&lt;br /&gt;
однотипные приложения на один рабочий стол, упростив одновременную работу с несколькими задачами.&lt;br /&gt;
&lt;br /&gt;
==DCOP для масс==&lt;br /&gt;
&lt;br /&gt;
Вы будете работать с функциями, причем компьютерными.&lt;br /&gt;
Единственное их сходство с математическими собратьями – то, что&lt;br /&gt;
они обрабатывают данные и выводят результат. Эти функции являются строительными блоками приложения, в основном используемыми&lt;br /&gt;
для разбиения больших задач на мелкие фрагменты. Например, вы&lt;br /&gt;
можете захотеть иметь функцию для свертывания или развертывания окна на рабочем столе. Пользователю незачем знать, какая функция скрывается за данной возможностью: ему нужно только, чтобы&lt;br /&gt;
при нажатии на определенную иконку происходило определенное&lt;br /&gt;
действие.&lt;br /&gt;
&lt;br /&gt;
Свертывание и развертывание окон было выбрано не случайно. У&lt;br /&gt;
всех приложений KDE есть функции для выполнения этих задач, и вот&lt;br /&gt;
здесь может помочь ''DCOP'' ['''небольшое отступление: функциональность, сходной с ''DCOP'', но не завязанной на KDE, обладает ''D-BUS'' – он-то и придет на смену ''DCOP'' в KDE4, – прим.ред.''']. ''DCOP'' дает обычным&lt;br /&gt;
пользователям доступ ко многим «закулисным» функциям, используемым приложениями внутри себя; он позволяет перенаправлять данные&lt;br /&gt;
в приложение и из него, как будто вы являетесь разработчиком приложения. Конечно, обычные пользователи могут оробеть перед такими&lt;br /&gt;
возможностями, но раз вы читаете эту статью, значит, вы не просто&lt;br /&gt;
давнишний пользователь, верно?&lt;br /&gt;
&lt;br /&gt;
''DCOP'' является протоколом межпроцессного взаимодействия. Таких&lt;br /&gt;
существует довольно много, но от большинства других реализаций&lt;br /&gt;
''DCOP'' отличает сравнительная доступность. Откройте командную строку, наберите ''dcop'', и поймете, что я имею в виду. Вывод данной команды будет содержать список всех KDE-приложений, открытых в данный&lt;br /&gt;
момент – его любезно предоставляет ''DCOP''.&lt;br /&gt;
&lt;br /&gt;
При запуске каждое приложение присоединяет себя к общесистемному серверу ''DCOP'' – его-то вы и опрашивали командой ‘''dcop''’. Но самое интересное начнется, когда вы попытаетесь опрашивать работающие приложения. Например, наберите ''dcop kdesktop''. Вы увидите список объектов верхнего уровня, использованных программистами&lt;br /&gt;
для разработки приложения ''KDesktop'' – инструмента, ответственного&lt;br /&gt;
за фон рабочего стола и прочие небольшие задачи. ''DCOP'' использует&lt;br /&gt;
иерархию узлов для упорядочения доступных функций, и то, что вы&lt;br /&gt;
видите, является списком узлов верхнего уровня присоединенных&lt;br /&gt;
к ''KDesktop''. Вы можете попробовать опросить любое приложение,&lt;br /&gt;
встретившееся в выводе нашей первой команды ''dcop''. Мы на самом&lt;br /&gt;
деле уже использовали ''DCOP'' для манипулирования ''KDesktop'' пару&lt;br /&gt;
лет назад в '''Совете месяца''' в разделе руководств '''LXF66''', когда создавали небольшой скрипт для скачивания космического изображения дня с NASA и автоматической установки его в качестве фонового&lt;br /&gt;
изображения.&lt;br /&gt;
&lt;br /&gt;
==Расшифровка синтаксиса с ''Kdcop''==&lt;br /&gt;
&lt;br /&gt;
Такая гибкость является силой ''DCOP'', а его возможности просто безграничны. Наилучший способ исследовать некоторые из этих возможностей – использовать графическую KDE оболочку для команды ''dcop'',&lt;br /&gt;
называемую ''Kdcop''. Она редко встречается в системном меню, и вам,&lt;br /&gt;
вероятно, потребуется запустить ее через пункт '''Запустить команду''' из&lt;br /&gt;
меню KDE и набрать ''kdcop''. Это отличная маленькая утилита, позволяющая исследовать различные KDE-приложения, их ассоциированные узлы ''DCOP'' и функции.&lt;br /&gt;
&lt;br /&gt;
Пользовательский интерфейс ''Kdcop'' прост в понимании. Панель поиска наверху особенно полезна, так как обновляется в реальном времени. Попытайтесь набрать ‘'''Wallpaper'''’ в поле поиска – появится несколько записей насчет фона стола, присоединенных к объекту '''KBackgroundIface'''.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF95_dcop1.png|Рис. 1]]&lt;br /&gt;
&lt;br /&gt;
'''Иногда без GUI невозможно понять, что делает очередная ''DCOP''-функция: например, поле ''Position'' из ''KControl'' в ''DCOP'' называется ''Scale mode''.'''&lt;br /&gt;
&lt;br /&gt;
Функция, которую мы использовали в том Совете месяца, называлась '''void setWallpaper(QString wallpaper, int mode)'''. Если вы никогда не занимались KDE-программированием, вам это мало что скажет – но&lt;br /&gt;
вообще-то это простой ''C++'' синтаксис для определения входных и&lt;br /&gt;
выходных параметров ['''а также возвращаемого значения, – прим. ред.''']. Сама функция называется ''setWallpaper'', а значения в скобках – это два параметра, которые она требует на вход: текстовая строка, содержащая путь к изображению, и целое число, обозначающее режим использования. Что за режим? Вот и проявилась самая большая проблема с ''DCOP'': формальной документации нет.&lt;br /&gt;
&lt;br /&gt;
Если вы хотите понять, что делают параметры вроде '''mode''', единственный способ это сделать – посмотреть исходный код приложения. Тем, кто использует ''DCOP'' с KDE-приложением, не являющимся&lt;br /&gt;
основной частью рабочего стола, придется получить исходный код с&lt;br /&gt;
домашней страницы проекта или со страницы SourceForge. К счастью, '''setWallpaper()''' является составной частью дистрибутива рабочего стола KDE, то есть вы можете посмотреть исходный код в режиме&lt;br /&gt;
онлайн (см. http://techbase.kde.org) или установить пакеты разработки&lt;br /&gt;
KDE ['''другие приложения также позволяют увидеть свой код в Сети, например, все проекты SourceForge предоставляют для этих целей ссылку Browse SVN, – прим.ред.''']. В данном случае надо смотреть&lt;br /&gt;
файл '''KBackgroundface.h''', содержащий искомую функцию. Открыв&lt;br /&gt;
его в текстовом редакторе, вы увидите примерно следующее (взято из KDE 3.5.6):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
  /** Change the wallpaper.&lt;br /&gt;
 * @param wallpaper The (local) path to the wallpaper.&lt;br /&gt;
 * @param mode The tiling mode. */&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это максимум, что удается извлечь, но кое-что про параметры&lt;br /&gt;
''DCOP'' понять можно: видно, что параметр '''mode''' определяет режим&lt;br /&gt;
мозаики (tiling) при вставке изображения на рабочий стол. Именно&lt;br /&gt;
он используется панелью ''KControl'' для изменения положения обоев&lt;br /&gt;
в выпадающем меню '''Options'''. Использование ''DCOP'' часто требует&lt;br /&gt;
подобной охоты за информацией о различных параметрах, но если&lt;br /&gt;
вы знакомы с приложением, которым хотите управлять, то это не&lt;br /&gt;
составит для вас большого труда.&lt;br /&gt;
&lt;br /&gt;
Двойной щелчок на функции в ''Kdcop'' открывает небольшое окно,&lt;br /&gt;
которое попросит вас ввести каждый из параметров в скобках. Здесь&lt;br /&gt;
стоит сперва протестировать ''DCOP'' и удостовериться, что он делает&lt;br /&gt;
именно то, чего вы ожидали. В '''setWallpaper''', например, есть ошибка:&lt;br /&gt;
функция не позволит вам установить последний из режимов (названный в ''KControl'' '''Масштабировать и Обрезать'''). Предположительно, это из-за того, что возможность добавили в приложение, не связав с разделом кода, взаимодействующего с ''DCOP''. Подобные ошибки делают работу с ''DCOP'' немного непредсказуемой.&lt;br /&gt;
&lt;br /&gt;
Используя ''Kdcop'', вы можете дважды щелкнуть на '''setWallpaper''',&lt;br /&gt;
ввести путь к изображению и число '''1''' для режима и посмотреть как&lt;br /&gt;
изменится рабочий стол. Удостоверившись, что это работает, можете&lt;br /&gt;
попробовать версию из командной строки, составляя команду пути к&lt;br /&gt;
функции. Вот что вам надо набрать, чтобы изменить фон рабочего&lt;br /&gt;
стола из командной строки:&lt;br /&gt;
&lt;br /&gt;
  dcop kdesktop KBackgroundIface setWallpaper image.jpg 1&lt;br /&gt;
&lt;br /&gt;
Вам также следует предоставить полный путь к изображению:&lt;br /&gt;
функция '''setWallpaper''' принимает расположение файла чисто как строку символов, и не воспринимает относительные пути.&lt;br /&gt;
&lt;br /&gt;
Теперь у вас должно быть хорошее понимание того, как работает&lt;br /&gt;
''DCOP'' и что он умеет. А значит, теперь мы готовы сделать что-то более&lt;br /&gt;
полезное, чем переключение фона рабочего стола.&lt;br /&gt;
&lt;br /&gt;
==Менеджер виртуального рабочего стола==&lt;br /&gt;
&lt;br /&gt;
{{Врезка&lt;br /&gt;
|Заголовок=Скорая помощь&lt;br /&gt;
|Содержание=Вы можете определить, какой рабочий стол использовать для запуска приложения с помощью инструмента ''Kstart''.&lt;br /&gt;
Например, ''kstart -desktop 3 konqueror'' запустит ''Konqueror'' на третьем рабочем столе.&lt;br /&gt;
|Ширина=200px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Одна из возможностей, которых мне всегда не хватало в KDE – группировка приложений на одном виртуальном столе в соответствии с задачей, которую они выполняют. Я бы выделил виртуальный рабочий&lt;br /&gt;
стол каждой задаче: например, один для ''KMail'', другой – для ''Konqueror'',&lt;br /&gt;
а третий – для терминала. ''DCOP'' позволяет набросать скрипт для вашего собственного решения; это простая альтернатива исследованию исходного кода и ручного добавления новых возможностей – что-то&lt;br /&gt;
типа быстрого прототипирования KDE-приложений. Надеюсь, некая&lt;br /&gt;
форма инструмента управления виртуальным рабочим столом войдет в состав KDE 4, но покамест вы можете построить свое решение&lt;br /&gt;
с помощью ''DCOP''.&lt;br /&gt;
&lt;br /&gt;
К несчастью, решение отнюдь не лежит на поверхности – одной&lt;br /&gt;
''DCOP''-командой для переключения рабочего стола запущенного приложения тут не обойтись: команды, меняющей виртуальный рабочий стол приложения, в ''DCOP'' попросту нет. Об этом знают разработчики KDE, и хорошо бы такая команда появилась в KDE 4. Будем делать революцию с теми командами, какие у нас есть! А именно, спрячем&lt;br /&gt;
приложение, которое мы хотим переместить на другой рабочий стол,&lt;br /&gt;
и перейдем на требуемый стол, не восстанавливая приложения, а восстановим его до исходного размера на новом рабочем столе. Согласен, решение жутко неэффективное, но для того, кто будет смотреть на&lt;br /&gt;
ваш экран, это будет круто, так как ваши окна будут перетасовываться&lt;br /&gt;
автоматически.&lt;br /&gt;
&lt;br /&gt;
''DCOP''-команды для свертывания и восстановления окна можно&lt;br /&gt;
найти в списке функций верхнего уровня под заголовком '''имя_приложения-mainwindow#1'''. Рассматриваемые функции – это '''void hide()''' и&lt;br /&gt;
'''void restore()'''. Чтобы проверить, что они работают так, как вы ожидаете,&lt;br /&gt;
можете либо дважды нажать на них в ''Kdcop'', либо попробовать составить командный эквивалент, выглядящий так:&lt;br /&gt;
&lt;br /&gt;
 dcop konqueror-5887 konqueror-mainwindow#1 ‘hide()’&lt;br /&gt;
&lt;br /&gt;
Параметр '''hide()''' надо поместить внутри апострофов; в противном&lt;br /&gt;
случае, ''Bash'' будет неправильно интерпретировать скобки и команда&lt;br /&gt;
не выполнится.&lt;br /&gt;
&lt;br /&gt;
Но прежде чем писать скрипт виртуального рабочего стола, надо решить еще одну проблему. Когда есть более одного экземпляра приложения (в данном случае ''Konqueror''), то к имени приложения следует&lt;br /&gt;
добавлять идентификатор процесса. Это немного усложняет предсказание имени приложения, которое будет использовано в нашем скрипте. Нужен способ добавления идентификатора процесса к имени KDE-приложения. Одно из решений состоит в том, чтобы вывести сразу все процессы ''Konqueror'', употребив специальный символ '''*''', например:&lt;br /&gt;
&lt;br /&gt;
 $ dcop konqueror*&lt;br /&gt;
 konqueror-5887&lt;br /&gt;
 konqueror-5870&lt;br /&gt;
 konqueror-724&lt;br /&gt;
&lt;br /&gt;
а затем использовать каждую строку вывода в качестве ввода для&lt;br /&gt;
цикла ''for'' в вашем скрипте ''Bash''. Однако есть лучшее решение, использующее другой инструмент ''DCOP'', который присутствует на каждом рабочем столе KDE: ''dcopfind''. Этот инструмент создан для поиска и&lt;br /&gt;
возврата ''DCOP''-возможностей ''DCOP''-клиента – например, поиска приложений, которые поддерживают инъекцию URL. Но он рассчитан на обработку многих клиентов, и его побочный эффект – возможность&lt;br /&gt;
использовать символы подстановки для одновременного обращения&lt;br /&gt;
ко всем экземплярам приложения. Например, вот как спрятать все&lt;br /&gt;
экземпляры ''Konqueror'':&lt;br /&gt;
&lt;br /&gt;
 dcopfind ‘konqueror*’ ‘konqueror-mainwindow*’ ‘hide()’&lt;br /&gt;
&lt;br /&gt;
Я нашел еще одну ошибку в KDE 3.5.6, когда каждый экземпляр&lt;br /&gt;
не сворачивался, хотя и должен был. В данном случае мне пришлось&lt;br /&gt;
выполнять эту команду дважды, чтобы свернуть все. Если у вас такая&lt;br /&gt;
же проблема, попробуйте сделать то же самое.&lt;br /&gt;
&lt;br /&gt;
{{Врезка&lt;br /&gt;
|Заголовок=Скорая помощь&lt;br /&gt;
|Содержание=Всегда начинайте с ''Kdcop'', чтобы удостовериться, что функции ''DCOP'' работают так, как вы ожидаете. После&lt;br /&gt;
этого можете создавать собственные скрипты.&lt;br /&gt;
|Ширина=200px&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF95_dcop2.png|Рис. 2]]&lt;br /&gt;
&lt;br /&gt;
'''Некоторые ''DCOP''-функции возвращают значения, и ''Kdcop'' отобразит эти значения в нижней панели. Здесь он возвращает номер текущего рабочего стола.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь, когда все экземпляры ''Konqueror'' спрятаны, надо переключить рабочий стол на нужный, чтобы потом восстановить каждое приложение на новом экране. Для этого есть ''DCOP''-команда для ''KWin'',&lt;br /&gt;
оконного менеджера KDE по умолчанию. Единственная проблема состоит в том, что если у вас альтернативный оконный менеджер, вроде предоставляемых ''Beryl'' и ''Compiz3D'', вы не сможете использовать ''DCOP''&lt;br /&gt;
для переключения рабочих столов. Тогда вам придется найти другие&lt;br /&gt;
команды. Но это может скоро измениться, так как идет активная разработка включения ''Beryl'' и ''Compiz'' в ''KWin''.&lt;br /&gt;
&lt;br /&gt;
 dcop kwin KWinInterface setCurrentDesktop 3&lt;br /&gt;
&lt;br /&gt;
Эта команда переключит текущий рабочий стол на третий. Остался&lt;br /&gt;
последний шаг – восстановить все приложения на новом столе:&lt;br /&gt;
&lt;br /&gt;
 dcopfind ‘konqueror*’ ‘konqueror-mainwindow*’ ‘restore()’&lt;br /&gt;
&lt;br /&gt;
В результате каждый ранее спрятанный экземпляр ''Konqueror''&lt;br /&gt;
появится на новом рабочем столе – то есть вы как будто перетащили&lt;br /&gt;
все приложения ''Konqueror'' на один рабочий стол. Полностью скрипт&lt;br /&gt;
будет выглядеть следующим образом:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 dcopfind ‘konqueror*’ ‘konqueror-mainwindow*’ ‘hide()’&lt;br /&gt;
 dcopfind ‘konqueror*’ ‘konqueror-mainwindow*’ ‘hide()’&lt;br /&gt;
 dcop kwin KWinInterface setCurrentDesktop 3&lt;br /&gt;
 dcopfind ‘konqueror*’ ‘konqueror-mainwindow*’ ‘restore()’&lt;br /&gt;
&lt;br /&gt;
Эти четыре строчки – только начало. В настоящий момент скрипт&lt;br /&gt;
можно рассматривать как рабочий прототип и доказательство концепции; правда, пригодиться он может только при довольно редких&lt;br /&gt;
обстоятельствах. Очевидно, его можно улучшить не одним способом.&lt;br /&gt;
Но первым делом мы должны добавить поддержку всех используемых&lt;br /&gt;
приложений. В моем случае это будут ''KMail, KDevelop'' и ''Kate'', и каждое&lt;br /&gt;
из них можно пристроить, видоизменив команду ''dcopfind''. Например,&lt;br /&gt;
&lt;br /&gt;
 dcopfind ‘kmail*’ ‘kmail-mainwindow*’ ‘hide()&lt;br /&gt;
&lt;br /&gt;
найдет и свернет главное приложение ''KMail''. Если используется всего один экземпляр приложения, то, возможно, проще будет использовать обычную команду ''dcop'' – например, маловероятно, что ''KMail'' будет&lt;br /&gt;
запущен более чем в одном экземпляре. Использование ''dcopfind'' тут не&lt;br /&gt;
строго обязательно, но так лучше с точки зрения целостности.&lt;br /&gt;
&lt;br /&gt;
Вы обнаружите, что у каждого KDE-приложения есть раздел&lt;br /&gt;
'''mainwindow''', который содержит тот же набор функций, а стало&lt;br /&gt;
быть, также имеет функции сворачивания и восстановления, позволяющие переместить эти приложения на выбранный рабочий стол.&lt;br /&gt;
Исключениями являются приложения, не имеющие главного окна,&lt;br /&gt;
например, апплеты на панели задач или фоновые сервисы, но в любом&lt;br /&gt;
случае вам незачем управлять их рабочим столом.&lt;br /&gt;
&lt;br /&gt;
Если вы работаете с большим количеством приложений KDE, то&lt;br /&gt;
вам, возможно, следует использовать внешний файл настройки для&lt;br /&gt;
хранения списка приложений, которыми вы хотите управлять, и рабочих столов, на которых вы хотите их видеть. Затем вам потребуется изменить скрипт, чтобы загружать в цикле каждую строку файла и&lt;br /&gt;
обрабатывать имя приложения так же, как мы делали выше (свертывая&lt;br /&gt;
и восстанавливая каждое приложение).&lt;br /&gt;
&lt;br /&gt;
   Последним штрихом будет возврат пользователя на исходный рабочий стол. Без этой модификации пользователь окажется на рабочем столе, где были восстановлены приложения последней группы, что&lt;br /&gt;
вряд ли очень полезно. Такую функциональность можно реализовать&lt;br /&gt;
через возвращаемые значения функций ''DCOP''. Это единственный способ узнать, который рабочий стол вы использовали перед переключением на другой. Полученное значение может использоваться перед&lt;br /&gt;
выходом из скрипта для возврата на прежние позиции.&lt;br /&gt;
&lt;br /&gt;
Вы могли заметить, что многие из функций ''DCOP'' начинаются со&lt;br /&gt;
слова '''void'''. Обычно в этом месте указывается тип возвращаемого значения функции. Но когда программист использует слово ‘'''void'''’, это значит, что возвращаемое значение отсутствует, и функция просто отработает без какого-либо вывода. Функции, у которых вместо '''void''' проставлен тип, соответственно, возвращают значение данного типа. Например,&lt;br /&gt;
значение функций, которые возвращают '''QStringList''' – несколько строк&lt;br /&gt;
текста (программисты рассматривают текст как ‘строку’ символов), а&lt;br /&gt;
значением функций, возвращающих '''int''' и '''float''', будут соответственно&lt;br /&gt;
целое число и число с плавающей точкой. Функция, определяющая&lt;br /&gt;
номер используемого рабочего стола, возвращает целое значение.&lt;br /&gt;
Она называется '''currentDesktop''', и ее можно найти в иерархии под именем приложения '''KWinInterface''' в ''DCOP''. Использование возвращаемых значений не составляет труда. Вот две строки, которые необходимы,&lt;br /&gt;
чтобы сохранить значение начального рабочего стола в переменную&lt;br /&gt;
'''DESKTOP''', а потом переключиться назад по значению в '''DESKTOP''':&lt;br /&gt;
&lt;br /&gt;
 DESKTOP=`dcop kwin KWinInterface currentDesktop`&lt;br /&gt;
 dcop kwin KWinInterface setCurrentDesktop $DESKTOP&lt;br /&gt;
&lt;br /&gt;
Первую строку надо поместить в начале скрипта, а вторую в конце.&lt;br /&gt;
Теперь, запустив его, вы вернетесь на тот рабочий стол, откуда пришли, и как во всех хороших руководствах, конец – это только начало. В скрипте надо реализовать дополнительную проверку ошибок, чтобы&lt;br /&gt;
убедиться, во-первых, что манипулируемые приложения действительно запущены, а во вторых, что столы действительно существуют. Обе этих функции добавить легко; сделайте это сразу после того, как заработает первоначальный скрипт.&lt;br /&gt;
&lt;br /&gt;
==Дерзайте!==&lt;br /&gt;
&lt;br /&gt;
У меня полным-полно идей по использованию ''DCOP'', чтобы добавить&lt;br /&gt;
функциональности KDE (см. «Клевые идеи для ''DCOP''»), и&lt;br /&gt;
если у вас чешутся руки протестировать другой DCOP-проект, почему&lt;br /&gt;
бы и не попробовать? Это также будет идеальным введением в программирование KDE, поскольку по мере написания скриптов DCOP вы&lt;br /&gt;
изучите множество внутренних механизмов KDE. Если вы реализовали&lt;br /&gt;
одну из наших идей или сделали собственную версию переключения&lt;br /&gt;
рабочих столов, дайте нам знать. Мы будем счастливы включить ваши&lt;br /&gt;
творения на DVD грядущих выпусков. '''LXF'''&lt;br /&gt;
&lt;br /&gt;
==Клевые идеи для ''DCOP''==&lt;br /&gt;
&lt;br /&gt;
Если вы хотите внедрить в жизнь новые навыки ''DCOP'', почему бы не&lt;br /&gt;
попробовать следующие идеи?&lt;br /&gt;
&lt;br /&gt;
* Одной из самых желанных возможностей в ''Kopete'' является функция «'''buddy pounce'''», чтобы ''Kopete'' автоматически посылал сообщение, когда собеседник выходит в сеть. Простой скрипт ''DCOP'' может выполнить эту задачу.&lt;br /&gt;
* Последние версии ''Kopete'' отключают автоматическую проверку орфографии, пока вы общаетесь с кем-либо в чате. ''DCOP'' может автоматически включить ее снова. &lt;br /&gt;
* В [[LXF79:Киоск_с_Linux|LXF79]] была подробная статья о построении собственного Linux-киоска. ''DCOP'' является идеальным решением для блокирования рабочего стола вашего киоска, так как он даже может заставить переключиться ''Konqueror'' в полноэкранный режим киоска.&lt;br /&gt;
* ''K3b'' имеет один из самых лучших ''DCOP''-интерфейсов, и там есть все виды работы с дисками, которые можно  автоматизировать с помощью ''DCOP''. Как насчет прожига ISO в режиме drag&amp;amp;drop?&lt;br /&gt;
&lt;br /&gt;
==Шаг за шагом: Меняем обои на рабочем столе==&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF95_dcop3.png|Шаг 1]]&lt;br /&gt;
&lt;br /&gt;
* '''Запуск ''Kdcop''''' ''Kdcop'' необходимо запускать либо из командной строки, либо набрав ''KDCOP'' в панели '''Run Command''' Основное окно покажет все запущенные KDE-приложения, а нажатие на каждом из них выведет список всех доступных функций.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF95_dcop4.png|Шаг 2]]&lt;br /&gt;
&lt;br /&gt;
* '''Выбор вашей функции''' Поле поиска отфильтрует список функций в реальном времени, и это лучший способ найти определенную функцию, не прибегая к ручному сканированию приложений. Функция, нужная для смены фона рабочего стола, называется '''setWallpaper'''.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF95_dcop5.png|Шаг 3]]&lt;br /&gt;
&lt;br /&gt;
* '''Добавление свойств''' Есть две функции '''setWallpaper'''. Вся разница между ними в том, что одна принимает два параметра, а другая три. Двойной щелчок по функции, и можно вводить требуемые данные – путь к изображению, рабочий стол, который вы хотите поменять, и режим масштабирования.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>