<sect1 id="windows-how-to-work">
<sect1info>
<authorgroup>
<author
>&Philip.Rodrigues; </author>
</authorgroup>
</sect1info>


<title
>Окна, работа с окнами</title>

<sect2 id="basic-window-management">
<title
>Основы управления окнами</title>
<indexterm
><primary
>Управление окнами</primary
></indexterm>

<para
>Каждое приложение, запускаемое в &kde;, открывает одно или несколько окон. Вы можете управлять этими окнами. Обычное окно выглядит так: <screenshot
> <mediaobject>
<imageobject>
<imagedata fileref="a-window.png" format="PNG"/>
</imageobject>
<textobject
><phrase
>Обычное окно</phrase>
</textobject>
</mediaobject>
</screenshot>
</para>

<sect3 id="switching-between-windows">
<title
>Переключение между окнами</title
> 
<indexterm
><primary
>Фокус (окна)</primary
></indexterm>

<para
>Непосредственно работать можно только с активным окном. Каждое новое окно становится активным автоматически, что позволяет сразу же начать работу с приложением. Активному окну передаются нажатия клавиш. Активным может быть только одно окно, которое можно отличить по цвету заголовка. (В теме &kde;, принятой по умолчанию, у активного окна <replaceable
>светло-синий</replaceable
> заголовок, а у неактивных - <replaceable
>серый</replaceable
>.)</para>

<para>
<indexterm
><primary
>Перемещение окна поверх остальных</primary
></indexterm
> Для того чтобы начать работу с окном, его необходимо сделать активным. Есть два способа: <itemizedlist>

<listitem>
<para
>Щёлкните на требуемом окне левой кнопкой мыши. Окно станет активным и будет перемещено поверх остальных окон, если оно перекрывается ими.</para>
</listitem>

<listitem>
<para
><indexterm
><primary
><keycombo
action="simul"
>&Alt;&Tab;</keycombo
></primary
></indexterm
> Удерживая клавишу &Alt;, нажимайте &Tab;. Появится список доступных окон, одно из которых будет выделено. Нажимая клавишу &Tab;, можно выбрать требуемое окно. Когда вы отпустите клавишу &Alt;, выбранное окно будет сделано активным.</para>
</listitem>
</itemizedlist>
</para>

</sect3>

<sect3 id="moving-windows">
<title
>Перемещение окон</title>
<indexterm
><primary
>Перемещение окон</primary
></indexterm>

<para
>Простейший способ упорядочить окна на рабочем столе - переместить их. Окна могут перекрывать друг друга. Есть три способа переместить окно: <itemizedlist>
<listitem>
<para
>Переместите курсор мыши на заголовок окна, и, удерживая левую кнопку мыши, передвигайте его. Окно будет перемещаться вместе с курсором. Для того чтобы оставить окно на месте, отпустите кнопку мыши.</para>
</listitem>

<!-- FIXME:  OK, so the screenie sucks, but it shows the idea --> 
<!-- In fact, maybe it's not even necessary: just mention the previous -->
<!-- screenshot (having callouts on it would be nice) -->
<listitem>
<indexterm
><primary
>Меню окна</primary
></indexterm>
<para
>Нажмите кнопку в левой части заголовка окна (см. рисунок ниже). Откроется меню окна. Выберите пункт <guimenuitem
>Переместить</guimenuitem
>. Курсор мыши переместится в центр окна, и окно будет двигаться вместе с ним. Щёлкните левой кнопкой мыши, чтобы отпустить окно.</para>

<screenshot>
<screeninfo
>Меню окна</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="titlebar-menu.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Меню окна</phrase>
</textobject>
</mediaobject>
</screenshot>
</listitem>

<listitem>
<para
>Наведите курсор на окно, которое требуется переместить, и нажмите клавишу &Alt; и левую кнопку мыши. Курсор изменит форму, и окно будет двигаться вместе с ним. Отпустите кнопку мыши, чтобы оставить окно на месте. Этот способ может быть особенно полезен, если заголовок окна находится за пределами экрана, что не позволяет применить другие методы.</para>
</listitem>
</itemizedlist>
</para>

</sect3>

<sect3 id="resizing-windows">
<title
>Изменение размера окна</title>

<indexterm
><primary
>Изменение размера окна</primary
></indexterm>

