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.cpp
dan lihat SetUpAndShowSwitcher
fungsinya:
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. optionGetAltTabBiasViewport
menunjukkan kapan ini terjadi. Kemudian GetAltTabIcons
terlibat untuk mendapatkan ikon yang tepat. Dan akhirnya Show
fungsi dengan SortMode::FOCUS_ORDER
dipanggil untuk menampilkan ikon kami yang diurutkan. SortMode adalah enum:
enum class SortMode
{
LAUNCHER_ORDER,
FOCUS_ORDER,
};
dan mengubah FOCUS_ORDER
untuk LAUNCHER_ORDER
menyelesaikan masalah Anda. Anda bisa memasukkan pernyataan if tambahan sebelum menelepon Show
untuk 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;)