Zauważyłem, że ludzie używają produktu dla systemu Windows i Mac o nazwie iDisplay, który pozwala używać Androida lub iPada jako dodatkowego wyświetlacza. Wydaje się, że to świetny pomysł i coś, co można zrobić na Ubuntu. Niestety nie mam pojęcia, jak zacząć.
Jak możesz ponownie utworzyć tę konfigurację na Ubuntu?
multiple-monitors
android
Mark B
źródło
źródło
Odpowiedzi:
Zdobądź klienta VNC dla Androida, uruchom nową sesję serwera VNC na swoim komputerze (nie udostępniaj tylko bieżącego ekranu - użyj vnc4server, a nie x11vnc), połącz się z nim z klienta Android VNC i (sprytny bit) udostępnij Klawiatura komputerowa i mysz pomiędzy dwiema sesjami za pomocą synergii.
Całe oprogramowanie potrzebne do tego jest dostępne w standardowych repozytoriach po stronie Ubuntu, a na rynku dostępnych jest kilka bezpłatnych klientów VNC dla Androida.
Przy użyciu tej metody nie będzie można przeciągać okien między ekranami. W tym celu myślę, że musiałbyś użyć Xdmx do połączenia dwóch sesji. Jest to o wiele trudniejsze i prawdopodobnie spowoduje utratę przyspieszenia 3D.
Należy również pamiętać, że synergia i vnc nie używają domyślnie szyfrowania, więc musisz tunelować połączenia, jeśli nie jesteś w zaufanej sieci.
źródło
tl; dr:
xrandr --fb
ix11vnc --clip
razem tworzą zabójczą kombinację.Wątek powiązany przez rozpoznanie ma naprawdę ciekawy pomysł, nie jestem pewien, czy miał na myśli ten, ponieważ nie mogłem znaleźć autora, którego wskazał, a także ponieważ śledziłem tam post na forum, opublikuję go osobno, a nie jako edycję :
Po pierwsze, załóżmy, że główny komputer ma rozdzielczość ekranu 1280 x 800, a drugi komputer, na którym chcesz rozszerzyć pulpit ponad VNC, ma rozdzielczość 1280 x 1024 i chcesz, aby ekran rozszerzony znajdował się po prawej stronie ekranu głównego. Wirtualny ekran musi być
1280x800 + 1280x1024 = 2560x1024
. (rozciągnij go w poziomie i zwiększ rozdzielczość pionową) Uruchom więcxrandr --fb 2560x1024
.Teraz, gdy ekran jest większy niż główny monitor, musisz upewnić się, że nie jest włączone panoramowanie ani żadna inna niepożądana „funkcja”, a także że współrzędne lewego górnego rogu głównego monitora wynoszą 0x0.
x11vnc -clip 1280x1024+1281+0
plus dodaj dowolne inne opcje x11vnc do smaku :)To powinno być to.
źródło
xrandr --fb 2560x1024
wydaje się nie mieć żadnego efektu. Co oznacza, że nie mogę mieć większego ekranu niż mój główny monitor ... :(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
błąd. Domyślam się, że mój laptop nie obsługuje wyższej rozdzielczości niż natywna1600*900
. Oznacza to, że to rozwiązanie nie może działać. Zamiast tego będę musiał znaleźć rozwiązanie z podwójnym ekranem.sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0
(brakowało mi--panning
opcji)Nie można sprawić, by pozostałe odpowiedzi działały, z wyjątkiem tego , które łączyło się bezbłędnie.
Pozwala używać Androida jako drugiego monitora, współdzielić mysz, przeciągać okna między tabletem a komputerem.
Oto samouczek krok po kroku, wymagany przez komentarze.
A. Samouczek
1. Utwórz nowy wirtualny monitor
Rozdzielczość mojego tabletu to 1280x1024. (Możesz zmienić
1280
i1024
wszędzie w poleceniach, jeśli tablet ma inną rozdzielczość. Może być także konieczna zmiana,LVDS1
jeśli domyślna nazwa monitora jest inna).Uruchom w terminalu:
gtf 1280 1024 60
.Wyjście zawiera linię podobną do
Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
. Skopiuj wszystko po słowieModeline
(wyklucz je) do następnego polecenia.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. Uruchom VNC
x11vnc -clip 1280x1024+0+0
3. Połącz z Androidem (LAN (Wi-Fi) lub USB (kabel))
Znajdź adres IP komputera za pomocą
ifconfig
(podczas łączenia z sieci LAN).Pobierz aplikację VNC i połącz się z komputerem za pomocą adresu IP (i wybierając port
5900
) w aplikacji.Powiadomienia
-listen <IP_ADDR>
opcję dodawania interfejsu dox11vnc
(gdzie<IP_ADDR>
jest adres komputera w sieci, do którego chcesz dać wyłączny dostęp))B. Skrypt
Samouczek zaimplementowany jako skrypt (Zmień adres IP do użycia z kablem USB LUB usuń go i odkomentuj linię do użycia z Wi-Fi).
źródło
x11vnc -clip 1280x1024+0+0
można go zastąpićx11vnc -clip xinerama1
. Ponadto--left-of LVDS1
nie jest to absolutnie konieczne, jeśli zamierzasz użyćMonitors
aplikacji do ustawiania dodatkowego monitora w dowolnym miejscu.xrandr: cannot find output "VIRTUAL1"
został zwrócony, gdy wpisałem numer 3. Jakieś pomysły?xrandr: cannot find output "VIRTUAL1"
wrócił zxrandr --addmode VIRTUAL1 1280x800_60.00
VIRTUAL1
wydaje się być symbolem zastępczym dla takiego wyjścia, a nie czymś obecnym w typowym systemie.vnc4server
ix2x
.Następnie skonfiguruj
.vnc/xstartup
plik konfiguracyjny. Mój wygląda takUruchamia gnome-fallback desktop (nie wiem, jak uruchomić gnome 3 w vnc).
vnc4server -geometry 800x480
polecenia. Oczywiście zamiast 800x480 musisz ustawić rozdzielczość swojego tabletu.x2x -east -to :1
. To polecenie mówi, że komputer działa tak, jakby wyświetlał: 1 znajdował się po prawej stronie ekranu (użyj-west
opcji, jeśli chcesz, aby był po lewej stronie). Nie będziesz mógł przenosić aplikacji z jednego ekranu na inny, ale możesz używać jednej myszy i jednej klawiatury do sterowania nimi obiema.vnc4server
tabletu (numer portu to 5900 + numer wyświetlacza (np. Dla wyświetlacza: 1 numer portu to 5901) (numer wyświetlacza jest wyświetlany navnc4server
wyjściu)).x2x
, naciśnijCtrl-C
. Alternatywnie możesz uruchomić go w tle (x2x -east -to :1 &
). Następnie musisz najpierw przenieść go na pierwszy plan (fg
) lub zabić gokill $!
(bądź ostrożny, zabija ostatni proces uruchomiony w tle).vnc4server -kill :1
, gdzie zamiast:1
ciebie możesz ustawić numer nowego wyświetlacza.źródło
x2x
, znajdź ten post, szukając x2x Androida w Google ... Ale +1 za.vnc/xstartup
, szczególnie zaunset DBUS_SESSION_BUS_ADDRESS
!! Mały, ale bogaty i bardzo przydatny post, dzięki!Jest to w zasadzie możliwe przy użyciu xdmx (rozproszony wielogłowicowy X), który pozwala utworzyć pojedynczy pulpit przy użyciu dwóch serwerów X działających na osobnych komputerach.
Zasadniczo możliwe są trzy scenariusze, ale żaden nie jest tak płynny jak iDisplay, ponieważ wszystkie wymagają co najmniej ponownego uruchomienia sesji X. Nie byłem w stanie sprawić, aby oba działały idealnie, ale używam Ubuntu 10.10 i nie mogę dokonać aktualizacji z różnych powodów. Te trzy to:
1: uruchom X-serwer na Androidzie (w sklepie App Store są już dostępne dwa) i użyj xdmx do połączenia z wyświetlaczem na komputerze stacjonarnym lub laptopie. - nie działało dla mnie, ponieważ xdmx zawiesił się, gdy wskaźnik przeniósł się do części tabletu na pulpicie.
2: uruchom drugi serwer X z zapleczem vnc na swoim komputerze, użyj xdmx, aby połączyć go w jeden pulpit z ekranem komputera, a następnie spójrz na część wirtualną z przeglądarką vnc na tablecie - nie działało dla mnie, ponieważ xdmx wymaga, aby wszystkie serwery X miały tę samą kolorystykę, czego nie ma w przypadku vncserver i prawdziwego wyświetlacza, i nie byłem w stanie przekonać vncserver do zmiany.
3: uruchom dwa serwery vncserver, po jednym dla każdego ekranu, a następnie połącz je za pomocą xdmx i spójrz na każdą część za pomocą vncviewer na odpowiednim komputerze. - Było to dla mnie najbliższe pracy, niestety inpout został pomieszany. był także dość powolny w prawdziwym kolorze przez Wi-Fi. Użyłem tego skryptu, aby uruchomić xdmx i vncs:
YMMV
źródło
Zrobiłem prosty skrypt bash, aby tablet był drugim wyświetlaczem. Skopiuj
ipad_monitor.sh
(nie martw się. Działa to również z Androidem) w moim blogu .Tym, co różni się od drugiego postu, jest to, że można bardzo łatwo ustawić pozycję drugiego ekranu z dodatkowym argumentem.
Edycja: zawarłem
ipad_monitor.sh
tutaj oryginał . uruchom następującą komendę:./ipad_monitor.sh --right
lub./ipad_monitor.sh --left
./ipad_monitor.sh --right --portrait
./ipad_monitor.sh --right --portrait --hidpi
Podstawową ideą tego skryptu jest taki sam jak inni, bieganie
xrandr
ix11vnc
jednak włączyłem opcje jak po której stronie, które chcesz dołączyć ekran.źródło
Używam fikcyjnego sterownika xorg i klipu x11vnc. Punkt myszy nie utknął na krawędzi.
Na
/etc/X11/xorg.conf
drugim ekranie znajduje się sterownik dla manekina:Następnie zaloguj się do sesji X i uruchom:
źródło
Te instrukcje mają na celu utworzenie „dodatkowego” ekranu dla twojego komputera z systemem Linux za pomocą tabletu lub dowolnego komputera za pośrednictwem klienta VNC.
Te kroki zrobiłem w Mageia3 32Bit (nie próbowałem wersji 64-bitowej), ale powinny być podobne dla innych dystrybucji (np. Ubuntu).
Upewnij się, że masz wszystkie wymagane pakiety za pomocą następującego polecenia terminala:
Po uzyskaniu wszystkich powyższych pakietów uruchom następujące polecenia:
Jeśli nie dostaniesz żadnych błędów, załataj Xdmx (mówiąc najprościej, już od jakiegoś czasu był „zepsuty”):
otwórz
/usr/share/x11-server-sources/hw/dmx/input/dmxevents.c
i zmień wiersz 730: zmień to:do tego:
JEŻELI linia 730 jest inna, użyj tej sekcji, aby znaleźć poprawną linię: Część oryginalna - linia do zmiany oznaczona *
Sprawdź swoją wersję Xdmx uruchamiając
./configure --version
w/usr/share/x11-server-source/
, na Xdmx 1.13 i starszych trzeba także dokonać tych zmian (na 1.14 i nowsze można przejść do „zrobić” krok poniżej):otwórz
/usr/share/x11-server-sources/dix/getevents.c
, linia 1395: zmień to:Do tego:
(Część oryginalna - wiersz do zmiany oznaczony *)
otwórz
/usr/share/x11-server-sources/Xext/xtest.c
, linia 311: zmień to:do tego:
(sekcja oryginalna - linia do zmiany oznaczona *)
/usr/share/x11-server-sources/include/input.h
, linia 73: Dodaj tę linię po linii zaczynającej się od#define POINTER_EMULATED
:Po wprowadzeniu powyższych zmian uruchom ponownie (w
/usr/share/x11-server-sources/
):Powinieneś mieć nowy plik Xdmx w
/usr/share/x11-server-sources/hw/dmx/
. Musimy zainstalować to na całym świecie, więc zalecamy zmianę nazwy istniejącego:i skopiuj nowy zamiast niego:
Teraz, gdy jesteś gotowy na pierwszą próbę, następujące polecenia pozwalają utrzymać główny / istniejący ekran (
:0
) i otworzyć nowy ekran z obsługą wielu monitorów. Używam icewm z tymi poleceniami, aby uczynić go nieco bardziej lekkim (używam KDE na głównym ekranie:0
i otwieram dowolną aplikację na wiele monitorów na nowym ekranie z wieloma głowicami). Zdecydowanie możesz napisać te polecenia w celu ułatwienia korzystania z nich (tak właśnie zrobiłem) - Każde z tych poleceń można wykonać w oknie konsoli i / lub terminalu dowolnego wyświetlacza, jedynym warunkiem jest wykonanie ich w kolejności.To polecenie tworzy nowy ekran jako bufor ramki dla wyświetlacza VNC
:2
(dostosuj rozmiar ekranu zgodnie z potrzebami):To rozpoczyna nową lekką sesję X na twoim fizycznym wyświetlaczu jako display
:1
(istnieją różne sposoby, aby to zrobić):To polecenie uruchamia wyświetlanie wielu ekranów fizycznych i wirtualnych oraz uruchamia icewm dla menedżera okien:
Teraz otwórz okno terminala i uruchom serwer VNC (zmień hasło według potrzeb):
Teraz pozostaje tylko odpalenie klienta VNC i połączenie się z VNC - może być konieczne wyłączenie lub dodanie wyjątku do zapory sieciowej do portu 5900, aby można było się z nią połączyć. Kolejną rzeczą do zapamiętania jest to, że niektórzy klienci VNC nie wyświetlają pozycji kursora zdalnego, zaświadczam, że „Mocha VNC” na iOS działa świetnie, jeśli wyłączysz opcję „mysz lokalna”.
Ciesz się przeciąganiem okien między głównym monitorem a nowym wirtualnym drugim monitorem (jednocześnie mając możliwość używania tabletu do klikania / pisania na rzeczach na drugim monitorze).
Aby zamknąć Xdmx, naciśnij dwukrotnie Ctrl+ Alt+ Backspace.
Automatyzacja:
Używam tego skryptu bash, aby rozpocząć cały proces (również zabija Xvfb przy wyjściu):
Następnie mam niestandardowy
~/.xinitrc
plik z tym:Rozwiązywanie problemów:
Podczas uruchamiania Xdmx, jeśli pojawi się błąd informujący
sh: /usr/local/bin/xkbcomp: No such file or directory
o konieczności wykonania poleceniacd /usr/local/bin" and "ln -s /bin/xkbcomp
:, a następnie spróbuj ponownie Xdmx.Ctrl+ Alt+ F1Przez F7ma pracować w Xdmx aby przełączyć się na inne konsole / xsessions ale z jakiegoś powodu nie działa, co zrobić, to po prostu wykonać
sudo chvt X
(gdzie X jest konsola / liczba xsession), aby przełączyć do mojego głównego wyświetlacza. Również po przełączeniu z powrotem na Xdmx mogą pojawić się problemy z rysowaniem w dowolnym otwartym oknie, po prostu klikam pasek zadań, aby ukryć / pokazać okno ponownie, zmuszając do przerysowania.źródło
Dzięki za samouczki, podzielę się tym, co dla mnie działało na Ubuntu 14.04
Pobierz AndroidVNC tutaj na swój tablet
Pobierz x11vnc na komputer z systemem Ubuntu, uruchamiając
Musiałem użyć metody fałszywego sterownika Xorg. Oto jak wygląda mój plik /etc/X11/xorg.conf:
Prawdopodobnie nie potrzebujesz wszystkiego tam, po prostu uruchom X -configure, aby uzyskać automatyczną konfigurację systemu i dodać do pliku fałszywe sekcje (między gwiazdkami). Rozdzielczość ekranu fikcyjnego w xorg.conf powinna wynosić szerokość twojego głównego monitora + szerokość twojego tabletu, w moim przypadku 1680 + 1024 = 2704 zachowaj wysokość głównego monitora, 1050 w moim przypadku. Uruchom ponownie serwer X / Uruchom ponownie / wyciągnij wtyczkę, cokolwiek bardziej Ci odpowiada :).
Uruchom x11vnc, wykonując
Tutaj rozdzielczość powinna wynosić szerokość tabletu x wysokość tabletu + szerokość głównego wyświetlacza + 0
Połącz się z komputerem za pomocą klienta androidVNC, pamiętaj, aby włączyć opcję myszy lokalnej. To powinno być to, teraz poczuj dziwność posiadania Linuksa na Androidzie :)
źródło
Miałem wiele problemów z innymi technikami wymienionymi tutaj. Chciałbym mieć lepsze rozwiązanie, ale moje powolne i proste rozwiązanie to dobry początek.
W przypadku serwera VNC wypróbowałem
vncserver
pakiet, ale ekran zgasł i musiałbym ponownie uruchomić,gdm
aby cokolwiek znów działało. Połączyłem siętightvncserver
i zadziałało po raz pierwszy bez konfiguracji.Do współdzielenia myszy / klawiatury między ekranami użyłem x2vnc . Można to również wykorzystać w programie win2vnc do współdzielenia myszy / klawiatury z komputerem z systemem Windows obok komputera z systemem Linux.
Ostateczne polecenia:
W tym momencie powinieneś być w stanie otworzyć drugi ekran w programie VNC, łącząc się z
YOUR_IP_ADDRESS:1
. Aby uruchomić program na ekranie VNC, otwórz terminal, ustawDISPLAY
, a następnie uruchom polecenie. Na przykład, aby otworzyćxterm
na „ekranie” VNC, uruchom:Przy takim podejściu drugi ekran jest dość wolny. Mimo to wiele innych opcji, które wypróbowałem, wpadło w ślepy zaułek, a ta działała bez konfiguracji.
źródło
Dla każdego, kto wciąż zastanawia się nad tym tematem: klip xrandr i x11vnc działa; aby mysz mogła się tam dostać, musisz użyć argumentu panoramy, aby ustawić obszar śledzenia myszy:
Następnie podczas uruchamiania xvnc użyj:
To powstrzymuje VNC przed próbą użycia własnego śledzenia kursora i maluje kursor jako część obrazu na ekranie.
Zrobiłem tutaj notatki http://mikescodeoddities.blogspot.ae/2015/04/android-tablet-as-second-ubuntu-screen.html
źródło
TL; DR :
Teraz wystarczy kliknąć okno, które chcesz udostępnić.
PEŁNY :
Mam iPada i Chromebooka i chciałbym używać ich jako moich monitorów, żeby uso pewnych poleceń terminala
htop
,iptstate
,nmon
itp. Jestem leniwym facetem i wykorzystałem to:sudo apt-get install x11vnc
Otwórz terminal i umieść
xwininfo | awk '/Window.id/{print $4}'
i kliknij w oknie, które chcesz udostępnić. Wynik będzie taki jak:Teraz możesz rozpocząć
x11vnc
sesję:Zmień rozmiar okna (0x4402f34), aby uzyskać możliwie najlepszy obraz.
Przeszkadza powiązanych portu swojej sesji :
5900 -> :0
,5901 -:1
,5902 -> :2
...Poza tym działa dobrze z aplikacjami X11: Firefox, OpenOffice itp.
źródło
Użyj vnc_virtual_display_linker
Narzędzie konfiguruje drugi wirtualny monitor do łączenia się z VNC, jak opisano w wielu poprzednich odpowiedziach. Obsługuje nawet połączenia z urządzeń z systemem Android za pomocą kabla USB.
źródło