Browse Source

calculate display size via adb and support both Lenovo and Samsung ids

Daniel Sheffield 3 weeks ago
parent
commit
0784dae82c

+ 1 - 1
android-usb-vnc/system/etc/systemd/system/login-manager.service

@@ -6,7 +6,7 @@ Requires=xvfb.service
 [Service]
 User=das
 Environment=DISPLAY=:19
-ExecStart=/usr/bin/startlxqt
+ExecStart=/usr/bin/bash -c "for i in {1..10}; do xhost &> /dev/null && break || sleep 1; done &&  /usr/bin/startlxqt"
 Restart=on-failure
 
 [Install]

+ 1 - 1
android-usb-vnc/system/etc/systemd/system/x11vnc.service

@@ -5,6 +5,6 @@ After=login-manager.service
 
 [Service]
 Type=simple
-ExecStart=/usr/bin/x11vnc -display :19 -forever -shared -rfbport 5900 -listen localhost -nopw
+ExecStart=/usr/bin/bash -c "for i in {1..10}; do xhost &> /dev/null && break || sleep 1; done && /usr/bin/x11vnc -display :19 -forever -shared -rfbport 5900 -listen localhost -nopw"
 Restart=on-failure
 

+ 2 - 2
android-usb-vnc/system/etc/systemd/system/xvfb.service

@@ -1,8 +1,8 @@
 [Unit]
 Description=Start Xvfb virtual display
+After=adb.service
 
 [Service]
 Type=simple
-ExecStart=/usr/bin/Xvfb :19 -screen 0 2944x1840x24 -dpi 150 -nolisten tcp
+ExecStart=/usr/local/bin/xvfb_for_android.sh
 Restart=on-failure
-

+ 6 - 0
android-usb-vnc/system/etc/udev/rules.d/99-android-usb-remote.rules

@@ -1,4 +1,10 @@
+# Lenovo
 SUBSYSTEM=="usb", ATTR{idVendor}=="17ef", ENV{ID_SERIAL_SHORT}!="", TAG+="systemd", ENV{SYSTEMD_WANTS}="adb-reverse@%E{ID_SERIAL_SHORT}.service"
 ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="17ef", TAG+="systemd", ENV{SYSTEMD_WANTS}="x11vnc.service"
 ACTION=="remove", SUBSYSTEM=="usb", RUN+="/usr/bin/bash -c '/usr/bin/lsusb | grep 17ef: || /usr/bin/systemctl stop x11vnc.service xvfb.service login-manager.service'"
 
+# Samsung
+SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ENV{ID_SERIAL_SHORT}!="", TAG+="systemd", ENV{SYSTEMD_WANTS}="adb-reverse@%E{ID_SERIAL_SHORT}.service"
+ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", TAG+="systemd", ENV{SYSTEMD_WANTS}="x11vnc.service"
+ACTION=="remove", SUBSYSTEM=="usb", RUN+="/usr/bin/bash -c '/usr/bin/lsusb | grep 04e8: || /usr/bin/systemctl stop x11vnc.service xvfb.service login-manager.service'"
+

+ 16 - 0
android-usb-vnc/system/usr/local/bin/xvfb_for_android.sh

@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+count=0
+for i in {1..10}
+do
+    /usr/bin/adb shell wm size && break || sleep 1
+done && {
+    set -x
+    # get native display dimensions
+    raw_size="$(/usr/bin/adb shell wm size | cut -d: -f2 | tr -d ' ')"
+    # convert to landscape
+    size="$(echo "$raw_size" | tr x '\n' | sort -Vr | tr '\n' 'x')"24
+    /usr/bin/Xvfb :19 -screen 0 "${size}" -dpi 150 -nolisten tcp
+}
+