[winswitch] [xpra] Implementation of Java/Android client

Jakub Księżniak jksiezniak at gmail.com
Mon May 11 18:52:40 BST 2015

Hello devs,

I've started writing a new Java/Android client. Currently, I'm developing a
Swing client as a Proof of Concept and I think, that it has already
surpassed the old java client found in SVN repo, as it supports both
bencode and rencode packet encodings, fully controls life-cycle of windows
and popups (create, move, resize, etc.) and handles all mouse events.

However, it still lacks keyboard support and I'd like to ask you for help
and explanation, how key mapping works? (If that's not possible then I'll
try to figure out it on my own. :-))

In the old java client there is a code that builds key-mappings and appends
them to 'hello' packet. Each KeySpec consists of a keyval, keyname,
keycode, group and level. Then, on 'key-action' event, there is sent
keyval, keyname and keycode again. It looks like some redundant data is
sent here, so I'd like to simplify it a bit, but first I need to understand
what design decisions are behind this key-mapping logic. :p

Also, I've noticed some issues with my Xpra installation (v0.14.22):
1. Initial window positioning constantly changes.
a) $ xpra start :100 --start-child=xterm
b) Connect with 'xpra attach' to the server and move the window to the top
left corner.
c) Disconnect and connect repeatedly and notice how the window is moved a
bit down on each connection. (I'm using KDE environment, if it helps.)
2. When a menu is opened, the Xpra server provides a 'transient-for' value
which helps to associate with a parent window, but when a sub-menu is
opened the 'transient-for' is missing. Is it a correct behaviour?

Jakub Księżniak

More information about the shifter-users mailing list