<para
>Есть несколько способов изменения размеров окна: <itemizedlist>
<listitem>
<para
>Переместите курсор мыши к границе окна (на рисунке выше она светло-синяя). Курсор примет форму двунаправленной стрелки. Удерживая левую кнопку, передвигайте мышь. Граница окна будет двигаться вместе с курсором. Перемещая верхнюю и нижнюю границы окна, можно изменять его высоту, перемещая левую и правую - его ширину. Для того чтобы изменять оба параметра одновременно, передвигайте угол окна (курсор мыши при наведении на него принимает форму диагонально расположенной двунаправленной стрелки). </para>
</listitem>
<listitem>
<para
>Откройте меню окна, нажав на крайнюю левую кнопку в заголовке. Выберите пункт <guimenuitem
>Изменить размер</guimenuitem
>. Курсоры мыши примет форму двунаправленной стрелки. Перемещая его, измените размер окна. Щёлкните левой кнопкой мыши, чтобы отпустить окно.</para>
</listitem>
<listitem>
<para
>Если граница окна или кнопка меню окна недоступны, используйте следующий способ. Удерживая клавишу &Alt;, нажмите правую кнопку мыши и перемещайте мышь. Размер окна будет изменяться. Закончив изменение размера, отпустите кнопку мыши. </para>
</listitem>
</itemizedlist>
</para>

<para
>Если требуется раскрыть окно на весь экран, нажмите кнопку <guibutton
>Распахнуть<indexterm
><primary
>Как распахнуть окно</primary
></indexterm
></guibutton
> - вторую справа кнопку в заголовке окна. Окно примет максимально возможный размер, если щёлкнуть на ней левой кнопкой мыши; при нажатии средней <indexterm
><primary
>Распахнуть окно</primary
><secondary
>По вертикали</secondary
></indexterm
> или правой <indexterm
><primary
>Распахнуть окно </primary
><secondary
>По горизонтали</secondary
></indexterm
> кнопки мыши окно будет распахнуто по вертикали или горизонтали соответственно.</para>


</sect3>

<sect3 id="hiding-windows">
<title
>Как скрыть окно</title>
<indexterm
><primary
>Как скрыть окно</primary
></indexterm>

<!-- TODO: Screenshot of the minimize button -->
<para>
<indexterm
><primary
>Свернуть</primary
></indexterm
> Иногда необходимо освободить место на рабочем столе, не закрывая программу. В этом случае можно свернуть окно в значок на панели задач или в заголовок. Для того чтобы свернуть окно в значок, нажмите кнопку <guibutton
>Свернуть</guibutton
> - третью справа в заголовке окна. Окно будет скрыто, но выполнение программы не прекратится. Для того чтобы вновь развернуть окно, щёлкните мышью на соответствующем значке панели задач. Для восстановления окна также можно использовать комбинацию клавиш <keycombo action="simul"
>&Alt;&Tab;</keycombo
><indexterm
><primary
><keycombo action="simul"
>&Alt;&Tab;</keycombo
></primary
></indexterm
>; см. раздел <xref linkend="switching-between-windows"/>.</para>

<para>
<indexterm
><primary
>Свернуть в заголовок</primary
></indexterm
> Для того чтобы свернуть окно в заголовок (т. е. скрыть его рабочую область, оставив только заголовок), необходимо дважды щёлкнуть на заголовке левой кнопкой мыши. Для того чтобы восстановить окно, дважды щёлкните на залоговке ещё раз.</para>
</sect3>

<sect3 id="cascade-windows">
<title
>Расположить каскадом</title>

<para
>Бывает, что рабочий стол загромождён множеством окон. Щёлкните средней кнопкой мыши на рабочем столе и в открывшемся меню выберите пункт <guimenuitem
>Расположить каскадом</guimenuitem
> - окна будут расположены одно за другим, начиная с левого верхнего угла экрана.</para>

</sect3>

<sect3 id="unclutter-windows">
<title
>Выстроить окна</title>

<para
>Если вы выберете этот пункт меню, &kde; расположит окна так, чтобы сделать доступным как можно большую часть каждого из них. Например, если открыты четыре окна, после выбора этого пункта они будут перемещены в углы экрана. Щёлкните средней кнопкой мыши на рабочем столе и в открывшемся меню выберите пункт <guimenuitem
>Выстроить окна</guimenuitem
>.</para>

</sect3>

<sect3 id="closing-windows">
<title
>Как закрыть окно</title>

<indexterm
><primary
>Как закрыть окно</primary
></indexterm>

<para
>После того, как вы завершили работу с приложением, требуется остановить его выполнение и закрыть окно. И в этом случае есть несколько различных способов: <itemizedlist>
<listitem>
<para
>Щёлкните на крайней правой кнопке в заголовке окна. Если вы изменили какой-либо документ с помощью этого приложения, программа спросит, хотите ли вы <guibutton
>Сохранить</guibutton
> изменения, <guibutton
>Отклонить</guibutton
> их либо <guibutton
>Отменить</guibutton
> выход из приложения.</para>
</listitem>
<listitem>
<para
>Выберите пункт меню <menuchoice
><guimenu
>Файл</guimenu
><guimenuitem
>Выход</guimenuitem
></menuchoice
>. Откроется то же самое окно с кнопками <guibutton
>Сохранить</guibutton
>, <guibutton
>Отклонить</guibutton
> и <guibutton
>Отмена</guibutton
>.</para>
</listitem>

<listitem>
<para
>Щёлкните <mousebutton
>правой</mousebutton
> кнопкой мыши на значке, соответствующем окну, на панели &kde; (&kicker;), и выберите <guimenuitem
>Закрыть</guimenuitem
>. Программа предложит вам сохранить изменённые документы.</para>
</listitem>

<listitem>
<para
>Нажмите <keycombo action="simul"
>&Alt;<keycap
>F4</keycap
></keycombo
><indexterm
><primary
><keycombo action="simul"
>&Alt;<keycap
>F4</keycap
> </keycombo
></primary
></indexterm
>. Если какие-либо документы были изменены, окно подтверждения также будет открыто.</para>
</listitem>
</itemizedlist>
</para>

</sect3>

<!-- Let's try organising this a different way
<para
>The bar along the top is called the titlebar, and contains most
of the things you'll need to manipulate the window. Let's take a
closer look:
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="titlebar.png" format="png"/>
</imageobject>
<textobject
><phrase
>A window titlebar</phrase>
</textobject>
</mediaobject>
</screenshot>
<note
><para
>This screenshot shows the titlebar which appears in the
default &kde; configuration. The exact appearance on your system may
be slightly different, but the functions are similar.</para>
</note>
-->

<!-- TODO:Note &MMB; mouse button/&RMB mouse button on maximize for
vertical/horizontal maximization. Or is this advanced? -->

</sect2>

<sect2 id="advanced-window-management">
<title
>Расширенное управление окнами</title>

<para
>kstart</para>
<sect3 id="kstart">
<sect3info>
<author
>&Richard.J.Moore; &Richard.J.Moore.mail; </author>
</sect3info>
<title
>&kstart;</title
> 

<para
>Простейший способ использовать функции расширенного управления окнами предоставляет утилита &kstart;, которая входит в состав &kde;, начиная с версии 2.1. &kstart; позволяет управлять взаимодействием приложений и оконного менеджера. Эта программа обычно используется для того, чтобы задать нестандартные настройки для приложений, но она также позволяет использовать в &kde; приложения, не входящие в состав &kde;.</para>

<para
>Using &kstart; is easy: you simply put <userinput
><command
>kstart</command
></userinput
> and some options before a command. To begin, let's look at how we might use &kstart; to customize the behavior of a &kcalc; window. The command we'll use is as follows: <screen
><prompt
>%</prompt
> <userinput
><command
>kstart</command
> <option
>--ontop</option
> <option
>--alldesktops</option
> <option
>kcalc</option
></userinput
></screen>
</para>

<para
>Эффект от этой команды достаточно очевиден: окно kcalc будет отображаться поверх остальных окон и будет доступно на всех рабочих столах. Эта команда работает в любой среде, совместимой с технологией NET, а не только в &kde;.</para>

<para
>&kstart; позволяет передавать аргументы программам. Пример: <screen
><prompt
>%</prompt
> <userinput
><command
>kstart</command>
<option
>--skiptaskbar</option
> <option
>--desktop</option>
1 xmessage'Hello World'</userinput
></screen>

</para>

<para
>В результате этой команды на экран с помощью программы <application
>xmessage</application
> будет выведено сообщение <computeroutput
>Hello World</computeroutput
>, причём окно программы будет отображаться на всех рабочих столах без значка в панели задач. Программа написана с помощью инструментария Xt и, таким образом, не является приложением &kde;, однако это не представляет затрудения для &kstart;. Таким образом, этот пример также демонстрирует интеграцию приложений в среду &kde;.</para>
</sect3>

<sect3 id="special-window-settings">
<title
>Прочие специальные параметры окон</title>
<para
>While you can use &kstart; to assign particular window settings, &kde; also allows you to alter these -- as well as other similar settings -- from the program window itself. Simply select the leftmost button in the window titlebar (or just hit <keycombo action="simul"
>&Alt;<keycap
>F3</keycap
></keycombo
> once the window is focused), and then go to <menuchoice
><guisubmenu
>Advanced</guisubmenu
><guimenuitem
>Special Window Settings...</guimenuitem
></menuchoice
>. As you can see, from here you change various things from its geometry upon startup, to whether it should have a border or not.</para>
</sect3>

