Неможливо надійно автоматизувати налаштування xrandr в Debian 7 на VirtualBox


23

Хоча є кілька нагальних питань з даного питання (у тому числі найбільш корисного відповідь це ) і різні теми на інших форумах, я не можу надійно встановити свої xrandrналаштування в Debian 7 на VirtualBox.

Я намагаюся використовувати xrandrдля керування налаштуваннями дисплея (замість того, щоб дозволити моєму середовищу робочого столу автоматизувати їх), оскільки я використовую i3диспетчер вікон , який не автоматизує налаштування дисплея та не використовує налаштування відображення середовища на робочому столі Gnome.

Налаштування:

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

Обладнання

  • Ноутбук Lenovo з графікою nVidia (інтегрований графічний процесор Intel не використовується, AFAIK - є налаштування BIOS, яке я використовував для цього)
    • Windows 7
    • 32 Гб оперативної пам’яті
    • Використання останнього (я думаю) драйвера nVidia (340.84) - це може мати значення, оскільки я ввімкнув 3D-прискорення у VirtualBox (див. Нижче), що, на мою думку, дозволяє гостям ОС мати доступ до апаратного забезпечення хоста
  • Seiki 4K TV (використовується як монітор) через HDMI через док-станцію (яка внутрішньо перетворює DisplayPort в HDMI)
  • Монітор Samsung SyncMaster 243T повернувся вертикально

VirtualBox

  • Використання VirtualBox 4.3.20
  • Встановлені гостьові доповнення (та ж версія)
  • Кількість моніторів: 2 (призначається Seiki та SyncMaster у повноекранному режимі)
  • Максимально використана відеопам'ять (128 МБ)
  • Увімкнено 3D-прискорення

Налаштування гостей

  • 32-розрядний Debian 7
  • gnomeі gdm3встановлюються
  • Кращим є WM i3

Поведінка:

При запуску i3і запитів xrandr, налаштування відображення за замовчуванням завжди здаються ідентичними VBOX0і VBOX1, два «спостерігачі» , що VirtualBox доповіді xrandr(по крайней мере, це те , як я розумію, я міг би що - то НЕ вистачає). Зауважте, що наскільки я можу сказати, немає жодного хорошого способу сказати, який VBOX # є, який монітор не має проб і помилок.

Зазвичай це включає в себе розумну (якщо трохи нижче рідної) роздільну здатність для мого вертикального SyncMaster, але немає 4К роздільної здатності для Seiki. Здається, що параметр "автоматичний зміна розміру гостя" у VirtualBox не впливає xrandr.

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

Налаштування сценарію

  • (Зазвичай) пропуск VBoxServiceкроків перезапуску (вони, схоже, не змінюють xrandrповедінку)
  • Використовуйте xrandr --fbопцію перед будь-якими іншими xrandrкомандами; це іноді призводить до помилки "вказаний екран недостатньо великий", переліченого нижче
  • Використовуйте 30 кадрів в секунду замість 60 (4K через поточний HDMI - максимум 30 кадрів в секунду, але я не думаю, що це має значення в VirtualBox; в будь-якому випадку, я думаю, що я іноді працював, а іноді не виходив з обох способів)
  • Використовуйте cvtзамість gtf(вони, як видається, поводяться однаково)
  • Підмініть перше число, яке задається gtf(як правило, близько 200 або 300) меншим числом, наприклад 100.00(я думаю, що це працювало один чи два рази в командному рядку, але зазвичай не змінюється)
  • Рандомізувати нові імена режимів, використовуючи $RANDOM(я також спробував різні інші способи сповнення імен)
  • Явні --rmmodeрежими перед їх створенням із використанням --newmode(це видається для запобігання помилки "шрифту", переліченої нижче)
  • Використовуйте --right-ofабо --left-ofпід час встановлення --outputs (оскільки екрани зазвичай відображаються за замовчуванням)

Повідомлення про помилки

  • xrandr: specified screen 5120x2160 not large enough for output VBOX0 (3840x2160+3840+0) X Error of failed request: BadValue (integer parameter out of range for operation) Цього я отримав саме під час повторного запуску сценарію після того, як монітори вже були примушені до їх належної роздільної здатності (використовуючи обхід, описаний у наступному розділі). Це мене здивувало, оскільки xrandrповідомляє таке: Screen 0: minimum 64 x 64, current 5120 x 2160, maximum 16384 x 16384
  • X Error of failed request: BadMatch (invalid parameter attributes) Це іноді виникає при спробі зробити --newmode. Це, мабуть, друга найпоширеніша причина відмови сценарію. Я думаю, що це може бути викликано xrandr"запам'ятовуванням" назви режиму з попередньої спроби його налаштування, але використання, $RANDOMздається, не послідовно вирішує проблему, тому це може бути якась інша проблема. (Я вважаю, що можливо, навіть $RANDOMколи виникають зіткнення імен.) Я не бачив цієї помилки з моменту початку використання --rmmode, але я не запустив сценарій достатньо разів із моменту додавання цієї команди, щоб переконатися, що вона змінила значення поведінку.
  • X Error of failed request: BadMatch (invalid parameter attributes) Це іноді виникає при спробі зробити --addmode. Це, мабуть, найпоширеніша причина відмови сценарію, і це містифікує мене. Іноді вручну (тобто в терміналі) виконання тієї самої послідовності команд, що використовується сценарієм, здається життєздатним вирішенням цієї помилки, яка є химерною.

