Graphical sessions
Minimalistic Wayland protocol support
Available in development versions only:
The main problems with X applications on Android are low performance and lack of good touch screen input methods.
Current solution addresses both of them.
UI and screen input
Desktop size matches a phone screen size and follows any changes.
Fully functional screen keyboard / mouse.
Yes, you can drag with the middle mouse button and hold
Shift and/or Ctrl in the same time.
Blender-ready multi-touch screen input!
Note: The physical screen size is provided to the applications exactly as it is reported by Android. This means that some UI (Qt and Gtk at least) could look weird on a phone screen due to its unusual DPI ratio. Just tune up your widget frameworks / applications DPI settings.
How to use
Prerequisites
API
UNIX socket name (Linux abstract namespace):
green_green_avk.anotherterm
[.variant].wlterm
Note: client UID check ID is enforced:
only processes of the same Android application & user are allowed to connect.
In order to implement international symbols input and clipboard integration as long as Xwayland does not support appropriate Wayland interfaces, the decision to use a dedicated helper was made. (I’m not a fan of an additional Xwayland fork support.)
The built-in helper protocol is accessible via pre-created special object with ID 2
(subject to change in future);
it is silently removed on the first access to the display (ID 1
) object avoiding any interference with the Wayland protocol
(at least in terms of Xwayland implementation).
See https://github.com/green-green-avk/AnotherTerm/blob/Wayland/app/src/main/java/green_green_avk/anotherterm/wlterm/protocol/wl_own_helper.java
More information is to be added…
An example of the script set to start Xwayland inside PRoot:
Scripts to be added into the PRooted environment
https://github.com/green-green-avk/AnotherTerm-scripts/tree/master/Xwayland
The startup profile
“Execute” field:
/system/bin/sh \
"$DATA_DIR/proots/linuxcontainers-debian-buster/run" \
0:0 ./wlstart-X \
| \
/system/bin/sh \
"$DATA_DIR/proots/linuxcontainers-debian-buster/run" \
'' ./wlstart-WM
Or a [quick settings link] for Another Term.
Just replace the linuxcontainers-debian-buster
with your installation directory.
Further documentation + scripts are about to come…
Implementation details
Only wl_shm
interface is supported at the moment
with possible future support of zwp_linux_dmabuf_v1
interface / libmesa.
The only supported surface roles:
toplevel
(wl_shell
/wl_shell_surface
andxdg_wm_base
/xdg_surface
/xdg_toplevel
);cursor
(wl_pointer
).
See https://github.com/green-green-avk/AnotherTerm/blob/Wayland/app/src/main/java/green_green_avk/anotherterm/wlterm/WlTermServer.java for details.