Как стать автором
Обновить

Расширение рабочего стола

Время на прочтение 3 мин
Количество просмотров 9.8K
У ноутбуков Asus EeePC иногда не хватает разрешения экрана. Многие окна не помещаются на рабочем столе и их приходится перемещать мышкой что бы увидеть элементы, выходящие за его границы. Так же возникают проблемы с играми. И если под Windows с помощью драйверов можно расширить рабочий стол больше физического разрешения и скроллить его с помощью мышки, то в Linux для того что бы получить такую же возможность придется немного потрудится.

Введение


Некоторое время назад X.org потерял возможность устанавливать виртуальное разрешение больше чем физическое и перемещать отображаемую область с помощью мышки. Поэтому для EeePC Дэниел Фишер и Дэвид Гриффит разработали небольшую утилиту i810pan. Эта программа позволяет перемещать отображаемую область рабочего стола в пределах установленного виртуального разрешения. Она использует функцию SetVidMode расширения XF86Vidmode для перемещения отображаемой области. Для своей работы i810pan требует:
  • — X.org 1.3 с расширением Vidmode Его наличие можно проверить коммандой
    $ xdpyinfo | grep "VidMode"
  • — RandR 1.2

Получение программы


Исходные тексты программы можно получить по адресу http://users.on.net/~dgriffith/i810pan-new.tgz. В архиве содержатся следующие файлы:
  • about.txt — в этом файле указаны устаревшие команды для запуска старой версии программы. В нем теперь нет необходимости
  • COPYING — лицензионное соглашение
  • i810pan — скомпилированная версия программы. Будет работать не на всех машинах, поэтому лучше собрать утилиту самому
  • i810pan.c — исходные тексты программы
  • Makefile — make-файл для упрощения сборки программы
  • README — краткая справка
  • startpan.sh — скрипт для запуска предыдущей версии программы. Он устарел, поэтому им пользоваться не стоит
  • xrandr — утилита для изменения разрешения экрана. Поставляется на тот случай, если у пользователя ее нет
Если i810pan используется на EeePC 701 то можно попробовать запустить собранную версию, но для EeePC 90x ее потребуется собрать самому, так как в ней жестко зашито разрешение экрана.

Компиляция


Для сборки программы нам потребуется три дополнительных файла:
  1. XTest.h
  2. xf86vmode.h
  3. libXxf86vm.a
В дебиане они расположены в пакетах x11proto-xext-dev, x11proto-xf86vidmode-dev и libxxf86vm-dev, для их установки надо выполнить следующую команду:
# apt-get install x11proto-xext-dev x11proto-xf86vidmode-dev libxxf86vm-dev

Физическое разрешение экрана жестко задано в исходных текстах программы. Так как она изначально создавалась для EeePC 701, то владельцам EeePC 90x надо найти пару строк в i810pan.c
// TODO: figure out real panel dimensions
panel_w = 800;
panel_h = 480;

и изменить их следующим образом:
// TODO: figure out real panel dimensions
panel_w = 1024;
panel_h = 600;

Теперь выполним команду
$ make

или (если решили не использовать make-файл)
$ gcc -o i810pan i810pan.c -lX11 -l Xxf86vm

В результате мы получили нашу утилиту. Приступим к настройке X-сервера.

Настройка X-сервера


Что бы использовать эту утилиту нам надо установить требуемое виртуальное разрешение экрана. Для этого придется слегка подправить xorg.conf, вставив в него следующие строки:
DefaultDepth 24
SubSection "Display"
Depth 24
Virtual 2048 2048
EndSubSection

в секцию «Screen» (это также пригодится при подключении внешнего монитора).
После внесенных изменений необходимо перезапустить иксы (например, нажав Ctrl+Alt+BackSpace, предварительно сохранив все документы).
Наконец-то можно перейти запуску программы.

Использование i810pan


Что бы запустить программу надо выполнить две комманды:
$ xrandr --fb 1280x1024
# ./i810pan

Первая устанавливает виртуальное разрешение экрана (в данном примере равное 1280x1024), а вторая запускает утилиту из текущей директории. Обратите внимание что для ее запуска требуются права суперпользователя.
Теперь, если подвести мышку к краю экрана, он начнет перемещаться, показывая содержимое за его границами.
Если мы захотим вернуть все как было, то нам надо выключить утилиту и вернуть рабочий стол в исходное состояние. Вернуть рабочий стол в исходное состояние можно двумя способами — установить виртуальное разрешение равное физическому (для EeePC оно равно 800x480):
$ xrandr --fb 1024x600

или просто сменить видеорежим на требуемый:
$ xrandr -s 1024x600

У каждого из них есть свой недостаток. При использовании первого способа надо сначала вернуть экран в левый верхний угол. А при смене видеорежима происходит отключение монитора что немного раздражает.

Заключение


После того как поставил включение и отключение i810pan на горячие клавиши, использовать его стало очень удобно. Единственная проблема с которой я столкнулся — это неадекватное поведение kicker'a, который не обращал внимание на смену разрешения и продолжал висеть по середине экрана. Самый простой способ обойти это — перенести его на левую или верхнюю границу экрана.
Теги:
Хабы:
+5
Комментарии 10
Комментарии Комментарии 10

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн