[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kwin
Subject:    Re: (documentation) I'm pissed off! ... so I'm going to do something
From:       Pablo Sanchez <pablo () blueoakdb ! com>
Date:       2011-09-24 2:08:47
Message-ID: 201109232208.47882.pablo () blueoakdb ! com
[Download RAW message or body]

[ Comments below, in line ]

On Thursday, September 22, 2011 at 07:33 AM, Thomas Lübking penned
about Re: (documentation) I'm pissed off! ... so I'm going to do something about it ... :)

Hi Thomas,

I now have a Virtual Machine running with KDE 4.7.1 bits installed.  I
see the revamped `Edit Window-Specific Settings - KDE Control Modules'

I spoke with Anne (Wilson) via e-mail and she recommended that the
documentation should be task-based:  essentially, `To do X, you do Y'
I whole heartedly agree with this approach (as it was my original
intention!  :)

I'm going to hit the `Reset' button and start the questions using the
4.7.1 UI.

Below, I request (and please take your time answering because like
everyone else, I'm super busy so no sense in rushing if it'll sit in
my inbox for a day or so or longer!) you review, validate and correct
my understanding.

To make things as easy for you as possible, only offer corrections.
If something is right, just ignore it.  :)

Also, if there's a concept I'm missing, please don't hesitate to let
me know.  Pointers to links are welcomed so I can understand and
provide better documentation.

I've tried to merge what you've already answered in this message.

Cheers,
-pablo

General
=======
In my mind, I see the managing of `Window Rules' in two parts:

   1) `Window Identification' and
   2) `Attribute Setting'

`Window Identification' is handled in the `Window matching' tab and
`Attribute Setting' is functionally grouped in three tabs:

   i)   Size & Position
   ii)  Arrangement & Access
   iii) Appearance & Fixes

Window Rules
============
Window Rules allow a user to fine-tune how KDE handles windows.  The
rule specification is extremely powerful.  Rules can be created to
affect all applications.  Rules can be created to affect different
sets of pop-ups within the same application.

Rule Evaluation
---------------
@Q:  In the `Configure - KDE Control Module' window, we are presented
     with `Window Rules'  Reading the current `Help' (Revision KDE 4.5
     2010-05-31), it states that rule order does not affect rule
     evaluation. 

     Does this mean that for each window, on creation, each rule is
     considered and only those rules which match are applied?  In
     short, the rules are OR'd.

     How do we handle rule conflicts?  Is it somewhat
     non-deterministic?  That is, if we have two or more rules which
     match, and they have conflicting attribute settings (suppose one
     window has a geometry of 100x100 and the other rule has an
     attribute of 25x25), which rule `wins'?

     If it's non-determnistic, I'll make sure to write something to
     the effect that it's important to write rules which either don't
     have conflicts (like the above example).

Activating Rules
----------------
Typically, when matching an application, the application must be
restarted before rules take into effect.

Window Matching
===============
Before we can discuss window matching, it's important to understand
how windows comprise an application and that there are different types
of windows.  For example, we may have `Dialog Window's, `Toolbar's,
`Normal Window's, etc.  There are many different attributes associated
with windows and criteria can (or cannot) be specified for each.

Thus, identification can be specified in liberal terms to affect many
applications on your desktop to highly specific to tune different
pop-ups from the same application.

By design, the module provides a wizard to aid in the identification
of windows:  the `Detect Windows Properties' button.

The quickest way to create a new rule is to start the application and
use the `Detect Windows Properties' button.

Use the `0s delay' to identify windows which momentarily pop-up and
when your mouse moves away, the pop-up disappears.  (I'm sorta making
this Use Case up ... how wrong am I?  :)

Matching Options
----------------
For each attribute we have the following matching options:

Unimportant
+++++++++++
Ignore this attribute

Exact Match
+++++++++++
The attribute must match exactly the specified string For example, if
the window's attribute value is `Konsole', entering `onsole' will
/not/ match.

Substring Match
+++++++++++++++
If the string specified is found in attribute, it's considered a match.

Using the previous example, `onsole' will match `Konsole' when
specifying this option. 

