Я использую oneiric с оболочкой гнома и Docky. Окна свернуты в обзор «Действия» на панели. Как я могу получить эффект минимизации для Docky вместо Активности?
Я хотел сделать то же самое, но с более мягкой нижней панелью вместо док-станции. Концепция та же самая, хотя. Я думаю, что вы можете отредактировать этот файл:
/usr/share/gnome-shell/js/ui/windowManager.js
Я попытался определить эффект, но единственное, что я нашел вот это:
/* 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]
});
},
Если бы были какие-либо другие переходы, возможно, было бы возможно заменить его. Я мог бы даже согласиться на постепенный переход. Я просто не знаю, где эти переменные указаны. Я думаю, что важными строками являются x: xDest, , y: 0, и transition: 'easeOutQuad',
Если есть кто-то желающий чтобы добавить или исправить это, пожалуйста, помогите.
Попробуйте использовать расширение GNOME. Отключить анимацию окон :
.Единственный способ изменить это (в настоящее время) без изменения исходного кода, это написать расширение, которое изменяет свойства анимации минимизации так, чтобы она предназначалась для дока.
Извините, что воскресил такой старый поток, но я собираюсь написать несколько пользовательских анимаций для Gnome Shell, и это почти единственный поток, который я могу найти, который был весьма полезен.
На всякий случай, если это кому-то поможет, вот что я уже разработал:
// push the current actor onto the
// minimising stack / queue / list /
// whatever it is
this._minimizing.push(actor);
// get the main monitor
let primary = Main.layoutManager.primaryMonitor;
// calculate the destination for the x
// coordinate (0,0 is top left so this
// is presumably 0 for single monitor set ups)
let xDest = primary.x;
// if Clutter is configured to use
// right-to-left text, then the
// activities button is on the
// right hand side, so add the
// monitor width to xDest
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
xDest += primary.width;
// add the animation to the window
Tweener.addTween(actor,
{
// shrink the height and width down to 0
scale_x: 0.0,
scale_y: 0.0,
// move to the calculated destination
// (most likely top-left i.e. 0,0)
x: xDest,
y: 0,
// take the correct amount of time
time: WINDOW_ANIMATION_TIME,
// set the type of curve to use
// during the animation
transition: 'easeOutQuad',
// set up some events to trigger
// when were done
onComplete: this._minimizeWindowDone,
onCompleteScope: this,
onCompleteParams: [shellwm, actor],
onOverwrite: this._minimizeWindowOverwritten,
onOverwriteScope: this,
onOverwriteParams: [shellwm, actor]
});
Короче говоря, если у вас есть док в нижней части, вы можете легко запустить анимацию. до середины, выполнив:
x: primary.x + (primary.width / 2)
y: primary.height
Не идеально, но это начало ...