ОК, больше нет необходимости в скрипте или обходном пути. По состоянию на 3 ноября 2011 года версия 9.0.61 x64 от Vuescan устранила проблему между Unity, Compiz, Vuescan и оформлением окон, по крайней мере, на Ubuntu 11.10. Все работает нормально сейчас (слава богу!).
Я нашел очень простой обходной путь, который отлично работает для меня с 13.04. (обновление: теперь 13.10) на ноутбуке с 24-дюймовым внешним экраном, который не подключен постоянно.
Я просто скопирую здесь
. Используйте вход в систему xrandr или элемент управления Displays утилита для настройки ваших мониторов, как вы хотите, чтобы они были настроены в копии экрана входа ~ / .config / monitors.xml в /var/lib/lightdm/.configПоскольку у меня уже были мои мониторы правильно настроен, мне просто нужно было сделать шаг 3.
Некоторые другие ответы, приведенные здесь, работали на меня, но только в конкретном сценарии, при этом в случае возникновения проблем с непригодной системой в других сценариях (LOW GRAPHICS MODE ERROR). с постоянным подключением внешнего монитора (принятый ответ by @captain_G) или всегда с тем же устройством, подключенным к выходу, используемому для внешнего монитора (скрипт by @Axlrod). Похоже, что ответ @ MarcoV является самым общим решением, все еще содержат правила написания сценариев.
Вы можете вместо создания скрипта просто добавить в файл /etc/lightdm/lightdm.conf строку, подобную этой:
display-setup-script=xrandr --output default --mode 1280x720
Перед вставкой убедитесь, что эта команда работает, потому что с неправильной командой lightdm не запускается.
Для настройки нескольких мониторов, где вы можете отключить ваш ноутбук и использовать без него, вот простое решение:
run:
xrandr
Получить устройства, на которых вы используете ноутбук обычно это LVDS1, и для меня у меня есть DP2 (displayport 2), это может быть HDMI1 или что-то еще, просто найдите те, у которых есть разрешения, перечисленные рядом с ними.
Создайте этот маленький файл bash: [!d3 ]
#!/bin/bash
mode="$(xrandr -q|grep -A1 "DP2 connected"| tail -1 |awk '{ print $1 }')"
if [ -n "$mode" ]; then
xrandr --output LVDS1 --off
xrandr --output DP2 --primary --mode 2540x1440
fi
Замените LVDS1 подключением к монитору вашего ноутбука.
Замените DP2 подключением внешнего монитора.
Поместите скрипт bash в / usr / bin / local /
chmod + x скрипт
изменить /etc/lightdm/lightdm.conf
Добавить
display-setup-script=/path/to/my/script
Перезагрузка.
Изменение разрешения произойдет только тогда, когда вы на самом деле находитесь на этом дисплее.
Если у вас есть несколько мест с различными мониторами / разрешениями на одном и том же коннекторе, вам придется добавить больше интеллекта в свой сценарий bash.
Немного улучшил приведенный выше сценарий Axlrod.
Все, что вам нужно сделать, это указать, какой монитор использовать первичный, и который является вашим дисплеем ноутбука (LVDS).
#!/bin/bash LVDS="LVDS-0" PRIMARY="VGA-0" function get_displays() { xrandr -q | grep connected | awk '{print $1}' } function get_resolution() { [[ -z "$1" ]] && return 0 || xrandr -q | grep -A1 $1 | tail -1 | awk '{print $1}' | grep -e "^[0-9]" } for display in $(get_displays); do resolution=`get_resolution $display` [[ $display == $PRIMARY ]] && arg="--primary"; [[ -n $resolution ]] && mode="--mode $resolution"; if [[ $display == $LVDS ]]; then xrandr --output $display --off elif [[ -n $mode ]]; then xrandr --output $display $arg $mode fi unset mode arg resolution; doneНе отчаивайтесь со сценариями или файлами конфигурации, у которых есть возможность сделать ваш экран входа непригодным!
Вместо этого войдите в систему и установите предпочтительные настройки экрана *, затем запустите эту команду:
sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml
Ваше разрешение для входа теперь будет всегда соответствовать настройкам пользователя, с которым вы в настоящее время вошли.
* Не забудьте нажать «Применить»
sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf
, затем в файле:
Section "Monitor"
Identifier "VGA1"
Option "PreferredMode" "1152x864"
EndSection
Сохранить и выйти. Значения были получены из команды xrandr -q. VGA1 - это имя моего соединителя, а 1152x864 - имя разрешения.
Это работает для Xubuntu 16.04. Он задает предпочтительное разрешение, и для меня он позволяет мне установить разрешение экрана входа, вместо того, чтобы по умолчанию было установлено максимальное разрешение.
Изменено из ответов здесь
То, что я нашел полезным, было опубликовано на веб-сайте руководства Ubuntu. Я пробовал так много вещей в Ubuntu 11.10 и даже пытался использовать просто GNOME Classic. Разрешение всегда было 1024x768, и когда я вручную установил его на 1440x900, он был «виртуальным», я имею в виду, что мне пришлось прокручивать с помощью мыши, чтобы исследовать весь рабочий стол, который был выше реальных размеров экрана.
В Терминал Я выполнил эту команду:
sudo gedit /etc/default/grub
Текстовый редактор может потребоваться некоторое время для загрузки. После его загрузки я отредактировал строку
GRUB_GFXMODE=1024x768
и изменил ее на:
GRUB_GFXMODE=1440x900
Не забудьте запустить update-grub, чтобы применить изменения.
[d6 ] После этого я попытался переустановить драйверы VESA (на этом компьютере у меня есть GeForce 260 GTX). Я знаю, что лучший способ - использовать официальные драйверы Nvidia, но с их помощью проблема всегда была такой же ... Конечно, я думаю, что теперь производительность будет хуже.Итак, проверьте настройки Nvidia X Server Я подтвердил, что мое решение было добавлено, и, переключившись на него, он сделал экран в правильном образе. На самом деле я использую Ubuntu 11.10, но в GNOME Classic.
Я новичок в Linux, поэтому надеюсь, что написал приличные вещи.
Скрипт Axelrod несколько неисправен, так как grep для 'connected' также захватывает все «отключенные» отображения ... не то, что мы хотим ...
Кроме того, используя grep с awk и tail, и т. д., является расточительно обходным, и я бы предложил следующее ниже. Кроме того, в get_resolution мы меняем код возврата на 1, так как код возврата нуля обычно указывает на отсутствие ошибок, поэтому мы используем 1, если первый параметр отсутствует.
В заключение, путем создания экземпляра основная часть скрипта - это функция, она может быть получена и выполнена в любое другое время, если это необходимо, в библиотеке функций, а также для использования локальных переменных, которые не нужно отменять.
[ f1]Вот как я работал в Xubuntu 16.04.
Вам нужно получить строку для желаемого разрешения. Это находится в результате команды:
xrandr --verbose
Теперь выберите деталь с требуемым разрешением. Он будет выглядеть примерно так:
1152x864 (0xa6) 108.000MHz +HSync +VSync
h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.50KHz
v: height 864 start 865 end 868 total 900 clock 75.00Hz
Из приведенных выше данных вы должны получить строку 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync.
Чтобы найти имя вашего вывода, найдите также строку:
VGA1 connected 1152x864+0+0 (0xa4) normal (normal left inverted right x axis y axis) 306mm x 230mm
Здесь мой результат называется VGA1.
Теперь создайте скрипт:
sudo gedit /usr/share/lightdmxrandr.sh
Затем в файле напишите следующее:
#!/bin/sh
xrandr --newmode "1152x864_75.00" 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync
xrandr --addmode VGA1 "1152x864_75.00"
xrandr --output VGA1 --mode 1152x864_75.00 --pos 0x0 --rotate normal
Сохранить и закрыть файл. Сделать скрипт исполняемым:
sudo chmod a+rx /usr/share/lightdmxrandr.sh
Создать файл конфигурации для вызова только что созданного скрипта.
sudo gedit /etc/lightdm/lightdm.conf.d/00-myres.conf
внутри этого файла:
[Seat:*]
display-setup-script=/usr/share/lightdmxrandr.sh
Сохраните и закройте файл.
На практике это единственный способ, который работал для меня, хотя повторное создание существующих разрешений не является логичным.
[d13 ] Ответ изменен из этого вопроса.note
Альтернативным способом получения длинной строки разрешения является программа cvt. Чтобы получить строку для разрешения 1152x864, частота обновления 75.00:
cvt 1152 864 75
Это дало мне несколько иное разрешение, чем разрешение на рабочем столе, и именно поэтому я не включил метод в основной ответ. [ ! d19]
Если вы используете GTK greeter LightDM, вы можете запустить xrandr -q, чтобы найти имена ваших мониторов, а затем отредактировать /etc/lightdm/lightdm-gtk-greeter и установить свойство active-monitor, как описано в комментариях внутри этого файла. Это свойство может принимать несколько упорядоченных значений, включая #cursor для монитора, который в настоящее время отображает курсор мыши.
Мне нравится прикрепить свой сценарий, который настраивает мониторы на один из мультимедийных клавиш на моей клавиатуре, который я иначе не использую. в настоящее время у меня есть кнопка с надписью «Windows Media Center», чтобы мои дисплеи отображались в их предпочтительной конфигурации. таким образом, если вы летете слепой, и ваши мониторы не синхронизируются с желаемым разрешением, просто смять горячую клавишу, и все исправлено.
Я предполагаю, что ваш монитор сообщает, что высокое разрешение экрана является предпочтительным. Теперь вы хотите переопределить это предпочтение по умолчанию. См. Мой ответ на очень похожий вопрос, чтобы узнать, как это можно сделать.
У меня была противоположная проблема: у меня всегда было меньшее разрешение экрана (1280x1024), чем у меня (1600x1200). Исправление, которое я нашел (и описано в связанном ответе), мы надеемся, что применим аналогично вашей проблеме.
Я создал этот скрипт, чтобы сделать его более динамичным (несколько рабочих пространств / разных мониторов).
Только раздражение: когда вы входите в систему с помощью lightdm, экран по-прежнему мигает, как будто он хочет изменить разрешение: s
У меня была та же проблема на моем MacBook Pro в середине 2014 года (11,1), запущенной Xenial. Я пробовал все вышеупомянутые решения в различных формах, но неизменно получал бы X в безопасном режиме с низкой графикой (но отображался в самом разрешении, которое я хотел бы установить по умолчанию не менее.
После долгих споров на форумах и в googling выясняется, что я забыл простейшее и по умолчанию потенциальное решение: nomodeset. Это исправило проблему.
TL; DR: Не забудьте попробовать nomodeset! Esp. на MacbookPro 11,1.