Вирішення проблеми Gnome:

Я виявив, що якщо я входжу на робочий стіл Gnome, то виконую функцію "Автоматичний зміна гостьового відображення" VirtualBox, потім виходити з системи та повертатися назад i3, xrandrяк правило, включає правильні рішення як для Seiki, так і для SyncMaster в автоматично створеному список режимів, і роздільна здатність 4K встановлюється як "бажана" роздільна здатність для кожного екрана VBOX. Це дозволяє мені просто використовувати xrandr --output [4K VBOX] --auto --left-of [SyncMaster VBOX], за яким слідує xrandr --output [SyncMaster VBOX] --mode [SyncMaster resolution](зауважте, що дозвіл SyncMaster все одно повинен бути вказаний вручну, оскільки xrandrповідомляє однакове переважне дозвіл для обох VBOX# , без огляду на істинність або розсудливість).

Цей спосіб вирішення, як тільки виконується, мабуть, зберігається через вимкнення та перезавантаження (тобто бажані режими все ще є у xrandrсписку режимів, хоча мені потрібно запустити дві xrandrкоманди після початку i3сеансу), але не завжди зберігається, коли просто вихід із системи та початок нового i3сеансу. Зауважте, що gdm3екран входу ніколи не має правильної роздільної здатності (наскільки я бачив). У мене більше немає коментарів щодо дивацтв, що відбуваються тут.

EDIT: Цей підхід не здається сценарієм, і поведінка насправді не здається послідовною.

Інші примітки:

  • У мене немає xconf(або подібного) файлу в моєму etc/X11реєстрі.
  • Виправлення дисплеїв є досить поширеною проблемою, тому що кожного разу, коли я вимикаю один із моніторів, VirtualBox вбиває один із віртуальних моніторів на повноекранному екрані. (Ур.)

Запитання:

  • Чи є можливість програмно розрізнити фактичні апаратні можливості (тобто власні резолюції) різних моніторів всередині VirtualBox?
  • Чому я бачу ці різні помилки? Що відбувається з xrandrтощо?
  • Чи є якийсь спосіб надійно досягти правильної роздільної здатності, не вимагаючи від мене початку gnomeсеансу до мого i3сеансу?

Можливо, пов'язані питання

  • Мій вказівник миші не відповідає надійній лінії до того, де виявляються кліки; клацання зазвичай відбувається внизу та праворуч від вказівника. Після правильного налаштування екранів ця проблема зазвичай зникає, хоча в даний час екрани мають правильні рішення, але вказівник все ще трохи вимкнений.
  • Коли мені вдається виправити роздільну здатність, екран час від часу мерехтить. Це дратує, але приємно. Будь-яка ідея, що це викликає, або якщо це можна виправити?

Мені потрібно буде викопати свої нотатки, але які підтримуються режими для ваших дисплеїв? чи має i3 якийсь спосіб запустити скрипт до / відразу після входу? superuser.com/questions/808737/… - це те, що я закінчив із подібною фізичною проблемою, але для роботи у вашому випадку може знадобитися трохи уточнити.
Подорожник Geek

@JourneymanGeek 4K підтримує більшість стандартних режимів на 60 Гц та підтримку великих режимів (включаючи 4 К) на 30 Гц. Здається, SyncMaster підтримує більшість звичайних режимів з нативним (вертикальним) дозволом 1920x1280. Сценарій i3 config підтримує запуск сценарію при вході в систему; Я використовую цю функцію для автоматичного запуску описаного вище сценарію, який схожий на ваш, але я продовжую отримувати дивні xrandrпомилки.
Кайл Странд

Як запустити i3? Чи є у нього власний X ініціалізаційний режим? Або ви кидаєте його в своє .xinitrcі використовуєте startx? Я використовую xmonad (який, як я розумію, схожий на i3?), Який я запускаю за допомогою startx. Мої xrandrсценарії виконуються .xinitбезпосередньо перед запуском мого віконного менеджера. Таким чином у мене були відмінні результати. X готовий піти, і більше нічого не запускається, щоб заважати.
Кріс

Я використовую gdm3і i3вибрав для свого облікового запису середовище робочого столу за замовчуванням.
Кайл Странд

1
На жаль, жодного, про що я не можу придумати негайно, оскільки VBox, здається, не послідовно присвоює імена моніторам. Чи можете ви розмістити висновок xrandr --query(a), коли він виявляє налаштування неправильно, і (b) після того, як ви все встановите, що працює належним чином? Або хоча б один із усього, що працює правильно.
Кріс

Відповіді:


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