Можно ли использовать планшет Android в качестве второго монитора в Ubuntu 12.04? [dубликат]

Используйте эту команду, чтобы открыть Aptana, используя openjdk вместо sun jre AptanaStudio -vm /usr/lib/jvm/java-6-openjdk/bin.

Openjdk является стандартным jdk в Ubuntu. В качестве опции вы можете установить jdk Oracle, если вы загрузите его с веб-сайта Oracle.

54
задан 1 March 2011 в 21:58

91 ответ

Эти инструкции предназначены для создания «дополнительного» экрана для вашей Linux-машины с помощью планшета или любого компьютера через клиента VNC.

Я сделал эти шаги в Mageia3 32Bit (не пробовал 64-разрядный), но должен (например, Ubuntu).

Убедитесь, что у вас есть все необходимые пакеты со следующей командой терминала:

sudo apt-get install gcc autoconf automake x11-font-util libtool libxi-devel ibopenssl-devel libxfont1-devel libpam-devel x11-util-macros x11-xtrans-devel x11-server-xvfb x11-server-xdmx x11-server-devel x11-server-source

После того, как у вас есть все вышеперечисленные пакеты , выполните следующие команды:

cd /usr/share/x11-server-sources/
./autogen.sh
./configure --with-fontrootdir=/usr/share/fonts --with-xkb-path=/usr/share/X11/xkb --with-xkb-output=/usr/share/X11/xkb/compiled --enable-dmx
make

Если вы не получите никаких ошибок, исправьте Xdmx (просто положите, он был «сломан» в течение некоторого времени):

открыть /usr/share/x11-server-sources/hw/dmx/input/dmxevents.c, а также изменить строку 730: измените это:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

на следующее:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

IF линия 730 различна, используйте этот раздел, чтобы найти правильную строку: Orginal section - строка для изменения, отмеченная *

    case ButtonPress:
    case ButtonRelease:
        detail = dmxGetButtonMapping(dmxLocal, detail);
        valuator_mask_zero(&mask);
        QueuePointerEvents(p, type, detail,
 *                         POINTER_RELATIVE | POINTER_DESKTOP, &mask);
        return;

Проверьте свою версию Xdmx, запустив ./configure --version в /usr/share/x11-server-source/, для Xdmx 1.13 и старше вам также придется внести эти изменения (для версии 1.14 и новее вы можете перейдите к шагу «сделать» ниже):

открыть /usr/share/x11-server-sources/dix/getevents.c, строка 1395: изменить это:

