Eu queria fazer o mesmo, mas com um painel de fundo falso, em vez do dock. O conceito é o mesmo embora. Eu acho que você pode editar este arquivo:
/usr/share/gnome-shell/js/ui/windowManager.js
Eu tentei identificar o efeito, mas a única coisa que encontro aqui é:
/* scale window down to 0x0.
* maybe TODO: get icon geometry passed through and move the window towards it?
*/
this._minimizing.push(actor);
let primary = Main.layoutManager.primaryMonitor;
let xDest = primary.x;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
xDest += primary.width;
Tweener.addTween(actor,
{ scale_x: 0.0,
scale_y: 0.0,
x: xDest,
y: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: this._minimizeWindowDone,
onCompleteScope: this,
onCompleteParams: [shellwm, actor],
onOverwrite: this._minimizeWindowOverwritten,
onOverwriteScope: this,
onOverwriteParams: [shellwm, actor]
});
},
Se houvesse outras transições, talvez fosse possível substituí-lo. Eu poderia até me contentar com uma transição de fade-out. Eu só não sei onde essas variáveis são especificadas. Acho que as linhas importantes são x: xDest, , y: 0, e transição: 'easeOutQuad',
Se houver alguém disposto a adicioná-lo ou corrigi-lo, por favor ajude.