<?xml version="1.0" ?>
<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kompmgr "kompmgr">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % English "INCLUDE">
]>

<article lang="&language;">
<title>Window Behavior</title>

<articleinfo>

<authorgroup>
<author>&Mike.McBride;</author>
<author>&Jost.Schenck;</author>
<author>&tde-authors;</author>

<!-- TRANS:ROLES_OF_TRANSLATORS -->
</authorgroup>

<releaseinfo>&tde-release-version;</releaseinfo>
<date>Reviewed: &tde-release-date;</date>

<copyright>
<year>2010</year>
<holder>Mike McBride</holder>
<holder>Jost Schenck</holder>
</copyright>
<copyright>
<year>&tde-copyright-date;</year>
<holder>&tde-team;</holder>
</copyright>

<keywordset>
<keyword>TDE</keyword>
<keyword>KControl</keyword>
<keyword>system settings</keyword>
<keyword>window behavior</keyword>
<keyword>focus</keyword>
<keyword>actions</keyword>
<keyword>moving</keyword>
</keywordset>

</articleinfo>

<sect1 id="window-behavior">
<title>Window Behavior</title>

<para> In the upper part of this control module you can see several
tabs: <guilabel>Focus</guilabel>, <guilabel>Titlebar Actions</guilabel>,
<guilabel>Window Actions</guilabel>, <guilabel>Moving</guilabel>,
<guilabel>Advanced</guilabel>, and <guilabel>Translucency</guilabel>.

In the <guilabel>Focus</guilabel> panel you can configure how windows gain or
lose focus, &ie; become active or inactive.

Using <guilabel>Titlebar Actions</guilabel> and <guilabel>Window Actions</guilabel>
you can configure how titlebars and windows react to
mouse clicks.

<guilabel>Moving</guilabel> allows you to configure how
windows move and place themselves when started.

The <guilabel>Advanced</guilabel> options cover some specialized options
involving moving windows between desktops and <quote>window
shading</quote>.

The <guilabel>Translucency</guilabel> options support
window manager desktop effects through the kompmgr compositing manager.
</para>

<note>
<para>
Please note the configuration options in this module will not take effect
when you do not use &tde;'s native window manager, &twin;. When you use a
different window manager, please refer to the respective documentation for
customizing window behavior.
</para>
</note>

<sect2 id="focus">
<title>Focus</title>

<para>
The <quote>focus</quote> of the desktop refers to the window which the
user is currently working on. The window with focus is often referred to
as the <quote>active window</quote>.
</para>

<para>Focus does not necessarily mean the window is the one at the
front &mdash; this is referred to as <quote>raised</quote>, and
although this is configured here as well, focus and raising of windows
are configured independently.</para>

<sect3 id="focus-focus-policy">
<title>Focus Policy</title>

<para>
There are four methods &tde; can use to determine the current focus:
</para>

<variablelist>
<varlistentry>
<term><guilabel>Click to Focus</guilabel></term>
<listitem>
<para>
A window becomes active when you click into it.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Focus Follows Mouse</guilabel></term>
<listitem>
<para>
Moving the mouse pointer actively over a normal window activates it. New
windows such as the mini command line invoked with
<keycombo action="simul">&Alt;<keycap>F2</keycap></keycombo> will receive the focus,
without you having to point the mouse at them explicitly.
</para>

