• Stars
    star
    4,375
  • Rank 9,305 (Top 0.2 %)
  • Language
    Swift
  • License
    BSD 2-Clause "Sim...
  • Created about 2 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Virtualize macOS 12 and later on Apple Silicon, VirtualBuddy is a virtual machine GUI for macOS M1, M2, M3

VirtualBuddy

VirtualBuddy can virtualize macOS 12 and later on Apple Silicon, with the goal of offering features that are useful to developers who need to test their apps on multiple versions of macOS, especially betas.

System Requirements

  • Apple Silicon Mac
  • macOS 12.3 or later
  • In order to install a version of macOS that's newer than the version running on the host (for example, macOS 13 VM in VirtualBuddy running on macOS 12), Xcode is required; Xcode beta may be required for installing macOS betas (FB11061314)
  • In order to install a Linux distro, macOS 13 is required

โš ๏ธ WARNING: This project is experimental. Things might break or not work as expected.

Download from GitHub Releases

Feature Checklist

  • Ability to boot any version of macOS 12 or macOS 13, including betas
  • Ability to boot some ARM-based Linux distros (tested with Ubuntu Server and Ubuntu Desktop)
  • Built-in installation wizard
    • Select from a collection of restore images available on Apple's servers
    • Install the latest stable version of macOS
    • Local restore image IPSW file
    • Custom restore image URL
    • Install a Linux distro from a local .iso file
    • Select from a collection of Linux distros
    • Install Linux from URL
  • Boot into recovery mode (in order to disable SIP, for example)
  • Networking and file sharing support
  • Clipboard sharing (without the need to be running macOS Ventura) (experimental ยน)
  • Customize virtual machine hardware configuration
  • Edit NVRAM variables

ยน To enable clipboard sharing, build the VirtualBuddyGuest scheme, then copy the VirtualBuddyGuest app to the virtual machine (through file sharing, for example) and run it. This will keep the clipboard in sync between the guest and host machines. The feature is experimental, so it might be buggy and it's definitely not secure.

Tips and Tricks

Taking Advantage of APFS

Sometimes when trying things out in the OS installed in one of the virtual machines, things might break, requiring a full install of the guest operating system again, which is a pain.

Thanks to APFS cloning though, you can just duplicate a virtual machine within your library folder (using Command + D in Finder), and the copy will take almost no additional disk space. This way you can have a "clean" copy of your VM, do whatever you want with a duplicate of it, and then throw the copy away and re-duplicate the clean version if things break.

Screen Resolution

VirtualBuddy sets up its virtual machines to have the same screen resolution as the host's main screen. This is great if you want to use the VM in full screen and take advantage of the entire resolution of your Mac's display.

The default mode the VM OS selects for the display uses the native resolution that's available to it though, which can make things look really small. In order to address this, go into System Preferences > Displays within the guest operating system and choose a scaled resolution.

Sharing Folders Between Host and Virtual Machine

You can share folders from your Mac to the Virtual Machine and vice-versa using regular macOS file sharing that can be configured in System Preferences/Settings.

When both the Virtual Machine and the host are running macOS 13 or later, it's possible to share folders directly by configuring them in the VM settings within VirtualBuddy before booting up the VM.

To mount shared folders in the VM, run the following command in the VM's Terminal:

mkdir -p ~/Desktop/VirtualBuddyShared && mount -t virtiofs VirtualBuddyShared ~/Desktop/VirtualBuddyShared

Building

