tablet as external monitor with i3wm

tl;dr - read this thread.

After experimenting with using nothing but chromebooks for a while to see how well I could operate with just a shell, browser, and cloud, I treated myself to a top of the line thinkpad last year and decided to give a tiling window manager a try and installed i3wm.

I've become fairly proficient with it and am quite happy with the user experience, but with two external monitors at home for easily moving workspaces around I really miss them when I'm out and about.

I also recently spent the holidays visiting family and as usual performed a bit of tech support. Couldn't figure out what was up with the iPad I gave my grandad last Christmas so this week I went out and got him a new one. Having it sitting around today and having plans to meet a friend for an afternoon of hacking at a local coffee shop I wondered if I could somehow use the iPad as an external monitor.

Turns out you can!

The trick is to use xrandr to define a virtual display device and then xvnc with the -clip flag restricting the shared viewport to the size of the virtual display to make it remotely visible. Then any old vnc client on the tablet will do the rest.

This is my config for an iPad 4.

phro@shard:~/.screenlayout$ cat tablet.sh  
#!/bin/sh
xrandr  --output VIRTUAL1 --mode 848x1080_60.00 --right-of eDP1 --output eDP1 --mode  
 1920x1080 --primary --pos 0x0 --rotate normal
x11vnc -clip 848x1080+1921+0  

Here's how it looks.

It works pretty great at home but out and about there are a few problems to figure out. First, many public wifi hotspots will dynamically create a small /31 network for each client which joins to prevent hostile users sniffing / spoofing / whatever the other folks. In that situation the tablet won't be able to connect to the VNC server, so I had to do a little network hopping before I could use it.

Another issue is latency. One network I tried out despite having ping times in the 10-20ms range to Google's DNS servers it was producing numbers > 1 second between devices on the network. Using the bloated uncompressed VNC protocol it took 15-20 seconds for a window moved onto the tablet to appear.

Also configuration is a pain in the ass. The VNC client I installed on the tablet has a bookmarking feature that let's you save hostnames and credentials for commonly accessed servers but of course if you're on a strange network the IP of the laptop will change meaning it's a bit less seamless to get started.

To work around all this I'm planning to grab a low profile USB wireless adapter to set up an ad-hoc network between the tablet and the laptop. And of course, my own tablet since I'll be shipping this one off to grandpa this week.