您如何使用Android平板电脑作为第二显示器?


63

我注意到有人在使用Windows和Mac产品iDisplay,使您可以将Android或iPad用作辅助显示器。这似乎是一个好主意,并且可以在Ubuntu上完成。不幸的是,我不知道如何开始。

您如何在Ubuntu上重新创建此设置?


2
:目前正在对论坛的讨论类似的问题,使用VNC作为第二显示器
ændrük

1
关于超级用户的相同问题:使用VNC创建第二个屏幕
2013年

1
好的,这里介绍的解决方案是网络解决方案。但是,是否有机会通过简单地通过USB伪装显示器来获得与显示器相同的体验,就像Duet一样呢?
Augustin Riedinger 2014年

因此,Duet可能(实质上)是在软件中模拟DisplayLink芯片-我不知道,但这是我的猜测。我什至不会尝试。我会尝试(并不难)的是USB网络连接:将平板电脑和网络捆绑在一起(或反向捆绑)。
chx 2015年

Answers:


28

获取适用于Android的VNC客户端,在计算机上启动新的VNC服务器会话(不要只共享当前显示-使用vnc4server而不是x11vnc),从Android VNC客户端连接到该客户端,然后(聪明一点)共享PC键盘和鼠标在两个会话之间使用了协同作用。

在Ubuntu端的标准存储库中提供了用于执行此操作的所有必需软件,并且市场上有一些免费的VNC客户端可用于Android。

使用此方法将无法在显示中拖动窗口。为此,我认为您需要使用Xdmx绑定两个会话。这要困难得多,可能会导致您失去3D加速度。

另请注意,默认情况下,synergy和vnc不使用加密,因此,如果不在受信任的网络上,则需要建立连接隧道。


9
可以添加示例
rkmax 2014年

18
有一个循序渐进的示例可以帮助我们遵循
OganM 2014年

2
平板电脑将如何在第二屏幕上显示更多屏幕空间?
NoBugs

我在使用vncserver和Gnome 3时遇到了麻烦。每次尝试启动vncserver时,屏幕都会变黑。我最终使用了tightvncserver(也在Ubuntu仓库中),它在没有任何配置的情况下首次尝试。
第三者

这比第二台显示器更像是KVM切换器或远程控制解决方案。是的,它为您提供了另一组输入,但是两台设备上的输出都是相同的-您甚至无法将平板电脑切换到与主屏幕不同的虚拟桌面,同时打开两者即可。它没有回答问题。问题是关于使用移动设备提供额外的输出空间,而不是完全输入。
cprn

17

tl; 医生:xrandr --fbx11vnc --clip在一起做一个杀手组合。

由Recognitium链接的线程有一个非常有趣的主意,不确定他是否是这个意思,因为我找不到他指出的作者,也因为我在那里的论坛帖子中进行了跟踪,因此我将其单独发布而不是作为编辑。 :

  1. 首先,假设主计算机的屏幕分辨率为1280x800,而您要将桌面扩展到VNC的辅助计算机的屏幕分辨率为1280x1024,并且您希望扩展屏幕位于主屏幕的右边。虚拟屏幕必须为1280x800 + 1280x1024 = 2560x1024。(将其水平扩展,并使垂直分辨率扩大两者之和)xrandr --fb 2560x1024

  2. 现在,屏幕大于主显示器,您必须确保没有平移或激活任何其他不需要的“功能”,并且主显示器左上角的坐标为0x0。

  3. x11vnc -clip 1280x1024+1281+0 加上添加任何其他x11vnc选项以品尝:)

应该是这样。


2
这似乎是一种比Synergy技巧更无缝的方法,太好了!我很好奇额外的虚拟空间将如何与我的平铺窗口管理器交互。请稍等片刻,然后报告。
Ibrahim

