Active community fork of the archived whisky-app/whisky — a modern Wine wrapper for macOS built with SwiftUI
685
stars
1,014
commits
Swift
primary language
Sep 7, 2026
updated
Wine but a bit stronger
Active community fork. The original whisky-app/whisky was archived on April 9, 2025 with a final maintenance notice. This fork, maintained by @frankea, continues development — addressing the backlog of upstream issues and adding new functionality. Not affiliated with the original project or getwhisky.app.
Whisky provides a clean and easy-to-use graphical wrapper for Wine built in native SwiftUI. You can make and manage bottles, install and run Windows apps and games, and unlock the full potential of your Mac with no technical knowledge required.
Familiar UI that integrates seamlessly with macOS
One-click bottle creation and management
Debug and profile with ease
brew install --cask frankea/whisky/whisky
This taps frankea/homebrew-whisky and installs the latest signed/notarized DMG. brew upgrade --cask picks up new releases.
The default
brew install --cask whiskystill installs the archived original (last release April 2025) and always will until that cask is updated. Use the qualifiedfrankea/whisky/whiskyform to get this fork.
In-app updates are delivered through Sparkle from https://frankea.github.io/Whisky/appcast.xml.
The original whisky-app/whisky was archived on April 9, 2025 with a final maintenance notice. If you're running it today, you're on a stale build with no path forward for new fixes. This fork picks up where the upstream left off — version 3.0.1 shipped 54 requirements covering the 10 categories of upstream issue tracking (#40–#50).
To switch:
brew install --cask frankea/whisky/whisky or follow the manual steps above.~/Library/Containers/com.isaacmarovitz.Whisky/ and imports the ones you pick. Bottles are referenced in place — nothing is moved or copied — so the original app keeps working if you'd like to keep it around.brew uninstall --cask whisky if you installed it via Homebrew. Your bottles stay put.The original app uses a different bundle identifier (com.franke.Whisky here vs. com.isaacmarovitz.Whisky), which is why bottles aren't shared automatically. The old Bottle → Export / File → Import Bottle route still works if you'd rather move bottles by hand or onto another Mac. With no critical bottles, you can skip migration entirely — the new app creates a fresh bottle on first launch.
Dragging Whisky.app to the Trash (or brew uninstall --cask frankea/whisky/whisky) removes the app but leaves the Wine runtime, your bottles, and app data behind — by design, so reinstalling doesn't re-download ~330 MB or lose your bottles.
⚠️ Back up your bottles first if you want to keep them. Removing the container below deletes every bottle stored in its default location. Bottles you created in a custom folder live wherever you put them — check Bottle → Reveal in Finder before deleting anything.
To remove Whisky completely, delete the app and then these paths (all under ~/Library):
# 1. The app itself
rm -rf "/Applications/Whisky.app" # or: brew uninstall --cask frankea/whisky/whisky
# 2. Bottles + bottle list (default bottle location is inside this container)
rm -rf ~/Library/Containers/com.franke.Whisky
rm -rf ~/Library/Containers/com.franke.Whisky.WhiskyThumbnail
# 3. The Wine runtime (~330 MB) and other app support
rm -rf ~/Library/Application\ Support/com.franke.Whisky
# 4. Caches, logs, preferences, and saved state
rm -rf ~/Library/Caches/com.franke.Whisky
rm -rf ~/Library/Logs/com.franke.Whisky
rm -rf ~/Library/HTTPStorages/com.franke.Whisky
rm -f ~/Library/Preferences/com.franke.Whisky.plist
If you also installed bottles in a custom location, delete those folders too. Migrated bottles that still belong to the original app live under ~/Library/Containers/com.isaacmarovitz.Whisky and are left untouched by the steps above.
Whisky sends no data by default. During first-run setup you can opt in to anonymous usage telemetry — a checkbox that is off unless you tick it, and a toggle you can change anytime in Settings → Privacy.
When (and only when) enabled, Whisky sends five events covering the first-run funnel, so the maintainer can see where new installs fail:
| Event | Properties |
|---|---|
runtime_install_started | — |
runtime_install_succeeded | — |
runtime_install_failed | reason: one of download_failed, verify_failed, tarball_missing, extract_failed, runtime_incomplete |
first_bottle_created | — |
first_program_launch_attempted | — |
runtime_install_started is sent once per setup attempt; the _succeeded /
_failed events are sent per install attempt (so retries are counted). The two
first_… events are sent at most once per install.
No personal data, file names, paths, raw error text, or identifiers tied to you
are ever sent. Events carry a random per-install anonymous ID (reset if you opt
out). Every event Whisky can send is the list above, and all of it is declared in
one file, Whisky/Utils/Telemetry.swift, with
every automatic-capture feature of the analytics SDK disabled and no person
profile ever created (identify() is never called). Each event also carries the
SDK's standard context — app and macOS version, hardware model, locale, and more;
see SECURITY.md for the full list. Like any HTTPS request,
PostHog's ingestion sees the connecting IP (GeoIP enrichment is disabled); none
of this is tied to your identity.
WhiskyKit, the core framework powering Whisky, has comprehensive API documentation:
Per-issue accounting of how this fork addresses the open issues from the
archived upstream repo. Read docs/AUDIT.md for the
methodology — including how to read the addressed-direct vs
addressed-categorical distinction and what unverified GameDB entries
actually mean.
The Coverage badge above is scoped to the whiskykit flag — line
coverage of the framework that holds the bottle, Wine, GameDB, and
PE-parser logic, measured by swift test --enable-code-coverage per
.github/workflows/CI.yml. The blended
project-wide number on the Codecov dashboard
reads much lower because it averages in the SwiftUI app target, which
only receives best-effort UI-test coverage. Read the badge as
"WhiskyKit unit-test coverage," not full-app coverage.
WhiskyUITests gives behavioural coverage of the SwiftUI surface (toolbar,
create-bottle sheet, fixture-dependent flows). CI now runs them with
-enableCodeCoverage YES and uploads the resulting app-target coverage to
Codecov under a separate whiskyapp flag (best-effort — the upload never gates
CI). Because UI tests exercise far less of the app than the unit tests do of
WhiskyKit, expect the app-target number to read lower than the WhiskyKit badge
above.
Whisky is possible thanks to the magic of several projects:
Special thanks to Gcenx, ohaiibuzzle, Nat Brown, and Isaac Marovitz (original author) for their support and contributions!
| Whisky doesn't exist without CrossOver. If you want a fully-supported commercial Wine experience on macOS, check out CrossOver from CodeWeavers. (This fork has no affiliate arrangement and receives nothing from CrossOver sales.) |
(top 30 of 43)
Swift
78.1%
Shell
20.4%
Python
1.0%
Active community fork of the archived whisky-app/whisky — a modern Wine wrapper for macOS built with SwiftUI
685
stars
1,014
commits
Swift
primary language
Sep 7, 2026
updated
Wine but a bit stronger
Active community fork. The original whisky-app/whisky was archived on April 9, 2025 with a final maintenance notice. This fork, maintained by @frankea, continues development — addressing the backlog of upstream issues and adding new functionality. Not affiliated with the original project or getwhisky.app.
Whisky provides a clean and easy-to-use graphical wrapper for Wine built in native SwiftUI. You can make and manage bottles, install and run Windows apps and games, and unlock the full potential of your Mac with no technical knowledge required.
Familiar UI that integrates seamlessly with macOS
One-click bottle creation and management
Debug and profile with ease
brew install --cask frankea/whisky/whisky
This taps frankea/homebrew-whisky and installs the latest signed/notarized DMG. brew upgrade --cask picks up new releases.
The default
brew install --cask whiskystill installs the archived original (last release April 2025) and always will until that cask is updated. Use the qualifiedfrankea/whisky/whiskyform to get this fork.
In-app updates are delivered through Sparkle from https://frankea.github.io/Whisky/appcast.xml.
The original whisky-app/whisky was archived on April 9, 2025 with a final maintenance notice. If you're running it today, you're on a stale build with no path forward for new fixes. This fork picks up where the upstream left off — version 3.0.1 shipped 54 requirements covering the 10 categories of upstream issue tracking (#40–#50).
To switch:
brew install --cask frankea/whisky/whisky or follow the manual steps above.~/Library/Containers/com.isaacmarovitz.Whisky/ and imports the ones you pick. Bottles are referenced in place — nothing is moved or copied — so the original app keeps working if you'd like to keep it around.brew uninstall --cask whisky if you installed it via Homebrew. Your bottles stay put.The original app uses a different bundle identifier (com.franke.Whisky here vs. com.isaacmarovitz.Whisky), which is why bottles aren't shared automatically. The old Bottle → Export / File → Import Bottle route still works if you'd rather move bottles by hand or onto another Mac. With no critical bottles, you can skip migration entirely — the new app creates a fresh bottle on first launch.
Dragging Whisky.app to the Trash (or brew uninstall --cask frankea/whisky/whisky) removes the app but leaves the Wine runtime, your bottles, and app data behind — by design, so reinstalling doesn't re-download ~330 MB or lose your bottles.
⚠️ Back up your bottles first if you want to keep them. Removing the container below deletes every bottle stored in its default location. Bottles you created in a custom folder live wherever you put them — check Bottle → Reveal in Finder before deleting anything.
To remove Whisky completely, delete the app and then these paths (all under ~/Library):
# 1. The app itself
rm -rf "/Applications/Whisky.app" # or: brew uninstall --cask frankea/whisky/whisky
# 2. Bottles + bottle list (default bottle location is inside this container)
rm -rf ~/Library/Containers/com.franke.Whisky
rm -rf ~/Library/Containers/com.franke.Whisky.WhiskyThumbnail
# 3. The Wine runtime (~330 MB) and other app support
rm -rf ~/Library/Application\ Support/com.franke.Whisky
# 4. Caches, logs, preferences, and saved state
rm -rf ~/Library/Caches/com.franke.Whisky
rm -rf ~/Library/Logs/com.franke.Whisky
rm -rf ~/Library/HTTPStorages/com.franke.Whisky
rm -f ~/Library/Preferences/com.franke.Whisky.plist
If you also installed bottles in a custom location, delete those folders too. Migrated bottles that still belong to the original app live under ~/Library/Containers/com.isaacmarovitz.Whisky and are left untouched by the steps above.
Whisky sends no data by default. During first-run setup you can opt in to anonymous usage telemetry — a checkbox that is off unless you tick it, and a toggle you can change anytime in Settings → Privacy.
When (and only when) enabled, Whisky sends five events covering the first-run funnel, so the maintainer can see where new installs fail:
| Event | Properties |
|---|---|
runtime_install_started | — |
runtime_install_succeeded | — |
runtime_install_failed | reason: one of download_failed, verify_failed, tarball_missing, extract_failed, runtime_incomplete |
first_bottle_created | — |
first_program_launch_attempted | — |
runtime_install_started is sent once per setup attempt; the _succeeded /
_failed events are sent per install attempt (so retries are counted). The two
first_… events are sent at most once per install.
No personal data, file names, paths, raw error text, or identifiers tied to you
are ever sent. Events carry a random per-install anonymous ID (reset if you opt
out). Every event Whisky can send is the list above, and all of it is declared in
one file, Whisky/Utils/Telemetry.swift, with
every automatic-capture feature of the analytics SDK disabled and no person
profile ever created (identify() is never called). Each event also carries the
SDK's standard context — app and macOS version, hardware model, locale, and more;
see SECURITY.md for the full list. Like any HTTPS request,
PostHog's ingestion sees the connecting IP (GeoIP enrichment is disabled); none
of this is tied to your identity.
WhiskyKit, the core framework powering Whisky, has comprehensive API documentation:
Per-issue accounting of how this fork addresses the open issues from the
archived upstream repo. Read docs/AUDIT.md for the
methodology — including how to read the addressed-direct vs
addressed-categorical distinction and what unverified GameDB entries
actually mean.
The Coverage badge above is scoped to the whiskykit flag — line
coverage of the framework that holds the bottle, Wine, GameDB, and
PE-parser logic, measured by swift test --enable-code-coverage per
.github/workflows/CI.yml. The blended
project-wide number on the Codecov dashboard
reads much lower because it averages in the SwiftUI app target, which
only receives best-effort UI-test coverage. Read the badge as
"WhiskyKit unit-test coverage," not full-app coverage.
WhiskyUITests gives behavioural coverage of the SwiftUI surface (toolbar,
create-bottle sheet, fixture-dependent flows). CI now runs them with
-enableCodeCoverage YES and uploads the resulting app-target coverage to
Codecov under a separate whiskyapp flag (best-effort — the upload never gates
CI). Because UI tests exercise far less of the app than the unit tests do of
WhiskyKit, expect the app-target number to read lower than the WhiskyKit badge
above.
Whisky is possible thanks to the magic of several projects:
Special thanks to Gcenx, ohaiibuzzle, Nat Brown, and Isaac Marovitz (original author) for their support and contributions!
| Whisky doesn't exist without CrossOver. If you want a fully-supported commercial Wine experience on macOS, check out CrossOver from CodeWeavers. (This fork has no affiliate arrangement and receives nothing from CrossOver sales.) |
(top 30 of 43)
Swift
78.1%
Shell
20.4%
Python
1.0%