I jeszcze raz o drugim monitorze z tabletu...

Znalazłszy się jako posiadacz tak przeciętnego tabletu z niedziałającym sensorem (mój najstarszy syn starał się jak mógł), długo zastanawiałem się, gdzie go zaadaptować. Google’owane, Google’owane i Google’owane (czas, два, Haker nr 227), a także wiele innych przepisów m.in kosmiczne biurko, iDispla i kilka innych. Jedynym problemem jest to, że mam Linuksa. Po dłuższym googlowaniu znalazłem kilka przepisów i dzięki prostemu szamanizmowi uzyskałem akceptowalny wynik.

I jeszcze raz o drugim monitorze z tabletu...
Moja metoda jest poniżej cięcia.

Potrzebne będą:

Linux z zainstalowanymi:

  • x11vnc (Szczerze mówiąc, nie lubię wszelkiego rodzaju tigervnc i innych)
  • adb z zestawu narzędzi dla Androida

Tablet/smart z włączonym trybem debugowania i ustawionym na:

  • AndroidNVC (Mam ten, bo nie ma reklam)
  • Jakiś program blokujący wygaszanie ekranu (nie mogłem go znaleźć bez reklam)
  • Dowolny autoloader (uruchom VNC i bloker) jest opcjonalny (więcej na ten temat poniżej).

ok zaczynajmy.

1. Pobierz Modeline dla xorg.conf

$ cvt 1024 768 25 # Можно и gtf, но он не всегда дает корректный modeline.

2. Edycja

xorg.conf

Section "ServerLayout"
        Identifier     "Xorg Configured" 
        Screen         0  "Monitor" 0 0
        Screen         2  "Screen2" rightof "Screen0" # "Пустышка для VNC"
        Option         "Xinerama" "1"
	EndSection
	#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        # здесь все настройки оборудования, коли таковые есть
        #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	#Dummy видеокарта
	Section "Device"
		Identifier "Device2"
		Driver "dummy"
 		VideoRam 8000
	EndSection

	#Dummy монитор
	Section "Monitor"
 		Identifier "Monitor2"
  		Modeline "1024x768@25" 23.77 1024 1056 1144 1176 768 785 789 807 # см. п. 1
	EndSection 

	#Dummy экран
	Section "Screen"
 		Identifier "Screen2"
 		Device "Device2"
 		Monitor "Monitor2"
 		DefaultDepth 24
 		SubSection "Display"
	#разрешение плашета
    		Modes      "1024x768"
    		Virtual 1024 748
    	EndSubSection
	EndSection

Restartujemy X-sys i sprawdzamy poprzez arandr. Ustaw lokalizację i orientację. Powinno to wyglądać mniej więcej tak:

I jeszcze raz o drugim monitorze z tabletu...

Zapisujemy go do pliku - będzie nam przydatny.

3. Utwórz plik do automatycznego ładowania w WM/DE (mam planshet.sh)

x11vnc -rfbport 5900 -display :0 -dontdisconnect -noxfixes -xdamage -shared -forever -clip 1024x768+1600+0 -scale 1024x768 -bg -cursor X -o /home/$USER/x11vnc.log -repeat
	xrandr --addmode VIRTUAL1 1024x768 # необязательно
	xrandr --output VIRTUAL1 --mode 1024x768 # необязательно
	xrandr --output VIRTUAL2 --off --output HDMI1 --off --output VIRTUAL1 --mode 1024x768 --pos 1602x0 --rotate normal --output DP1 --off --output VGA1 --mode 1600x900 --pos 0x0 --rotate normal #вот эта строка заимствована из сохраненного файла arandr

Sprawdźmy:

$ xrandr |grep VIRTUAL1
        VIRTUAL1 connected 1024x768+1600+0 (normal left inverted right x axis y axis) 0mm x 0mm

Ponieważ w IceWM nie ma katalogu autostartu, ale istnieje plik ~/.icewm/startup (który powinien być wykonywalny), dodaj do niego następujące elementy:

sh -c /path/to/planshet.sh

4. Wyłącz wygaszanie monitora:

	xset s off
	xset s noblank
	xset -dpms

Teraz zaczyna się zabawa! Jak uzyskać współrzędne „dotknięcia” urządzenia bez „metody prób i błędów” poprzez torturowanie klawiatury w konsoli?!

Dla czegoś takiego rzeźbiłem program. Jeśli uruchomimy go z konsoli, otrzymamy to, czego szukamy - wynik współrzędnych kranu.

I jeszcze raz o drugim monitorze z tabletu...

6. Dodajmy to wszystko do planshet.sh

Pełna wersja

#!/bin/bash
       x11vnc -rfbport 5900 -display :0 -dontdisconnect -noxfixes -xdamage -shared -forever -clip 1024x768+1600+0 -scale 1024x768 -bg -cursor X -o /home/$USER/x11vnc.log -repeat
	xrandr --addmode VIRTUAL1 1024x768 # необязательно
	xrandr --output VIRTUAL1 --mode 1024x768 # необязательно
	xrandr --output VIRTUAL2 --off --output HDMI1 --off --output VIRTUAL1 --mode 1024x768 --pos 1602x0 --rotate normal --output DP1 --off --output VGA1 --mode 1600x900 --pos 0x0 --rotate normal  #вот эта строка заимствована из сохраненного файла arandr
	xset s off
	xset s noblank
	xset -dpms
	adb tcpip 5555
	adb connect 192.168.0.14:5555
	sudo adb devices
	adb shell input tap 1000 20 # тапаем по "квадратикам" в правом верхнем углу (не знаю, как нызавется) - скрин 3
	adb shell input tap 392 138 # тапаем по AndroidVNC
	adb shell input tap 20 65 # запускаем VNC предварительно прописав адрес и порт

I zrobimy to

chmod +x /path/to/planshet.sh

Właściwie to wszystko. Zrestartuj serwer X i uzyskaj tryb wieloekranowy.

Na moim „małym” działa Conky.

W załączeniu zrzut ekranu podwójnego ekranu.

I jeszcze raz o drugim monitorze z tabletu...

Kiedy coś modeluję, wrzucam na niego również arkusze danych.

Źródło: www.habr.com

Dodaj komentarz