2
从胜利的sn口抢走的失败。不允许鼠标指针离开主屏幕。:(
Gringo Suave

1
似乎很有趣。实际上,我在那里确实有一个双屏显示,但是不幸的是,该命令xrandr --fb 2560x1024似乎没有任何作用。这意味着我的屏幕不能超过我的主显示器大小……:(
Augustin Riedinger

1
进一步了解了这一点。得到了一个X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 29 Current serial number in output stream: 30 错误。我的猜测是我的笔记本电脑不支持比本机更高的分辨率1600*900。意味着此解决方案无法正常工作。我必须找到一种双屏解决方案。
奥古斯丁·里丁格

3
我终于做到了工作,由于这个职位通过运行:sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0(我错过了--panning选项)
奥古斯丁Riedinger

16

除了this以外,其他答案无法正常工作。

它允许使用Android作为第二台显示器,共享鼠标,在平板电脑和计算机之间拖动窗口。

这是循序渐进的教程,需要评论。

A.教程

1.创建一个新的虚拟监视器

我的平板电脑的分辨率为1280x1024。(你可以改变12801024中的命令,如果你的平板电脑是在不同的分辨率无处不在。你也可能需要改变LVDS1,如果默认显示器的名字是不同的)。

在终端中运行:

  1. $ gtf 1280 1024 60

输出中有一行类似于Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync。将单词Modeline(不包括单词)之后的所有内容复制到下一个命令中。

  1. xrandr --newmode "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync

  2. xrandr --addmode VIRTUAL1 1280x1024_60.00

  3. xrandr --output VIRTUAL1 --mode 1280x1024_60.00 --left-of LVDS1

2.启动VNC

  1. x11vnc -clip 1280x1024+0+0

3.与Android(LAN(Wi-Fi)或USB(Cable))连接

  1. 使用ifconfig(从LAN连接时)查找计算机的IP 。

  2. 下载VNC应用程序,并使用应用程序中其IP(并选择port 5900)连接到计算机。

告示

  • 学分:kjans,内容已编辑。
  • 警告:数据未加密!(与Wi-Fi和非LAN使用有关)
  • 警告:您连接的任何可以到达端口5900的网络都可以连接到显示器!(如果使用USB AND限制接口添加-listen <IP_ADDR>选项x11vnc(这<IP_ADDR>是您要授予独占访问权的网络中的计算机地址在哪里),这不是问题)
  • 两次执行1-4个步骤中的任何一个都可能输出错误。
  • 成功使用后,必须为另一个连接重复5.步骤。

B.脚本

本教程以脚本的形式实现(更改IP以用于USB电缆或删除它,并取消注释该行以用于Wi-Fi)。

#!/bin/bash
W=1280
H=800
O=VIRTUAL1
if [ "$1" == "create" ]; then
    gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | xargs xrandr --newmode
    # sed: get third line, delete 'Modeline', get first word, remove first and last characters
    gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | awk '{print $1;}' | sed 's/^.\(.*\).$/\1/' | xargs xrandr --addmode $O
    gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | awk '{print $1;}' | sed 's/^.\(.*\).$/\1/' | xargs xrandr --output $O --left-of LVDS1 --mode
elif [ "$1" == "on" ]; then
    x11vnc -listen 192.168.42.149 -clip ${W}x${H}+0+0
    # For use in Wi-Fi LAN.
    #x11vnc -clip ${W}x${H}+0+0 #**WARNING** Unencrypted stream. VNC accessible without password through port 5900 in all internet interfaces.
else
    echo "missing argument: [create | on]"
fi

@Prometheus,x11vnc -clip 1280x1024+0+0可用替换x11vnc -clip xinerama1。另外,--left-of LVDS1如果您以后要使用Monitors设置应用程序将多余的显示器放置在任何位置,则也不是必须的。
LeoRochael

6
xrandr: cannot find output "VIRTUAL1"当我输入数字3时返回。有什么想法吗?
dat tutbrus '16

3
xrandr: cannot find output "VIRTUAL1"xrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis

这行之有效,除非您必须有一个未使用的输出能够支持目标视频模式才能工作。VIRTUAL1似乎是此类输出的占位符,而不是典型系统中存在的内容。
罗斯兰

1
@cprn是的,您可以共享鼠标光标和拖动窗口。就像您连接了第二台显示器一样
Elijas

13
  1. 安装vnc4serverx2x
  2. 然后,设置一个.vnc/xstartup配置文件。我的看起来像这样

    #!/bin/sh
    # Uncomment the following two lines for normal desktop:
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    # exec /etc/X11/xinit/xinitrc
    
    [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    xsetroot -solid grey
    #vncconfig -iconic &
    #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    #x-window-manager &
    exec gnome-session
    

    它会启动gnome-fallback桌面(我不知道如何使gnome 3在vnc中启动)。

  3. 要启动vnc服务器,请使用vnc4server -geometry 800x480命令。当然,您必须设置平板电脑的分辨率,而不是800x480。
  4. 启动x2x -east -to :1。该命令表明您的计算机的显示就像在屏幕的右侧显示了:1一样(-west如果需要,请使用选项在屏幕的左侧)。您将无法将应用程序从一个显示移动到另一个显示,但是您可以使用一个鼠标和一个键盘来控制它们。
  5. 连接到使用vnc4server平板电脑创建的显示器(端口号为5900 +显示号(例如,对于显示器:1,端口号将为5901)(显示号显示在vnc4server的输出中))。
  6. 要退出x2x,请按Ctrl-C。或者,您可以在后台(x2x -east -to :1 &)启动它。然后,您首先需要将其移动到前台(fg),或使用杀死它kill $!(谨慎,它会杀死在后台启动的最后一个进程)。
  7. 要删除创建的显示器,请致电vnc4server -kill :1:1您可以在此处设置新显示器的号码,而不是它。

1
感谢您使用x2x ...为什么没有人在整个互联网上提到它?节省了我很多时间。协同作用需要在平板电脑上使用cyanogenmod或类似产品。也没有人提到它。
Stefanos Kalantzis 2013年

1
我已经知道了x2x,可以通过在Google上搜索x2x android找到这篇文章...但是+1 .vnc/xstartup,尤其是unset DBUS_SESSION_BUS_ADDRESS!! 小而丰富但非常有用的帖子,谢谢!
F. Hauri 2014年

7

原则上,使用xdmx(分布式多头X)是可行的,它使您可以使用在不同计算机上运行的两个X服务器来创建单个桌面。

从原则上讲,这是三种可能的方案,但没有任何一种方案能像iDisplay一样无缝,因为它们都至少需要重新启动X会话。我无法使两者均能完美运行,但是我正在运行Ubuntu 10.10,并且由于各种原因而无法升级。这三个是:

1:在android上运行X服务器(应用商店中现在有两个),然后使用xdmx与台式机或笔记本电脑的显示器结合使用。-不适用于我,因为当指针移到桌面的数位板部分时xdmx崩溃了。

2:在计算机上运行第二台带有vnc后端的X服务器,使用xdmx将其与计算机屏幕组合到一个桌面中,然后在平板电脑上使用vnc查看器查看虚拟部件-对我不起作用,因为xdmx要求所有X服务器具有相同的颜色视觉效果,而vncserver和实际显示情况并非如此,而且我无法说服vncserver进行更改。

3:运行两个vncserver,每个屏幕一个,然后将它们与xdmx连接,并使用相应计算机上的vncviewer查看每个部件。-这是最适合我的工作,不幸的是输液被弄乱了。wifi上的真彩色也相当慢。我使用此脚本启动xdmx和vncs:

#!/bin/sh 
vncserver :2 -geometry 1024x768 -depth 24 && \
vncserver :3 -geometry 1920x1120 -depth 24 && \
startx -- \
/usr/bin/X11/Xdmx :1 \
-input :2 \
-display :2 \
-display :3 \
-ignorebadfontpaths \
-norender \
-noglxproxy \
+xinerama \
-nomulticursor
vncserver -kill :2 
vncserver -kill :3

青年汽车


3

我做了一个简单的bash脚本,使平板电脑成为第二台显示器。ipad_monitor.sh在我的博客文章中复制(不用担心。它也适用于Android)。

与其他文章的不同之处在于,您可以轻松地通过附加参数来设置第二个屏幕的位置。

编辑:我在ipad_monitor.sh这里包括原始。运行以下命令:

  • ./ipad_monitor.sh --right 要么 ./ipad_monitor.sh --left
  • ./ipad_monitor.sh --right --portrait
  • ./ipad_monitor.sh --right --portrait --hidpi

该脚本的基本思想与其他脚本一样,都在运行xrandrx11vnc但是我提供了一些选项,例如您要附加屏幕的那一侧。

#!/bin/sh
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <k.bumsik@gmail.com> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return. - Bumsik Kim
# ----------------------------------------------------------------------------

# Configuration
WIDTH=1024  # 1368 for iPad Pro
HEIGHT=768  # 1024 for iPad Pro
MODE_NAME="mode_ipad"       # Set whatever name you like, you may need to change
                            # this when you change resolution, or just reboot.
DIS_NAME="VIRTUAL1"         # Don't change it unless you know what it is
RANDR_POS="--right-of"      # Default position setting for xrandr command

# Parse arguments
while [ "$#" -gt 0 ]; do
  case $1 in
    -l|--left)      RANDR_POS="--left-of"  ;;
    -r|--right)     RANDR_POS="--right-of" ;;
    -a|--above)     RANDR_POS="--above"    ;;
    -b|--below)     RANDR_POS="--below"    ;;
    -p|--portrait)  TMP=$WIDTH; WIDTH=$HEIGHT; HEIGHT=$TMP
                    MODE_NAME="$MODE_NAME""_port"  ;;
    -h|--hidpi)     WIDTH=$(($WIDTH * 2)); HEIGHT=$(($HEIGHT * 2))
                    MODE_NAME="$MODE_NAME""_hidpi" ;;
    *) echo "'$1' cannot be a monitor position"; exit 1 ;;
  esac
  shift