<para>
In other window managers, this is sometimes known as <quote>Sloppy focus
follows mouse.</quote>
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Focus Under Mouse</guilabel></term>
<listitem>
<para>
The window that happens to be under the mouse pointer becomes active. When
the mouse is not over a window (for instance, it's on the desktop) the last
window that was under the mouse has focus. New windows such as the mini
command line invoked with <keycombo action="simul">&Alt;<keycap>F2</keycap></keycombo> will
not receive the focus, you must move the mouse over them to type.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Focus Strictly Under Mouse</guilabel></term>
<listitem>
<para>Similar to <guilabel>Focus Under Mouse</guilabel>, but even more
strict with its interpretation. Only the window under the mouse pointer is
active. When the mouse pointer is not over a window, no window has focus.
New windows such as the mini command line invoked with
<keycombo action="simul">&Alt;<keycap>F2</keycap></keycombo> will not receive the focus,
you must move the mouse over them to type. 
</para>

<note><para>Note that <guilabel>Focus Under Mouse</guilabel> and
<guilabel>Focus Strictly Under Mouse</guilabel> prevent certain
features from working properly, such as the
<keycombo action="simul">&Alt;&Tab;</keycombo> windows switching dialog.</para>
</note>

</listitem>
</varlistentry>
</variablelist>

<para>
After deciding the focus policy, there are window raising options.
</para>

<para>
When enabling <guilabel>Auto raise</guilabel>, &tde; can
bring a window to the front when the mouse is over that window for a
specified period. When <guilabel>Delay focus</guilabel> is enabled,
there will be a delay after which the window the mouse pointer is over will become 
active (receive focus).
This is very useful with the <guilabel>Focus Follows Mouse</guilabel> option. 
You can determine the delay for both options by using the spin box controls.
</para>

<tip>
<para>
Setting the delay too short will cause a rapid fire changing of
windows, which can be quite distracting. Most people will like a delay
of 100-300 milliseconds. This is responsive, but it will let you slide over the
corners of a window on your way to your destination without bringing
that window to the front. 
</para>
</tip>

<para>
When you do not use <guilabel>Auto raise</guilabel>, ensure the
<guilabel>Click raises active window</guilabel> option is enabled. You
will not be happy with both <guilabel>Auto raise</guilabel> and
<guilabel>Click raises active window</guilabel> disabled, the net effect is that
windows are not raised at all.
</para>

</sect3>

<sect3 id="focus-focus-stealing">
<title>Focus stealing prevention level</title>

<para>This option specifies how much TWin will try to prevent unwanted focus 
stealing caused by unexpected activation of new windows.</para> 
<note><para>This feature does not work with the <guilabel>Focus Under Mouse</guilabel> 
or <guilabel>Focus Strictly Under Mouse</guilabel> focus policies.</para></note>
<variablelist>
<varlistentry>
<term><guilabel>None</guilabel></term>
<listitem><para>Prevention is turned off and new windows always become activated.</para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Low</guilabel></term>
<listitem><para>Prevention is enabled; when some window does not have support 
for the underlying mechanism and TWin cannot reliably decide whether to activate 
the window or not, it will be activated. This setting may have both worse and better 
results than the medium level, depending on the applications.</para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Medium</guilabel></term>
<listitem><para>Prevention is enabled.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>High</guilabel></term>
<listitem><para>New windows get activated only 
when no window is currently active or when they belong to the currently active 
application. This setting is probably not really usable when not using mouse 
focus policy.</para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Extreme</guilabel></term>
<listitem><para>All windows must be explicitly activated by the user.</para></listitem>
</varlistentry>
</variablelist>
<para>Windows that are prevented from stealing focus are marked as demanding 
attention, which by default means their taskbar entry will be highlighted. 
This can be changed in the Notifications control module.</para>
</sect3>

<sect3 id="focus-navigation">
<title><guilabel>Navigation</guilabel></title>

<para>
In the <guilabel>Navigation</guilabel> frame you can configure the way
switching between applications or desktops using <keycombo
action="simul"> &Alt;&Tab;</keycombo> or <keycombo
action="simul"> &Ctrl;&Tab;</keycombo>.
</para>

<para>
<guilabel>Show window list while switching windows</guilabel>. This option determines
the method used when switching applications using <keycombo action="simul">&Alt;
&Tab;</keycombo>. Pressing and holding &Alt; while
repeatedly pressing and releasing the &Tab; key, can take place in
&tde; mode or in &CDE; mode. In &tde; mode you will see
a window box in the middle of the screen showing the currently selected
application while still holding the &Alt; key. In
&CDE; mode there is no window box and the focus immediately goes to each
new application when selected by pressing the &Tab; key.
</para>

<para>
<guilabel>Traverse windows on all desktops</guilabel>. With this option enabled, switching
windows with <keycombo action="simul">
&Alt;&Tab;</keycombo> will show all applications on all
desktops and take you to the appropriate desktop for the application you
select. When disabled, only windows on your current desktop are
selectable with <keycombo action="simul">
&Alt;&Tab;</keycombo> and you must use <keycombo
action="simul">&Ctrl;&Tab;</keycombo> or other methods to switch to other
desktops.
</para>

<para>
<guilabel>Desktop navigation wraps around</guilabel>. With this option, you cycling
through to the <quote>last</quote> desktop, pressing &Tab; again will
select the first desktop.</para>

<para>
<guilabel>Popup desktop name on desktop switch</guilabel>. Many people name their virtual
desktops according to their purpose or some other naming scheme. You might find this method
convenient to select the desired desktop to tell that you have switched to the right one.</para>
</sect3>

</sect2>

<sect2 id="titlebar-actions">
<title>Titlebar Actions</title>

<para>
In this panel you can configure what happens to windows when a mouse button is
clicked on their titlebars.
</para>

<sect3 id="titlebar-actions-sec1">
<title><guilabel>Titlebar double-click</guilabel></title>

<para>
In this drop down box you can select either
<guilabel>Shade</guilabel>, several variations of
<guilabel>Maximize</guilabel> or <guilabel>Lower</guilabel>.
</para>

<para>
Selecting <guilabel>Maximize</guilabel> causes &tde; to maximize the
window whenever you double click on the titlebar. You can further
choose to maximize windows only horizontally or only
vertically.</para>

<para><guilabel>Shade</guilabel>, on the other hand, causes the window to be
reduced to simply the titlebar. Double clicking on the titlebar again,
restores the window to its normal size.
</para>

</sect3>

<sect3 id="titlebar-actions-sec2">
<title><guilabel>Titlebar wheel event</guilabel></title>

<para>This feature functions much the same as <guilabel>Titlebar double-click</guilabel>
except the mouse scroll wheel causes the events.</para>

<tip>
<para>
You can have windows automatically unshade when you simply place the
mouse over their shaded titlebar. Just check the <guilabel>Enable
hover</guilabel> check box in the <guilabel>Advanced</guilabel> tab of
this module. This is a great way to reclaim desktop space when you are
cutting and pasting between a lot of windows, for example.
</para>
</tip>

</sect3>

<sect3 id="titlebar-actions-sec3">
<title><guilabel>Titlebar &amp; Frame</guilabel></title>

<para>
This section allows you to determine what happens when you single click
on the titlebar or frame of a window. Notice that you can have
different actions associated with the same click depending on whether
the window is active or not.
</para>

<para> For each combination of mouse buttons, modifiers, Active and
Inactive, you can select the most appropriate choice. The actions are
as follows: </para>

<variablelist>
<varlistentry>
<term><guilabel>Activate</guilabel></term>
<listitem>
<para>
Make this window active.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Lower</guilabel></term>
<listitem>
<para>
Will move this window to the bottom of the display. This will get the
window out of the way.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Nothing</guilabel></term>
<listitem>
<para>
Just like it says. Nothing happens.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Operations Menu</guilabel></term>
<listitem>
<para>
Will bring up a small submenu, where you can choose window related
commands (&ie; Maximize, Minimize, Close, &etc;).
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Raise</guilabel></term>
<listitem>
<para>
Will bring the window to the top of the display. All other windows
which overlap with this one, will be hidden <quote>below</quote> it.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term>Toggle Raise &amp; Lower</term>
<listitem>
<para>
This will raise windows which are not on top, and lower windows which
are already on top.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>

<sect3 id="titlebar-actions-maximize-button">
<title><guilabel>Maximize Button</guilabel></title>
<para>
This section allows you to determine the behavior of the three mouse buttons 
onto the maximize button. You have the choice between vertical only, horizontal 
only or both directions.
</para>
</sect3>

</sect2>

<sect2 id="window-actions">
<title>Window Actions</title>

<sect3 id="window-actions-sec1">
<title><guilabel>Inactive Inner Window</guilabel></title>

<para>
This part of the module, allows you to configure what happens when you
click on an inactive window, with any of the three mouse buttons.
</para>

<para>
Your choices are as follows:
</para>

<variablelist>
<varlistentry>
<term><guilabel>Activate, Raise &amp; Pass Click</guilabel></term>
<listitem>
<para>
This makes the clicked window active, raises it to the top of the
display, and passes a mouse click to the application within the window.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Activate &amp; Pass Click</guilabel></term>
<listitem>
<para>
This makes the clicked window active and passes a mouse click to the
application within the window.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Activate</guilabel></term>
<listitem>
<para>
This simply makes the clicked window active. The mouse click is not
passed on to the application within the window.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Activate &amp; Raise</guilabel></term>
<listitem>
<para>
This makes the clicked window active and raises the window to the top of
the display. The mouse click is not passed on to the application within
the window.
</para>
</listitem>
</varlistentry>
</variablelist>

</sect3>

<sect3 id="window-actions-sec2">
<title><guilabel>Inner Window, Titlebar &amp; Frame</guilabel></title>

<para>
This bottom section, allows you to configure additional actions, when
a modifier key (by default &Alt;) is pressed, and a mouse click is
made on a window.</para>

<para>
Once again, you can select different actions for
<mousebutton>Left</mousebutton>, <mousebutton>Middle</mousebutton> and
<mousebutton>Right</mousebutton> button clicks and the <guilabel>Mouse 
wheel</guilabel>.
</para>

<para>Your choices are:</para>

<variablelist>
<varlistentry>
<term><guilabel>Lower</guilabel></term>
<listitem>
<para>
Will move this window to the bottom of the display. This will get the
window out of the way.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Move</guilabel></term>
<listitem>
<para>
Allows you to drag the selected window around the desktop.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Nothing</guilabel></term>
<listitem>
<para>
Just like it says. Nothing happens.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Raise</guilabel></term>
<listitem>
<para>
Will bring the window to the top of the display. All other windows
which overlap with this one, will be hidden <quote>below</quote> it.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Resize</guilabel></term>
<listitem>
<para>
Allows you to change the size of the selected window.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Toggle Raise &amp; Lower</guilabel></term>
<listitem>
<para>
This will raise windows which are not on top, and lower windows which
are already on top.
</para>
</listitem>
</varlistentry>
</variablelist>

</sect3>

</sect2>

<sect2 id="moving">
<title>Moving</title>

<sect3>
<title><guilabel>Windows</guilabel></title>

<para>The options here determine how windows appear on screen when you
are moving them. Most of these options mean a price in performance,
so when you want to streamline your desktop, you should turn them off.
However, when you have a fast computer, they may make your day a little
more pleasant, so leave them on.</para>

<variablelist>
<varlistentry>
<term><guilabel>Display content in moving windows</guilabel></term>
<listitem>
<para>Enable this option when you want a window's content to be fully
shown while moving it, instead of just showing a window
<quote>skeleton</quote>. The result may not be satisfying on slow
computers without graphic acceleration.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Display content in resizing windows</guilabel></term>
<listitem>
<para>Enable this option when you want a window's content to be shown
while resizing it, instead of just showing a window
<quote>skeleton</quote>. The result, again, may not be satisfying on
slower computers.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Display window geometry when moving or
resizing</guilabel></term>
<listitem>
<para>Enable this option when you want a popup tooltip to tell you the
size in pixels of a window as you resize it.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Animate minimize and restore</guilabel></term>
<listitem>
<para>When enabled, this feature provides animation when
windows are minimized or restored. The effect is the window "shrinks"
while minimizing to the panel and "grows" when restoring.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Allow moving and resizing of maximizing windows</guilabel></term>
<listitem>
<para>When enabled, this feature activates the titlebar and border of maximized windows
to allow moving or resizing maximized windows.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Restore size of maximized/tiled windows when moving</guilabel></term>
<listitem>
<para>When enabled, this feature restores the original size of a maximized or <link linkend="active-borders">tiled</link> window when the window is dragged.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Placement</guilabel></term>
<listitem>
<para>This feature determines where new windows are placed on the desktop.</para>

<itemizedlist>

<listitem>
<para><guilabel>Smart</guilabel> will try to achieve a minimum overlap of all windows.
Generally, placement begins at the upper left and continues to the right, then begins again
at the left but lower, something like the rasterization of CRT tubes in TVs.
</para>
</listitem>

<listitem>
<para><guilabel>Maximizing</guilabel> will try to maximize every window to fill the whole screen. It might be
useful to selectively affect placement of some windows using the window-specific settings.
</para>
</listitem>

<listitem>
<para><guilabel>Cascade</guilabel> will cascade the windows.
</para>
</listitem>

<listitem>
<para><guilabel>Random</guilabel> will use a random position.
</para>
</listitem>

<listitem>
<para><guilabel>Centered</guilabel> will place the window centered.
</para>
</listitem>

<listitem>
<para><guilabel>Zero-Cornered</guilabel> will place the window in the top-left corner
</para>
</listitem>

</itemizedlist>

</listitem>
</varlistentry>

</variablelist>

</sect3>

<sect3>
<title><guilabel>Snap Zones</guilabel></title>

<para>The rest of this page allows you to configure the <guilabel>Snap
Zones</guilabel>. These are like a magnetic field along the side of
the desktop and each window, which will make windows snap alongside
when moved near.</para>

<variablelist>
<varlistentry>
<term><guilabel>Border snap zone:</guilabel></term>
<listitem>

<para>Here you can set the snap zone for screen borders. Moving a
window within the configured distance will make it snap to the edge of
the desktop.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Window snap zone:</guilabel></term>
<listitem>

<para>Here you can set the snap zone for windows. As with screen
borders, moving a window near to another will make it snap to the edge
as when the windows were magnetized.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Snap windows only when overlapping</guilabel></term>
<listitem>

<para>When checked, windows will not snap together when they are only near
each other, they must be overlapping, by the configured amount or
less.</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>

</sect2>

<sect2 id="active-borders">
<title>Active Borders</title>

<para><guilabel>Active Borders</guilabel> is a feature which allows you to quickly perform window management actions by moving your mouse into a desktop border.</para>

<para>The corresponding section allows you to configure the function that will be performed when pushing your mouse cursor against a border or moving a window into it:</para>

<variablelist>
<varlistentry>
<term><guilabel>Disabled</guilabel></term>
<listitem>
<para>This option disables the Active Borders feature.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Switch desktop</guilabel></term>
<listitem>
<para>Moving your mouse pointer against the side of the screen will switch to another desktop.</para>
<para>By default the switch occurs both when moving your mouse pointer into a border and dragging a window into it. The <guilabel>Switch desktop only when moving a window</guilabel> checkbox disables the former behaviour and only switches to another desktop when a window is being dragged into a desktop border.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Tile window</guilabel></term>
<listitem>
<para>Dragging a window into a desktop border will tile that window at that side or corner of the screen. This feature is also known as <quote>Aerosnap</quote> or <quote>Quick Tile</quote>.</para>
<para><guilabel>Maximize windows by dragging them to the top of the screen</guilabel> changes the behaviour of the top border of the desktop. If this option is enabled, dragging a window into the top border will not result in tiling, but the window will become maximized instead.</para>
<para>By default dragging a tiled window does not reset its original size. This behaviour is controlled by an option in the <link linkend="moving">Moving</link> tab of this control module.</para>
</listitem>
</varlistentry>
</variablelist>

<para>
<guilabel>Border activation delay</guilabel>.
This option controls the delay before the designated active border function is performed. A higher value can prevent accidental activations of this feature.
</para>

<para>
<guilabel>Border activation distance</guilabel>.
This option controls how far from a desktop edge the mouse cursor should be in order to be able to activate the corresponding function. The default value is low,
meaning that you have to be very close to the border or corner to trigger it, preventing accidental activations. A higher value means easier activation without
having to actually push against the borders and corners.
</para>
</sect2>

<sect2 id="advanced">
<title>Advanced</title>

<para>
In the <guilabel>Advanced</guilabel> panel you can do more advanced fine
tuning to the window behavior.
</para>

<variablelist>
<title>Shading</title>

<varlistentry>
<term><guilabel>Animate</guilabel></term>
<listitem>
<para>When this option is enabled,  shading, or rolling up a window until just
the title bar is shown, will be animated.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Enable hover</guilabel></term>
<listitem>
<para>
When this option is enabled, a shaded window will un-shade automatically
when the mouse pointer has been over the titlebar for the configured delay.
Use the slider widget to configure the delay.
</para>
</listitem>
</varlistentry>

</variablelist>

<sect3>
<title>Other</title>

<para>
<guilabel>Hide utility windows for inactive applications</guilabel>. When
enabled, utility windows (tool windows, torn-off menus) of
inactive applications will be hidden and will be shown only when the 
application becomes active. Note that applications have to mark the windows 
with the proper window type for this feature to work.
</para>
</sect3>

</sect2>

<sect2 id="translucency">
<title>Translucency</title>

<para>The options available in this module are explained in the
<ulink url="help:/kompmgr/index.html">&kompmgr; Handbook</ulink>.</para>

</sect2>

</sect1>

</article>
