Хотя есть несколько существующих вопросов по этому вопросу (из которых наиболее полезный ответ - это ) и различные темы на других форумах, я не могу надежно установить свои 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
сеанса?
Возможно связанные вопросы
- Мой указатель мыши не совсем точно совпадает с тем, где, по-видимому, обнаруживаются щелчки; щелчки обычно происходят ниже и справа от указателя. Как только у меня правильно настроены экраны, эта проблема обычно исчезает, хотя в настоящее время экраны имеют правильное разрешение, но указатель по-прежнему немного выключен.
- Когда мне удается получить правильное разрешение, экран иногда мерцает. Это раздражает, но пригодно для жизни. Любая идея, что вызывает это или если это можно исправить?
xrandr
ошибки.
.xinitrc
и используете startx
? Я использую xmonad (который, как я понимаю, похож на i3?), Который я запускаю, используя startx
. Все мои xrandr
сценарии выполняются как .xinit
раз перед запуском моего оконного менеджера. Так у меня были отличные результаты. X готов к работе, и ничто другое не начало вмешиваться.
gdm3
и i3
выбрал в качестве рабочего стола по умолчанию для моей учетной записи.
xrandr --query
(а), когда он неправильно определяет настройки, и (б) после того, как все заработало правильно? Или хотя бы один из всего, что работает правильно.