done

# Detect primary display
PRIMARY_DISPLAY=$(xrandr | perl -ne 'print "$1" if /(\w*)\s*connected\s*primary/')

# Add display mode
RANDR_MODE=$(cvt "$WIDTH" "$HEIGHT" 60 | sed '2s/^.*Modeline\s*\".*\"//;2q;d')
xrandr --addmode $DIS_NAME $MODE_NAME 2>/dev/null
# If the mode doesn't exist then make mode and retry
if ! [ $? -eq 0 ]; then
  xrandr --newmode $MODE_NAME $RANDR_MODE
  xrandr --addmode $DIS_NAME $MODE_NAME
fi

# Show display first
xrandr --output $DIS_NAME --mode $MODE_NAME
# Then move display
sleep 5 # A short delay is needed. Otherwise sometimes the below command is ignored.
xrandr --output $DIS_NAME $RANDR_POS $PRIMARY_DISPLAY

# Cleanup before exit
function finish {
  xrandr --output $DIS_NAME --off 
  xrandr --delmode $DIS_NAME $MODE_NAME
  echo "Second monitor disabled."
}

trap finish EXIT

# Get the display's position
CLIP_POS=$(xrandr | perl -ne 'print "$1" if /'$DIS_NAME'\s*connected\s*(\d*x\d*\+\d*\+\d*)/')
echo $CLIP_POS
# Share screen
x11vnc -multiptr -repeat -clip $CLIP_POS
# Possible alternative is x0vncserver but it does not show the mouse cursor.
#   x0vncserver -display :0 -geometry $DIS_NAME -overlaymode -passwordfile ~/.vnc/passwd
if ! [ $? -eq 0 ]; then
  echo x11vnc failed, did you \'apt-get install x11vnc\'?