if (flags & POINTER_SCREEN ) {    /* valuators are in screen coords */

К этому:

if (flags & ( POINTER_SCREEN | POINTER_DESKTOP) ) {    /* valuators are in screen coords */

(Исходный раздел - строка для изменения отмечена *)

    /* valuators are in driver-native format (rel or abs) */

    if (flags & POINTER_ABSOLUTE) {
*       if (flags & POINTER_SCREEN ) {    /* valuators are in screen coords */
            sx = valuator_mask_get(&mask, 0);
            sy = valuator_mask_get(&mask, 1);

открыть /usr/share/x11-server-sources/Xext/xtest.c, строка 311: изменить это:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

к этому:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(исходный раздел - строка для изменения отмечена *)

       case MotionNotify:
            dev = PickPointer(client);
            valuators[0] = ev->u.keyButtonPointer.rootX;
            valuators[1] = ev->u.keyButtonPointer.rootY;
            numValuators = 2;
            firstValuator = 0;
            if (ev->u.u.detail == xFalse)
*               flags = POINTER_ABSOLUTE | POINTER_DESKTOP;
            break;

/usr/share/x11-server-sources/include/input.h, строка 73: добавьте эту строку после строки, начинающейся с #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

После внесения вышеуказанных изменений заново выполните (в /usr/share/x11-server-sources/):

make

У вас должен быть новый Xdmx-файл в /usr/share/x11-server-sources/hw/dmx/. Нам нужно установить это глобально для удобства, поэтому я рекомендую переименовать существующий:

sudo mv /bin/Xdmx /bin/Xdmx-old

и скопировать новый вместо него:

cp /usr/share/x11-server-sources/hw/dmx/Xdmx /bin

вы готовы выполнить первую пробную версию, следующие команды позволяют сохранить ваш основной / существующий дисплей (:0) и открыть новый дисплей с поддержкой нескольких мониторов. Я использую icewm с этими командами, чтобы сделать его немного более легким (я использую KDE на моем основном дисплее :0 и открываю любое приложение с большим количеством мониторов на новом многоголовом дисплее). Вы можете наиболее определенно скомпоновать эти команды для удобства использования (это то, что я сделал). Любая из этих команд может быть выполнена на консольном и / или терминальном окне любого дисплея, единственное требование состоит в том, чтобы они выполнялись в порядке.

Эта команда создает ваш новый дисплей в качестве буфера кадров для вашего VNC-дисплея :2 (при необходимости отрегулируйте размер экрана):

Xvfb :2 +xinerama -screen 0 1024x1280x24 -ac &

Это начинает новый легкий сеанс X на вашем физическом /usr/share/x11-server-source/

startx 'icewm' -- :1

Эта команда запускает мультидисплей между вашим физическим экраном и виртуальным экраном и запускает icewm для оконного менеджера:

startx 'icewm' -- :1

g24]

Xdmx :3 +xinerama -display :1 -display :2 -norender -noglxproxy -ac & DISPLAY=:3 starticewm

Теперь откройте окно терминала и запустите сервер vnc (измените пароль по желанию):

x11vnc -display :3 -passwd test -clip xinerama1 -noshm -forever -nowireframe &

Осталось только активировать ваш клиент VNC и подключитесь к VNC - вам может потребоваться отключить или добавить исключение в ваш брандмауэр на порт 5900, чтобы вы могли подключиться к нему. Другое дело иметь в виду, что некоторые клиенты VNC не отображают позицию удаленного курсора, я подтверждаю, что «Mocha VNC» для iOS отлично работает, если вы отключите опцию «локальная мышь».

Наслаждайтесь перетаскивая окна между вашим основным монитором и вашим новым виртуальным вторым монитором (в то же время имея возможность использовать планшет, чтобы щелкнуть / набрать что-то на втором мониторе).

Чтобы закрыть Xdmx, дважды нажмите Ctrl + Alt + Backspace .

Автоматизация:

Я использую этот скрипт bash для запуска всего процесса (также убивает Xvfb при выходе):

Xvfb :2 +xinerama -screen 0 1024x1280x24 -ac &
xinit dual -- :1
ps | grep Xvfb | awk '{print $1}' | xargs kill

Тогда у меня есть пользовательский ~/.xinitrc с этим:

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)

if [[ $1 == "" ]]
then
  exec startkde 
elif [[ $1 == "xterm" ]]
then
  exec xterm
elif [[ $1 == "dual" ]]
then
  exec Xdmx :3 +xinerama -display :1 -display :2 -norender -noglxproxy -ac & DISPLAY=:3 starticewm & x11vnc -display :3 -passwd test -clip xinerama1 -noshm -forever -nowireframe
else
  exec $1
fi

Устранение неполадок:

  • При запуске Xdmx, если вы получили сообщение об ошибке sh: /usr/local/bin/xkbcomp: No such file or directory, вам может потребоваться выполнить: cd /usr/local/bin" and "ln -s /bin/xkbcomp ], затем снова попробуйте Xdmx.
  • Ctrl + Alt + F1 через F7 должен работать в Xdmx для переключения на другие консоли / xsessions, но по какой-то причине он не работает, то, что я делаю, просто выполняется sudo chvt X (где X - номер консоли / xsession), чтобы переключиться на мой основной экран. Также, когда вы переключаетесь обратно на Xdmx, вы можете получить некоторые проблемы с рисунком в любых открытых окнах, я просто нажимаю на панель задач, чтобы скрыть / показать окно, снова заставляя перерисовать.
1
ответ дан 15 August 2018 в 17:51

Другие вопросы по тегам:

Похожие вопросы: