Я думаю, що ви можете досягти цього, змінивши вихідний код Unity 7 . Просто виконайте кроки, описані на сайті розробника, але перед тим, як почати процес створення, відкрийте: ./trunk/plugins/unityshell/src/unityshell.cppі подивіться на SetUpAndShowSwitcherфункцію:
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);
}
Тут ви чітко бачите, що це саме та функція, яку ми шукали. Верхня частина відповідає за перемикання режимів перегляду:

Це перемикання з’являється кожного разу, коли ми переходимо до групи додатків або якщо ми виходимо з групи. optionGetAltTabBiasViewportвказує, коли це відбувається. Потім GetAltTabIconsзалучається для того, щоб отримати потрібні значки. І, нарешті, Showфункція з SortMode::FOCUS_ORDERсимволом викликається для відображення наших відсортованих піктограм. SortMode - це перелік:
enum class SortMode
{
LAUNCHER_ORDER,
FOCUS_ORDER,
};
і перехід FOCUS_ORDERдо LAUNCHER_ORDERповинен вирішити вашу проблему. Ви можете вставити додаткову операцію if перед тим, як зателефонувати, Showщоб запобігти сортування замовлень запуску у ShowMode::ALLвипадку.
Зверніть увагу, що вихідний код Unity 8 виглядає зовсім інакше. Тож це рішення може працювати лише для Unity 7. Через півгодини виправлення відсутніх залежностей і після ще однієї години боротьби з cmake я вирішив не руйнувати свою систему і спробувати її в VM завтра;)