Android application : GfxTablet+

Jean-Pierre Demailly, Institut Fourier, Université Grenoble Alpes

GfxTablet+ is an extension of GfxTablet by Richard Hirner (rfc2822), in other words, it is an Android application to turn an Android tablet into a virtual graphics tablet attached to a desktop computer, using a network/wifi IP connection between both devices. It is especially suited to work with the Samsung Galaxy Note series, but any tablet that has sufficient graphical resolution should work.

Download link: https://sourceforge.net/projects/sf-xpaint/files/deskwrite/

For the original version, see
https://play.google.com/store/apps/details?id=at.bitfire.gfxtablet
or
http://rfc2822.github.io/GfxTablet/

GfxTablet+ provides additional support for writing or drawing on your tablet while you move the cursor of your computer screen, and simultaneously write, draw or perform other tasks on the computer. It also adds virtual keyboard support and a few extra hooks to control remotely your computer from the tablet. For instance, you can easily commute between a beamer presentation and a "virtual blackboard". The latter is provided by the included "deskwrite" application, which can be opened or closed remotely from the ad hoc "Deskwrite" menu on the tablet.

"Deskwrite" is itself a powerful note taking and document management application that can be used standalone on a Linux desktop or laptop. It is quite comparable to "xournal" in terms of functionality. Additionally, "Deskwrite" has hooks to cooperate with "GfxTablet+", and it is designed to run full screen - with an extensive set of emacs-like keyboard shortcuts for operation (along with GUI popups for those preferring mouse clicks!). There are several multi-window modes allowing to scroll content without letting pages disappearing immediately - this is especially useful for screen presentations. "Deskwrite" can load arbitrary combinations of images and PDF documents, insert blank pages or handwritten parts, annotate images and PDF files, etc. (At this point, PDF export of the resulting document is not fully implemented - image file export of pages can be used as a workaround).

GfxTablet+ includes many other possibilities, starting from a convenient truecolor selector. One can add typewritten text, draw accurate rectangles, polygons, circular arcs (stroked or filled), as well as any path made from a combination of these. There is a selection tool for erasing and moving parts, and highlighting lines of text is also possible with "Deskwrite".

Thanks to these capabilities, GfxTablet+ may eventually be used as a note taking application for your Android tablet. It will record what you are writing in vector format. In particular, GfxTablet+ can be used offline, and any recorded data can be exported to a PDF file.

Big caveat: works only on X11 desktops, and maybe only on Linux, as it relies on the X11 networktablet+ utility (actually, a not so complicated backend program written in C). The more sophisticated "Deskwrite" application is also for X11 ; it could be used on your desktop in combination with a Wacom graphical tablet instead of an Android Tablet, but then you'll need to look at your desktop monitor screen.

Apologies to people using other operating systems, but first, I am familiar only with Linux, and anyway, everybody should use Linux or its open source cousins, proprietary operating systems are evil! If anybody is interested in developing MacOS/Windows/(whatever) frontends, I will not object, though, and might even end up providing a link to that code here.

Installation:
- Download GfxTablet+-v-date.apk on your Android tablet, and install the application on it. This may require setting adequately some permissions, since GfxTablet+ will need to write data on your sdcard.
- Install some utilities on your Linux desktop/laptop, as root (type 'sudo su' in a terminal if you are under Ubuntu):
tar xvf networktablet+-1.x.tar.bz2 ; cd networktablet+-1.x.tar.bz2 ; make ; make install
You will need a number of basic development libraries like the xorg-dev packages and libfakekey-dev (and of course the standard gcc development environment) to be able to compile these utilities.

Usage:
After the installation has been performed, start the following command on your Linux box, again as root:
networktablet+ -user dupont [-home /home/dupont]
(replace of course "dupont" by your user login) Then look at the IP number of your desktop, launch GfxTablet+ on your Android tablet, and from the "Settings" submenu, set the host server to be given by the above IP address. The connection should be established at this point. You'll be able to operate, including opening remotely the "deskwrite" frontend on your desktop. Most of the operations can be done from the tablet, so in principle you do not need to be very close from the Linux laptop, and you may even possibly not need to see the screen of your desktop at all.

Further remark:
You may need to open port 40118 on your desktop if the latter is not opened by default. This is typically done via root commands
iptables -A INPUT -s localhost -p tcp -m tcp --dport 40118 -j ACCEPT
Add the following if you also want to forward port 40118 to another host:
iptables -A FORWARD -s localhost -p tcp -m tcp --dport 40118 -j ACCEPT

For developers:
All source code is contained in the Gfxtablet+-src-date.tar.bz2 package. The Android java code can (has to?) be compiled with the Google Android SDK. The backend code for the Linux desktop is standard C with very few dependencies (most of it is pure X11 and no advanced toolkits are used). I am interested in any improvement people would like to develop.

Licence:
Just as GfxTablet, GfxTablet+ is licensed under The MIT License.