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

Mar*_*k B 86 multiple-monitors android

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

你怎么能在 Ubuntu 上重新创建这个设置?

Eli*_*kas 40

下面介绍如何将 Android 用作第二台显示器、共享鼠标、在平板电脑和电脑屏幕之间拖动窗口

可以在此处找到本教程的原始来源。

A. 教程

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

我的平板电脑的分辨率是 1280x1024。(如果您的平板电脑的分辨率不同,您可以更改命令中的12801024LVDS1如果默认显示器的名称不同,您可能还需要更改)。

在终端运行:

  1. 美元gtf 1280 1024 60

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

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

    (注意,在下一步中,您可能还需要使用您在 xrandr 输出中找到的内容更改 VIRTUAL1 作为新模式的输出)

  3. xrandr --addmode VIRTUAL1 1280x1024_60.00

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

步骤 2. 为虚拟显示器启用远程桌面

启动 VNC:

  1. x11vnc -clip 1280x1024+0+0

步骤 3. 连接到远程桌面

  1. 在与计算机相同的本地网络上获取平板电脑。通过连接到同一个 Wi-Fi 或使用一个设备创建一个热点,然后再连接到另一个设备(USB 网络共享)。

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

  3. 将 VNC 应用程序下载到平板电脑,然后使用应用程序中的计算机 IP(并选择端口5900)连接到计算机。

通知

  • 致谢:kjans,内容已编辑。
  • 警告:数据未加密!(与 Wi-Fi 和非 LAN 使用相关)
  • 警告:来自您连接的所有网络的设备可能会到达端口 5900,因此连接到您的显示器!在路由器后面通常会限制它只能在您的本地网络中访问(如果您使用的是 USB 连接,您可以-listen <IP_ADDR>选择完全阻止本地网络x11vnc<IP_ADDR>USB 网络接口在哪里))。
  • 将 1 - 4 步中的任何一步运行两次可能会输出错误。
  • 使用成功后,必须重复5. 步骤才能再次连接。

B. 脚本

本教程作为脚本实现(更改用于 USB 电缆的 IP 或删除它并取消注释该行以用于 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
Run Code Online (Sandbox Code Playgroud)

  • `xrandr: cannot find output "VIRTUAL1"` 在我输入数字 3 时被返回。有什么想法吗? (11认同)
  • `xrandr:找不到从`xrandr --addmode VIRTUAL1 1280x800_60.00`返回的输出“VIRTUAL1”` (3认同)
  • 这应该被接受的答案。 (2认同)

Ali*_*ton 34

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

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

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

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

  • 有一个我们可以遵循的分步示例会很有用 (33认同)
  • 可以添加一个例子请 (14认同)
  • 这将如何使平板电脑成为*第二*屏幕 - 就像在更大的屏幕空间中一样? (3认同)

小智 19

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

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

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

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

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

应该是这样。

  • 多亏了[这篇文章](http://mikescodeoddities.blogspot.fr/2015/04/android-tablet-as-second-ubuntu-screen.html?showComment=1455126322826#c3505424202690276490),我终于让它工作了:` sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0`(我错过了`--panning`选项) (3认同)
  • 这似乎是一种比协同技巧更无缝的方法,很好!我很好奇额外的虚拟空间将如何与我的平铺窗口管理器交互。稍后会试一试并报告。 (2认同)
  • 失败从胜利的口中夺走。鼠标指针不允许离开主屏幕。:( (2认同)
  • 看起来很有趣。我实际上设法在那里有一个双屏,但不幸的是,命令 `xrandr --fb 2560x1024` 似乎没有任何效果。这意味着我的屏幕不能超过我的主显示器尺寸...... :( (2认同)

小智 15

  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
    
    Run Code Online (Sandbox Code Playgroud)

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

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

  • 我已经知道`x2x`,通过在谷歌上搜索*x2x android* 来找到这篇文章......但是对于`.vnc/xstartup`,特别是对于`unset DBUS_SESSION_BUS_ADDRESS`,+1!小而丰富且非常有用的帖子,谢谢! (2认同)

小智 8

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

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

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

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

3:运行两个vncservers,每个屏幕一个,然后用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
Run Code Online (Sandbox Code Playgroud)

青年会


Bum*_*Kim 6

我制作了一个简单的 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
Run Code Online (Sandbox Code Playgroud)

  • @sbergeron 我明白了。我在这里包含了原始代码。 (2认同)

Pau*_*ERT 5

只想补充一点,如果您想在 android 设备和计算机之间建立更好的连接,可以使用 USB:

确保您已启用 USB 调试(https://developer.android.com/studio/debug/dev-options

然后通过安装 adb sudo apt-get install android-tools-adb

然后,如果您的 VNC 服务器在您的计算机上的 5900 端口上运行,请使用 adb 和:

adb 反向 tcp:5900 tcp:5900

这样你的电脑 5900 端口也可以通过你的 android 设备访问,localhost:5900所以配置你的 android VNC 客户端来连接localhost:5900而不是your-computer-IP-addres:5900


归档时间:

查看次数:

143282 次

最近记录:

4 年,11 月 前