I started off by trying to handle CAT via Hamlib's rigctl using pexpect.run() to invoke rigctl directly in the gnuradio-companion flowgraph.
After struggling for a bit, I resorted to hacking the generated python directly. It works nicely for me now. The Waterfall display scale follows the KX3's dial frequency as I knobulate the VFO and I can click in the waterfall to re-tune the radio.
The main issue left to resolve is to determine the effect of PBT and/or RX SHIFT on the waterfall display's centre frequency. This is apparently supported by hamlib's K(X)3 backend and can be accessed
Rig command: l ifctr
Level: Level Value: 8210000.000000
However, rigctl always seems to return the same (default) value, that is 8210000.0 plus the IF offset, which is always apparently 0, irrespective of PBT or IF SHIFT settings.
Checking the use of the FI/FInnnn command/response by talking directly to the KX3 over the serial port yields similar results:
FI;FI0000;So, there is presumably a bug/omission in the KX3 that causes the FI response to always be 0.
Nevertheless, I'm happy to have a panadapter for the KX3 that allows me to click-to-tune. It's come in handy with the amount of contest traffic on the HF bands this weekend.
Next plan is to add a software defined sub-receiver, so I can listen to more than one thing at once!
I've been asked what stereo line isolator I used. I used one of these. I would have used one of these instead, had I found them before ordering the other one. I'll probably get one anyway, for the convenience of fewer cables.
Update: the Python code for this is here.