Como você usa um tablet Android como um segundo monitor?

63

Notei pessoas usando um produto para Windows e Mac chamado iDisplay, que permite usar o Android ou iPad como um monitor secundário. Parece uma ótima idéia e algo que pode ser feito no Ubuntu. Infelizmente, não tenho ideia de como começar.

Como você pode recriar essa configuração no Ubuntu?

Mark B
fonte
2
Pergunta semelhante atualmente em discussão nos fóruns: Use o VNC como um segundo monitor
ændrük
11
Mesma pergunta no
Superusuário
11
Ok, as soluções apresentadas aqui são de rede. Mas existe alguma chance de conseguir isso simplesmente falsificando um monitor via usb, para obter a mesma experiência que um monitor, assim como o Duet ?
Augustin Riedinger
Portanto, Duet pode estar (essencialmente) imitando um chip DisplayLink em software - não sei, mas esse é o meu palpite. Eu nem tentaria. O que eu tentaria (e não é difícil) é a rede USB: amarre (ou amarre reversamente) o tablet e a rede.
Chx

Respostas:

28

Obtenha um cliente VNC para Android, inicie uma nova sessão do servidor VNC no seu computador (não compartilhe apenas a exibição atual - use vnc4server e não x11vnc), conecte-a a partir do cliente VNC Android e (o mais inteligente) compartilhe o Teclado e mouse para PC entre as duas sessões usando sinergia.

Todo o software necessário para fazer isso está disponível nos repositórios padrão do lado do Ubuntu, e há alguns clientes VNC gratuitos disponíveis para Android no mercado.

Você não poderá arrastar janelas pelas telas usando esse método. Para isso, acho que você precisaria usar o Xdmx para unir as duas sessões. Isso é muito mais difícil e provavelmente faria com que você perdesse a aceleração 3D.

Lembre-se também de que a sinergia e o vnc não usam criptografia por padrão; portanto, você precisa encapsular as conexões se não estiver em uma rede confiável.

Alistair Buxton
fonte
9
pode adicionar um exemplo, por favor
rkmax
19
que seria útil ter um exemplo passo a passo que pode seguir
OganM
2
Como isso tornaria o tablet uma segunda tela - como em mais espaço na tela?
NoBugs
Eu tive problemas com o vncserver e o Gnome 3. Toda vez que eu tentava iniciar o vncserver, a tela ficava preta. Acabei usando tightvncserver (também nos repositórios do Ubuntu) e funcionou na primeira tentativa com absolutamente nenhuma configuração.
Terceira
É mais uma solução KVM do tipo comutador ou controle remoto do que um segundo monitor. Sim, ele fornece outro conjunto de entradas, mas a saída é a mesma nos dois dispositivos - você não pode nem trocar o tablet para uma área de trabalho virtual diferente da tela principal, ativando um deles. Não responde à pergunta. A pergunta é sobre o uso de dispositivos móveis para obter mais espaço de saída, e não sobre entrada.
Cprn
17

tl; dr: xrandr --fbe x11vnc --clipjuntos fazem um combo matador.

O tópico vinculado pelo reconhecitium tem uma ideia realmente interessante, não tenho certeza se ele quis dizer este porque não consegui encontrar o autor que ele indicou e também porque segui o post do fórum lá, publicarei separadamente e não como uma edição :

  1. Primeiro, vamos supor que a máquina principal tenha uma resolução de tela de 1280x800 e a máquina secundária na qual você deseja estender sua área de trabalho para o VNC tenha uma resolução de tela de 1280x1024 e você deseja que a tela estendida fique à direita da tela principal. A tela virtual precisa ser 1280x800 + 1280x1024 = 2560x1024. (estenda-o horizontalmente e torne a resolução vertical a maior das duas) Então corra xrandr --fb 2560x1024.

  2. Agora, que a tela é maior que o monitor principal, você deve garantir que não haja movimento panorâmico ou qualquer outro "recurso" indesejado ativado e que as coordenadas do canto superior esquerdo do monitor principal sejam 0x0.

  3. x11vnc -clip 1280x1024+1281+0 além de adicionar outras opções x11vnc a gosto :)

