{"id":1248,"date":"2008-04-21T15:03:42","date_gmt":"2008-04-21T13:03:42","guid":{"rendered":"http:\/\/vizZzion.org\/blog\/2008\/04\/non-linear-animations-in-kwin\/"},"modified":"2008-04-21T15:03:42","modified_gmt":"2008-04-21T13:03:42","slug":"non-linear-animations-in-kwin","status":"publish","type":"post","link":"https:\/\/vizZzion.org\/blog\/2008\/04\/non-linear-animations-in-kwin\/","title":{"rendered":"Non-linear animations in KWin."},"content":{"rendered":"<p>\n    Some time ago I&#8217;ve done a proof-of-concept how one can make KWin&#8217;s compositing effects<br \/>\n    use non-linear timelines. Before that, a KWin animation would feel a bit static. Think<br \/>\n    of minimising a window. It would abruptly start moving at a constant speed and stop at<br \/>\n    some point in the same, abrupt way. Now we have a wonderful class in Qt, called QTimeLine<br \/>\n    that provides some additional curveshapes, making it easier to show accelerated or slowing<br \/>\n    down movements. After some discussions on the KWin mailinglist, I&#8217;ve implemented a smallish<br \/>\n    wrapper class around QTimeLine that is tailored towards the needs of KWin&#8217;s effects.<br \/>\n    After review by Mr KWin, Lubos, I&#8217;ve committed it to KDE&#8217;s SVN last Friday, and along with<br \/>\n    it &#8216;port&#8217; of the minization, the desktop grid and the coverswitch effect. Making those<br \/>\n    effects use the new KWin::TimeLine class wasn&#8217;t hard at all (well, modulo on where I<br \/>\n    needed some help ;-)). In fact, the coverswitch effect was done in 5 minutes during the<br \/>\n    last beer of the Tokamak Plasma sprint. Now at least those three effects feel more natural,<br \/>\n    less static. More effects will be ported later on, if you want to get your hands dirty, feel<br \/>\n    free to have a look at it.<\/p>\n<p \/>\n    During the last week, we&#8217;ve done some more polishing to KWin effects. Aaron has made the<br \/>\n    coverswitch effect more beautiful, and made the mousemark one (the one that shows stars<br \/>\n    revolving around your mousepointer) a bit less jumpy &#8212; it now &#8216;feels&#8217; like it&#8217;s always<br \/>\n    revolving, but not always shown &#8212; and not &#8216;start at position 0 whenever shown&#8217;. Last night<br \/>\n    I&#8217;ve excluded some window types from the brand-spanking-new Wobbly Windows effect in KWin.<br \/>\n    Previously, menu would wobble as they pop up, making for a hectic user experience when<br \/>\n    opening various menus in short order. It seems that not all Windows know what they are,<br \/>\n    but at least having it working for menus is quite an improvement already.<br \/>I&#8217;ve also<br \/>\n    made windows become translucent as they are being minimised, making it look a bit fancier.<\/p>\n<p \/>\n    Hacking on KWin is actually a lot of fun. You can do a lot with very little, the code in<br \/>\n    most of the effects is (at least partly) easy to understand and modify, and the results<br \/>\n    are very visible, which I think is a good motivator.<\/p>\n<p \/>\n","protected":false},"excerpt":{"rendered":"<p>Some time ago I&#8217;ve done a proof-of-concept how one can make KWin&#8217;s compositing effects use non-linear timelines. Before that, a KWin animation would feel a bit static. Think of minimising a window. It would abruptly start moving at a constant speed and stop at some point in the same, abrupt way. Now we have a&hellip; <a class=\"more-link\" href=\"https:\/\/vizZzion.org\/blog\/2008\/04\/non-linear-animations-in-kwin\/\">Continue reading <span class=\"screen-reader-text\">Non-linear animations in KWin.<\/span> <span class=\"meta-nav\" aria-hidden=\"true\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-1248","post","type-post","status-publish","format-standard","hentry","category-kde"],"_links":{"self":[{"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/posts\/1248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/comments?post=1248"}],"version-history":[{"count":0,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/posts\/1248\/revisions"}],"wp:attachment":[{"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/media?parent=1248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/categories?post=1248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/tags?post=1248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}