mirror of
https://gitgud.io/wackyideas/aerothemeplasma.git
synced 2024-08-15 00:43:43 +00:00
Very early KDE 6 release.
This commit is contained in:
parent
7cc4ccabbc
commit
686046d4f7
6272 changed files with 140920 additions and 529657 deletions
143
kwin/effects/smodpeekeffect/contents/code/main.js
Normal file
143
kwin/effects/smodpeekeffect/contents/code/main.js
Normal file
|
@ -0,0 +1,143 @@
|
|||
/*
|
||||
* KWin - the KDE window manager
|
||||
* This file is part of the KDE project.
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2015 Thomas Lübking <thomas.luebking@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
/*global effect, effects, animate, animationTime, Effect, QEasingCurve */
|
||||
|
||||
"use strict";
|
||||
|
||||
var badBadWindowsEffect = {
|
||||
duration: animationTime(450),
|
||||
showingDesktop: false,
|
||||
loadConfig: function () {
|
||||
badBadWindowsEffect.duration = animationTime(450);
|
||||
},
|
||||
setShowingDesktop: function (showing) {
|
||||
badBadWindowsEffect.showingDesktop = showing;
|
||||
|
||||
},
|
||||
offToCorners: function (showing, frozenTime) {
|
||||
if (typeof frozenTime === "undefined") {
|
||||
frozenTime = -1;
|
||||
}
|
||||
var stackingOrder = effects.stackingOrder;
|
||||
var screenGeo = effects.virtualScreenGeometry;
|
||||
var xOffset = screenGeo.width / 16;
|
||||
var yOffset = screenGeo.height / 16;
|
||||
|
||||
for (var i = 0; i < stackingOrder.length; ++i) {
|
||||
var w = stackingOrder[i];
|
||||
|
||||
if (!w.managed && w.windowClass == "kwin_x11 kwin" && w.caption == "" && !w.hasDecoration) continue;
|
||||
if (!w.hiddenByShowDesktop && !w.normalWindow) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// ignore invisible windows and such that do not have to be restored
|
||||
if (!w.visible) {
|
||||
if (w.offToCornerId) {
|
||||
// if it was visible when the effect was activated delete its animation data
|
||||
cancel(w.offToCornerId);
|
||||
delete w.offToCornerId;
|
||||
delete w.apertureCorner;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// Don't touch docks
|
||||
if (w.dock) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//console.log("Before: " + JSON.stringify(w));
|
||||
|
||||
if(showing) {
|
||||
if (!w.offToCornerId || !freezeInTime(w.offToCornerId, frozenTime)) {
|
||||
|
||||
w.offToCornerId = set({
|
||||
window: w,
|
||||
duration: badBadWindowsEffect.duration,
|
||||
curve: QEasingCurve.InOutQuad,
|
||||
//delay: 10,
|
||||
animations: [{
|
||||
type: Effect.Opacity,
|
||||
to: 0.0,
|
||||
frozenTime: frozenTime
|
||||
|
||||
}]
|
||||
});
|
||||
//console.log("script");
|
||||
}
|
||||
} else {
|
||||
if (!w.visible) {
|
||||
cancel(w.offToCornerId);
|
||||
delete w.offToCornerId;
|
||||
delete w.apertureCorner;
|
||||
// This if the window was invisible and has become visible in the meantime
|
||||
} else if (!w.offToCornerId || !redirect(w.offToCornerId, Effect.Backward) || !freezeInTime(w.offToCornerId, frozenTime)) {
|
||||
/*animate({
|
||||
window: w,
|
||||
duration: badBadWindowsEffect.duration,
|
||||
curve: QEasingCurve.Linear,
|
||||
animations: [{
|
||||
type: Effect.Opacity,
|
||||
from: 0.0
|
||||
}]
|
||||
});*/
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
animationEnded: function (w, a, meta) {
|
||||
// After the animation that closes the effect, reset all the parameters
|
||||
if (!badBadWindowsEffect.showingDesktop && w.offToCornerId != null) {
|
||||
cancel(w.offToCornerId);
|
||||
delete w.offToCornerId;
|
||||
delete w.apertureCorner;
|
||||
}
|
||||
},
|
||||
realtimeScreenEdgeCallback: function (border, deltaProgress, effectScreen) {
|
||||
if (!deltaProgress || !effectScreen) {
|
||||
badBadWindowsEffect.offToCorners(badBadWindowsEffect.showingDesktop, -1);
|
||||
return;
|
||||
}
|
||||
let time = 0;
|
||||
|
||||
switch (border) {
|
||||
case KWin.ElectricTop:
|
||||
case KWin.ElectricBottom:
|
||||
time = Math.min(1, (Math.abs(deltaProgress.height) / (effectScreen.geometry.height / 2))) * badBadWindowsEffect.duration;
|
||||
break;
|
||||
case KWin.ElectricLeft:
|
||||
case KWin.ElectricRight:
|
||||
time = Math.min(1, (Math.abs(deltaProgress.width) / (effectScreen.geometry.width / 2))) * badBadWindowsEffect.duration;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if (badBadWindowsEffect.showingDesktop) {
|
||||
time = badBadWindowsEffect.duration - time;
|
||||
}
|
||||
|
||||
badBadWindowsEffect.offToCorners(true, time)
|
||||
},
|
||||
init: function () {
|
||||
badBadWindowsEffect.loadConfig();
|
||||
effects.showingDesktopChanged.connect(badBadWindowsEffect.setShowingDesktop);
|
||||
effects.showingDesktopChanged.connect(badBadWindowsEffect.offToCorners);
|
||||
effect.animationEnded.connect(badBadWindowsEffect.animationEnded);
|
||||
|
||||
//let edges = effect.touchEdgesForAction("show-desktop");
|
||||
|
||||
/*for (let i in edges) {
|
||||
let edge = parseInt(edges[i]);
|
||||
registerRealtimeScreenEdge(edge, badBadWindowsEffect.realtimeScreenEdgeCallback);
|
||||
}*/
|
||||
}
|
||||
};
|
||||
|
||||
badBadWindowsEffect.init();
|
20
kwin/effects/smodpeekeffect/metadata.json
Normal file
20
kwin/effects/smodpeekeffect/metadata.json
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"KPackageStructure": "KWin/Effect",
|
||||
"KPlugin": {
|
||||
"Authors": [
|
||||
{
|
||||
"Name": "Souris"
|
||||
}
|
||||
],
|
||||
"Category": "Show Desktop Animation",
|
||||
"Description": "Fade windows to reveal the desktop",
|
||||
"EnabledByDefault": false,
|
||||
"Id": "smodpeekeffect",
|
||||
"License": "GPL",
|
||||
"Name": "SMOD Peek"
|
||||
},
|
||||
"X-KDE-Ordering": 100,
|
||||
"X-KWin-Exclusive-Category": "show-desktop",
|
||||
"X-Plasma-API": "javascript",
|
||||
"X-Plasma-MainScript": "code/main.js"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue