Unity 7'nin kaynak kodunu değiştirerek bunu başarabileceğinizi düşünüyorum . Sadece geliştirici sitesinde açıklanan adımları takip edin, ancak yapım sürecini açmadan önce: ./trunk/plugins/unityshell/src/unityshell.cpp
ve SetUpAndShowSwitcher
fonksiyonuna bir göz atın :
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);
}
Burada, bunun tam olarak aradığımız fonksiyon olduğunu açıkça görebilirsiniz. Vitrin modlarının değiştirilmesinden üst kısım sorumludur:
Bu geçiş, bir Apps grubuna her taşındığımızda veya gruptan çıktığımızda görünür. optionGetAltTabBiasViewport
bunun ne zaman olacağını gösterir. Sonra GetAltTabIcons
doğru simgeleri elde etmek için dahil edilir. Sonunda, sıralı simgelerimizi görüntülemek için Show
ile işlev SortMode::FOCUS_ORDER
çağrılır. SortMode bir enum:
enum class SortMode
{
LAUNCHER_ORDER,
FOCUS_ORDER,
};
ve değişen FOCUS_ORDER
için LAUNCHER_ORDER
sorunu çözmek gerekir. Show
Başlatma sırası sıralamasını engellemek için aramadan önce ek bir if ifadesi ekleyebilirsiniz ShowMode::ALL
.
Unity 8'in kaynak kodunun tamamen farklı olduğunu lütfen unutmayın. Dolayısıyla bu çözüm yalnızca Unity 7 için işe yarayabilir. Yarım saat sonra bağımlılıkları kaybettim ve bir saat sonra cmake ile kavga ettikten sonra, sistemimi mahvetmeme ve yarın VM'de denemeye karar verdim;)