fi

1
您是否有脚本/应用程序的名称或可以发布的其他替代链接的名称,以帮助避免链接腐烂?在这里,我们通常尝试尽可能地自我约束,以免依赖其他网站停留,特别是如果那些网站包含与答案相关的大量信息,而该信息并未真正包含在答案中。
sbergeron '18

尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。- 评论
匿名

2
@sbergeron我明白了。我在这里包括原始代码。
Bumsik Kim,

1
@ anonymous2你是对的。我在这里包括了bash代码。
Bumsik Kim,

嗯,好多了。我认为这样应该可以坚持下去。
匿名

2

我使用xorg虚拟驱动程序和x11vnc -clip。鼠标点没有卡在边缘上。

sudo apt-get install xserver-xorg-video-dummy

/etc/X11/xorg.conf第二个屏幕上有for虚拟驱动程序:

“设备”部分
        标识符“配置的视频设备”
    驱动程序“ radeon” #CHANGE THIS
结束部分

“监视器”部分
        标识符“已配置的监视器”
结束部分

“屏幕”部分
        标识符“默认屏幕”
        监视器“配置的监视器”
        设备“配置的视频设备”
结束部分


## Xdummy:##
“设备”部分
  标识符“ Videocard0”
  驾驶员“假人”
  #VideoRam 4096000
  VideoRam 256000
结束部分

## Xdummy:##
“监视器”部分
  标识符“ Monitor0”
#HorizSync 10.0-300.0
#VertRefresh 10.0-200.0
#DisplaySize 4335 1084
结束部分