Regular Expression - `pablo, digest link provided by Thomas :)'
++++++++++++++++++
Previously, Thomas wrote:

   > (i found that very cumbersome, but it may be a help for the
   > unskilled) - maybe this could be added (if i find it)

To free you up, I'll look for some links and once we get the
documentation set up, you'll have final say (like the Romans!  Thumbs
up or down) on the link(s).  :)

Manual Rule Creation
--------------------
@Q:  When not using the `Detect Window Properties', how does one go
     about entering criteria for the different `Window types:'?  I
     wasn't able to do so.  Is this feature still in the works?

Detect Window Properties
------------------------
Use to create a new rule, based on an existing window.

After clicking on a window, the following information, if available,
is displayed:

   o Window Class
   o Window Role
   o Window Type
   o Window Title
   o Extra role
   o Machine

The above data can be used to guide you to create your new rule.  The
following options determine which attributes will be considered: 

   o Use window class (whole application)

     Set `Window Class' to `Exact Match' using the above value and set
     the other attributes to `Unimportant'

   o Use window class and window role (speccific window)

     Use `Window Class' and `Window Role'

   o Use whole window class (specific window)

     @Q:  I'm unclear on this option.  When I use `Konsole' as an
          example, if I select `Use window class (whole application)',
          I get `Konsole' for `Window class (application)'  

          On the other hand, if I use this option, I get `Konsole
          (konsole Konsole)' instead as the value.  There's something
          obviously important about the `(konsole Konsole)' portion.  :)

   x - Match also window title

     Each of the above options can further be constrained to a
     specific `Window title'

Window Attributes
-----------------
Window class (application)
++++++++++++++++++++++++++
Use this criteria to narrow the scope of the criteria to a specific
application.

`x - Match whole window class' 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Q:  I don't understand the difference between an `Exact match' for
     `Window class' and matching the /whole/ `Window class' 

The labels are:

   Window class (application)  Exact Match ___________
                        x Match whole window class

and I think the names are confusing me.  Not that I can offer a
different label name, I just don't have a good understanding of the
difference between the two.  :)

Window role
+++++++++++
A specific instance of a Class.  For example, the `Konsole' class, if
you have multiple terminal windows, the `role' is used to distinguish
each occurrence:  One terminal may be `MainWindow#2' and another may
be `MainWindow#8'

Window types/Window title/Extra role/Machine
++++++++++++++++++++++++++++++++++++++++++++
Criteria for the specific window type (e.g. Normal Window, Dialog
Window, Utility Window, etc.)

The best way to identify the different window types is to use the
`Detect Window Properties' feature.

Each `Window type' can have its own criteria.  The criteria are:

o Window title

  Match on the title of the window.

o Extra role

  @Q:  Do we have any examples of extra role values?  

o Machine (hostname)

  Match based on the machine name of where the window is running.

  For example, if you remotely log in to another computer, you can
  start an X application remotely and have it displayed locally
  (e.g. `xterm')

  This criteria allows one to match these types of windows.

Size & Position/Arrangement & Access/Appearances & Fixes
========================================================
These three tabs comprise the different settings, grouped by
function.

Matching Options
----------------
There are several matching options.  Some attributes accept additional
parameters which are discussed in their respective section.

Do Not Affect
+++++++++++++
Functionally equivalent to not selecting the option.  Possibly
available for backwards compatability.

It's recommended that this value not be used as it may become
deprecated and eventually removed from KDE.

Apply Initially
+++++++++++++++
The application starts with this setting initially.  The end-user can
override this setting.

Remember
++++++++
When the application re-starts, `remember' the setting value when we
closed the application last.

For example, if you'd like to preserve the position of a window from
invocation to invocation, use this matching.

Force
+++++
The attribute never be changed by the end-user nor the application.
Potential use for this setting is in a kiosk environment.

Apply Now
+++++++++
This is an ephemeral setting.  It's only applied during the rule
creation and /never/ re-applied.

Author has discovered useful to during rule creation to `undo' an
attribute.  :)

Force Temporarily
+++++++++++++++++
`Thomas still figuring this one out!  :)'

Yes/No
++++++
@Q:  I believe `Yes/No' is contextual.  Although I'm not quite sure.

     I tried a few tests and I can see how `Yes/No' works with the
     `Closeable' attribute - see below.  However, it didn't make a
     difference when I set it for `Maximized horizontally' - the
     window was always maximized horizontally.  Is this a possible
     software defect?

Force/Force Temporarily
+++++++++++++++++++++++
@Q:  To confirm, these two options, when only presented, are the same
     as when presented above eh?  That is, when they're the only two
     options, there's nothing special about them.

Attributes
==========
Size & Position
---------------
Position
++++++++
Place the window given the specified X-Y coordinates.  The coordinate
values are for the bottom lefthand of the window.

The lower left corner of your display is `0,0'

To obtain a window's current placement, you can use `xwininfo' or
configure KDE to display window geometry when moving or resizing:

   System Settings > Window Behavior > Window Behavior > Moving tab

and select `Display window geometry when moving or resizing'

Size
++++
The size of the window in pixels.  Similar to `Position' use either
`xwininfo' or KDE to obtain a window's current size.

Maximized horizontal
++++++++++++++++++++
The window is started with a maximum horizontal size.  The window
will span from the top of the display to the bottom.

The original height of the window is perserved.

Maximized vertically
+++++++++++++=++++++
The window is started with a maximum vertical size.  The window will
span across the widh of the display.

The original width of the window is preserved.

Fullscreen
++++++++++
The window consumes the entire screen.  Useful for remote desktop
clients which you'd like by default to take up the entire display.

Desktop
+++++++
Start an application on a particular desktop.  For example, use this
setting so `Kontact' is always on `Desktop 1' and `Akregator' is on
`Desktop 2'

