Last active
October 6, 2023 14:03
-
-
Save 8bitbuddhist/7ab180286d6eb7fdc68d374063814175 to your computer and use it in GitHub Desktop.
Bash script to use an Android device as a second monitor for Linux. See https://blog.8bitbuddhism.com/2019/12/01/how-to-use-your-android-tablet-as-second-monitor/ for detailed instructions.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Make sure your Android device is plugged in and accessible over adb. | |
#### Remember to enable virtual displays in xorg by adding the following to your configuration (e.g. /usr/share/X11/xorg.conf.d/20-virtual.conf) | |
# Section "Device" | |
# Identifier "intelgpu0" | |
# Driver "intel" | |
# Option "VirtualHeads" "1" | |
#EndSection | |
#### If you use AMD or Nvidia, change the Identifier and Driver options to match your GPU. | |
W=1920 # Virtual display width | |
H=1080 # Virtual display height | |
O=VIRTUAL1 # The name of the virtual display (check using xrandr) | |
P=eDP1 # The name of your physical display (check using xrandr) | |
PW='$(xrandr --current | grep \* | awk '{print $1;}' | cut -d x -f 1)' | |
# Create the virtual display | |
gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | xargs xrandr --newmode | |
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 --right-of $P --mode | |
# Forward the VNC port to your device and start a VNC session | |
adb reverse tcp:5900 tcp:5900 | |
x11vnc -localhost -clip ${W}x${H}+${PW}+0 | |
# When the session ends, turn off the virtual display | |
xrandr --output $O --off |
NVidia driver doesn't support virtual screens. And, mentioned "intel" driver is legacy one, current intel's "modesetting" driver doesn't support virtual screens too. Please, read the following materials for possible solutions: StackExchange: Unable to add a VIRTUAL display to Xorg ArchLinux Wiki: Extreme Multihead
Thanks, this documentation is clear. My driver is amdgpu
for this reason I used the modeline alternative. I did a simple a script for old laptops (secondary display). Also I fixed some issues on the resolution detection on the current script:
https://gist.github.com/hpsaturn/7b6d15f149eb5bb9bdb19b94b1b34c42
Also it should be works with Android.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi all, it's been a while since I've tested this since I haven't had a need for a portable monitor. I'll give @cb1986ster's script a try and see about finally updating the Gist