## Xdummy:##
“屏幕”部分
  标识符“ Screen0”
  设备“视频卡0”
  监视“ Monitor0”
结束部分



“ ServerLayout”部分
  标识符“ dummy_layout”
  屏幕0“默认屏幕”
  “默认屏幕”右侧的屏幕1“屏幕0”
    选项“ Xinerama”“ 1”
结束部分

然后登录到X会话并运行:

x11vnc -clip 1024x768+1280+0

没有xorg.conf,有什么办法吗?如果我在计算机上创建一个图形,那么我的图形将完全混乱。
daboross

仍然支持Xinerama吗?Xrandr呢?
Gringo Suave 2013年

1

这些说明旨在使用平板电脑或任何通过VNC客户端的计算机为linux计算机创建“其他”屏幕。

我在Mageia3 32Bit(没有尝试过64bit)中进行了这些步骤,但对于其他发行版(例如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);

如果730行不同,请使用此部分查找正确的行:原始部分-要更改的行,标有*

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

通过./configure --version在中运行来检查Xdmx的版本/usr/share/x11-server-source/,对于Xdmx 1.13和更早的版本,还必须进行这些更改(对于1.14和更高的版本,您可以跳到下面的“ make”步骤):

打开/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会话作为显示器:1(有多种方法可以执行此操作):

startx 'icewm' -- :1

此命令将在物理屏幕和虚拟屏幕之间启动多屏显示,并为窗口管理器启动icewm:

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客户端不显示远程光标位置,我保证,如果您关闭了“本地鼠标”选项,则适用于iOS的“ Mocha VNC”可以很好地工作。

可以在主监视器和新的虚拟第二监视器之间拖动窗口(同时还可以使用平板电脑单击/键入第二监视器中的内容)。

要关闭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您可能需要执行execute cd /usr/local/bin" and "ln -s /bin/xkbcomp:,然后重试Xdmx。

  • Ctrl+ Alt+ F1through F7应该可以在Xdmx中工作以切换到其他控制台/ xsession,但是由于某种原因它不起作用,我要做的就是简单地执行sudo chvt X(其中X是一个控制台/ xsession号)以切换到我的主显示。同样,当您切换回Xdmx时,在任何打开的窗口上都可能会遇到一些绘图问题,我只需单击任务栏上的,即可再次隐藏/显示该窗口,以强制重新绘制。


0

感谢您的教程,我将分享在Ubuntu 14.04上对我有用的东西

在这里为平板电脑获取AndroidVNC

通过运行为您的Ubuntu PC获取x11vnc

sudo apt-get install x11vnc

我不得不使用Xorg虚拟驱动程序方法。这是我的/etc/X11/xorg.conf文件的样子:

Section "ServerLayout"
Identifier     "X.org Configured"
Screen      0  "Screen0" 0 0
**Screen        1  "Screen1" rightof "Screen0"**
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
**Option         "Xinerama" "1"**
EndSection

Section "Files"
ModulePath   "/usr/lib/xorg/modules"
FontPath     "/usr/share/fonts/X11/misc"
FontPath     "/usr/share/fonts/X11/cyrillic"
FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath     "/usr/share/fonts/X11/Type1"
FontPath     "/usr/share/fonts/X11/100dpi"
FontPath     "/usr/share/fonts/X11/75dpi"
FontPath     "built-ins"
EndSection

Section "Module"
Load  "glx"
EndSection

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection

Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option      "Protocol" "auto"
Option      "Device" "/dev/input/mice"
Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Monitor Vendor"
ModelName    "Monitor Model"
DisplaySize 1680 1050
EndSection

**Section "Monitor"
Identifier "Monitor1"
VendorName "Dummy"
ModelName "Dummy"
DisplaySize 2704 1050
EndSection**

Section "Device"
    ### Available Driver options are:-
    ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
    ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
    ### <percent>: "<f>%"
    ### [arg]: arg optional
    #Option     "NoAccel"               # [<bool>]
    #Option     "SWcursor"              # [<bool>]
    #Option     "EnablePageFlip"        # [<bool>]
    #Option     "ColorTiling"           # [<bool>]
    #Option     "ColorTiling2D"         # [<bool>]
    #Option     "RenderAccel"           # [<bool>]
    #Option     "SubPixelOrder"         # [<str>]
    #Option     "AccelMethod"           # <str>
    #Option     "EXAVSync"              # [<bool>]
    #Option     "EXAPixmaps"            # [<bool>]
    #Option     "ZaphodHeads"           # <str>
    #Option     "EnablePageFlip"        # [<bool>]
    #Option     "SwapbuffersWait"       # [<bool>]
