Jak zatrzymać zmianę kolejności tego samego rodzaju wielu okien podglądu podczas przełączania zadań?


21

Podczas korzystania z przełączania zadań w domyślnym trybie graficznym systemu Ubuntu 12.04, jeśli są to wiele okien tego samego rodzaju, np. wiele okien terminala, możesz zobaczyć je wszystkie razem i wybrać, które chcesz.

wprowadź opis zdjęcia tutaj

Mój problem polega na tym, że kolejność tych okien jest ciągle zmieniana. Jest zgodny z kolejnością „ostatnio używane”. Chcę je zawsze w ustalonej kolejności; jak mogę to zrobić?


3
Bardzo irytująca funkcja. Zadałem to samo pytanie tutaj askubuntu.com/questions/271506/... ale niestety wciąż nie ma odpowiedzi.
gumkins

5
Ten „problem” istnieje również w 14.04! Okna te należy naprawdę porządkować na podstawie ich względnych pozycji na ekranie i na komputerach stacjonarnych, gdy podglądane są okna z więcej niż jednego pulpitu. Tylko wtedy, gdy jedna wdowa jest umieszczona blisko siebie (mierzona w pewnym zakresie pikseli), położenie podglądu powinno zależeć od reguły „ostatnio używanej”. Chciałbym nawet jeszcze raz „ulepszyć” tę zasadę: zastosować preferencje języka regionalnego, tekstu „od lewej do prawej” lub „od prawej do lewej”, aby zdecydować, która strona ekranu jest uważana za „pierwszą” - - lewy lub prawy.
PJ Singh

1
Możliwym rozwiązaniem byłoby utrzymanie okien w kolejności, w jakiej zostały utworzone, ale przynajmniej utrzymanie ich w stałej kolejności. Wolę losowy, ale stabilny porządek niż ten bałagan, mam wrażenie, że ciągle żongluję ekranami.
Minos

1
Wierzę, że wymagałoby to zmiany kodu jedności. Możesz zacząć tutaj: unity3d.com/learn/documentation
Elder Geek

Nadal mam ten problem w 2018 r., Wersja 18.04. Super denerwujące.
Jesse Busman,

Odpowiedzi:


2

Zamiast zmieniać bazę kodów jedności, możesz rozważyć użycie komputerów stacjonarnych w celu uzyskania pożądanego rezultatu.

Przykład użycia Compiz Desktop Cube w CompizConfigSettingsManager

Otwórz CompizConfigSettingsManager ( ccsm) i zmień ustawienia, aby pasowały do ​​następujących:

ccsm-1

ccsm-2

Otwórz terminal 1

Użyj skrótu klawiaturowego CTRL-ALT -> (strzałka w prawo), aby przejść do następnego pulpitu po prawej stronie.

Otwórz terminal 2

Użyj skrótu klawiaturowego CTRL-ALT -> (strzałka w prawo), aby ponownie przejść do następnego pulpitu po prawej.

Otwórz terminal 3

Użyj skrótu klawiaturowego CTRL-ALT - <- (strzałka w lewo), aby przejść do poprzedniego pulpitu zawierającego terminal 2 (lub dwa razy, aby wrócić do terminalu 1)

Inna opcja

Użyj menedżera rzutni w CompizConfig SettingManager i przypisz kombinację klawiszy, aby przejść bezpośrednio na wybrany pulpit

Uwaga: do tej pory udało mi się zmusić 10 do działania, chociaż 12 powinno być możliwe przy użyciu tej metody. ccsm-3

Aktualizacja: w oparciu o obawy wyrażone w komentarzach:

Wystarczy kliknąć prawym przyciskiem myszy pasek tytułu gedit i wybrać zawsze w widocznym obszarze roboczym ...

Inna opcja:

Zamiast otwierać oddzielne terminale (lub przestrzenie robocze) dla swoich licznych działań, możesz także użyć zakładek w terminalu gnome. Klawisze skrótów do przełączania kart są dostępne w preferencjach terminalu. Patrz poniżej:

terminal-prefs


