如何禁用所有Unity动画?

如果它不可能那么可能只是Dash显示/隐藏动画。 我只是发现自己在等待没有意义的动画。

在此处输入图像描述

1.为什么不能在Unity 12.04中禁用此Dash动画

  • 不幸的是,渐变/不透明度动画和相关时间在Unity源代码中是硬编码的。
  • 实际的代码可以在unity-5.12/plugins/unityshell/src/ShortcutController.cpp (这是你必须修改和重新编译以摆脱动画)
  • 当您使用Super键启动Dash时,此文件中的一些示例行演示了动画的硬编码:

     30:const unsigned int SUPER_TAP_DURATION = 650;
     31:const unsigned int FADE_DURATION = 100;
     39:,fade_in_animator_(FADE_DURATION)
     40:,fade_out_animator_(FADE_DURATION)
     65:fade_in_animator_.animation_updated.connect(sigc :: mem_fun(this,&Controller :: OnFadeInUpdated));
     66:fade_in_animator_.animation_ended.connect(sigc :: mem_fun(this,&Controller :: OnFadeInEnded));
     67:fade_out_animator_.animation_updated.connect(sigc :: mem_fun(this,&Controller :: OnFadeOutUpdated));
     68:fade_out_animator_.animation_ended.connect(sigc :: mem_fun(this,&Controller :: OnFadeOutEnded));
     120:show_timer_ = g_timeout_add(SUPER_TAP_DURATION,&Controller :: OnShowTimer,this);
     149:self-> fade_out_animator_.Stop();
     150:self-> fade_in_animator_.Start(self-> view_window _-> GetOpacity());
     213:fade_in_animator_.Stop();
     214:fade_out_animator_.Start(1.0  -  view_window _-> GetOpacity());
     244:.add(“timeout_duration”,SUPER_TAP_DURATION + FADE_DURATION)
     246:.add(“about_to_show”,(Visible()&&!fade_out_animator_.IsRunning()&& view_window_ && view_window _-> GetOpacity()!= 1.0f))
     247:.add(“about_to_hide”,(Visible()&&!fade_in_animator_.IsRunning()&& view_window_ && view_window _-> GetOpacity()!= 1.0f))
    
  • 当然,您必须对此进行修补并使用每个新的Unity更新进行重建…

  • 没有任何干扰Compiz可以改变这一点,因为所有这些都是在Compiz插件之外的硬编码。

2.备选方案A:切换到Ubuntu 2D

Ubuntu 2D有不同的Unity Shell代码,在那里,通过Super启动短划线是瞬间的,并没有动画任何东西。

3.备选方案B:使用自定义快捷方式通过单击Ubuntu徽标启动Dash,从而绕过动画

我们可以利用这样一个事实:当您通过“开始”按钮启动Dash时不会发生不透明度/淡入淡出动画,或者,如果您的光标位于启动栏上/周围,即使您按下Super:

在此处输入图像描述

动画将被延迟,直到光标实际移动到仪表板区域内。

  1. xdotool可实现键盘和鼠标点击/移动的自动化; 用sudo apt-get install xdotool安装它
  2. 打开设置…键盘,然后转到快捷方式选项卡。 创建自定义快捷方式,根据需要命名,并将“命令”设置为:

     xdotool mousemove --sync 25 60 click 1 --delay 100 mousemove restore 

    在此处输入图像描述

    • 如果您的屏幕分辨率低于1024×768左右,您可能需要稍微调整坐标(25 60)。
  3. 单击“应用” 右栏将显示“禁用”,单击它,您将看到“新加速器”:按快捷键组合。 你不能选择Super ,即使你在Compiz中禁用它,因为它很难被Unity捕获。 我选择了Ctrl+Alt+Z因为它接近超级键。

  4. 现在,您的快捷方式应该更快,更快地启动Dash。

    • 这是一个Youtubevideo演示 。 前几次(当左侧的发射器模糊和变暗时)使用SUPER键; 然后用自定义xdotool快捷键(注意启动器不再动画,破折号显得更快)

安装Compiz Configuration Manager。

Ubuntu软件中心:Compiz Configuration Manager

要么

终端: sudo apt-get install compizconfig-settings-manager

一旦安装打开它并获得Ubuntu Unity Plugin – > Experimental (Tab)

从那里你可以将Lauch AnimationUrgent AnimationDash Blur为“None”。

Hide Animation设置为Slide only

如果需要,可以将面板和虚线透明度更改为完全不透明。

对不起,你不能。 此时(2012年7月25日)使用Ubuntu 12.04 LTS, 没有简单的方法可以禁用Unity动画。 (至少没有重新编译)。

我不认为,在将来的版本中会有一个禁用动画的选项。 因为,Unity的目标之一是提供令人愉悦的用户体验,动画被认为是实现这一目标的最佳方式之一。

解决方法:

您可能的解决方法是将短划线动画更改为淡入淡出(因为,在我看来,淡入淡出比滑动更快)。 您可能也有兴趣禁用所有窗口的动画。 去做这个,

  1. 下载并安装compizconfig-settings-manager

     sudo apt-get install compizconfig-settings-manager 
  2. 通过在破折号中搜索或键入ccsm来打开它。 转到Unity插件实验选项卡,将隐藏动画的设置更改为仅淡入淡出

如果要在所有窗口中禁用动画 ,可以在ccsm中禁用动画插件。 如果要禁用“淡化”,请禁用“ 淡化”窗口插件。

希望这会有所帮助。


编辑:正如izx在其编辑的答案中所示您清楚地看到,短划线动画的选项在Unity中是硬编码的,并且这些选项无法通过任何配置选项进行更改,因为这些持续时间不是可变的,可以更改。 因此,这意味着,您必须通过将这些持续时间更改为0 ms来重新编译单位以完全禁​​用动画。

要添加到ÁngelAraya的说明 :我可以通过取消选择AnimationsFading Windows (基本上除了在CompizConfig设置管理器中的Effects类别(选项卡)下的Window Decoration以外的所有动画)来禁用所有动画。

我认为在CompizConfig设置管理器中关闭效果下的淡入淡出窗口会对Unity产生影响。 (速度上的细微差别,但仍然有差异。)