Releases: gillesgoetsch/omacvm
Release list
OmacVM 2.6.0: OmacVM.app, its own Mac app
OmacVM.app: Omarchy in its own Mac app
OmacVM now has a fourth route next to Parallels Desktop, UTM and VMware Fusion: OmacVM.app, a free app that needs nothing else. It brings its own QEMU, runs it with Apple's Hypervisor framework and draws through the Mac's GPU (WebGL in Chrome, Chromium, Brave and Firefox). The window follows Omarchy's size at native Retina resolution and 120 Hz, full screen sits below the notch, copy and paste works both ways, and Quit shuts Omarchy down cleanly.
omacvm build --vm-type appThis builds the VM through the app with the same questions as the other routes. When the app is missing, OmacVM offers to download it, checks the zip against its .sha256 and that it is signed with OmacVM's Developer ID, and puts it in Applications. Installed this way, macOS shows no security prompt.
You can also download OmacVM-2.6.0.zip below, unzip it and open it. Downloaded with a browser, macOS blocks it the first time: click Open Anyway in System Settings › Privacy & Security.
How it works and what is not done yet (one display for now; Wi-Fi, Bluetooth and media keys from the Bridge are not confirmed on this route): docs/routes/app.md.
Also new
- Camera and microphone on every route. The Mac's camera shows up as Mac Camera for Linux apps and video calls, and is on only while an app uses it. UTM and VMware Fusion VMs get a sound card, so sound and the microphone work there too (an existing VM gets it the next time
omacvm applystarts it from shut down). - The Mac's battery in Omarchy's bar on a MacBook: charge, charging and Omarchy's battery panel (UTM, VMware Fusion, OmacVM.app; Parallels shows it itself).
- Omanotch is built in. OmacVM installs it from its own copy, on the Mac and in the VM. Its bar can now be exactly as tall as the notch:
defaults write ch.gillesgoetsch.omanotch flush -bool true(off by default). - A dimmer keyboard light: Shift with the brightness keys goes three steps below macOS's lowest.
- A safer link between the VM and the Mac. The VM and the Mac helpers prove to each other that they know the Bridge's token before anything is sent, so another program on the Mac can't pose as Gestures, the Bridge or Omanotch.
- GPU numbers in the README: Basemark Web 3.0 and WebGL Aquarium in Chrome, as a share of the Mac, for each route.
Fixes
- OmacVM.app: recording from the microphone no longer stops the VM. QEMU starts the recording on a thread of its own; until the microphone runs, the VM records silence.
- OmacVM.app: WebGL pages no longer hang (Basemark Web 3.0 stopped at its fifth test).
The first time
macOS asks a few things once. Allow them:
- Microphone for OmacVM, when it starts a VM. If you said no or missed it, allow it in System Settings › Privacy & Security › Microphone and restart the VM.
- Camera for OmacVM (or for OmacVM Bridge on UTM and Fusion), the first time a Linux app uses the camera.
- Local network for OmacVM, the first time it starts a VM.
- On UTM and VMware Fusion, the microphone for UTM or Fusion. Without it Fusion stops for minutes when an app starts recording.
Update
omacvm updateThis also replaces an older OmacVM.app (not while it runs).
New to OmacVM?
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashPrebuilt VMs for OmacVM 2.6.0 (prebuilt-2.6.0)
Prebuilt Omarchy VMs for OmacVM 2.6.0. Use them with: omacvm build --prebuilt. See docs/prebuilt.md and SOURCES.md.
OmacVM 2.5.0: prebuilt VMs
Prebuilt VMs: minutes instead of an hour
You no longer have to build the VM yourself. omacvm build now asks whether to build it yourself or download a prebuilt VM, for Parallels Desktop, UTM and VMware Fusion:
omacvm build --prebuiltA prebuilt VM is the same Omarchy VM OmacVM builds, made without any user in it. OmacVM downloads it (3.5 to 6 GB), checks every part, sets your user, password, keyboard, time zone and features on the first start, and brings it up to date. Your VM is ready in about 4 to 6 minutes, download included, instead of 30 to 70.
You can also download one by hand from Prebuilt VMs. Open it in its app and set your user and password on its first start; omacvm apply --vm NAME then adds OmacVM's features. How they are made and what's inside: docs/prebuilt.md.
Switching features works on a prebuilt VM like on any other: omacvm features.
Fixes
- The build no longer stops at its first package download when the default Arch Linux ARM mirror is slow: the fastest mirrors are picked first (#24, thanks @prjoni99).
Update
omacvm updateNew to OmacVM?
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashOmacVM 2.4.1: notifications under the notch, snapshots, two VMs
Fixes
- Notifications right under the notch strip. With Omanotch, Omarchy's notifications left a bar's height of empty space under the strip. They now sit right under it. External displays keep their bar's room.
- Snapshots in GRUB again. VMs on Arch Linux ARM's own kernel had no snapshots menu in GRUB and started without their initramfs. Both are back, and
omacvm checktells you if they go missing. - Two VMs in one app. Cmd shortcuts and trackpad swipes now go only to the VM in front, not to every VM in that app.
- Memory-optimized kernel:
- Turning it off really goes back to the stock kernel.
- Its build writes the compiler output to a log instead of your terminal.
- UTM: two quirks are documented in troubleshooting:
- with UTM's "don't ask before quitting", Cmd+W can stop the VM;
- its keyboard-light log showed a wrong value (fixed).
Update
omacvm updateNew to OmacVM?
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashOmacVM 2.4.0: keyboard light, longer battery life, safer
The keyboard light, like in Omarchy
Shift + the brightness keys set your Mac's keyboard backlight while Omarchy is full screen, with Omarchy's own keyboard popup. Option + the brightness keys take small steps. A MacBook has no keys of its own for the keyboard light, and Omarchy uses the same keys for it.
Longer battery life
We went through everything OmacVM keeps running and stopped what woke up for nothing:
- Gestures daemon in the VM: about 430 wakeups a second while idle → 0.
- Gestures helper on the Mac: 0.7 % CPU idle → 0.0 %.
- Clipboard from Parallels: no more processes started three times a second (and none at all without Parallels).
- Parallels display sync: a fifth of the work, no processes started.
- The Bridge: reads nothing while no VM is connected, and stops sending every small Wi-Fi signal change.
- Fusion clipboard: waits for a copy instead of asking twice a second.
- Updates: much faster. The boot files are only rebuilt when something changed (an
omacvm updatetook 8–12 s on a test VM instead of about a minute).
Safer
A full review by several independent agents, every finding checked by a second one:
- SSH host keys: OmacVM remembers each VM's SSH host key and checks it, and
omacvm updateonly sends the Bridge's key to VMs it set up. After rebuilding a VM, runomacvm apply --vm NAME --reset-host-key. - Gestures: the trackpad helper only talks to VMs that know the Bridge's token. VMs from before keep working until
omacvm updategives them the new daemon. - Clipboard: the clipboard from the VM no longer follows links.
- Input checks: VM names, host names and full names are checked or quoted wherever they are used.
Fixes
omacvm update: goes on past a VM it can't reach, and says why.- Install:
install.shno longer stops silently without Xcode's Command Line Tools.omacvm uninstall --helpshows help instead of uninstalling.
- VM folders:
--vm-dirworks with folder names that contain spaces, and with relative paths. - Guest config:
- Running
omacvm updateagain no longer deletes your own lines after OmacVM's keyboard block ininput.lua. - Config files are written in one step, only when they change.
- Running
- UTM: a new display mode waits for the next restart while Omarchy runs (switching it live blanked the screen).
- Memory-optimized kernel:
omacvm disable thp-kernelreally goes back to the stock kernel, and the kernel sources are kept between builds.
Update
omacvm updateNew to OmacVM?
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashOmacVM 2.3.1: fixes, and all routes measured
Fixes
- New VMs get the Mac's clock.
omacvm builddidn't know the newmac-clockfeature from 2.3.0 yet (#11). - Builds no longer hang at "Waiting for SSH" when ssh-agent holds several keys: OmacVM offers only its own key (#10).
- Canadian English keyboards get the English layout in the VM, so Shift+2 types
@(#13).
Thanks to @rvelasquez for all three.
Benchmarks
The README now compares all four ways side by side: Parallels, UTM, VMware Fusion and the coming OmacVM.app. It covers speed against the Mac itself, browser graphics, YouTube 4K, and the Mac's power draw with battery hours. Measured on a MacBook Pro M4 Max, each VM alone in full screen: Four ways.
- CPU: 89 to 99 % of the Mac on every route.
- Web apps (Speedometer): 52 % (UTM) to 71 % (Fusion).
- Battery, idle desktop: 17 to 18 hours on Parallels and Fusion, close to macOS itself (16 h). UTM is at 7 h because of a bug in UTM's QEMU (finding 15).
Update
omacvm updateNew to OmacVM?
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashOmacVM 2.3.0: the Mac's clock, every browser on the GPU
The Mac's clock in Omarchy's bar
Omarchy's clock now sits at the far right of the bar, as on the Mac, and shows the time the way your Mac's menu bar does: day of the week, date, 12 or 24 hours, seconds, in your Mac's language and region. Switching the feature off puts the clock back where it was:
omacvm disable mac-clockEvery browser on the GPU, on every route
Chromium, Chrome, Brave and Firefox now draw pages and WebGL on the GPU in Parallels, UTM and VMware Fusion.
- VMware Fusion: all four used to draw in software. Chromium, Chrome and Brave block VMware's GPU, and Firefox counts it as software. OmacVM now allows the GPU in all four. After installing Brave later, run
omacvm applyonce. - UTM: WebGL draws right in every browser (2.2.2), now also safe for a future UTM that does multisampling itself.
- Parallels: nothing to change, all four already used the GPU.
YouTube is decoded by the CPU on all three routes: none of them gives Linux hardware video decoding.
Older Parallels VMs use every display in full screen
When OmacVM starts a stopped Parallels VM, it now switches on Parallels' own full screen across all your displays. VMs built before 2.2 used macOS's full screen, which covers only one display.
Also
- Scroll momentum also works in Brave.
- New measurement tools for the coming comparison: the Mac's power draw and battery life per route, and which decoder plays YouTube 4K. How to run them: docs/benchmarks.
Update
omacvm updateThen quit and reopen your browsers once.
New to OmacVM?
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashOmacVM 2.2.2: WebGL on UTM, fixed
A fix for 2.2.1 on UTM. Please update.
2.2.1 gave Chrome the GPU on UTM. But UTM can't really draw into multisampled (antialiased) buffers. When a page read such a canvas back, it got nothing, and the whole browser window could go blank. OmacVM now draws every buffer without multisampling. The picture is right, but WebGL on UTM has no antialiasing.
Tested on UTM 5 with an M4 Max: Chrome, Chromium, Brave and Firefox all draw WebGL on the GPU, read it back right, and WebGL Aquarium runs at 119 fps.
Update
omacvm updateNew to OmacVM?
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashOmacVM 2.2.1: GPU in Chrome on UTM
Chrome on UTM now uses the GPU. WebGL works, and pages are drawn on the Mac's GPU instead of the CPU. This is for Chromium, Chrome and the other Chromium browsers.
UTM tells Linux the GPU can't do multisampling. Chrome needs it for OpenGL ES 3.0, so it switched its GPU off. OmacVM now corrects that value inside the VM. Tested on an M4 Max: WebGL Aquarium runs at 120 fps and looks right.
UTM's "Apple Core OpenGL" renderer still leaves Chrome without the GPU. OmacVM now sets UTM's default renderer, and omacvm check tells you if it isn't set. After updating, quit UTM and start the VM again.
Parallels and VMware Fusion already had the GPU in Chrome. The README's comparison table now has a row for it.
Update
omacvm updateNew to OmacVM?
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashOmacVM 2.2.0: VMware Fusion
VMware Fusion is now the third way to run Omarchy on your Mac, next to Parallels Desktop and UTM. Fusion is free, also for work, and uses every display.
New to OmacVM? Install it, and it starts the build right away:
curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bashAlready have it? Update, then build a Fusion VM:
omacvm update
omacvm build --vm-type fusionOr run omacvm build and pick VMware Fusion.
On Fusion
- Every display, in your macOS arrangement, with live resolution changes. Moving the pointer between displays works without jumps.
- GPU: Hyprland's animations and WebGL in Chrome run on the Mac's GPU.
- Everything else from OmacVM: the Bridge (Wi-Fi, Bluetooth, sound, Night Shift, True Tone, wallpaper), media keys, trackpad gestures with the slide between workspaces, Cmd+Space and other Cmd shortcuts, scroll momentum, and Omanotch.
- Speed: Speedometer 3.1 in Chrome reaches 70 % of the Mac (43.9 vs 62.9, M4 Max, 16 CPUs, 48 GB).
Stock Omarchy shows a black screen on Fusion. OmacVM builds Hyprland with a one-file fix for that (by Pascal-0x90, hyprwm/Hyprland#12966) and builds it again after every Hyprland update (10 to 20 minutes). It also builds VMware Tools, which Arch Linux ARM doesn't package.
Before you start: Fusion is a download after a Broadcom sign-in (omacvm build walks you through it), and macOS asks once to allow Accessibility for Fusion. Everything about the route: docs/routes/vmware-fusion.md.
Thanks to @prjoni99, who started this route in #1.
For every route
- Choose where the VM goes:
omacvm buildasks, and an external drive works too (--vm-dir). The default stays the app's own folder. UTM keeps its own library. - Parallels uses every display in full screen. New VMs get it built in;
omacvm checktells you how to switch it on for an older one. - The slide between workspaces is back after a three-finger swipe (Omarchy switches its animation off).
- Omanotch repairs itself if its first build failed.
- A three-route comparison in the README, and a new docs folder with the benchmark method and troubleshooting notes.
Known issue
On UTM, Chrome and other Chromium browsers still draw without the GPU: UTM reports no multisampling to Linux, and Chrome then turns its GPU off. The fix comes in 2.2.1.
Update
omacvm update