The question is, how can I set the launcher auto-hide delay time to 0 ? What I want is for the launcher to instantly disappear when I move the mouse away from it. Please note this is nothing to do with the hide-animation duration, as the animation only begins after a delay. It is this delay setting I need to find. It's very easy to set the reveal delay to zero, but I can't find the hide delay setting.
1 Answer
This seems to be hard coded into the Unity source. See here on line 32:
const unsigned int HIDE_DELAY_TIMEOUT_LENGTH = 400;
The actual hide function is further down at line 63:
void LauncherHideMachine::SetShouldHide(bool value, bool skip_delay)
{
if (_should_hide == value)
return;
if (value && !skip_delay)
{
_hide_delay_timeout.reset(new glib::Timeout(HIDE_DELAY_TIMEOUT_LENGTH));
_hide_delay_timeout->Run([&] () {
EnsureHideState(true);
return false;
});
}
else
{
_should_hide = value;
_hide_changed_emit_idle.reset(new glib::Idle(glib::Source::Priority::DEFAULT));
_hide_changed_emit_idle->Run(sigc::mem_fun(this, &LauncherHideMachine::EmitShouldHideChanged));
}
}
I'm not sure if there's a way to flag the skip_delay
argument either. You may want to file a bug report with the Unity team to see if you can get them to allow this variable to be customized. Otherwise you may have to patch and compile Unity yourself.