Я думаю, що ви можете досягти цього, змінивши вихідний код 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 завтра;)