Xcode 14.1 is required.

  • Open the VirtualBuddy/Config/Signing.xcconfig file
  • Set the VB_BUNDLE_ID_PREFIX variable to something unique like com.yourname.
  • Select the VirtualBuddy project in the Xcode sidebar
  • Under "Targets", select "VirtualBuddy"
  • Go to the Signing & Capabilities tab and select your development team under Signing > Team
  • Repeat the same process for the "VirtualBuddyGuest" target
  • Build the VirtualBuddy scheme (the one that doesn't have (Managed) in its name)

More Repositories

1

WWDC

The unofficial WWDC app for macOS
Swift
8,525
star
2

AssetCatalogTinkerer

An app that lets you open .car files and browse/extract their images.
Swift
2,050
star
3

PodcastMenu

Put Overcast on your Mac's menu bar
Swift
1,267
star
4

AnimojiStudio

Make cute emoji videos with unlimited duration and share anywhere (iPhone X, XS and XS Max only!)
Objective-C
1,184
star
5

MultipeerKit

MultipeerConnectivity + Codable = โค๏ธ
Swift
1,070
star
6

AppleEvents

The unofficial Apple Events app for macOS
Objective-C
825
star
7

NoiseBuddy

Control the listening mode on your AirPods Pro in the Touch Bar or Menu Bar.
Swift
725
star
8

PlayAlways

Create Xcode playgrounds from your menu bar
Swift
546
star
9

StatusBuddy

Keep track of Apple's developer and consumer system statuses right in your menu bar.
Swift
443
star
10

DarkModeBuddy

Switch your Mac's system theme based on the ambient light intensity.
Swift
429
star
11

TouchBarSpaceFight

A simple, fun game for the MacBook Pro's Touch Bar
Swift
361
star
12

CloudKitCodable

An encoder and decoder for CKRecord
Swift
355
star
13

AppearanceMaker

Create custom appearances to customize your app's look with NSAppearance
Objective-C
234
star
14

F3X

Fight Flash Fraud: test your SD cards to see if they're genuine and in good working order
Objective-C
203
star
15

MacPreviewUtils

Handy tools for SwiftUI previews on macOS.
Swift
186
star
16

GRProKit

Open-source ProKit clone
Objective-C
173
star
17

NoteTaker

A simple note taking app for macOS and iOS which uses Realm and CloudKit for syncing
Swift
171
star
18

EmojiPickerUI

Framework implementing a macOS-style emoji picker for iPadOS.
Swift
169
star
19

MultipeerDemo

AirDrop-like functionality using MultipeerConnectivity
Swift
158
star
20

GRGlassWindow

A NSWindow subclass with a beautiful glass-like title bar
Objective-C
151
star
21

Milkshakr

A sample app used in many of my apps and workshops.
Swift
150
star
22

sheet

Custom iOS sheet
Swift
144
star
23

BlurredBgApp

iOS 13 app that shows the user's wallpaper as its background.
Swift
137
star
24

VisualPairingHack

An experiment with the private VisualPairing framework used for automatic iOS and watchOS device pairing
Objective-C
137
star
25

dmgdist

Automate the process of creating, uploading and notarizing the DMG of a Mac app.
Swift
131
star
26

FanFan

If you're a fan of fans, this app is for you.
Swift
118
star
27

CAARPlayer

An app that lets you view .caar files
Objective-C
115
star
28

CustomStatusBarWindow

Demonstrates a custom NSWindowController that can be attached to a NSStatusItem on macOS.
Swift
114
star
29

DealStack

Simple card stack implemented with SwiftUI
Swift
113
star
30

PIPContainer

An easy to use interface for picture-in-picture on macOS 10.12 and later
Objective-C
113
star
31

FOTWindow

A NSWindow subclass that makes auto hiding and showing the title bar (ร  la QuickTime X) a lot easier, and allows for a custom title bar drawing block.
Objective-C
112
star
32

CloudKitchenSink20

Sample code for my article on CloudKit.
Swift
111
star
33

ChromeCastCore

An open source implementation of the Google Cast SDK for macOS
Swift
106
star
34

GRCustomizableWindow

NSWindow subclass with support to custom titlebar height, background color and title color
Objective-C
103
star
35

DarkMode

Enable "real dark mode" on OS X / macOS
Objective-C
100
star
36

ocrit

Simple command-line utility for performing OCR using Apple's Vision framework
Swift
96
star
37

AppleRemoteFramework

Use the Apple Remote to control your OS X apps.
Objective-C
93
star
38

ThemingWithBundles

Sample project for my article on bundles
Swift
91
star
39

TextTransformer

Apple ExtensionFoundation/ExtensionKit sample app
Swift
79
star
40

GRNavigationController

Simple navigation controller for OS X apps.
Objective-C
77
star
41

mvcwithsugar

Companion Playground for my talk at dotSwift 2020
Swift
75
star
42

WWDC-tvOS

[ABANDONED] WWDC app for the new Apple TV
Swift
74
star
43

PearlSaver

Face ID detection animation as a screensaver
Objective-C
72
star
44

BreatheReplica

A simple replica of the Apple Watch Breathe app animation written in SwiftUI.
Swift
72
star
45

launchapp

Launch iOS applications from the command line (jailbreak only)
Shell
72
star
46

TwitterPublishPlugin

A plugin for Publish that let's you easily embed tweets in your posts.
Swift
70
star
47

KeyframesPlayer

A simple macOS app to preview animations created with Facebook's keyframes framework
Swift
70
star
48

GRPushSegue

A custom NSStoryboardSegue to make a nice iOS-like push transition.
Objective-C
68
star
49

FinderSyrahUI

An experiment showing how Finder might look like on the next OSX.
Objective-C
65
star
50

fluid-interactions-talk

A Swift playground implementing some simple fluid interactions.
Swift
64
star
51

D22Bar

Test your app with the new iPhone status bar
Objective-C
63
star
52

iosarchitecture

Randomly generate the next big thing ยฎ on iOS app development
Swift
62
star
53

UXKitDemo

Demo app using Apple's private UXKit framework
Objective-C
61
star
54

GRProgressIndicator

reimplementation of NSProgressIndicator with some customization support
Objective-C
56
star
55

wwdc.io

The official website for the unofficial WWDC app for macOS ๐Ÿค“ โค๏ธ
HTML
55
star
56

DarkImagePublishPlugin

Publish plugin that lets you have both light and dark mode variants for images on your site ๐Ÿ˜Ž
Swift
51
star
57

Astronomer

Sample app for my talk at the CocoaHeads Conference
Swift
50
star
58

GRStatusBar

Safari-like status bar for macOS apps
Swift
50
star
59

GRVibrantTitlebarWindow

NSWindow with vibrant titlebar
Objective-C
49
star
60

Listr

Sample for my article on writing command line interfaces for iOS apps.
Swift
46
star
61

ConfigurableWidgetDemo

AppKit macOS app with a WidgetKit widget that can be configured with dynamic options from an intents extension
Swift
46
star
62

VLCX

[ABANDONED] QuickTime-like video player based on libvlc
Objective-C
45
star
63

CloudKitchenSink

A collection of CloudKit code samples
Swift
40
star
64

TTWindow

NSWindow subclass that allows you to set a custom tint color for the titlebar
Objective-C
37
star
65

followdown

Remove annoying badges from System Preferences on macOS.
Swift
36
star
66

Flights

Simple flight information tracker for OS X.
Objective-C
36
star
67

VideoMeme

A sample project showing how a document-based app can be created with SwiftUI.
Swift
35
star
68

DocumentBasedSwiftPlaygroundsApp

A document-based app in Swift Playgrounds 4 for iPad
Swift
29
star
69

VisualEffectDebugger

Simple debugger for NSVisualEffectView
Objective-C
29
star
70

Unsterificator

Mac menu bar app to quickly toggle mono/stereo audio
Swift
26
star
71

Chuck

The best Chuck Norris jokes in the palm of your hand
Swift
25
star
72

CheckmarkDemo

Sample code for my article on using Core Animation Archives
Swift
18
star
73

encodeformastodon

Simple command-line tool for macOS that encodes videos in a format suitable for publishing to Mastodon
Swift
17
star
74

Pawtraits_SampleCode

Sample code for the Fast & Fluid talk
Swift
17
star
75

GRCodeSignatureVerifier

Simple code signature verification for macOS apps
Objective-C
16
star
76

CAArchivesTalk

Code for my talk on CoreAnimation Archives
Swift
16
star
77

CoreFollowUpAttack

CoreFollowUp phishing attack on macOS
Objective-C
15
star
78

xGhostPreventer

An Xcode plug-in designed to prevent accidental app distribution through an unsafe version of Xcode
Objective-C
15
star
79

XPNotificationCenter

Cross-process notification center for iOS, WatchOS and OS X
Swift
15
star
80

WWDC-Win

WWDC app for Windows 10
C#
14
star
81

Binge

Projeto exemplo da minha palestra sobre desenvolvimento pra Mac
Swift
12
star
82

AdobeNativeFullscreen

A plugin to make some Adobe Creative Cloud apps support the native fullscreen mode on OS X.
Objective-C
11
star
83

killerapp

Handy helper to quickly restart stuff on OS X
Swift
10
star
84

libav-ios-build

Automatically builds libav as universal frameworks for iOS and iOS simulator.
Shell
7
star
85

IGListDiff

Diffing part of IGListKit isolated so it can be used on macOS
Objective-C
6
star
86

GRStatusBarDemo

Demo app for GRStatusBar
Swift
5
star
87

LocationAPI

Objective-C class for finding coordinates of a location using Google Maps
Objective-C
5
star
88

GRThemeStore

A simple way of storing app assets (mainly images) in a compressed file
Objective-C
4
star
89

EnvVarExample

Sample of using xcconfig to inject environment variable values into app
Swift
4
star
90

RealmBindingsDemo

A sample project demonstrating how to use Cocoa Bindings with Realm.
Swift
4
star
91

GRCodeSignatureVerifierDemo

Demo app for GRCodeSignatureVerifier
Swift
3
star
92

GRProKitResources

Contains the original sketch projects for the various UI elements in GRProKit
3
star
93

create_iconset

Shell script for creating OSX icon sets
Shell
2
star
94

pluggable

Sample cocoa app with support to javascript plugins, can be used as a starting point
Objective-C
2
star
95

wwdc-data

Static data used by the WWDC app for macOS
1
star
96

shakedown-data

Data used by Shakedown.app
1
star
97

correiocsv

Ruby
1
star