如何禁用所有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:
动画将被延迟,直到光标实际移动到仪表板区域内。
- xdotool可实现键盘和鼠标点击/移动的自动化; 用
sudo apt-get install xdotool
安装它 -
打开设置…键盘,然后转到快捷方式选项卡。 创建自定义快捷方式,根据需要命名,并将“命令”设置为:
xdotool mousemove --sync 25 60 click 1 --delay 100 mousemove restore
- 如果您的屏幕分辨率低于1024×768左右,您可能需要稍微调整坐标(25 60)。
-
单击“应用” 右栏将显示“禁用”,单击它,您将看到“新加速器”:按快捷键组合。 你不能选择Super ,即使你在Compiz中禁用它,因为它很难被Unity捕获。 我选择了
Ctrl+Alt+Z
因为它接近超级键。 -
现在,您的快捷方式应该更快,更快地启动Dash。
- 这是一个Youtubevideo演示 。 前几次(当左侧的发射器模糊和变暗时)使用SUPER键; 然后用自定义xdotool快捷键(注意启动器不再动画,破折号显得更快)
安装Compiz Configuration Manager。
Ubuntu软件中心:Compiz Configuration Manager
要么
终端: sudo apt-get install compizconfig-settings-manager
一旦安装打开它并获得Ubuntu Unity Plugin
– > Experimental
(Tab)
从那里你可以将Lauch Animation
, Urgent Animation
和Dash Blur
为“None”。
将Hide Animation
设置为Slide only
。
如果需要,可以将面板和虚线透明度更改为完全不透明。
对不起,你不能。 此时(2012年7月25日)使用Ubuntu 12.04 LTS, 没有简单的方法可以禁用Unity动画。 (至少没有重新编译)。
我不认为,在将来的版本中会有一个禁用动画的选项。 因为,Unity的目标之一是提供令人愉悦的用户体验,动画被认为是实现这一目标的最佳方式之一。
解决方法:
您可能的解决方法是将短划线动画更改为淡入淡出(因为,在我看来,淡入淡出比滑动更快)。 您可能也有兴趣禁用所有窗口的动画。 去做这个,
-
下载并安装
compizconfig-settings-manager
sudo apt-get install compizconfig-settings-manager
-
通过在破折号中搜索或键入ccsm来打开它。 转到Unity插件 → 实验选项卡,将隐藏动画的设置更改为仅淡入淡出 。
如果要在所有窗口中禁用动画 ,可以在ccsm中禁用动画插件。 如果要禁用“淡化”,请禁用“ 淡化”窗口插件。
希望这会有所帮助。
编辑:正如izx在其编辑的答案中所示您清楚地看到,短划线动画的选项在Unity中是硬编码的,并且这些选项无法通过任何配置选项进行更改,因为这些持续时间不是可变的,可以更改。 因此,这意味着,您必须通过将这些持续时间更改为0 ms来重新编译单位以完全禁用动画。
要添加到ÁngelAraya的说明 :我可以通过取消选择Animations
和Fading Windows
(基本上除了在CompizConfig设置管理器中的Effects
类别(选项卡)下的Window Decoration
以外的所有动画)来禁用所有动画。
我认为在CompizConfig设置管理器中关闭效果下的淡入淡出窗口会对Unity产生影响。 (速度上的细微差别,但仍然有差异。)