<sect3 id="system-tray">
<sect3info>
<author
>&Richard.J.Moore; &Richard.J.Moore.mail; </author>
</sect3info>

<title
>Системный лоток</title>

<para
>Now that we know how to customize the decoration of a window let's take a look at another aspect of the desktop: the system tray. The system tray is an area in which an application can display a small window. It is used to display status information or provide quick access to commands. A window that has an item in the system tray usually disappears from the task manager when minimized with the tray icon providing a replacement. Normally tray icons are specifically developed as part of an application, but as with window decorations, &kde; provides a tool for changing this: <application
>ksystraycmd</application
>.</para>

<para
>To begin with, we'll take the standard application &kcalc; and turn it into a system tray application. This is achieved with one simple command: <screen
><prompt
>%</prompt
> <userinput
><command
>ksystraycmd</command
> <option
>--title</option
> 'kcalc' kcalc</userinput
></screen>

</para>

<para
>The icon shown in the tray is the one specified in the window hints and will be updated if the icon changes. The window title is shown as a tooltip if you hold the mouse over the icon. <application
>ksystraycmd</application
> follows standard &kde; behavior so the target window can be shown and hidden by clicking the tray icon, and a standard context menu is available. </para>

<screenshot
> <mediaobject
> <imageobject
><imagedata
fileref="kcalc-systray.png"
></imagedata
></imageobject>
</mediaobject
></screenshot>
</sect3>

<sect3 id="more-complex-uses-of-ksystraycmd">
<sect3info>
<author
>&Richard.J.Moore; &Richard.J.Moore.mail; </author>
</sect3info>

<title
>Дополнительные функции <application
>ksystraycmd</application
></title>

<para
>Рассмотрим более сложный пример использования команды <application
>ksystraycmd</application
>: поместим в лоток значок окна &konsole;, отслеживающего изменения в файле <filename
>.xsession-errors</filename
> (файл протокола, в который записывается информация об ошибках в графической среде). Вот команда для запуска такого окна: <screen
><prompt
>%</prompt
> <userinput
><command
>konsole</command
> <option
>--icon</option>
log <option
>--caption</option
> 'Протокол X' \ 
<option
>--nomenubar</option
> <option
>--notabbar</option>
<option
>--noframe</option
> \ 
<option
>-e</option
> tail -f ~/.xsession-errors</userinput
></screen>
</para>

 <para
>Значения параметров <option
>--caption</option
> и <option
>--icon</option
> по умолчанию задаются самими приложениями &kde;. Полный список глобальных параметров можно просмотреть, запустив приложение с аргументами <option
>--help-kde</option
> и <option
>--help-qt</option
>. С помощью этой команды окну &konsole; присваивается заголовок 'Протокол X' и значок <quote
>log</quote
>. Эти опции применимы к любому приложению &kde; и, как уже было сказано выше, <application
>ksystraycmd</application
> учитывает их, создавая значок в лотке. Аргумент <option
>-e</option
> является опцией самой программы &konsole; - он указывает на то, что необходимо выполнить команду <command
>less</command
>. <application
>ksystraycmd</application
> с лёгкостью формирует значок приложения в лотке: <screen
><prompt
>%</prompt
> <userinput
><command
>ksystraycmd</command>
<option
>--hidden</option
> <option
>--title</option
> 'X Log' \
konsole --icon log --caption 'XLog' \ 
--nomenubar --notabbar --noframe \ 
-e tail -f .xsession-errors</userinput
></screen>
</para>

 <para
>Этот пример также демонстрирует работу параметра <option
>--hidden</option
> - значок приложения отсутствует на панели задач. Таким образом, задача - обеспечить быстрый доступ к файлу протокола - выполнена, но эффективность команды можно ещё немного увеличить, сделав так, чтобы процесс konsole был активен только в том случае, если значок является видимым. Для этого используется следующая команда: <screen
><prompt
>%</prompt
> <userinput
><command
>ksystraycmd</command
> <option
>--startonshow</option
> \
 --<option
>icon</option
> log <option
>--tooltip</option
> 'X Log' \ 
konsole --icon log --caption 'X Log' \
--nomenubar --notabbar --noframe \
-e tail -f ~/.xsession-errors</userinput
></screen>
</para>

