Creo que puede lograr esto modificando el código fuente de Unity 7 . Simplemente siga los pasos descritos en el sitio del desarrollador, pero antes de iniciar el proceso de construcción, abra: ./trunk/plugins/unityshell/src/unityshell.cpp
y eche un vistazo a la SetUpAndShowSwitcher
función:
void UnityScreen::SetUpAndShowSwitcher(switcher::ShowMode show_mode)
{
RaiseInputWindows();
if (!optionGetAltTabBiasViewport())
{
if (show_mode == switcher::ShowMode::CURRENT_VIEWPORT)
show_mode = switcher::ShowMode::ALL;
else
show_mode = switcher::ShowMode::CURRENT_VIEWPORT;
}
auto results = launcher_controller_->GetAltTabIcons(show_mode == switcher::ShowMode::CURRENT_VIEWPORT,
switcher_controller_->show_desktop_disabled());
if (switcher_controller_->CanShowSwitcher(results))
switcher_controller_->Show(show_mode, switcher::SortMode::FOCUS_ORDER, results);
}
Aquí puede ver claramente que esta es exactamente la función que estábamos buscando. La parte superior es responsable del cambio de los modos de ventana gráfica:
Este cambio aparece cada vez que nos movemos a un grupo de aplicaciones o si nos mudamos fuera del grupo. optionGetAltTabBiasViewport
indica cuándo sucede esto. Luego GetAltTabIcons
participa para obtener los íconos correctos. Y finalmente, se llama a la Show
función con SortMode::FOCUS_ORDER
para mostrar nuestros iconos ordenados. SortMode es una enumeración:
enum class SortMode
{
LAUNCHER_ORDER,
FOCUS_ORDER,
};
y cambiar FOCUS_ORDER
a LAUNCHER_ORDER
debería resolver su problema. Puede insertar una declaración if adicional antes de llamar Show
para evitar la clasificación de la orden del iniciador en ShowMode::ALL
caso de que así sea.
Tenga en cuenta que el código fuente de Unity 8 se ve completamente diferente. Por lo tanto, esta solución puede funcionar solo para Unity 7. Después de media hora arreglando dependencias faltantes y después de otra hora luchando con cmake, decidí no arruinar mi sistema y probarlo en VM mañana;)