Хотя есть несколько существующих вопросов по этому вопросу (из которых наиболее полезный ответ - это) и различные темы на других форумах, я не могу надежно установить свои настройки 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, но не разрешение 4K для 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
при установке--output
s (поскольку экраны обычно зеркально отражаются по умолчанию)
Сообщения об ошибках
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, затем выполняю функцию 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
никогда не имеет правильного разрешения (насколько я видел). У меня нет дальнейших комментариев о странности, происходящей здесь.
РЕДАКТИРОВАТЬ: Этот подход, кажется, не для сценариев, и поведение на самом деле не выглядит согласованным.
Другие заметки:
- У меня нет
xconf
(или аналогичного) в моей директорииetc/X11
. - Исправление дисплеев является довольно распространенной проблемой, потому что всякий раз, когда я выключаю один из моих мониторов, VirtualBox убивает один из полноэкранных виртуальных мониторов. (Urgh.)
Вопросы:
- Есть ли какой-нибудь способ программно отличить реальные аппаратные возможности (то есть собственные разрешения) разных мониторов от VirtualBox?
- Почему я вижу эти различные ошибки? Что происходит с
xrandr
и т.д.? - Есть ли способ надежно достичь правильного полноэкранного разрешения, не требуя, чтобы я начал сеанс
gnome
перед сеансомi3
?
Возможно связанные вопросы
- Мой указатель мыши не совсем точно совпадает с тем, где, по-видимому, обнаруживаются щелчки; щелчки обычно происходят ниже и справа от указателя. Когда у меня правильно настроены экраны, эта проблема обычно исчезает, хотя в настоящее время экраны имеют правильное разрешение, но указатель все еще слегка отключен.
- Когда мне удается получить правильное разрешение, экран иногда мерцает. Это раздражает, но пригодно для жизни. Любая идея, что вызывает это или если это можно исправить?