Minimized
+++++++++
Start the window minimized.  This may be used for misbehaving error
dialog boxes:  ignore them.

Shaded
++++++
The window is shaded (rolled up) when it starts.

Initial placement
+++++++++++++++++
Override the default KDE window placement.  For example, the default
may be `Smart' but this particular window, we'd always like it to
start `Under Mouse'

Ignore requested geometry
+++++++++++++++++++++++++
@Q:  How is setting this attribute to `Force' different than setting
     `Size' to `Force'? 

Minimum size
++++++++++++
The minimum width and height allowed for the window.

Maximum size
++++++++++++
The maximum width and height allowed for the window.

Obey geometry restrictions
++++++++++++++++++++++++++
@Q:  I'm unclear on this setting

Arrangement & Access
--------------------

Keep above
++++++++++
Window is started above all other windows.

Keep below
++++++++++
Window is started below all other windows.

Autogroup with identical
++++++++++++++++++++++++
@Q:  I understand the term autogroup but I'm not clear how it's used
     in this context.  :o

     How is `identical' determined?  By Window Class?

Autogroup in foreground
++++++++++++++++++++++++
@Q:  Would autogroup'ing typically happen in the background?  Are
     there any visual queues for the end-user when autogroup'ing is in
     effect?

     I may have more questions once I get some answers about
     autogroup'ing.  :)

Autogruop by ID
+++++++++++++++
@Q:  How would one determine the `ID' value to enter?

Tiling
++++++
@Q:  I created a rule with only tiling set for `konsole' and I
     couldn't tell the difference between `tiled' and `floating'

New windows can be set to start `tiled' (`kwin' will look for space on
your desktop and fit the windows accordingly) or 

Skip taskbar
++++++++++++
Do not display the window in the taskbar.  

Good candidates are notes from `knotes' as well as `korganizer'
reminders.

Skip pager
++++++++++
Set if you wish to suppress viewing the window in the Virtual Desktop
pager.  

Again, ideal candidates are `knotes' and `korganizer'

Skip switcher
+++++++++++++
Set if you wish the window to not be available via the KDE
switcher.  Typically activated via `ALT-TAB'

Shortcut
++++++++
@Q:  Is this a keyboard shortcut to close/open/? the application.  How
     are control/escape/? sequences entered.  :)

Appearance & Fixes
------------------
No titlebar and frame
+++++++++++++++++++++
Supress the titlebar and window frame.

Active opacity/Inactive opacity
+++++++++++++++++++++++++++++++
When the window is active/inactive, its opacity.

Moving/Resizing
+++++++++++++++
When the window is being moved/resized, should we make it `opaque' or
`transparent'

@Q:  What opacity value do we use?  Empirically, I believe it's the
     `active' value but I thought I'd ask.

Forcus stealing prevention
++++++++++++++++++++++++++
Used to wrangle wiley dialog boxes into submission.  

If you have a dialog box which insists on stealing the focus (input),
create a rule and set its value to `High' or `Extreme' (must be
activated by user).  A value of `None' will unconditionally render
focus to the window.

Accept focus
++++++++++++
When set and `Yes' is selected, focus switches to the newly created
window.  When `No' is selected, focus is disabled; any attempt at input
will be discarded.

Ignore global shortcuts
+++++++++++++++++++++++
Any global shortcuts which would normally affect this window are
ignored. 

Closeable
+++++++++
Determines whether to display a `close' option for the window.  If
`No' is checked, no `close' option is displayed.

Window type
+++++++++++
For older applications, force the window type to obtain those
attributes.  For example, you can make any window treated as
`Utility Type' - it will hide with its parent by default - or as `Dock
(panel) ' - altering its stacking and focus policy.

Block compositing
+++++++++++++++++
@Q:  I'm unclear on this attribute.

Examples
========
@Q:  Is there a way to specify a rule so a Window always pops up to
     the top (similar to `Keep Above Others')?

     Personally, I'd like `KOrganizer' reminders to pop to the top and
     for me to easily push them back without having to unset `Keep
     Above Others'.

TODO:  Pablo to list a series of Examples.

Examples
--------
o Kontact on one desktop but new messages on other desktops too
o Akregator on desktop 2
o VirtualBox VM - do not raise window when clicking a window within
  the VM.
o KOrganizer - appear on all desktops but don't show in your pager nor
  your taskbar
o Firefox - geometry and placement
o Knotes - skip pager and taskbar
---
Pablo Sanchez - Blueoak Database Engineering, Inc
Ph:    819.459.1926      Fax:   760.860.5225 (US)
_______________________________________________
kwin mailing list
kwin@kde.org
https://mail.kde.org/mailman/listinfo/kwin

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic