<br><br><div class="gmail_quote">On Tue, Feb 10, 2009 at 6:02 PM, Lucas Murray <span dir="ltr">&lt;<a href="mailto:lmurray@undefinedfire.com">lmurray@undefinedfire.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Wed, Feb 11, 2009 at 12:27 AM, Jud Craft &lt;<a href="mailto:craftjml@gmail.com">craftjml@gmail.com</a>&gt; wrote:<br>
&gt; It is the height of audacity to come out of the woodwork and suggest<br>
&gt; design ideas for a system that I do not create myself. &nbsp;Nevertheless,<br>
&gt; you might actually like some of these.<br>
&gt;<br>
&gt; I promise it will be entertaining. &nbsp;Broken into two sections, A and B.<br>
&gt; &nbsp;Also long. &nbsp;Have a great day!<br>
&gt;<br>
&gt;<br>
&gt; A. &nbsp;Effective Communication of Activities&#39; Design<br>
&gt; ----<br>
&gt; First, for KDE to effectively continue its embrace of Plasma, a good<br>
&gt; campaign must be focused on explaining the benefits of the Activities<br>
&gt; system to the casual user. &nbsp;It doesn&#39;t help that until now it has<br>
&gt; seemed mostly at cross-purposes with the old idea of virtual desktops.<br>
&gt; &nbsp;(I didn&#39;t say it was. &nbsp;I said it _seemed_. &nbsp;If it didn&#39;t, there<br>
&gt; wouldn&#39;t be so much ill-will about it.)<br>
&gt;<br>
&gt; It doesn&#39;t help that the transitioning-between-Activities bears little<br>
&gt; distinction from transitioning &nbsp;between workspaces/virtual desktops.<br>
&gt; It&#39;s sometimes hard for the user to figure out exactly what the big<br>
&gt; deal is. &nbsp;Personally, I rationalize it myself this way:<br>
&gt;<br>
&gt; --Virtual desktops are like having a really huge desk in your office.<br>
&gt; There&#39;s plenty of room for stuff, but you have to reach around to get<br>
&gt; to any of it.<br>
&gt;<br>
&gt; --Plasma Activities are like having _different_ desks in your office.<br>
&gt; For example, one for essay writing, one for your reading, and one for<br>
&gt; communication (memos, letters, in and out boxes).<br>
<br>
</div>I see them the other way around but lets carry on...<br>
<div><div></div><div class="Wj3C7c"><br>
&gt; The idea of &quot;having more than one desk VS having a huge desk&quot; is<br>
&gt; immediately apparent to any office and home user; in fact, if you ever<br>
&gt; create an in-KDE tutorial to explain how Activities work, and maybe<br>
&gt; guide the user through creating one, I highly suggest you use that<br>
&gt; metaphor pervasively.<br>
&gt;<br>
&gt; 1. &nbsp;In fact, perhaps you should re-do the nomenclature and describe<br>
&gt; them as &quot;Desks&quot; &nbsp;(formerly activities) and &quot;Desk size&quot; (formerly<br>
&gt; virtual desktop dimensions). &nbsp;I could have a &quot;Internet&quot; desk that is<br>
&gt; 2x2 screens wide, and a &quot;Programming&quot; desk that is 4x4 screens wide<br>
&gt; for example.<br>
&gt;<br>
&gt; This resolves ambiguity between &quot;just more space&quot; and &quot;space dedicated<br>
&gt; to a special purpose&quot;.<br>
&gt;<br>
&gt; 2. &nbsp;There should be a freaking-easy-as-dirt way to switch between<br>
&gt; Activities (though I do like &quot;Desks&quot;). &nbsp;The Zooming-User-Interface<br>
&gt; doesn&#39;t cut it, especially since it&#39;s at cross-purposes with the<br>
&gt; traditional zoom-in/out on a surface metaphor of virtual desktops.<br>
&gt; There is an inherent spatial conflict, don&#39;t ignore it. &nbsp;The typical<br>
&gt; office user doesn&#39;t care what your spatial metaphor is (or even what<br>
&gt; they _are_), but he _will_ notice if it&#39;s inconsistent.<br>
&gt;<br>
&gt; A simple menu widget that when clicked, presents a list of Activites.<br>
&gt; With two clicks, you can select any Activity. &nbsp;(You&#39;ll assume the user<br>
&gt; won&#39;t have 10+ Activities. &nbsp;That&#39;s too enthusiastic). &nbsp;Perhaps this<br>
&gt; menu can pop up when the Cashew/Acorn-thing is clicked, as opposed to<br>
&gt; strange terms like &quot;Zoom Out&quot;, which does nothing to describe the<br>
&gt; contextual novelty of the Activity idea. &nbsp;Activities describe<br>
&gt; different abstract spaces, not a web page.<br>
&gt;<br>
&gt; This same Activity Menu could be integrated into Kicker (a tab for a<br>
&gt; list of all current activities -- you could switch with just one<br>
&gt; click!) or into a panel-widget that triggers the menu.<br>
&gt;<br>
&gt;<br>
&gt; B. &nbsp;Working With Kwin to Resolve Spatial Conflicts<br>
&gt; ----<br>
&gt; The main interaction layer with Activites, the Zooming User Interface,<br>
&gt; in its current form isn&#39;t gonna cut it. &nbsp;Even further development<br>
&gt; isn&#39;t gonna cut it -- maybe you guys have some sort of brilliant<br>
&gt; vision that pops up in ephemeral IRC logs, but I haven&#39;t seen it on<br>
&gt; this list or Aaron Seigo&#39;s blog. &nbsp;(No offense of course. &nbsp;You might<br>
&gt; not post it here, it might be at Techbase, or it might not exist).<br>
&gt;<br>
&gt; Suggestions.<br>
&gt;<br>
&gt; 1. &nbsp;Team up with Kwin for Activites-transitions. &nbsp;Kwin is the only<br>
&gt; framework for screen-level transitions and animations that is well<br>
&gt; developed enough to be used immediately in the near future, and<br>
&gt; there&#39;s no need to reimplement screen transitions when Kwin has them<br>
&gt; already there!<br>
<br>
</div></div>Bingo.<br>
<div class="Ih2E3d"><br>
&gt; 2. &nbsp;Re-adopt the ZUI (whose name, being utterly meaningless to<br>
&gt; Activities, should disappear soon except perhaps as API and developer<br>
&gt; nomenclature) to use Kwin when present for switching between<br>
&gt; Activities. &nbsp;Be able to apply any desktop-switch-effect, perhaps, to<br>
&gt; Plasma&#39;s ZUI transitions instead. &nbsp;(Ex., switch between Activities<br>
&gt; with the Cube and Wall). &nbsp;This makes for more spatial conflicts, I<br>
&gt; know. &nbsp;Wait for it.<br>
&gt;<br>
&gt; 3. &nbsp;The default method of Activity transition interaction should be<br>
&gt;<br>
&gt; --Switching immediately to a particular Activity (see Cashew-Menu idea<br>
&gt; in A-2 above)<br>
&gt;<br>
&gt; And nothing else. &nbsp;No &quot;zoomed-out&quot; overview of all possible Activity<br>
&gt; desks. &nbsp;Interferes with zooming-out of virtual desktops. &nbsp;(Feel free<br>
&gt; to debate on this).<br>
<br>
</div>My proposal below addresses this.<br>
<div class="Ih2E3d"><br>
&gt; 4. &nbsp;Kwin needs to lay down the law and demand a single consistent<br>
&gt; metaphor for Activities, and a single consistent metaphor for virtual<br>
&gt; desktop switching.<br>
&gt;<br>
&gt; Virtual desktop switching for a long time has long called home the<br>
&gt; metaphor of &quot;different spaces on the 2D plane&quot;. &nbsp;Since you remember my<br>
&gt; parallel earlier (Virtual desktops = A big flat desk with tons of<br>
&gt; space) I highly suggest that the Desktop Grid becomes the permanent<br>
&gt; and unchangeable effect metaphor for Virtual Desktop/Space switching.<br>
&gt;<br>
&gt; Why?<br>
&gt;<br>
&gt; --Offers more flexibility. &nbsp;The Cube, though beautiful, is an<br>
&gt; abstraction of a 1-dimensional list of spaces that you can cycle<br>
&gt; through. &nbsp;The Desktop Grid allows 2 dimensions of spaces.<br>
<br>
</div>I hate the cube, I always have. The desktop is a 2D entity and<br>
therefore is best represented in 2D.<br>
<div class="Ih2E3d"><br>
&gt; --For sake of usability (debate me), there should be one and only one<br>
&gt; virtual desktop metaphor. &nbsp;The Compiz schizophrenia of &quot;cube, sphere,<br>
&gt; wall, plane, dodecahedron!&quot; is not something Kwin should ever have<br>
&gt; aimed to copy.<br>
<br>
</div>Compiz is designed to be absolutely anything it wants, this has both<br>
advantages and disadvantages. Great for developer experimentation and<br>
user flexibility but it does have the<br>
jack-of-all-trades-master-of-none problem.<br>
<div class="Ih2E3d"><br>
&gt; For consistency across KDE installations. &nbsp;No one should try to switch<br>
&gt; desktops on two different KDE computers, and find themselves assaulted<br>
&gt; with a &quot;grid&quot; on one and a &quot;3D pentagon&quot; on the other.<br>
&gt;<br>
&gt; 5. &nbsp;In my personal opinion, once the ZUI-transition-to-Kwin-effect<br>
&gt; development is complete (I highly suggest you get on that, even if you<br>
&gt; disagree with everything else I say) the Cube should be selected as<br>
&gt; the default metaphor for Activity switching.<br>
&gt;<br>
&gt; Why?<br>
&gt;<br>
&gt; The 3D concept of &quot;different faces on the same cube&quot; is the nearest<br>
&gt; you get to the idea that your computer&#39;s KDE desktop can be used for<br>
&gt; different purposes.<br>
&gt;<br>
&gt; While DesktopGrid conveys the idea of a &quot;big space you move around<br>
&gt; on&quot;, the different faces of a Cube convey the idea of &quot;separate spaces<br>
&gt; entirely&quot;.<br>
<br>
</div>Makes sense, I like it but it does conflict with what I&#39;m going to put<br>
forward below.<br>
<div class="Ih2E3d"><br>
&gt; C. &nbsp;Conclusion<br>
&gt; ----<br>
&gt; Whether you agree with my choices for the Space metaphor vs. the<br>
&gt; Desk/Activity metaphor, you must agree that they must be consistent,<br>
&gt; and not conflict.<br>
<br>
</div>Agreed.<br>
<div><div></div><div class="Wj3C7c"><br>
&gt; The days of the user arbitrarily deciding his desktop metaphors must<br>
&gt; come to an end -- especially since only the foolish care whether their<br>
&gt; desktop is a sphere or a cube (Seriously.), and was indicative of the<br>
&gt; kind of &quot;freedom-for-freedom&#39;s sake&quot; that unfortunately embodies every<br>
&gt; disadvantage with Free Software Development. &nbsp;Do Compiz one better<br>
&gt; here and actually lay down a design for your metaphors.<br>
&gt;<br>
&gt; Users don&#39;t want components they can mix and match. &nbsp;Developers do.<br>
&gt; Users just want a well-designed system that they can _use_ however<br>
&gt; they want.<br>
&gt;<br>
&gt; And since Activities is a relatively new concept that you seem<br>
&gt; determined to push, you _must_ take care to separate the idea,<br>
&gt; spatially, from virtual desktops. &nbsp;Since it _is_ a different idea (see<br>
&gt; the big desk vs. many desks summary in part A).<br>
&gt;<br>
&gt; Inconsistency in how the environment treats transitions between<br>
&gt; desktop spaces and desktop Activities will ultimately determine how<br>
&gt; well users can adjust to them. &nbsp;They must occupy an entirely different<br>
&gt; spatial context than mere Virtual Desktop/Spaces. &nbsp;For this reason I<br>
&gt; suggest the 3D Cube for them, while for the sake of 1) consistency and<br>
&gt; 2) greater flexibility, I suggest Desktop Grid for Spaces alone.<br>
&gt;<br>
&gt; This is very important usability-wise: &nbsp;my design ideas may need<br>
&gt; refinement, but the idea of internal inconsistency does not. &nbsp;Kwin and<br>
&gt; Plasma must cooperate to set in stone these metaphors.<br>
&gt;<br>
&gt; Mixing and matching them, I repeat, will only hurt you in the long<br>
&gt; run. &nbsp;Get Plasma to work with Kwin for transitions (since Kwin has the<br>
&gt; framework to do it), and then decide what effects/metaphors to use for<br>
&gt; which desktop abstractions.<br>
&gt;<br>
&gt; And it works for audiences either way: &nbsp;traditional Linux desktop<br>
&gt; users can ignore your Activities and use Desktop Spaces just the way<br>
&gt; they like. &nbsp;Whereas perhaps a user who doesn&#39;t care for a huge virtual<br>
&gt; screen area, but really likes the idea of desktops for different<br>
&gt; purposes, can use the Activity/Desk concept.<br>
<br>
</div></div>Makes sense.<br>
<div class="Ih2E3d"><br>
&gt; And since they&#39;d both use different spatial metaphors, they would<br>
&gt; never conflict, and you would always tell when you were merely moving<br>
&gt; through the same desktop, as opposed to switching to a different<br>
&gt; task-based desktop entirely.<br>
<br>
</div>Now on to my proposal:<br>
----------------------<br>
<br>
What I&#39;m going to propose below relies heavily on compositing support<br>
and I have yet to work out in detail how it can be done without it. It<br>
should be possible to emulate some of these ideas by creating a new<br>
window and overlaying it over the entire desktop and doing the<br>
graphics/animation in there though.<br>
<br>
Glossary:<br>
- Widget = Plasma widget.<br>
- Desktop = One virtual desktop as how it&#39;s already been implemented in KWin.<br>
- Activity = A set of Plasma widgets and application windows that have<br>
been grouped together and can be switched between at will.<br>
- Workspace = All desktops, all activities, all applications, etc.<br>
<br>
Quick bullet list right now as I can&#39;t find my notes (This also builds<br>
off my E-mail in &quot;[PATCH] fade out panel in desktopgrid&quot;):<br>
<br>
- The desktop grid becomes the main visualization for absolutely<br>
everything, both virtual desktops and Plasma activities.<br>
<br>
- Widgets are in their own X windows and are handled by KWin when<br>
compositing is enabled (New window type required?). This is a<br>
requirement for what&#39;s below.</blockquote><div><br>It sounds strange, we kill the cross plaftforness no?.And technically how it is possible? They are QGraphicsWidgets inside a QWidget(QGraphicsView). They can&#39;t be separate from their scene or we render them in a separe QGraphicsView? What about the translucency, clipping, cache provided by QGraphicsView...Perhaps i miss something...<br>
&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
- While in the desktop grid you are given a control panel that will<br>
allow you to control the workspace. You can create, delete and move<br>
desktops around (EWMH problem: How to handle out-of-order desktops?)<br>
while the effect is active. You can also assign activity areas here (I<br>
called them &quot;zones&quot; but I guess &quot;activity&quot; also works) and is the<br>
replacement for the zoomed out view for activities currently available<br>
in KDE4.<br>
<br>
- Activities are assigned to desktops. If you want to create a new<br>
activity you can just create a new desktop or reassign an existing one<br>
to be in the new activity area. One desktop can only have one activity<br>
assigned to it at any given moment but one activity can span multiple<br>
desktops. When you remove an activity from all desktops that it<br>
remains on the control panel and can be assigned back when the user<br>
requires it.<br>
<br>
- Widgets and windows can be treated the same in this implementation.<br>
You can assign a window to an activity just like you can assign a<br>
widget to an activity.<br>
<br>
- Never allow per-desktop wallpapers. </blockquote><div><br>I like this feature provided by Activities.<br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Instead the wallpaper can just<br>
be a global backdrop to fill in the otherwise unused space when there<br>
is no application open. This is also a good excuse for a KWin<br>
background effect that allows some fancy stuff such as parallax when<br>
moving around the workspace (Switching desktops, zooming out, etc.).<br>
As long as there is a widget that allows the traditional desktop<br>
(Instead of being a containment) everything should be fine.<br>
<br>
That pretty much sums up the main bits. I have been working on this<br>
idea since the start of the year and have lots of notes about the<br>
finer details so if you would like further information I can answer<br>
any questions. I can also create some mockup images of this if<br>
everyone thinks it is a good idea. I had done all this planning as I<br>
was (Is? I&#39;m still working on it to learn more about Xlib) writing my<br>
own window manager and KDE workspace environment from scratch and<br>
wanted to make something unique, if these ideas are actually<br>
implemented in KDE proper then that would be great. =)<br>
<br>
One other idea that build off this but are unrelated to this<br>
particular discussion is dynamic desktop creation. When the user logs<br>
in there is only one desktop, as they attempt to switch to another it<br>
is created on-the-fly. The desktop grid effect also takes into account<br>
this dynamic nature by showing &quot;ghosted&quot; desktops around the edge of<br>
the screen, if the user clicks them or drags a window to them the<br>
effect zooms out a little bit more to display the new desktop. Once<br>
again I have notes on this, feel free to ask questions.<br>
<div><div></div><div class="Wj3C7c">_______________________________________________<br>
Plasma-devel mailing list<br>
<a href="mailto:Plasma-devel@kde.org">Plasma-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/plasma-devel" target="_blank">https://mail.kde.org/mailman/listinfo/plasma-devel</a><br>
</div></div></blockquote></div><br>