Ubuntu 14.10 та пізніших версій: Там набагато, набагато простіше. Будь ласка, дивіться цю відповідь та мій коментар нижче.
Примітка . Це працює лише в Ubuntu 13.04. Є деякі відмінності в 13.10.
Мені вдалося підключити два зовнішніх монітора (крім вбудованої панелі) до свого ThinkPad T430 на Ubuntu 13.04, з увімкненою функцією Optimus ("Переміжна графіка") (опція 3 у вашому списку). Монітори підключаються через інтерфейс DVI, один з них обертається. На відміну від інших рішень, всі монітори приєднані до одного і того ж диспетчера вікон, тому вікна можна вільно переміщувати між моніторами. Це досягає мети - збільшити термін служби акумулятора, якщо відключити його та використовувати зовнішні монітори, якщо вони підключені.
Ключова ідея тут:
- Внутрішній графічний адаптер відповідає за керування зображенням (растровим зображенням), яке фактично відображається
- За замовчуванням все відображається на внутрішньому графічному адаптері
- Програми, прискорені графічним процесором, використовують дискретний графічний адаптер, вихід копіюється на внутрішній графічний адаптер
- Для кожного зовнішнього монітора внутрішній графічний адаптер забезпечує "віртуальний" дисплей
- Виведення на зовнішні монітори відбувається за допомогою другого X-сервера, вміст з "віртуальних" дисплеїв постійно копіюється на другий X-сервер
Основна перевага перед іншими рішеннями полягає в тому, що всі дисплеї є (здавалося б) частиною одного X сеансу, тому ви можете вільно переміщати вікна між дисплеями.
Поки що я не помітив жодного штрафу за виконання.
Інструкції
Вам потрібно зробити наступне:
- Встановіть джмеля з PPA
- Створіть та встановіть спеціальний драйвер для відео Intel
- Завантажте, компілюйте та нарешті встановіть невелику програму
- Відредагуйте два конфігураційні файли
- Перезавантажте кілька разів
Для більшості дій вам знадобиться термінал, текстовий редактор та root-доступ ( sudo). Детальні інструкції наведені нижче.
Встановіть джмеля
Дотримуйтесь розділу "основні настройки" інструкцій . Виконати як root, остання команда фактично ініціює перезавантаження:
add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot
Не намагайтеся запустити джмеля лише з водієм нуво? . З мого досвіду, це не працює, принаймні, не в цій установці.
Перевірка
Ви повинні мати можливість бігати optirun glxgears.
Встановіть виправлену версію xserver-xorg-video-intel
Варіант 1: Встановити з мого PPA (наразі лише Ubuntu 13.04)
Виконайте наступне як root:
add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel
Варіант 2: Створіть та встановіть власний пакет
Виберіть найновіший патч для xserver-xorg-video-intel. Клацніть файл, натисніть кнопку «RAW», скопіюйте URL-адресу у браузері. На момент написання це було https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch .
sudo apt-get build-dep xserver-xorg-video-intel
cd ~
apt-get source xserver-xorg-video-intel
cd xserver-xorg-video-intel
# replace the URL below with the one you have noted, if necessary
wget https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch
patch -p1 < *.patch
# The next command will ask for a change log message. Supply something meaningful,
# this will later allow you to distinguish your patched package from the distribution's.
dch -l+virtual
dpkg-buildpackage -b
cd ..
sudo dpkg --install xserver-xorg-video-intel_*.deb
Перевірка (1) для обох варіантів
Команда
apt-cache policy xserver-xorg-video-intel
повинна показувати виправлену версію ( +virtualсуфікс) та оригінальну версію Ubuntu.
Необхідно до 13.04, для обох варіантів
Додайте до свого /etc/X11/xorg.conf, створіть, якщо потрібно:
Section "Device"
Identifier "intel"
Driver "intel"
Option "AccelMethod" "uxa"
Option "Virtuals" "2"
EndSection
Валідація (2) для обох варіантів
Після перезавантаження запустіть xrandrу терміналі. Вихід повинен перелічити два додаткових віртуальних дисплея.
Завантажте і складіть екранний клон
Отримайте вилку puetzk для скрінклону та його залежностей та складіть його.
sudo apt-get install libxcursor-dev libxdamage-dev libxinerama-dev libxtst-dev git build-essential
cd ~
git clone git://github.com/puetzk/hybrid-screenclone.git
cd hybrid-screenclone
make
Перевірка
Файл screencloneіснує і виконується. (Однак це ще не запуститься.)
Редагувати xorg.conf.nvidia
Тестування
Моя настройка передбачає ландшафтний монітор, підключений до першого порту DVI док-станції, і портретний, підключений до другого порту DVI. Запустіть наступні команди в терміналі з каталогу, в якому знаходиться екранний клон , при необхідності адаптуйте .
xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
./screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg
Зверніть увагу, як обертання дисплея необхідно визначити двічі. Ви можете опустити друге виклик, xrandrякщо не потрібне обертання (і, звичайно, --rotate leftперше виклик).
Після закінчення screencloneCtrl + C (який знову був висунутий на перший план за допомогою fg) дискретний графічний адаптер вимикається. Ви можете підтвердити це за допомогою cat /proc/acpi/bbswitch. Проте екранний простір відведений для двох відключених моніторів. Щоб повернутися лише до дисплея ноутбука, використовуйте
xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off
Прибирати
Скопіюйте screencloneв каталог, який знаходиться у PATH(наприклад, /usr/local/bin)
Створіть bashсценарій для автоматизації запуску та відключення зовнішніх дисплеїв. Цей сценарій налаштує зовнішні дисплеї під час запуску та переключиться на дисплей ноутбука лише при виході (наприклад, натиснувши Ctrl + C).
#!/bin/bash
set -m
xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
trap "xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off" EXIT
screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg
Альтернативний варіант: Моя колекція скриптів містить два сценарії extmon-startта extmon-stop, які включають та вимикають другий та третій монітори. Відредагуйте extmon-startсценарій відповідно до вашої конфігурації.
Список літератури
Моя відповідь багато в чому випливає з таких ресурсів: