Як зупинити переупорядкування однотипних декількох вікон попереднього перегляду при переключенні завдань?


21

При використанні перемикання завдань у графічному режимі за замовчуванням Ubuntu 12.04, якщо вони є декількома вікнами одного типу, наприклад. кілька вікон терміналів, ви можете побачити їх усі разом і вибрати те, яке потрібно.

введіть тут опис зображення

Моя проблема полягає в тому, що порядок цих вікон постійно змінюється. Він дотримується "останнього використаного" замовлення. Я хочу, щоб вони завжди були у фіксованому порядку; як я можу це зробити?


3
Дуже дратівлива особливість. Я задав те саме питання тут, як askubuntu.com/questions/271506/…, але, на жаль, досі немає відповіді.
gumkins

5
Цей "випуск" існує також з 14.04! Ці вікна дійсно слід упорядкувати, виходячи з їх відносного положення на екрані та настільних комп’ютерів, коли вікна переглядаються з більш ніж одного робочого столу. Тільки тоді, коли одна вдова розміщена впритул над іншою (вимірюється в певному діапазоні пікселів), позиціонування попереднього перегляду залежить від правила "останній використаний". Я б навіть зробив ще одне "перетворення" цього правила: застосуйте регіональні мовні налаштування, текст "зліва направо" або "зліва направо", щоб вирішити, яка сторона екрана вважається "першою" - - ліва, або права.
PJ Singh

1
Можливим рішенням було б підтримувати вікна в тому порядку, в якому вони були створені, але принаймні підтримувати їх у порядку. Я вважаю за краще випадковий, але стабільний порядок над цим безладом, я відчуваю, що постійно жонглюю екранами навколо.
Мінос

1
Я вважаю, що це потребує зміни коду єдності. Ви можете почати тут: юни3d.com/learn/documentation
Старійшина

У мене все ще виникає ця проблема у 2018 році, версія 18.04. Супер прикро.
Джессі Бусман

Відповіді:


2

Замість того, щоб змінювати базу коду єдності, ви можете розглянути можливість використання настільних ПК для досягнення бажаного результату.

Приклад використання Compiz Desktop Cube в CompizConfigSettingsManager

Відкрийте CompizConfigSettingsManager ( ccsm) та змініть налаштування, щоб відповідати наступним:

ccsm-1

куб.м-2

Відкритий термінал 1

Використовуйте комбінацію клавіш CTRL-ALT -> (стрілка вправо), щоб перейти до наступного робочого столу праворуч.

Відкрити термінал 2

Використовуйте комбінацію клавіш CTRL-ALT -> (стрілка вправо), щоб знову перейти до наступного робочого столу праворуч.

Відкрити термінал 3

Використовуйте комбінацію клавіш CTRL-ALT - <- (стрілка вліво), щоб перейти до попереднього робочого столу, що містить термінал 2 (або двічі, щоб повернутися до терміналу 1)

Ще один варіант

Використовуйте диспетчер Viewport у CompizConfig SettingManager та призначте комбінацію клавіш, щоб перейти безпосередньо на робочий стіл за вибором

Примітка. Поки що мені вдалося лише 10 примусити працювати, хоча 12 було можливо за допомогою цього методу. ccsm-3

Оновлення: на основі побоювань, висловлених у коментарях:

Просто клацніть правою кнопкою миші на рядку заголовка gedit і виберіть завжди на видимій робочій області ...

Ще один варіант:

Замість того, щоб відкривати окремі термінали (або робочі місця) для ваших численних заходів, ви також можете використовувати вкладки в терміналі gnome. Клавіші швидкого доступу для перемикання вкладок доступні з налаштувань терміналу. Дивись нижче:

термінал-преф


Якщо я правильно розумію, це дозволило б мені скористатися іншим ярликом або клацанням для переключення завдань. Можна зробити, я думаю. Однак як би я клонував усі потрібні мені нетермінальні вікна, які, як правило, мають лише 1 екземпляр для всіх настільних комп’ютерів, коли мені потрібна чи бажаю, щоб взаємодія була швидкою та можливою між терміналами (терміналами) та іншими вікнами (іми)?
n611x007

Скільки екземплярів вам потрібно? За допомогою диспетчера Viewport ви отримаєте до 12. Клавіатура активована. Це "натискання"?
Старійшина Гек


Я думаю, що я був незрозумілий ... Робочих просторів вистачає. Дозвольте спробувати викласти це так. Гіпотетичний приклад. Перед: 3 термінали, 't1', 't2', 't3', + 1 вікно gedit. Я копіюю-вставляю вперед-назад між gedit і "t1" і "t2". Порядок перемикання завдань поганий. Aftter (застосовуючи ваше вирішення): у мене є 3 термінали на 3 робочих просторах 'w1', 'w2', 'w3' відповідно, вікно gedit на 'w1'. Мені потрібно скопіювати-вставити між gedit і "t1" і "t2". Як скопіювати вставку між 't2' та gedit на 'w2' найбільш зручним способом?
n611x007

У мене не було проблем з копіюванням та вставленням між робочими просторами, тому я не впевнений, що саме ви запитуєте. Оскільки "найзручніший спосіб" - це питання думки, а не вимірюваного факту, ви маєте свої вибачення, але я не думаю, що я можу відповісти на це логічно.
Старійшина Гек

1

Інший варіант, якщо ваш робочий стіл достатньо великий, - встановити деякі вікна "завжди на вершині" і розташувати їх навколо, щоб ви могли перемикатися за допомогою миші. Це хитрість ... але мені іноді здається корисним при роботі з декількома вікнами одного типу.

Ще одне - визначити кілька термінальних профілів з різними кольоровими схемами та використовувати різні для кожного терміналу ... це полегшило б їх ідентифікацію. введіть тут опис зображення Так, це теж вирішення.


1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.