当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

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

你怎么能在Ubuntu上设置re-create?

最佳解决方法

获取Android的VNC客户端,在您的计算机上启动新的VNC服务器会话(不要只共享当前显示 – 使用vnc4server而不是x11vnc),从Android VNC客户端连接到它,并且(聪明的位)共享使用synergy在两个会话之间的PC键盘和鼠标。

所有必要的软件都可以在Ubuntu方面的标准存储库中找到,并且市场上有一些可用于Android的免费VNC客户端。

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

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

次佳解决方法

长话短说:xrandr --fbx11vnc --clip共同构成一个杀手组合。

通过recognitium链接的线程有一个非常有趣的想法,不确定他是否意味着这个,因为我找不到他指出的作者,也因为我在那里的论坛帖子上跟进,我将单独发布,而不是作为编辑:

  1. 首先,我们假设主机的屏幕分辨率为1280×800,而您希望将桌面扩展到VNC的辅助机器的屏幕分辨率为1280×1024,并且您希望扩展屏幕位于主屏幕的右侧。虚拟屏幕需要为1280x800 + 1280x1024 = 2560x1024。 (水平延伸并使垂直分辨率更大)所以运行xrandr --fb 2560x1024

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

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

这应该是它。

第三种解决方法

  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桌面(我不知道如何在vnc中启动gnome 3)。

  3. 要启动vnc服务器,请使用vnc4server -geometry 800x480命令。当然,您必须设置平板电脑的分辨率,而不是800×480。

  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,您可以设置新显示的编号。

第四种方法

无法使其他答案有效,除了this,它连接完美。

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

这是评论要求的step-by-step教程。

A.教程

1.创建一个监视器

(注意:更改12801024以更改默认的1280×1024分辨率设置。如果默认监视器的名称不同,您可能还需要更改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(电缆))

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

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

Notices

  • 致谢:kjans,内容已编辑。

  • 警告:数据未加密! (与Wi-Fi和not-LAN使用相关)

  • 警告:您连接的任何可以到达端口5900的网络都可以连接到您的显示器! (如果使用USB和限制接口将-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

第五种方法

原则上这可以使用xdmx(分布式多头X),它允许您使用在不同机器上运行的两个X-servers创建单个桌面。

原则上有三种情况是可能的,但没有一种情况像iDisplay一样无缝,因为它们都需要至少重新启动你的X-session。我无法完美地工作,但我正在运行Ubuntu 10.10并且由于各种原因无法升级。这三个是:

1:在Android上运行X-server(现在应用程序商店中有两个可用)并使用xdmx与您的台式机或笔记本电脑显示器结合使用。 – 对我来说不起作用,因为当指针移动到桌面的平板电脑部分时xdmx崩溃了。

2:在计算机上运行带有vnc后端的第二个X-server,使用xdmx将其与计算机屏幕合并到一个桌面,然后在平板电脑上使用vnc查看器查看虚拟部分 – 对我来说不起作用,因为xdmx需要全部x-servers具有相同的颜色视觉效果,这与vncserver和真实显示器不同,我无法说服vncserver进行更改。

3:运行两个vncservers,每个屏幕一个,然后用xdmx连接它们,并在相应的机器上用vncviewer查看每个部分。 – 这对我来说最接近工作,不幸的是inpout搞砸了。通过wifi,true-color也很慢。我用这个脚本启动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

因人而异

第六种方法

我使用xorg虚拟驱动程序和x11vnc -clip。鼠标点未粘在边上。

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

在第二个屏幕上有用于虚拟驱动程序的/etc/X11/xorg.conf


Section "Device"
        Identifier      "Configured Video Device"
    Driver "radeon"         #CHANGE THIS
EndSection

Section "Monitor"
        Identifier      "Configured Monitor"
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        Device          "Configured Video Device"
EndSection


##Xdummy:##
Section "Device"
  Identifier "Videocard0"
  Driver "dummy"
  #VideoRam 4096000
  VideoRam 256000
EndSection

##Xdummy:##
Section "Monitor"
  Identifier "Monitor0"
#  HorizSync   10.0 - 300.0
#  VertRefresh 10.0 - 200.0
#  DisplaySize 4335 1084
EndSection

##Xdummy:##
Section "Screen"
  Identifier "Screen0"
  Device "Videocard0"
  Monitor "Monitor0"
EndSection



Section "ServerLayout"
  Identifier   "dummy_layout"
  Screen       0 "Default Screen"
  Screen       1 "screen0" rightof "Default Screen"
    Option         "Xinerama" "1"
EndSection

然后登录X会话并运行:

x11vnc -clip 1024x768+1280+0

第七种方法

我制作了一个简单的bash脚本,使平板电脑成为第二个显示器。在我的blog post中复制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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1467.html,未经允许,请勿转载。