Want to try it on your phone?
RemotePad is on Google Play, on the internal testing track. The track is live, but it is invitation only: Play matches the tester list against the account that opens the link, so a link does nothing at all for someone who is not on that list. That is why there is no link here.
Want in? Send the Google account address you would install it with to zirize@gmail.com — by email, not in an issue, so your address does not end up on a public page. I add you to the tester list and send the link back to you; it starts working once you are on the list, not before.
- It has to be the address of the Google account on the phone. Play matches the tester list against the account that opens the link, so any other address will simply say the app is not available — a symptom that tells you nothing about why.
- The address is used to add you as a tester and send the link. Nothing else; the app itself collects nothing (privacy policy).
- Android 7.0 or newer, and a VNC server of your own to point it at — this is a client, it does not come with one.
Would rather not hand over an address? Build it yourself — same app.
What a games-first viewer changes
- Controls live in the black margins beside the remote screen, so they cost you no picture.
- They are always there. No summoning a keyboard mid-fight.
- Modifiers latch. Tap Ctrl for one-shot, tap twice to lock — you do not need a second hand.
- The layout is data. One JSON file, regenerated for whoever is holding the phone.
What it does
- On-screen controls in the margins. Page Up / Page Down, Ctrl, Enter, Esc, a D-pad, mouse wheel up/down and free letter keys. Drawn on a 60 %-black background with a white outline so they stay readable over a bright screen; anywhere that is not a button passes straight through to the trackpad.
- Latching modifiers. One-shot on a tap, locked on a double tap.
- Trackpad or absolute pointing. Long-press for right click, two-finger scroll.
- Tight/JPEG decoding on four worker threads, through libjpeg-turbo with NEON.
- A settings sheet that opens itself if the very first connection fails, so a fresh install is never a dead end.
vncviewer-for-games. The build published on Google Play is called RemotePad
(tech.doldam.remotepad). Same source; only the application id differs, so a fork can never
overwrite the published app.Build
JDK 17 and an Android SDK with NDK.
git clone --recursive https://github.com/zirize/vncviewer-for-games.git
cd vncviewer-for-games
bash scripts/doctor.sh # checks the toolchain; changes nothing
bash scripts/build.sh # release APK
bash scripts/build.sh install # ...and push it to a connected device
--recursive matters: libjpeg-turbo is a submodule. If you already cloned without it,
git submodule update --init --recursive. If doctor.sh cannot find your JDK or
SDK, add your path to scripts/_hostenv.sh — that file is the single place host-specific
paths are allowed to live.
debuggable makes ART give up optimisations — measured at 20.8 fps against
33.2 fps on a full-motion test. Release builds are signed with a debug key unless a
keystore.properties exists.Make it fit your hands
cp profiles/default.json profiles/mine.json
$EDITOR profiles/mine.json
bash scripts/build.sh preview # validate + draw an SVG of the result
bash scripts/build.sh release -PvncProfile=mine.json # build with it
The format is documented in docs/layout-profile.md, and
docs/make-a-variant.md is a step-by-step recipe including what to do when each step
fails. You do not need the device to check your work — validation and the SVG
preview both run on a plain JVM.
This repository expects to be read by agents
Most of the time the person who wants a different layout will not edit the JSON themselves; they will ask a coding agent to do it. So the repository is built to let an agent prove it got it right without hardware:
bash scripts/build.sh previewvalidates every profile and renders each one toapp/build/preview/<id>.svg.- Deliberately broken profiles live in
app/src/test/resources/broken-profiles/and are part of the test suite, so the checks themselves are checked. AGENTS.mdis the entry point, including the things an agent must refuse.
Licence
GPL-2.0-or-later. Not a preference: the viewer is built on the
TigerVNC Java client, which is
GPL-2.0-or-later, so the combined work is too. Third-party components and their notices are in
NOTICE.