<para
>Добавление параметра <option
>--startonshow</option
> приводит к следующему: <application
>ksystraycmd</application
> отображает значок только в лотке (как в случае использования параметра <option
>--hidden</option
>) и запускает приложение после того, как пользователь активирует этот значок. Опция <option
>--quitonhide</option
> означает, что при скрытии окна выполнение команды останавливается. Таким образом, &konsole; не использует лишних ресурсов. Значок окна и отображаемую подсказку в данном случае требуется указывать вручную.</para>
</sect3>

<sect3 id="improving-reliability">
<sect3info>
<author
>&Richard.J.Moore; &Richard.J.Moore.mail; </author>
</sect3info>

<title
>Повышение надёжности</title>

<para
>В ранее описанных примерах &kstart; и <application
>ksystraycmd</application
> самостоятельно определяли окно, с которым требуется работать. По умолчанию это первое окно, которое открывает приложение. Обычно такое поведение не приводит к ошибкам, однако если одновременно запускается несколько окон (например, при входе в систему), может произойти сбой. Этого можно избежать, используя параметр <option
>--window</option
>. Он позволяет указать заголовок требуемого окна. В следующем примере параметр <option
>--window</option
> используется для того, чтобы указать на конкретное окно konsole: <screen
><prompt
>%</prompt
> <userinput
><command
>kstart</command
> <option
>--iconify</option
> <option
>--window</option
> 'kstart_me' konsole
--caption 'kstart_me' -e tail -f
~/.xsession-errors</userinput
></screen>

</para>

<para
>В данном примере заголовок окна был указан как для &kstart;, так и для целевого приложения. Это один из самых надёжных способов работы с &kstart; и <application
>ksystraycmd</application
>. Аргумент <option
>--window</option
> поддерживается как &kstart;, так и <option
>ksystraycmd</option
>. Допускается использование как обычной строки, так и регулярного выражения (например, <quote
>window[0-9]</quote
>). Регулярные выражения являются мощным механизмом работы со строками, используемым в &kde; очень часто. </para>

</sect3>

</sect2>

<sect2 id="using-multiple-desktops">
<title
>Работа с несколькими рабочими столами</title>

<indexterm
><primary
>Виртуальные рабочие столы</primary
></indexterm>
<indexterm
><primary
>Множественные рабочие столы</primary
></indexterm>

<para
>Иногда на экране просто не хватает места для всех окон. Если несколько приложений работают одновременно, и экран загромождён окнами, возможно, следует использовать виртуальные рабочие столы. По умолчанию в &kde; четыре рабочих стола, каждый из которых работает подобно отдельному экрану: на каждом из них можно открывать окна, перемещать их и изменять фоновый рисунок. Эта техника похожа на механизм виртуальных терминалов.</para>

<sect3 id="switching-virtual-desktops">
<title
>Переключение между виртуальными рабочими столами</title>
<para
>Для того чтобы перейти к следующему виртуальному рабочему столу, используйте комбинацию клавиш <keycombo action="simul"
>&Ctrl;&Tab; </keycombo
>, аналогично комбинации <keycombo action="simul"
>&Alt;&Tab; </keycombo
> для переключения между окнами (см. <xref linkend="switching-between-windows"/>): удерживая клавишу &Ctrl;, нажимайте &Tab;. Появится маленькое всплывающее окно с изображенями рабочих столов, одно из которых будет выделено. Отпустите клавишу &Ctrl;, чтобы перейти к выделенному рабочему столу. Нажимайте клавишу &Tab;, удерживая &Ctrl;, чтобы переключаться между столами.</para>

<!-- TODO: Write about the desktop pager thing -->

</sect3>

<sect3 id="windows-and-virtual-desktops">
<title
>Окна и виртуальные рабочие столы</title>
<para
>Переместить окно с одного виртуального рабочего стола на другой можно с помощью пункта <guisubmenu
>На рабочий стол</guisubmenu
>меню окна: в открывшемся подменю просто выберите требуемый рабочий стол. Для того чтобы сделать окно доступным на всех рабочих столах, установите переключатель <guimenuitem
>Все рабочие столы</guimenuitem
>.</para>

<!-- Add links to "further reading" here 
<itemizedlist>
<title
>Related Information</title>
<listitem
><para
></para>
</listitem>
</itemizedlist>

-->
</sect3>


</sect2>

</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: xml
sgml-omittag:nil
sgml-shorttag:nil
sgml-namecase-general:nil
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:0
sgml-indent-data:true
sgml-parent-document:("index.docbook" "book" "sect1")
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
