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.c
e 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 --version
em /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 :0
e 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 ~/.xinitrc
arquivo 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 directory
que 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.