问题描述
我注意到人们使用适用于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 --fb
和x11vnc --clip
共同构成一个杀手组合。
通过recognitium链接的线程有一个非常有趣的想法,不确定他是否意味着这个,因为我找不到他指出的作者,也因为我在那里的论坛帖子上跟进,我将单独发布,而不是作为编辑:
-
首先,我们假设主机的屏幕分辨率为1280×800,而您希望将桌面扩展到VNC的辅助机器的屏幕分辨率为1280×1024,并且您希望扩展屏幕位于主屏幕的右侧。虚拟屏幕需要为
1280x800 + 1280x1024 = 2560x1024
。 (水平延伸并使垂直分辨率更大)所以运行xrandr --fb 2560x1024
。 -
现在,屏幕比主显示器大,你必须确保没有平移或任何其他不需要的”feature”激活,并且主显示器左上角的坐标是0x0。
-
x11vnc -clip 1280x1024+1281+0
加上任何其他x11vnc选项来品尝:)
这应该是它。
第三种解决方法
-
安装
vnc4server
和x2x
。 -
然后,设置
.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)。
-
要启动vnc服务器,请使用
vnc4server -geometry 800x480
命令。当然,您必须设置平板电脑的分辨率,而不是800×480。 -
启动
x2x -east -to :1
。该命令表示您的计算机显示为:1显示在屏幕右侧(如果您希望它位于左侧,请使用-west
选项)。您将无法将应用程序从一个显示器移动到另一个显示器,但您可以使用一个鼠标和一个键盘来控制它们。 -
从平板电脑连接到使用
vnc4server
创建的显示器(端口号为5900 +显示号码(例如显示:1端口号为5901)(显示号码显示在vnc4server
的输出中))。 -
要退出
x2x
,请按Ctrl-C
。或者,您可以在后台启动它(x2x -east -to :1 &
)。然后你首先需要将它移动到前景(fg
),或者用kill $!
杀死它(要小心,它会杀死在后台启动的最后一个进程)。 -
要删除创建的显示,请调用
vnc4server -kill :1
,而不是:1
,您可以设置新显示的编号。
第四种方法
无法使其他答案有效,除了this,它连接完美。
它允许使用Android作为第二个显示器,共享鼠标,在平板电脑和计算机之间拖动窗口。
这是评论要求的step-by-step教程。
A.教程
1.创建一个监视器
(注意:更改1280
和1024
以更改默认的1280×1024分辨率设置。如果默认监视器的名称不同,您可能还需要更改LVDS1
)。
在终端运行:
-
$
gtf 1280 1024 60
。
输出中有一行类似于Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
。将Modeline
(不包括)后的所有内容复制到下一个命令中。
-
xrandr --newmode "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
-
xrandr --addmode VIRTUAL1 1280x1024_60.00
-
xrandr --output VIRTUAL1 --mode 1280x1024_60.00 --left-of LVDS1
2.启动VNC
-
x11vnc -clip 1280x1024+0+0
3.连接Android(LAN(Wi-Fi)或USB(电缆))
-
使用
ifconfig
(从LAN连接时)查找计算机的IP。 -
下载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
这个脚本的基本思想与其他脚本一样,运行xrandr
和x11vnc
,但我包含了你想要附加屏幕的选项。
#!/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