Jeśli dobrze rozumiem, pozostawiłoby to potrzebę użycia innego skrótu lub kliknięcia do przełączania zadań. Myślę, że można to zrobić. Jak jednak mam sklonować wszystkie potrzebne nieterminalne okna, które normalnie mają tylko 1 instancję na wszystkich komputerach, kiedy potrzebuję lub chcę szybkiej i możliwej interakcji między terminalem (terminalami) a innymi oknami?
n611x007

Ile wystąpień potrzebujesz? Użycie menedżera rzutni dałoby ci do 12. Klawiatura aktywowana. Czy to „klikalne”?
Starszy Geek


Myślę, że byłem niezrozumiały ... Miejsca pracy są wystarczające. Pozwól mi spróbować tak to ująć. Hipotetyczny przykład. Przed: 3 zaciski, „t1”, „t2”, „t3”, + 1 okno GEDIT. Kopiuję i wklejam w obie strony między gedit a zarówno „t1”, jak i „t2”. Kolejność przełączania zadań jest zła. Po (zastosowanie obejścia): Mam 3 terminale na 3 obszarach roboczych odpowiednio „w1”, „w2”, „w3”, a okno gedit na „w1”. Muszę skopiować i wkleić między gedit a zarówno „t1”, jak i „t2”. Jak skopiować i wkleić pomiędzy „t2” a gedit na „w2” w najbardziej wygodny sposób?
n611x007

Nie miałem problemów z kopiowaniem i wklejaniem między obszarami roboczymi, więc nie jestem pewien, o co pytasz. Ponieważ „najwygodniejszy sposób” jest raczej kwestią opinii niż wymiernym faktem, przepraszam, ale nie sądzę, żebym mógł na to logicznie odpowiedzieć.
Starszy Geek

1

Inną opcją, jeśli pulpit jest wystarczająco duży, jest ustawienie niektórych okien na „zawsze na wierzchu” i rozmieszczenie ich w taki sposób, aby można było przełączać za pomocą myszy. To kludge ... ale czasami uważam, że jest to przydatne podczas pracy z wieloma oknami tego samego typu.

Jeszcze innym jest zdefiniowanie kilku profili terminali z różnymi schematami kolorów i użycie innego dla każdego terminala ... ułatwiłoby to ich identyfikację. wprowadź opis zdjęcia tutaj Tak, to też jest obejście.


1

Myślę, że możesz to osiągnąć, modyfikując kod źródłowy Unity 7 . Po prostu wykonaj kroki opisane na stronie dla programistów, ale przed rozpoczęciem procesu budowania otwórz: ./trunk/plugins/unityshell/src/unityshell.cppi spójrz na SetUpAndShowSwitcherfunkcję:

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);
}

Tutaj wyraźnie widać, że właśnie tej funkcji szukaliśmy. Górna część odpowiada za przełączanie trybów rzutni:

Pokaż tryby

To przełączanie pojawia się za każdym razem, gdy wchodzimy do grupy aplikacji lub gdy opuszczamy tę grupę. optionGetAltTabBiasViewportwskazuje, kiedy to się stanie. Następnie GetAltTabIconsbierze udział, aby uzyskać odpowiednie ikony. I na koniec Showfunkcja z SortMode::FOCUS_ORDERwyświetla się, aby wyświetlić nasze posortowane ikony. SortMode jest wyliczeniem:

enum class SortMode
{
  LAUNCHER_ORDER,
  FOCUS_ORDER,
};

i zmienia FOCUS_ORDERsię LAUNCHER_ORDERpowinno rozwiązać problem. Przed wywołaniem można wstawić dodatkową instrukcję if, Showaby zapobiec sortowaniu kolejności uruchamiania w ShowMode::ALLprzypadku.

Pamiętaj, że kod źródłowy Unity 8 wygląda zupełnie inaczej. To rozwiązanie może więc działać tylko w Unity 7. Po pół godzinie naprawiania brakujących zależności i po kolejnej godzinie walki z cmake postanowiłem nie zepsuć mojego systemu i wypróbować go jutro na VM;)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.