UltraViewer for Mac
UltraViewer only exists for Windows. This makes it run on an Intel Mac, so you can connect to a Windows PC and control it from the Mac. I have not found anyone who managed it before.
Tested on Intel Macs only, running macOS Ventura 13: a 12" MacBook (Core i5-7Y54) on Ventura 13.7.8. It has not been tested on Apple silicon Macs (M1 and later).
Download
How to install
- Unzip it and move the app to Applications.
- The first time, macOS may block it because it is not notarized: open System Settings > Privacy & Security and click Open Anyway.
- The first launch takes a little longer while it sets up its Windows environment. After that it opens UltraViewer straight away.
There is no need to install Wine, Homebrew or anything else: the app carries everything inside.
What works
- Connecting to a Windows PC: the picture, the keyboard, the mouse (movement, clicks, hover and dragging) and full screen.
- The left ⌘ Command key works as the Windows key: on its own it opens Start, ⌘+R opens Run and ⌘+Shift+S the Snipping Tool. The right ⌘ works as Alt, and Option still types @. macOS keeps a few shortcuts for itself, such as ⌘+Tab and ⌘+Space.
- On modern Windows screens, such as the ⌘+Shift+S selection box, dragging does not work: that is an UltraViewer limitation, since it moves the PC's cursor without generating mouse movement. There, capture a whole window or the full screen, or use ⌘+Shift+4 on the Mac.
- It is slower than on Windows. If you do not need the remote PC's sound, turning it off in the session menu saves CPU, and Options > Quality lets you lower the image quality.
- It is for controlling a PC from the Mac, not the other way around: it is not meant for another computer to control the Mac.
How it works
The app is a macOS launcher that carries Wine Staging 11.18, .NET Framework 4.8 and UltraViewer already installed. Getting the mouse, screen redraw and Windows key to work took three small changes to Wine. One to its key table, because Wine mapped no Mac key to Windows, and two more: one in IsBadCodePtr, because UltraViewer decides whether to handle each mouse event based on a CPU flag that Wine left different from Windows, and one in SleepEx, so short waits last as long as on Windows and it does not burn CPU for nothing. UltraViewer itself is unmodified.
Quitting and updating
To quit it completely, use Cmd+Q. It leaves no services running and does not start on its own when the Mac boots. To update, replace the app and keep its data folder: that is where the settings live. The microphone is only used by UltraViewer's voice chat; if macOS asks, you can decline.
Credits
UltraViewer belongs to DucFabulous (ultraviewer.net). This is not an official UltraViewer or WineHQ product. Wine and the other components keep their own licenses, which are included in the app.
Support
Need a hand? Email me.