From 8a12ce9c94603f1de52c0c9eb308598c59cab7c9 Mon Sep 17 00:00:00 2001 From: aschumann-virtualcable Date: Tue, 26 May 2026 16:21:44 +0200 Subject: [PATCH] Improves Remote Viewer detection and install guidance on macOS Expands the search for Remote Viewer to support common Homebrew and MacPorts installation paths, increasing compatibility with different user environments. Updates installation instructions to include Homebrew as an option, making setup clearer for users who do not have virt-viewer installed. --- .../transports/SPICE/scripts/macosx/direct.py | 22 +++++++++++++++---- .../SPICE/scripts/macosx/direct.py.signature | 2 +- .../transports/SPICE/scripts/macosx/tunnel.py | 20 ++++++++++++++--- .../SPICE/scripts/macosx/tunnel.py.signature | 2 +- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/server/src/uds/transports/SPICE/scripts/macosx/direct.py b/server/src/uds/transports/SPICE/scripts/macosx/direct.py index b32d2ff6d..cc2c798c5 100644 --- a/server/src/uds/transports/SPICE/scripts/macosx/direct.py +++ b/server/src/uds/transports/SPICE/scripts/macosx/direct.py @@ -8,16 +8,30 @@ from uds import tools # type: ignore -remoteViewer = '/Applications/RemoteViewer.app/Contents/MacOS/RemoteViewer' - -if not os.path.isfile(remoteViewer): +remoteViewerPaths = [ + '/Applications/RemoteViewer.app/Contents/MacOS/RemoteViewer', + '/opt/homebrew/bin/remote-viewer', + '/usr/local/bin/remote-viewer', +] + +remoteViewer = None +for path in remoteViewerPaths: + if os.path.isfile(path): + remoteViewer = path + break + +if not remoteViewer: raise Exception( '''

You need to have installed virt-viewer to connect to this UDS service.

Please, install appropriate package for your system.

- Open download page + You can install it via Homebrew:
+ brew install virt-viewer +

+

+ Or download it from MacPorts.

Please, note that in order to UDS Connector to work correctly, you must copy the Remote Viewer app to your Applications Folder.
diff --git a/server/src/uds/transports/SPICE/scripts/macosx/direct.py.signature b/server/src/uds/transports/SPICE/scripts/macosx/direct.py.signature index 1e24352b2..9b13ae88b 100644 --- a/server/src/uds/transports/SPICE/scripts/macosx/direct.py.signature +++ b/server/src/uds/transports/SPICE/scripts/macosx/direct.py.signature @@ -1 +1 @@ -trUPaAK6GcQ3T21hk0Gmmz1cYCdX3NahxZgytM1Z0hp7TIksQOh6OkNFP03RSaT4DnbWJBaot3xPYk2bTzzYsQv10ZQwHA2GS1exlzAAfP9/oLBTji0xGOt5zXEWSD0gqeAMrjhRK8pxpaJZ3xUuvujPuh3sNeb/XqQdNlXUkFK5AFb16FgiU2cE2bNF7nF1Vbz6v2bL3g1vlBhCOzvTYBbBijaeZpdgMDjlXcPoweqzvB3La4RKVDDD8lD51UNp3jurqcZquhTWdZys431tvORtQTISzR3xy6/AlsQzcSSr7lKBwmcKbF6ajct/D2oulqrxaBrbYqlZRe3a+FowjDgHVDjd9n+56m7+p25JoA+blkwhsfW22QzTDPhnq6Lx72c43L4WzU+rVJ3s5Hm8GScDfCdNY25ooaoF1HXs10Qra9/w5E6asoTIEuzs0Op4PNdtSqJ6RN87YKIC2iHnDFeerTJIP8uvDx3zx/i99781KcKQb/goIjMrJEGSQUGPMLwLxkB24o2/DChflVbbq5//rb66Iu6ZETxeRoHPQIO+z3wNGdbRB8ZP5jHpkgbKEKgt48ubila1TtN0+Bl4ASyYmzc4eFnsJD8D6ojAghYyNL1dyYZ9G2eJEseztehs6kiU6DljezwNCfWN/jx38dDQ8wAPWMrstfxV8CkD2ko= \ No newline at end of file +GN97w82LH/JVoXcdBtIzlcbBFpvJ7jexp/DRjL3k15jhYshHCALaOOk3NUHYdKaymJdc8zgMbCCEX+G/np0T0dM92qoggrRRtsyZDTlidkUPRBXMuLvXSlLHurZAN3DlN8Ym9VzQ+Psn5vgsDcRyiWGVf+yrw+8j09qtQleIIJQyglOq2rX7wZN7Yd8TqzWfUo9dLrZVC1CHiq5bZx2ka14acUuMQA+XZ3VuNwVnm7sg7O6mZwDDpOc/AkjjzmRMxiSrlCX3zqvIc2rmNpPI9pO1i7ZjnY6gjYVzG8ycD04GK5CC8ix3fW8YPZGL1sp13JJ/nuLv5mYhgzhh9MuooFBQ9f5PiyvxCvUwda8n8ysWDoctv5GkuoR9fg46wdrYZTHLCI7LNS5md6p+R0roTgRBx1ty+5swujdNa4Ri11LrCKcAU0ICIlrE28nLtBuaO3Rthla0ABIVRYgiQTwavXjw7P5ifyuF9JreUyTbIFSnU0Ih2txr0pdmx2K3reZXWkUKOSYlTTtsNWl5sJaT1l0bKY4EG1j4AHTY0GYPhOuqxkyW77OMgmC5XeQDRfduSxQWJT8dyWVcPINbxBB9yFFJoCTTdOsFlEK5hKV6MUf+3o1PZcecTapBnF7OdWC1X3bS/W/U4MhbkQfqfV6lIiAdNK/HsnzCGzCZN9racok= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py index 66e30b831..14705e0fd 100644 --- a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py +++ b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py @@ -9,16 +9,30 @@ from uds import tools # type: ignore from uds.tunnel import forward # type: ignore -remoteViewer = '/Applications/RemoteViewer.app/Contents/MacOS/RemoteViewer' +remoteViewerPaths = [ + '/Applications/RemoteViewer.app/Contents/MacOS/RemoteViewer', + '/opt/homebrew/bin/remote-viewer', + '/usr/local/bin/remote-viewer', +] -if not os.path.isfile(remoteViewer): +remoteViewer = None +for path in remoteViewerPaths: + if os.path.isfile(path): + remoteViewer = path + break + +if not remoteViewer: raise Exception( '''

