Je pense que vous pouvez y parvenir en modifiant le code source d' Unity 7 . Suivez simplement les étapes décrites sur le site du développeur, mais avant de commencer le processus de construction, ouvrez: ./trunk/plugins/unityshell/src/unityshell.cpp
et jetez un œil à la SetUpAndShowSwitcher
fonction:
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);
}
Ici, vous pouvez clairement voir que c'est exactement la fonction que nous recherchions. La partie supérieure est responsable de la commutation des modes de fenêtre:
Ce basculement apparaît chaque fois que nous entrons dans un groupe d'applications ou si nous sortons du groupe. optionGetAltTabBiasViewport
indique quand cela se produit. Ensuite , GetAltTabIcons
est impliqué afin d'obtenir les bonnes icônes. Et enfin, la Show
fonction avec le SortMode::FOCUS_ORDER
est appelée pour afficher nos icônes triées. SortMode est une énumération:
enum class SortMode
{
LAUNCHER_ORDER,
FOCUS_ORDER,
};
et changer FOCUS_ORDER
pour LAUNCHER_ORDER
devrait résoudre votre problème. Vous pouvez insérer une instruction if supplémentaire avant d'appeler Show
pour empêcher le tri de l'ordre du lanceur au ShowMode::ALL
cas où.
Veuillez noter que le code source d'Unity 8 est complètement différent. Cette solution peut donc fonctionner uniquement pour Unity 7. Après une demi-heure à corriger les dépendances manquantes et après une autre heure à me battre avec cmake, j'ai décidé de ne pas ruiner mon système et de l'essayer en VM demain;)