Re: Proposal: _NET_WM_STATE_MINIMIZED



On Wed, 2004-06-16 at 00:55, Elijah P Newren wrote:
>  This means, for
> example, that the tasklist on the gnome-panel can't know whether a window
> is shaded or minimized (because _NET_WM_STATE_HIDDEN is set in both
> cases).  This causes a problem with trying to disable non-sensical actions
> for the tasklist (http://bugzilla.gnome.org/show_bug.cgi?id=122640).

Window list should be using _NET_WM_ALLOWED_ACTIONS for that, so the
logic of what to allow can live in the window manager only.

> To fix this I propose to add _NET_WM_STATE_MINIMIZED to the spec.  I've
> attached a patch for the spec's xml file.
> 
> Does this sound reasonable?

You definitely want to read the historical threads on this one; I
remember it being confusing at the time, and it would take me a while to
get back to understanding all the issues. Sasha linked to one of the
main threads, I'm pretty sure there were more posts also (maybe the
thread extends over multiple months, maybe there were multiple threads).

Note that the HIDDEN state in the spec has a very precise definition:

"_NET_WM_STATE_HIDDEN should be set by the Window Manager to indicate
that a window would not be visible on the screen if its desktop/viewport
were active and its coordinates were within the screen bounds."

So if introducing MINIMIZED, you need a similar precise definition. You
say "if the window is minimized" in the patch, but that really isn't
precise enough. Reasons to unmap a window (setting IconicState) include
"iconify" (convert a window to an icon), "minimize to a window list" as
GNOME does, reduce windows to a scaled-down version of themselves, use a
"window menu" instead of a window list, use multiple workspaces,
multiple tabs, and all sorts of things like that.

If MINIMIZED just means "unmapped" (i.e. "all of the above") then
IconicState already means that; if it means something specific to the
window list, then perhaps it would be better called
STATE_MINIMIZED_TO_TASK_BAR - but it's not really clear what a state
like that is good for.

Havoc





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]