Skip to content

Releases: gillesgoetsch/omacvm

OmacVM 2.6.0: OmacVM.app, its own Mac app

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 04 Oct 08:31
f7bd37f

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 app

This 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 apply starts 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 update

This also replaces an older OmacVM.app (not while it runs).

New to OmacVM?

curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bash

Prebuilt VMs for OmacVM 2.6.0 (prebuilt-2.6.0)

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 04 Oct 09:01
f7bd37f

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

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 03 Oct 19:37
903c854

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 --prebuilt

A 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 update

New to OmacVM?

curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bash

OmacVM 2.4.1: notifications under the notch, snapshots, two VMs

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 03 Oct 19:10
90ca4df

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 check tells 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 update

New to OmacVM?

curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bash

OmacVM 2.4.0: keyboard light, longer battery life, safer

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 03 Oct 16:10
6a1ef16

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 update took 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 update only sends the Bridge's key to VMs it set up. After rebuilding a VM, run omacvm 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 update gives 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.sh no longer stops silently without Xcode's Command Line Tools.
    • omacvm uninstall --help shows help instead of uninstalling.
  • VM folders: --vm-dir works with folder names that contain spaces, and with relative paths.
  • Guest config:
    • Running omacvm update again no longer deletes your own lines after OmacVM's keyboard block in input.lua.
    • Config files are written in one step, only when they change.
  • 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-kernel really goes back to the stock kernel, and the kernel sources are kept between builds.

Update

omacvm update

New to OmacVM?

curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bash

OmacVM 2.3.1: fixes, and all routes measured

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 03 Oct 14:34
c15198f

Fixes

  • New VMs get the Mac's clock. omacvm build didn't know the new mac-clock feature 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 update

New to OmacVM?

curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bash

OmacVM 2.3.0: the Mac's clock, every browser on the GPU

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 03 Oct 10:54
6bcdd00

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-clock

Every 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 apply once.
  • 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 update

Then quit and reopen your browsers once.

New to OmacVM?

curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bash

OmacVM 2.2.2: WebGL on UTM, fixed

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 03 Oct 10:30
1cb4400

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 update

New to OmacVM?

curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bash

OmacVM 2.2.1: GPU in Chrome on UTM

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 03 Oct 10:03
cd0648b

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 update

New to OmacVM?

curl -fsSL https://raw.githubusercontent.com/gillesgoetsch/omacvm/main/install.sh | bash

OmacVM 2.2.0: VMware Fusion

Choose a tag to compare

@gillesgoetsch gillesgoetsch released this 03 Oct 09:45
a513302

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 | bash

Already have it? Update, then build a Fusion VM:

omacvm update
omacvm build --vm-type fusion

Or 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 build asks, 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 check tells 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