Saya pikir Anda dapat mencapai ini dengan memodifikasi kode sumber Unity 7 . Cukup ikuti langkah-langkah yang dijelaskan di situs pengembang tetapi sebelum memulai proses pembangunan, buka: ./trunk/plugins/unityshell/src/unityshell.cppdan lihat SetUpAndShowSwitcherfungsinya:
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);
}
Di sini Anda dapat melihat dengan jelas bahwa inilah fungsi yang sebenarnya kami cari. Bagian atas bertanggung jawab untuk pergantian mode viewport:

Toggling ini muncul setiap kali kita pindah ke grup Aplikasi atau jika kita keluar dari grup. optionGetAltTabBiasViewportmenunjukkan kapan ini terjadi. Kemudian GetAltTabIconsterlibat untuk mendapatkan ikon yang tepat. Dan akhirnya Showfungsi dengan SortMode::FOCUS_ORDERdipanggil untuk menampilkan ikon kami yang diurutkan. SortMode adalah enum:
enum class SortMode
{
LAUNCHER_ORDER,
FOCUS_ORDER,
};
dan mengubah FOCUS_ORDERuntuk LAUNCHER_ORDERmenyelesaikan masalah Anda. Anda bisa memasukkan pernyataan if tambahan sebelum menelepon Showuntuk mencegah pengurutan pesanan launcher ShowMode::ALL.
Harap dicatat bahwa kode sumber Unity 8 terlihat sangat berbeda. Jadi solusi ini dapat bekerja hanya untuk Unity 7. Setelah setengah jam memperbaiki dependensi yang hilang dan setelah satu jam berjuang dengan cmake, saya memutuskan untuk tidak merusak sistem saya dan mencobanya di VM besok;)