<table><tr><td style="">zzag added a comment.<br />Restricted Application edited projects, added Plasma; removed KWin.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D9638" rel="noreferrer">View Revision</a></tr></table><br /><div><div><p>I've made this effect because I am very disappointed with the Slide effect. Let me list some of the biggest problems with slide effect:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">It's not intuitive</li>
</ul>

<ul class="remarkup-list">
<li class="remarkup-list-item">It has poor(like my English) visual feedback when switching between empty virtual desktops</li>
</ul>

<p><a href="https://phabricator.kde.org/F5615540" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615540: slide-empty-desktops.mp4</a><br />
I've just cycled through 4 virtual desktops, surprise!</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Switching between virtual desktops with fullscreen windows is not pleasant</li>
</ul>

<p><a href="https://phabricator.kde.org/F5615542" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615542: slide-fullscreen.mp4</a><br />
Panels should not flick, should they?<br />
*Please note that "panel flickering" is not a bug.*</p>

<h2 class="remarkup-header">Meet the 'Slide Desktops' effect</h2>

<p><a href="https://phabricator.kde.org/F5615545" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615545: slidedesktops-demo.mp4</a></p>

<p>Gorgeous!</p>

<p>As you can see desktop background and panels ain't static anymore. They move together with virtual desktops, which is expected and intuitive. Also, you may have noticed gaps between virtual desktops. Their purpose is to make users feel like each virtual desktop is a separate entity. In addition to the purpose above, gaps are very useful when you have a plain color as the desktop background.</p>

<p>If you don't like gaps, you can set them to 0.</p>

<p><a href="https://phabricator.kde.org/F5615546" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615546: options.png</a></p>

<h2 class="remarkup-header">Demos</h2>

<h3 class="remarkup-header">Switching between empty virtual desktops:</h3>

<p><a href="https://phabricator.kde.org/F5615550" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615550: slidedesktops-empty-desktops.mp4</a></p>

<p>*Now we see that we're switching between virtual desktops.*</p>

<h3 class="remarkup-header">Switching between virtual desktops with fullscreen windows:</h3>

<p><a href="https://phabricator.kde.org/F5615551" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615551: slidedesktops-fullscreen.mp4</a></p>

<p>*Panels aren't flickering anymore!*</p>

<h3 class="remarkup-header">Navigating a desktop grid:</h3>

<p><a href="https://phabricator.kde.org/F5615552" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615552: slidedesktops-grid.mp4</a></p>

<h3 class="remarkup-header">Move a window to another virtual desktop:</h3>

<p><a href="https://phabricator.kde.org/F5615553" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615553: slidedesktops-moving-window.mp4</a></p>

<h3 class="remarkup-header">Slide Desktops on Wayland:</h3>

<p><a href="https://phabricator.kde.org/F5615554" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615554: slidedesktops-wayland.mp4</a></p>

<h3 class="remarkup-header">Switch virtual desktops on a setup with several screens:</h3>

<p><a href="https://phabricator.kde.org/F5615556" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F5615556: slidedesktops-several-screens.mp4</a></p>

<p>*I don't really know why you need virtual desktops in this case.*</p>

<h2 class="remarkup-header">Next steps</h2>

<ul class="remarkup-list">
<li class="remarkup-list-item">Optimize it: Try to decrease a number of memory allocations during paint calls?</li>
<li class="remarkup-list-item">Simplify code?</li>
</ul></div></div><br /><div><strong>REPOSITORY</strong><div><div>R108 KWin</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D9638" rel="noreferrer">https://phabricator.kde.org/D9638</a></div></div><br /><div><strong>To: </strong>zzag, VDG, KWin, Plasma<br /><strong>Cc: </strong>plasma-devel, kwin, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart<br /></div>