Deve ser isso.

chx
fonte
2
Parece uma maneira muito mais simples de fazer isso do que o truque da Synergy, bom! Estou curioso para saber como o espaço virtual extra irá interagir com o meu gerenciador de janelas lado a lado. Daremos uma chance a isso daqui a pouco e informaremos de volta.
Ibrahim
2
Derrota arrebatada das garras da vitória. O ponteiro do mouse não tem permissão para sair da tela principal. :(
Gringo Suave
11
Parece interessante. Na verdade, eu consegui ter uma tela dupla lá, mas, infelizmente, o comando xrandr --fb 2560x1024não parece ter efeito. O que significa que não posso ter uma tela maior que o tamanho do meu monitor principal ... :(
Augustin Riedinger,
11
Eu li mais sobre isso . Ocorreu um 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 erro. Meu palpite é que meu laptop não suporta resolução mais alta que a nativa 1600*900. Significando que esta solução não pode funcionar. Vou ter que encontrar uma solução de tela dupla.
Augustin Riedinger 10/02
3
Eu finalmente fez o trabalho graças a este post através da execução: sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0(eu estava perdendo a --panningopção)
Augustin Riedinger
16

Não foi possível fazer as outras respostas funcionarem, exceto esta , que se conectou perfeitamente.

Permite usar o Android como um segundo monitor, compartilhar o mouse, arrastar janelas entre o tablet e o computador.

Aqui está um tutorial passo a passo, solicitado pelos comentários.

A. Tutorial

1. Crie um novo monitor virtual

A resolução do meu tablet é 1280x1024. (Você pode mudar 1280e 1024em todo os comandos se o seu tablet está em resolução diferente. Você também pode precisar de mudar LVDS1se o nome do monitor padrão é diferente).

Execute no terminal:

  1. $ gtf 1280 1024 60.

Há uma linha na saída semelhante a Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync. Copie tudo após a palavra Modeline(exclua-a) no próximo comando.

  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. Inicie o VNC

  1. x11vnc -clip 1280x1024+0+0

3. Conecte-se ao Android (LAN (Wi-Fi) ou USB (cabo))

  1. Encontre o IP do seu computador usando ifconfig(ao conectar pela LAN).

  2. Baixe um aplicativo VNC e conecte-se ao computador usando seu IP (e selecionando a porta 5900) no aplicativo.

Avisos

  • Créditos: kjans , conteúdo editado.
  • AVISO : Os dados não são criptografados! (Relevante para uso de Wi-Fi e não de LAN)
  • AVISO : Qualquer rede conectada que atinja a porta 5900 pode se conectar ao seu monitor! (Não é um problema se estiver usando a -listen <IP_ADDR>opção de adição de interface de restrição USB AND x11vnc(onde <IP_ADDR>é o endereço do computador na rede que você deseja conceder acesso exclusivo))
  • A execução de uma das etapas de 1 a 4 duas vezes pode gerar erros.
  • Após o uso bem-sucedido, a etapa 5. deve ser repetida para outra conexão.

B. Script

O tutorial implementado como um script (altere o IP para uso com o cabo USB OU exclua-o e remova o comentário da linha a ser usada com 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
Elijas
fonte
@ Prometheus, o x11vnc -clip 1280x1024+0+0pode ser substituído por x11vnc -clip xinerama1. Além disso, isso --left-of LVDS1não é estritamente necessário se você usar o Monitorsaplicativo de configurações para posicionar o monitor extra onde quiser.
31916 LeoRochael
6
xrandr: cannot find output "VIRTUAL1"foi retornado quando digito o número 3. Alguma idéia?
dat tutbrus
3
xrandr: cannot find output "VIRTUAL1"retornado dexrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis 01/08/19
Isso funciona, exceto que você deve ter uma saída não utilizada capaz do modo de vídeo de destino para que isso funcione. VIRTUAL1parece ser um espaço reservado para essa saída, não algo presente em um sistema típico.
Ruslan
11
@cprn Sim, você pode compartilhar o cursor do mouse e arrastar janelas. É como se você tivesse um segundo monitor conectado
Elijas
13
  1. Instale vnc4servere x2x.
  2. Em seguida, configure um .vnc/xstartuparquivo de configuração. O meu fica assim

    #!/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
    

    Ele lança o desktop gnome-fallback (não sei como fazer o gnome 3 ser lançado no vnc).

  3. Para iniciar o servidor vnc, use o vnc4server -geometry 800x480comando Obviamente, em vez de 800 x 480, você precisa definir a resolução do seu tablet.
  4. Lançamento x2x -east -to :1. Esse comando diz ao seu computador para agir como se a tela: 1 estivesse à direita da tela (use a -westopção se desejar que esteja à esquerda). Você não poderá mover aplicativos de um monitor para outro, mas poderá usar um mouse e um teclado para controlar os dois.
  5. Conecte-se à tela criada com o vnc4serverseu tablet (o número da porta é 5900 + número da tela (por exemplo, para a tela: 1 número da porta será 5901) (o número da tela é mostrado na vnc4serversaída do equipamento)).
  6. Para sair de x2x, pressione Ctrl-C. Como alternativa, você pode iniciá-lo em segundo plano ( x2x -east -to :1 &). Então você primeiro precisará movê-lo para o primeiro plano ( fg) ou matá-lo com kill $!(tenha cuidado, pois mata o último processo iniciado em segundo plano).
  7. Para remover a tela criada, ligue para vnc4server -kill :1onde, em vez de :1você, defina o número da sua nova tela.
passick
fonte
11
Obrigado por x2x ... Por que ninguém mais menciona isso em toda a internet ??? Me salvou muito tempo. O Synergy requer cyanogenmod ou similar no seu tablet. Também ninguém menciona isso.
Stefanos Kalantzis
11
Eu já sei x2x, encontrar este post pesquisando android x2x no google ... Mas +1 para .vnc/xstartup, especialmente para unset DBUS_SESSION_BUS_ADDRESS!! Post pequeno, mas rico e muito útil, obrigado!
F. Hauri
7

Em princípio, isso é possível usando o xdmx (multihead X distribuído), que permite criar uma única área de trabalho usando dois servidores X rodando em máquinas separadas.

Em princípio, três cenários são possíveis, mas nenhum é tão transparente quanto o iDisplay, porque todos exigem a reinicialização da sessão X, pelo menos. Não consegui funcionar perfeitamente, mas estou executando o Ubuntu 10.10 e não posso atualizar por vários motivos. Os três são:

1: execute um servidor X no Android (existem dois disponíveis na App Store) e use o xdmx para combinar com a tela do seu desktop ou laptop. - não funcionou para mim porque o xdmx travou quando o ponteiro foi para a parte da área de trabalho do tablet.

2: execute um segundo servidor X com back-end vnc no computador, use o xdmx para combiná-lo em uma área de trabalho com a tela do computador e veja a parte virtual com um visualizador vnc no tablet - não funcionou para mim porque o xdmx requer que todos os x-servers tenham visuais da mesma cor, o que não é o caso do vncserver e da tela real, e não fui capaz de convencer o vncserver a mudar.

3: execute dois vncservers, um para cada tela, conecte-os ao xdmx e observe cada parte com um vncviewer na respectiva máquina. - Isso chegou mais perto de trabalhar para mim, infelizmente a entrada foi desarrumada. também era bastante lento em cores verdadeiras por wifi. Eu usei esse script para iniciar o xdmx e os 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

YMMV

Felix
fonte
3

Eu criei um script bash simples para transformar um tablet em um segundo monitor. Copie ipad_monitor.sh(não se preocupe. Ele também funciona com Android) no meu blog .

O que é diferente do outro post é que você pode definir a posição da segunda tela com argumentos adicionais com muita facilidade.

Edit: Eu incluí o original ipad_monitor.shaqui. execute este comando como:

  • ./ipad_monitor.sh --right ou ./ipad_monitor.sh --left
  • ./ipad_monitor.sh --right --portrait
  • ./ipad_monitor.sh --right --portrait --hidpi

A idéia básica deste script é o mesmo que os outros, correndo xrandre x11vncmas eu incluiu opções como qual lado você gostaria de anexar a tela.

#!/bin/sh
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <[email protected]> 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
Bumsik Kim
fonte
11
Você tem um nome para o script / aplicativo ou qualquer link alternativo que possa postar para ajudar a evitar a podridão do link? Aqui, geralmente tentamos ser o mais independente possível para não depender de outros sites que permanecem ativos, especialmente se esses sites contiverem a maior parte das informações que seriam relevantes para uma resposta em que essas informações não sejam realmente colocadas na resposta .
sbergeron
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. - Do comentário
anonymous2
2
@bergeron eu vejo. Eu incluo o código original aqui.
Bumsik Kim
11
@ anonymous2 Você está certo. Eu incluí o código bash aqui.
Bumsik Kim
Ah, muito melhor. Eu acho que isso deve ser capaz de permanecer assim.
anonymous2
2

Eu uso o driver fictício do xorg e o x11vnc -clip. O ponto do mouse não está preso na borda.

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

Há o /etc/X11/xorg.confdriver for dummy na segunda tela:

Seção "Dispositivo"
        Identificador "Dispositivo de vídeo configurado"
    Driver "radeon" # ALTERAR ESTE
EndSection

Seção "Monitor"
        Identificador "Monitor configurado"
EndSection

Seção "Tela"
        Identificador "Tela padrão"
        Monitor "Monitor configurado"
        Dispositivo "Dispositivo de vídeo configurado"
EndSection


## Xdummy: ##
Seção "Dispositivo"
  Identificador "Videocard0"
  Driver "manequim"
  #VideoRam 4096000
  VideoRam 256000
EndSection

## Xdummy: ##
Seção "Monitor"
  Identificador "Monitor0"
# HorizSync 10.0 - 300.0
# VertRefresh 10.0 - 200.0
# DisplaySize 4335 1084
EndSection

## Xdummy: ##
Seção "Tela"
  Identificador "Screen0"
  Dispositivo "Videocard0"
  Monitor "Monitor0"
EndSection



Seção "ServerLayout"
  Identificador "dummy_layout"
  Tela 0 "Tela padrão"
  Tela 1 "tela0" à direita de "Tela padrão"
    Opção "Xinerama" "1"
EndSection

Então entre na sessão X e execute:

x11vnc -clip 1024x768+1280+0
miragem
fonte
Alguma maneira de fazer isso sem o xorg.conf? Se eu criar um no meu computador, meus gráficos ficarão completamente confusos.
Daboross 28/05
O Xinerama ainda é suportado? E o xrandr?
Gringo Suave
1

Estas instruções são para criar uma tela "adicional" para sua máquina Linux usando um tablet ou qualquer computador através de um cliente VNC.

Eu fiz essas etapas no Mageia3 32Bit (não tentei 64 bits), mas também deve ser semelhante para outras distribuições (por exemplo, Ubuntu).

Verifique se você possui todos os pacotes necessários com o seguinte comando do terminal:

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

Depois de ter todos os pacotes acima, emita estes comandos:

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

Se você não receber nenhum erro, corrija o Xdmx (basta colocar, ele está "quebrado" há algum tempo):

abra /usr/share/x11-server-sources/hw/dmx/input/dmxevents.ce altere a linha 730: altere isto:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

para isso:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

Se a linha 730 for diferente, use esta seção para encontrar a linha correta: Seção original - linha para alterar marcada com *

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

Verifique sua versão do Xdmx executando ./configure --versionem /usr/share/x11-server-source/, por Xdmx 1,13 e mais velhos você também tem que fazer essas alterações (de 1,14 e mais recente você pode saltar para o "fazer" passo abaixo):

aberto /usr/share/x11-server-sources/dix/getevents.c, linha 1395: altere isso:

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

Para isso:

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

(Seção original - linha a ser alterada marcada com *)

    /* 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);

aberto /usr/share/x11-server-sources/Xext/xtest.c, linha 311: altere isso:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

para isso:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(seção original - linha a ser alterada marcada com *)

       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, linha 73: adicione esta linha após a linha que começa com #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

Depois de fazer as alterações acima, execute novamente (pol /usr/share/x11-server-sources/):

make

Você deve ter um novo arquivo Xdmx no /usr/share/x11-server-sources/hw/dmx/. Precisamos instalá-lo globalmente para facilitar, então recomendo renomear o seu já existente:

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

e copie o novo no lugar dele:

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

Agora você está pronto para fazer sua primeira avaliação, os seguintes comandos permitem manter a tela principal / existente ( :0) em execução e abrir uma nova tela com o suporte para vários monitores. Estou usando o icewm com esses comandos para torná-lo um pouco mais leve (eu uso o KDE na tela principal :0e abro qualquer aplicativo grande com vários monitores no novo monitor com várias cabeças). Você pode definitivamente criar um script desses comandos para facilitar o uso (foi o que eu fiz) - Qualquer um desses comandos pode ser executado no console e / ou na janela do terminal de qualquer monitor, o único requisito é que eles sejam executados em ordem.

Este comando cria sua nova tela como um buffer de quadro para sua tela VNC :2(ajuste o tamanho da tela conforme desejado):

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

Isso inicia uma nova sessão leve do X em sua tela física como tela :1(existem diferentes maneiras de fazer isso):

startx 'icewm' -- :1

Este comando inicia a exibição múltipla entre sua tela física e a tela virtual e inicia o icewm para o gerenciador de janelas:

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

Agora abra uma janela do terminal e inicie o servidor vnc (altere a senha conforme desejado):

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

A única coisa que resta a fazer agora é iniciar o seu cliente VNC e conectar-se ao seu VNC - talvez seja necessário desativar ou adicionar uma exceção ao seu firewall na porta 5900 para que você possa se conectar a ele. Outro aspecto a ter em mente é que alguns clientes VNC não exibem a posição do cursor remoto. Certifico que o "Mocha VNC" para iOS funciona muito bem se você desativar a opção "mouse local".

Desfrute de arrastar janelas entre o monitor principal e o novo segundo monitor virtual (além de poder usar o tablet para clicar / digitar itens no segundo monitor).

Para fechar o Xdmx, pressione Ctrl+ Alt+ Backspaceduas vezes.

Automação:

Eu uso esse script bash para iniciar todo o processo (também mata o Xvfb na saída):

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

Então eu tenho um ~/.xinitrcarquivo personalizado com isso:

#!/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

Solução de problemas:

  • Ao executar o Xdmx, se você receber um erro dizendo sh: /usr/local/bin/xkbcomp: No such file or directoryque pode ser necessário executar cd /usr/local/bin" and "ln -s /bin/xkbcomp:, tente o Xdmx novamente.

  • CtrlO + Alt+ F1through F7deve funcionar no Xdmx para alternar para outros consoles / xsessions, mas por algum motivo não funcionar, o que faço é simplesmente executar sudo chvt X(onde X é um número de console / xsession) para alternar para a tela principal. Além disso, ao voltar para o Xdmx, você pode encontrar alguns problemas de desenho em qualquer janela aberta, basta clicar na barra de tarefas para ocultar / mostrar a janela novamente, forçando um redesenho.

LinuxNewb
fonte
0

Obrigado pelo tutorial pessoal, vou compartilhar o que funcionou para mim no Ubuntu 14.04

Obtenha o AndroidVNC aqui para o seu tablet

Obtenha o x11vnc para o seu pc Ubuntu executando

sudo apt-get install x11vnc

Eu tive que usar o método de driver fictício do Xorg. Aqui está a aparência do meu arquivo /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**

Você provavelmente não precisará de tudo, basta executar o X -configure para obter a configuração automática do sistema e adicionar as seções fictícias (itens entre os asteriscos) ao seu arquivo. A resolução da tela fictícia no xorg.conf deve ser a largura do monitor principal + a largura da resolução do tablet, no meu caso 1680 + 1024 = 2704 mantenha a altura do monitor principal, 1050 no meu caso. combina com você mais :).

Execute o x11vnc executando

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

Aqui a resolução deve ser a largura do seu tablet x altura do tablet + largura da tela principal + 0

Conecte-se ao seu PC usando o cliente androidVNC, ative a opção localmouse. Deve ser isso, agora sinta a estranheza de ter o Linux executado no Android :)

Mathieu Grenier
fonte
0

Eu tive muitos problemas com as outras técnicas listadas aqui. Eu gostaria de ter uma solução melhor, mas minha solução lenta e simples é um bom ponto de partida.

Para o servidor VNC, tentei o vncserverpacote, mas a tela ficaria preta e eu teria que reiniciar gdmpara que tudo funcionasse novamente. Eu mudei para tightvncservere funcionou pela primeira vez sem nenhuma configuração.

Para compartilhar o mouse / teclado entre as telas, usei x2vnc . Isso também pode ser usado com o win2vnc para compartilhar o mouse / teclado com um PC com Windows próximo ao seu PC com Linux.

Comandos finais:

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

Nesse ponto, você poderá abrir a segunda tela em um programa VNC conectando-se a YOUR_IP_ADDRESS:1. Para iniciar um programa na tela VNC, abra um terminal, defina DISPLAYe execute o comando. Por exemplo, para abrir xtermna "tela" do VNC, execute:

export DISPLAY=:1
xterm

Usando essa abordagem, a segunda tela é bem lenta. Ainda assim, muitas das outras opções que tentei chegaram a becos sem saída, e essa funcionou sem nenhuma configuração.

terceiro
fonte
0

Para quem ainda está se perguntando sobre esse tópico: o clipe xrandr e x11vnc funciona; para permitir que o mouse chegue lá, você precisa usar o argumento de deslocamento para definir a área de rastreamento do mouse:

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

Então, ao executar o xvnc, use:

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

Isso impede que o VNC tente usar seu próprio rastreamento de cursor e pinta o cursor como parte da imagem da tela.

Fiz anotações aqui http://mikescodeoddities.blogspot.ae/2015/04/android-tablet-as-second-ubuntu-screen.html

Mike Dawson
fonte
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 &

Agora, basta clicar na janela que deseja compartilhar.


COMPLETO :

Eu tenho um iPad e Chromebook e eu gostaria de usá-los como meus monitores, apenas para USO alguns comandos do terminal htop, iptstate, nmon, etc. Então, eu sou preguiçoso e fiz isso usando:

  1. Instalação do pacote: sudo apt-get install x11vnc
  2. Abra um terminal e coloque xwininfo | awk '/Window.id/{print $4}'e clique na janela que deseja compartilhar. A saída será algo como:

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. Agora você pode iniciar sua x11vncsessão:

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. Redimensione a janela (0x4402f34) para ter a melhor imagem possível.

Cuidado com o associado porta de sua sessão : 5900 -> :0, 5901 -:1, 5902 -> :2...

Além disso, funciona bem com aplicativos X11: Firefox, OpenOffice, etc.

Antonio Feitosa
fonte
0

Use vnc_virtual_display_linker

A ferramenta configura um segundo monitor virtual para conexão com o VNC, conforme descrito em muitas das respostas anteriores. Ele ainda suporta conexões de dispositivos Android usando um cabo USB.

Falko Menge
fonte