Identifier  "Card0"
Driver      "radeon"
BusID       "PCI:1:0:0"
EndSection

**Section "Device"
  Identifier "Dummy"
  Driver "dummy"
EndSection**

Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
SubSection "Display"
    Viewport   0 0
    Depth     1
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     4
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     8
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     15
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     16
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     24
EndSubSection
EndSection

**Section "Screen"
Identifier "Screen1"
Device "Dummy"
Monitor "Monitor1
EndSection**

您可能不需要那里的所有内容,只需运行X -configure即可进行系统自动配置,然后将虚拟部分(星号之间的内容)添加到文件中。xorg.conf中虚拟屏幕的分辨率应为您的主显示器宽度+平板电脑的分辨率宽度,在我的情况下为1680 + 1024 = 2704,在您的情况下保持主显示器的高度为1050。重新启动X服务器/重启/拉动电源插头,无论如何更适合您:)。

通过执行x11vnc

x11vnc -rfbauth ~/.vnc/passwd -clip 1024x550+1680+0

此处的分辨率应为平板电脑宽度x平板电脑高度+主显示屏宽度+ 0

使用androidVNC客户端连接到PC,请确保启用localmouse选项。就是这样,现在感觉让linux运行在android上很奇怪:)


0

我对这里列出的其他技术有很多疑问。我希望我有一个更好的解决方案,但是我缓慢而简单的解决方案是一个很好的起点。

对于VNC服务器,我尝试了该vncserver软件包,但屏幕将变黑,并且我必须重新启动gdm才能使一切恢复正常。我切换到tightvncserver它,并且没有配置就第一次工作了。

为了在屏幕之间共享鼠标/键盘,我使用了x2vnc。这也可以与win2vnc一起使用,以与Linux PC旁边的Windows PC共享鼠标/键盘。

最终命令:

sudo apt-get install tightvncserver
tightvncserver
sudo apt-get install x2vnc
x2vnc -east localhost:1

此时,您应该可以通过连接到来在VNC程序中打开第二个屏幕YOUR_IP_ADDRESS:1。要在VNC屏幕上启动程序,请打开终端,设置DISPLAY,然后运行命令。例如,要xterm在VNC“屏幕”上打开,请运行:

export DISPLAY=:1
xterm

使用这种方法,第二个屏幕非常慢。尽管如此,我尝试的许多其他选项都陷入了僵局,而这个选项根本没有任何配置。


0

对于仍然对这个主题感到疑惑的人:xrandr和x11vnc剪辑确实有效;为了使鼠标能够到达该位置,您需要使用平移参数来设置鼠标跟踪区域:

xrandr --fb 2560x1024 --output LVDS1 --panning 1280x1024+0+0/2560x1024+0+0

然后在运行xvnc时使用:

x11vnc -clip 1280x1024+1281+0 -nocursorshape -nocursorpos

这将阻止VNC尝试使用其自己的光标跟踪,并将光标绘制为屏幕图像的一部分。

我在这里做笔记http://mikescodeoddities.blogspot.ae/2015/04/android-tablet-as-second-ubuntu-screen.html


0

TL; DR

    $ sudo apt-get install x11vnc
    $ WINDOW_ID=$(xwininfo | awk '/Window.id/{print $4}') && x11vnc -viewonly -nopw -avahi -id $WINDOW_ID >/dev/null 2>&1 &

现在,只需单击要共享的窗口。


完整

我有一个iPad和Chromebook,然后我想用他们作为我的显示器,只是USO一些终端命令htopiptstatenmon,等。因此,我是个懒惰的人,并使用:

  1. 包安装: sudo apt-get install x11vnc
  2. 打开一些终端,然后放置xwininfo | awk '/Window.id/{print $4}'并在要共享的窗口中单击。输出将类似于:

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. 现在您可以开始x11vnc会话:

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. 调整窗口大小(0x4402f34),以获取最佳图像。

心灵相关的端口您的会话5900 -> :05901 -:15902 -> :2...

此外,可以与X11应用程序(Firefox,OpenOffice等)配合使用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.