You need to have installed virt-viewer to connect to this UDS service.

Please, install appropriate package for your system.

- Open download page + You can install it via Homebrew:
+ brew install virt-viewer +

+

+ Or download it from MacPorts.

Please, note that in order to UDS Connector to work correctly, you must copy the Remote Viewer app to your Applications Folder.
diff --git a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature index 0862cbc90..24e77eff3 100644 --- a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature +++ b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature @@ -1 +1 @@ -BiMXqnn9XTSuqJcwc/TbnRK9WljlbwBQ3kBTnWVkco8sO5y+qeHgoobLu9OQ4qmWi2+YLLBzP+1j0UMFvMl0M+ErL+/rcKnflb2JXzvNlJSB9Ei9S0RmnyWTvyGoUBIUCz5hXuSry2FDw+PwTIQ3S5KnGBJxEB8rriIsKK6o/G9r6mmQ9P1929uud/kqpbyHyBktzONt/oV9N1e54ZACuSPDhkv3aLDe4PlbgPnIdtXNTXcr+gvDajuA8WBaCy2dp6SV43U5DK7IsWZuc1WOLZ6cxtS/RfsfsEJilrDQPJehK3Pg8paL+AIFC+cYju274zyZW4VGUJE3VE69IBoqEALYMgWGAhc7kTBQQ4IxOquMgoE6xljes3fEpVtK3g/YILDqn7tq7xOwR/1eZzac/0r/buHtDtCApYK7xFA0YcDrFGbwwuQ6OwnT4MpwCVaJ0wucjZWwaa4f4kq6kwvhZC1Vadvv6ysxl0bOG7+//GK+j0Fvq7AHmnhVFztz8w1SgBff+SZaFcz9OB22B9ioPPEPaomkWWsMb0g4diO4dAH8/mKfdI6j8ch4uHSY9SqnL1/TwNxEvYgaaarW4D0W6dQTwJ3BY2Z/Bfn6aTonDi5w8Qef2F0XDRHUW4DercLB5W9MboNEOva3hAYkuQC4YFGUF4rTr8wglNBTQAHFH5Q= \ No newline at end of file +DP6KzGNo7BTuXGu17f8qMKCcHuuAAtchUCT4DtvU3c0x5rHvHlaGRL8Ton7TotrRjA1jUlvjpL4hIL3jqxx5Bxbmj47X2mG5EOqFZmgEQFhgYDgfEX2IELUEve9ckbv7m/9rrbMJ6xUiPfTWKuTU5v2tHUr9CI4IGKcfKjFhih/wamPvDURgJ7Ic+oFcNfZENt/XLh80Rt6V/Xw6S5yV4v6t07JbUe+99Yxaa9qWzLo5A9NRjgLVgfu7GKGBBvIOV2bTobh06YxV9nvdNRD6GRxRqvnxA6W6uitkmLDwwopjsGH87GAlwLGOMjJ/tsR9L/9IL/TBRrrB8xLUYoRaF4TRjD9eiYFc/8hI5+kExdIT9a9yGUt3TLZ+UDywXFhSFFuSXUidfkt+97+VUxGPd46/q2X28S/dHFYYw2MyWQWSW+1PKt45Ox20ywyE5RWhACBItbLDClpboa2C7TN+oqs7LTUr0Um+Zft83EZjL/a/GRcZIzMSp4ZLQHjwOt7nRtAdbmKe7NhdPa6/nBKH8ds/vLDl4kp1sJXwEreL9IC8hva8cBBzbXrQeACGkSiCWzwAvpAjOQRNlaV2+p2kH6luIEBHSSV9Kx6br/HoH8TOA1DR8Fv7YDBr/TAQHJU2Fu1lPXSZGwKOQ32rBVeU67tRuCoD7AIDEtjMeohw4r8= \ No newline at end of file