MCPcopy
hub / github.com/TibixDev/winboat

github.com/TibixDev/winboat @v0.9.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.9.0 ↗
1,511 symbols 3,879 edges 45 files 39 documented · 3%
README
WinBoat Logo

WinBoat

Windows for Penguins. Run Windows apps on 🐧 Linux with ✨ seamless integration

Screenshots

WinBoat Dashboard WinBoat Apps Native Windows

⚠️ Work in Progress ⚠️

WinBoat is currently in beta, so expect to occasionally run into hiccups and bugs. You should be comfortable with some level of troubleshooting if you decide to try it, however we encourage you to give it a shot anyway.

Features

  • 🎨 Elegant Interface: Sleek and intuitive interface that seamlessly integrates Windows into your Linux desktop environment, making it feel like a native experience
  • 📦 Automated Installs: Simple installation process through our interface - pick your preferences & specs and let us handle the rest
  • 🚀 Run Any App: If it runs on Windows, it can run on WinBoat. Enjoy the full range of Windows applications as native OS-level windows in your Linux environment
  • 🖥️ Full Windows Desktop: Access the complete Windows desktop experience when you need it, or run individual apps seamlessly integrated into your Linux workflow
  • 📁 Filesystem Integration: Your home directory is mounted in Windows, allowing easy file sharing between the two systems without any hassle
  • ✨ And many more: Smartcard passthrough, resource monitoring, and more features being added regularly

How Does It Work?

WinBoat is an Electron app which allows you to run Windows apps on Linux using a containerized approach. Windows runs as a VM inside a Docker/Podman container, we communicate with it using the WinBoat Guest Server to retrieve data we need from Windows. For compositing applications as native OS-level windows, we use FreeRDP together with Windows's RemoteApp protocol.

Prerequisites

Before running WinBoat, ensure your system meets the following requirements:

  • RAM: At least 4 GB of RAM
  • CPU: At least 2 CPU threads
  • Storage: At least 32 GB free space on the drive your selected install folder corresponds to
  • Virtualization: KVM enabled in BIOS/UEFI
  • In case of Docker:
  • Docker: Required for containerization
    • Installation Guide
    • ⚠️ NOTE: Docker Desktop is not supported, you will run into issues if you use it
  • Docker Compose v2: Required for compatibility with docker-compose.yml files
  • Docker User Group: Add your user to the docker group
  • In case of Podman:
  • Podman: Required for containerization
  • Podman Compose: Required for compatibility with podman-compose.yml files
  • FreeRDP: Required for remote desktop connection (Please make sure you have Version 3.x.x with sound support included)
  • [OPTIONAL] Kernel Modules: The iptables / nftables and iptable_nat kernel modules can be loaded for network autodiscovery and better shared filesystem performance, but this is not obligatory in newer versions of WinBoat

Downloading

You can download the latest Linux builds under the Releases tab. We currently offer four variants:

  • AppImage: A popular & portable app format which should run fine on most distributions
  • Unpacked: The raw unpacked files, simply run the executable (linux-unpacked/winboat)
  • .deb: The intended format for Debian based distributions
  • .rpm: The intended format for Fedora based distributions

Known Issues About Container Runtimes

  • Docker Desktop is unsupported for now
  • USB passthrough via Podman is currently unsupported

Building WinBoat

  • For building you need to have NodeJS and Go installed on your system
  • Clone the repo (git clone https://github.com/TibixDev/WinBoat)
  • Install the dependencies (npm i)
  • Build the app and the guest server using npm run build:linux-gs
  • You can now find the built app under dist with an AppImage and an Unpacked variant

Running WinBoat in development mode

  • Make sure you meet the prerequisites
  • Additionally, for development you need to have NodeJS and Go installed on your system
  • Clone the repo (git clone https://github.com/TibixDev/WinBoat)
  • Install the dependencies (npm i)
  • Build the guest server (npm run build-guest-server)
  • Run the app (npm run dev)

Contributing

Contributions are welcome! Whether it's bug fixes, feature improvements, or documentation updates, we appreciate your help making WinBoat better.

Please note: We maintain a focus on technical contributions only. Pull requests containing political/sexual content, or other sensitive/controversial topics will not be accepted. Let's keep things focused on making great software! 🚀

Feel free to:

  • Report bugs and issues
  • Submit feature requests
  • Contribute code improvements
  • Help with documentation
  • Share feedback and suggestions

Check out our issues page to get started, or feel free to open a new issue if you've found something that needs attention.

License

WinBoat is licensed under the MIT license

Inspiration / Alternatives

These past few years some cool projects have surfaced with similar concepts, some of which we've also taken inspirations from.\ They're awesome and you should check them out:

Socials & Contact

  • Website
  • Twitter
  • Mastodon
  • Bluesky
  • Discord
  • Email
  • Ask DeepWiki

Star History

Star History Chart

Extension points exported contracts — how you extend this code

Window (Interface)
(no doc)
src/renderer/window.d.ts
ScrollOptions (Interface)
(no doc)
src/renderer/directives/autoscroll.ts
AutoScrollElement (Interface)
(no doc)
src/renderer/directives/autoscroll.ts
InstallEvents (Interface)
(no doc)
src/renderer/lib/install.ts

Core symbols most depended-on inside this repo

addEventListener
called by 372
src/renderer/public/xel/xel.js
dispatchEvent
called by 219
src/renderer/public/xel/xel.js
removeEventListener
called by 173
src/renderer/public/xel/xel.js
mi
called by 109
src/renderer/public/xel/xel.js
error
called by 80
src/renderer/public/xel/xel.js
n
called by 76
src/renderer/public/xel/xel.js
yi
called by 66
src/renderer/public/xel/xel.js
bi
called by 63
src/renderer/public/xel/xel.js

Shape

Method 1,161
Function 173
Class 163
Enum 7
Interface 4
Struct 3

Languages

TypeScript99%
Go1%

Modules by API surface

src/renderer/public/xel/xel.js1,299 symbols
src/renderer/lib/winboat.ts35 symbols
src/renderer/utils/port.ts25 symbols
src/renderer/lib/usbmanager.ts22 symbols
src/renderer/lib/install.ts16 symbols
src/renderer/lib/containers/podman.ts13 symbols
src/renderer/lib/containers/docker.ts12 symbols
src/renderer/lib/config.ts12 symbols
guest_server/main.go11 symbols
src/renderer/lib/qmp.ts8 symbols
scripts/dev-server.ts7 symbols
src/renderer/utils/getFreeRDP.ts6 symbols

Dependencies from manifests, versioned

github.com/go-ole/go-olev1.2.6 · 1×
github.com/rs/corsv1.11.1 · 1×
github.com/shirou/gopsutilv3.21.11+incompatibl · 1×
github.com/tklauser/go-sysconfv0.3.15 · 1×
github.com/tklauser/numcpusv0.10.0 · 1×
github.com/yusufpapurcu/wmiv1.2.4 · 1×
golang.org/x/cryptov0.43.0 · 1×
golang.org/x/sysv0.37.0 · 1×
@electron/remote2.1.2 · 1×
@iconify/vue4.3.0 · 1×

For agents

$ claude mcp add winboat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact