{"id":49117120,"url":"https://github.com/kernalix7/winpodx","last_synced_at":"2026-06-15T08:01:27.208Z","repository":{"id":351241161,"uuid":"1204405167","full_name":"kernalix7/winpodx","owner":"kernalix7","description":"Windows pod system for Linux","archived":false,"fork":false,"pushed_at":"2026-04-24T23:44:34.000Z","size":5962,"stargazers_count":22,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T01:35:18.366Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kernalix7.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-08T01:29:08.000Z","updated_at":"2026-04-24T23:43:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"d5d9dc18-ce7e-4b51-a8d6-c4604a506fb2","html_url":"https://github.com/kernalix7/winpodx","commit_stats":null,"previous_names":["kernalix7/winpodx"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/kernalix7/winpodx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernalix7%2Fwinpodx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernalix7%2Fwinpodx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernalix7%2Fwinpodx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernalix7%2Fwinpodx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kernalix7","download_url":"https://codeload.github.com/kernalix7/winpodx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernalix7%2Fwinpodx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32320683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-21T08:06:38.703Z","updated_at":"2026-06-15T08:01:27.196Z","avatar_url":"https://github.com/kernalix7.png","language":"Python","funding_links":["https://github.com/sponsors/kernalix7","https://ko-fi.com/kernalix7"],"categories":["Python"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/images/CI.svg\" alt=\"WinPodX\" width=\"320\"\u003e\n\n### Click an app. Word opens. That's it.\n\n\u003cp\u003eNative Linux windows for every Windows app — real icons, real \u003ccode\u003eWM_CLASS\u003c/code\u003e,\u003cbr\u003e\npin-to-taskbar. FreeRDP RemoteApp + dockur/windows. Zero config.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e# Latest stable release (default)\ncurl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash\n\n# Latest main HEAD (development; may be unstable)\ncurl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash -s -- --main\n\n# Uninstall (keeps Windows VM data; pass --purge to wipe everything)\ncurl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/uninstall.sh | bash -s -- --confirm\u003c/code\u003e\u003c/pre\u003e\n\n\u003ca href=\"docs/images/demo.png\"\u003e\n  \u003cimg src=\"docs/images/demo.png\" alt=\"WinPodX in action — Windows apps as native Linux windows on KDE\" width=\"720\"\u003e\n\u003c/a\u003e\n\n\u003csub\u003eWindows About / Task Manager / PowerShell each in their own Linux window, alongside the WinPodX Dashboard (live Pod / RAM / CPU gauges, workspace tiles).\u003c/sub\u003e\n\n[![Beta](https://img.shields.io/badge/status-beta-orange?style=for-the-badge)](#status-beta)\n[![Latest](https://img.shields.io/github/v/release/kernalix7/winpodx?include_prereleases\u0026style=for-the-badge\u0026label=latest\u0026color=2962FF)](https://github.com/kernalix7/winpodx/releases)\n\n[![license](https://img.shields.io/github/license/kernalix7/winpodx?style=flat-square\u0026color=blue)](LICENSE)\n[![python](https://img.shields.io/badge/python-3.9%2B-3776AB?style=flat-square\u0026logo=python\u0026logoColor=white)](https://www.python.org/)\n[![tests](https://img.shields.io/badge/tests-1800%2B-2EA44F?style=flat-square)](#testing)\n[![CI](https://img.shields.io/github/actions/workflow/status/kernalix7/winpodx/ci.yml?branch=main\u0026style=flat-square\u0026label=CI)](https://github.com/kernalix7/winpodx/actions/workflows/ci.yml)\n[![stars](https://img.shields.io/github/stars/kernalix7/winpodx?style=flat-square\u0026color=FFD93D\u0026logo=github\u0026logoColor=white)](https://github.com/kernalix7/winpodx/stargazers)\n[![downloads](https://img.shields.io/github/downloads/kernalix7/winpodx/total?style=flat-square\u0026color=2EA44F)](https://github.com/kernalix7/winpodx/releases)\n\n###### Works on\n\n[![openSUSE](https://img.shields.io/badge/openSUSE-73BA25?style=flat-square\u0026logo=opensuse\u0026logoColor=white)](https://www.opensuse.org/)\n[![Fedora](https://img.shields.io/badge/Fedora-294172?style=flat-square\u0026logo=fedora\u0026logoColor=white)](https://fedoraproject.org/)\n[![Fedora Atomic Desktops](https://img.shields.io/badge/Fedora%20Atomic-294172?style=flat-square\u0026logo=fedora\u0026logoColor=white)](https://fedoraproject.org/atomic-desktops/)\n[![Debian](https://img.shields.io/badge/Debian-A81D33?style=flat-square\u0026logo=debian\u0026logoColor=white)](https://www.debian.org/)\n[![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=flat-square\u0026logo=ubuntu\u0026logoColor=white)](https://ubuntu.com/)\n[![RHEL family](https://img.shields.io/badge/RHEL%20%2F%20Alma%20%2F%20Rocky-EE0000?style=flat-square\u0026logo=redhat\u0026logoColor=white)](https://www.redhat.com/)\n[![Arch](https://img.shields.io/badge/Arch-1793D1?style=flat-square\u0026logo=archlinux\u0026logoColor=white)](https://archlinux.org/)\n[![NixOS](https://img.shields.io/badge/NixOS-5277C3?style=flat-square\u0026logo=nixos\u0026logoColor=white)](docs/INSTALL.md#nix)\n[![AppImage](https://img.shields.io/badge/AppImage-any%20distro-6F42C1?style=flat-square\u0026logo=appimage\u0026logoColor=white)](docs/INSTALL.md)\n\n\u003csub\u003e**English** \u0026nbsp;·\u0026nbsp; [한국어](docs/README.ko.md) \u0026nbsp;·\u0026nbsp; [Install](docs/INSTALL.md) \u0026nbsp;·\u0026nbsp; [Usage](docs/USAGE.md) \u0026nbsp;·\u0026nbsp; [Features](docs/FEATURES.md) \u0026nbsp;·\u0026nbsp; [Architecture](docs/ARCHITECTURE.md) \u0026nbsp;·\u0026nbsp; [Comparison](docs/COMPARISON.md)\u003c/sub\u003e\n\n\u003c/div\u003e\n\n---\n\n\u003e ### Status: Beta\n\u003e WinPodX is in active development (**v0.7.2**). **v0.7.0** introduced the **bare-metal disguise** (#246, opt-in / off by default): with `pod.disguise_level balanced | max` the Windows guest reads like a physical machine to VM-detection software (Nvidia GPU-passthrough \"code 43\", launch-gate VM checks, VM-hostile installers) — verified against al-khaser 0.82 — and the default guest username became `WPX-User`. **v0.7.1** is a UX + integration release: discovered Windows apps now register **automatic file associations** so they appear in your file manager's \"Open with\" menu (#545, on by default, only *added* — never set as the default handler); the GUI gains **app management** — reset-to-detected, a custom-icon picker, multi-select bulk hide/remove, and a restore list for deleted apps (#530); a **quick app launcher** (`winpodx launch`, #561) gives a Start-menu-style picker bindable to a DE hotkey; **`winpodx gui` no longer blocks the terminal** (#549); `winpodx doctor` **warns on an old FreeRDP** with broken RemoteApp windows (#546); and `install.sh --main` is now honoured on **Atomic Fedora** (#548). **v0.7.2** is a bug-fix release: it fixes a GUI crash on *Refresh Apps* (#567) and the tray *Terminate Session* / *USB Devices* submenus (#573) on KDE/Plasma, discovers apps with Chinese/Japanese/Korean names (#553), keeps the container across `pod stop` (no more recreate-on-update), and gives a clear error when Windows credentials are missing (#569). The AppImage is **Thin** (~110 MB) — only FreeRDP + Python + Qt + winpodx — and uses the host's `podman` / `docker`. The CLI surface settled in 0.6.0 stands: **`winpodx guest`** (guest-side ops), **`winpodx install`** (install / disk ops), and **`winpodx doctor`** (diagnostics with `--json` / `--quick` / `--fix`); the post-create chain is the single **`winpodx provision`**. First install still takes ~5–10 minutes (Windows VM ISO download + Sysprep + OEM apply); `winpodx pod wait-ready --logs` shows live progress. Please file issues at \u003chttps://github.com/kernalix7/winpodx/issues\u003e if something breaks.\n\n**No full-screen RDP.** Each Windows app becomes its own Linux window with its real icon — pinnable, alt-tabbable, file-associated, both directions. Drop into a full Windows desktop only when you actually want one (`winpodx app run desktop`).\n\nWinPodX runs a Windows container (via [dockur/windows](https://github.com/dockur/windows)) in the background and presents Windows apps as native Linux applications through FreeRDP RemoteApp, while a bearer-authed HTTP agent inside the guest handles the host→guest command channel without flashing a PowerShell window. The reverse direction — Linux apps surfaced in the Windows \"Open with…\" menu — is handled by a host-side listener that consumes JSON requests written by per-slug Rust shims inside the guest. **Near-zero external Python dependencies** (stdlib only on Python 3.11+; one pure-Python `tomli` fallback on 3.9/3.10).\n\n## Minimum requirements\n\n**Before installing**, make sure your machine actually supports virtualisation. WinPodX runs Windows in a KVM-backed container; without these three, the install will run to completion but Windows will never boot.\n\n| Requirement | How to check | Fix |\n|---|---|---|\n| **Intel VT-x or AMD-V enabled in BIOS / UEFI** | `lscpu \\| grep -i virtualization` shows `VT-x` or `AMD-V` | Reboot → firmware setup → enable \"Intel Virtualization Technology\" / \"SVM Mode\" / \"VT-x\". OFF by default on many laptops. |\n| **kvm kernel module loaded** | `lsmod \\| grep kvm` lists `kvm_intel` or `kvm_amd` | `sudo modprobe kvm_intel` (Intel) or `sudo modprobe kvm_amd` (AMD). Auto-loads on next boot once BIOS allows it. |\n| **Your user is in the `kvm` group** | `id -nG \\| tr ' ' '\\n' \\| grep kvm` returns `kvm` | `sudo usermod -aG kvm $USER`, then log out + back in. |\n\nHardware: x86_64 or aarch64 CPU with virtualisation extensions, 8 GB+ RAM (12 GB+ recommended), ~30 GB free disk for the Windows image. `install.sh` aborts with the same diagnostic if `/dev/kvm` is missing after the package install step — most \"install ran fine but Windows never boots\" bug reports trace back to one of the rows above.\n\n## Quick install\n\nOne-liner (any supported Linux distro):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash\n```\n\nOr via a native package manager:\n\n```bash\n# openSUSE Tumbleweed / Leap / Slowroll\nsudo zypper addrepo https://download.opensuse.org/repositories/home:/Kernalix7/openSUSE_Tumbleweed/home:Kernalix7.repo\nsudo zypper install winpodx\n\n# Fedora 42 / 43 / 44 (dnf5 — Fedora 41+)\nsudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:/Kernalix7/Fedora_43/home:Kernalix7.repo\nsudo dnf install winpodx\n\n# Debian / Ubuntu — grab the matching .deb from the latest release\nsudo apt install ./winpodx_\u003cversion\u003e_all_debian13.deb\n\n# AlmaLinux / Rocky / RHEL 9 / 10 — grab the matching .rpm\nsudo dnf install ./winpodx-\u003cversion\u003e-0.noarch.el10.rpm\n\n# Arch\nyay -S winpodx\n\n# Nix\nnix run github:kernalix7/winpodx\n\n# AppImage (distro-agnostic, single file)\n# Download winpodx-\u003cversion\u003e-x86_64.AppImage from the latest GitHub release\nchmod +x winpodx-*-x86_64.AppImage\n./winpodx-*-x86_64.AppImage setup\n```\n\n\u003e **After a package-manager / AppImage install:** run `winpodx setup` once to generate `~/.config/winpodx/winpodx.toml` + compose.yaml. The curl one-liner does this for you (and waits ~5–10 min for the Windows first boot); package installs ship the binary only so `apt install` / `dnf install` / `yay -S` / first AppImage launch don't trigger a 10-minute Windows ISO download out of the blue. After setup, just launching an app (`winpodx app run desktop`) auto-provisions the pod the first time.\n\u003e\n\u003e The Thin AppImage (0.6.0) bundles Python + Qt + winpodx + FreeRDP only — the container runtime lives on the host (`podman` ≥ 4 recommended, `docker` also supported) so the AppImage no longer fights a host stack you already have (#357, #363). Pre-0.6.0 fat AppImages bundled the whole podman stack and shadowed the host's. Host-side requirements left: a container runtime via your package manager, `/dev/kvm`, `kvm` group membership, and `/etc/subuid` / `/etc/subgid` for rootless Podman. `winpodx setup-host` fixes the kvm / subuid bits via a single `pkexec` prompt; `winpodx doctor` surfaces anything still missing.\n\nSee [docs/INSTALL.md](docs/INSTALL.md) for offline / air-gapped builds, source installs, version pinning, and uninstall.\n\n## First-time setup\n\nIf you used the `curl install.sh` one-liner, setup already ran and the Windows VM is booting -- skip to [Launch](#launch). For every other install path (package managers, AppImage, source, pip) run setup once before the first app launch:\n\n```bash\n# Auto setup -- host-detected defaults, no prompts\nwinpodx setup\n\n# Interactive wizard -- pick backend, cores, RAM, edition, language, timezone, debloat preset\nwinpodx setup --customize\n```\n\nSetup writes `~/.config/winpodx/winpodx.toml` + `compose.yaml`, registers the GUI launcher, and confirms the host has FreeRDP + Podman / Docker + KVM. If any of those are missing, the output ends with a per-distro install command (e.g. `sudo apt install xfreerdp3 podman podman-compose` on Debian / Ubuntu, `sudo dnf install ...` on Fedora) -- run it and re-run `winpodx setup`.\n\nThe first app launch then provisions the pod, pulls the dockur image, runs the Windows ISO download + Sysprep + OEM apply, and reaches a usable RDP session in ~5-10 min. `winpodx pod wait-ready --logs` tails container progress live so you can watch each phase:\n\n```bash\nwinpodx app run desktop          # First launch -- ~5-10 min, subsequent launches near-instant\nwinpodx pod wait-ready --logs    # Optional: watch first-boot progress live\n```\n\nRun `winpodx doctor` any time afterwards to re-check host state and surface the next fix command if something drifts:\n\n```bash\nwinpodx doctor                   # Read-only -- prints what would need fixing\nwinpodx guest apply-fixes        # Re-applies guest-side runtime fixes (RDP timeouts, NIC power-save, etc.)\n```\n\n## Launch\n\n```bash\nwinpodx app run word              # Launch Word\nwinpodx app run word ~/doc.docx   # Open a file\nwinpodx app run desktop           # Full Windows desktop\nwinpodx launch                    # Quick app launcher (Start-menu style picker)\n```\n\nOr just click an app icon in your application menu. `winpodx launch` opens a searchable picker of your Windows apps — bind it to a desktop-environment custom shortcut (KDE: *System Settings → Shortcuts → Custom*; GNOME: *Settings → Keyboard → Custom Shortcuts*) for a system-wide hotkey. See [docs/USAGE.md](docs/USAGE.md) for the full CLI, the Qt6 GUI, health checks, and configuration.\n\n## Key features\n\n\u003ctable\u003e\n\u003ctr\u003e\u003ctd colspan=\"2\"\u003e\n\n**Bare-metal disguise (VM-detection avoidance)** — new in 0.7.0 · opt-in, off by default\n- Makes the Windows guest read as a **physical machine** to software that refuses to run under a detected hypervisor — Nvidia GPU-passthrough \"code 43\", launch-gate VM checks, VM-hostile installers\n- `pod.disguise_level balanced | max`: **balanced** hides the CPUID hypervisor bit + KVM signature and mirrors the host's real SMBIOS/DMI; **max** (\"Hardened\") adds a locally-built patched-QEMU image (`winpodx disguise build-image`) that rewrites the ACPI / disk / sensor / USB fingerprints and drops the virtio + Red-Hat PCI tells (keeps USB3)\n- Host-derived strings stay in the **local image only** (never committed to git); serial / UUID / asset-tag are never read\n- **al-khaser 0.82-verified** — enable with `winpodx config set pod.disguise_level max` or the GUI Settings \"Bare-metal\" selector\n- [Details →](docs/FEATURES.md#bare-metal-disguise-vm-detection-avoidance)\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd width=\"50%\"\u003e\n\n**Reverse-open**\n- Linux apps appear in the Windows guest's right-click \"Open with…\" menu by default\n- Correct per-app icons in both the short menu and the long \"Choose another app\" dialog\n- Selecting one round-trips the file open to host `xdg-open`\n- Auto-discovers host-side Linux apps + their MIME associations from freedesktop standards\n- Manage via `winpodx host-open` CLI or the GUI Settings panel\n- [Details →](docs/FEATURES.md#reverse-open-linux-apps-in-windows-open-with)\n\n\u003c/td\u003e\u003ctd width=\"50%\"\u003e\n\n**Seamless app windows**\n- RemoteApp (RAIL) renders each Windows app as a native Linux window — no full desktop\n- Per-app taskbar icons via `WM_CLASS` matching (`/wm-class:\u003cstem\u003e` + `StartupWMClass`)\n- Bidirectional file associations: double-click `.docx` in your file manager → Word opens\n- Multi-session RDP: bundled [rdprrap](https://github.com/kernalix7/rdprrap) auto-enables up to 10 independent sessions\n- Multi-monitor RAIL (0.6.0): a remote-app window keeps working input when dragged onto a second monitor — on by default (`cfg.rdp.multimon`, default `span`)\n- RAIL prerequisites set automatically during unattended install\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd width=\"50%\"\u003e\n\n**Zero-config launch**\n- First app click auto-provisions everything: config, container, desktop entries\n- Auto-discovery on first boot scans the running Windows guest and registers every installed app with its real icon (Registry App Paths, Start Menu, UWP/MSIX, Chocolatey, Scoop)\n- Manual rescan any time via `winpodx app refresh` or the GUI Refresh button\n- Multi-backend: Podman (default), Docker, manual RDP (the libvirt backend was dropped in 0.6.0 — stay on ≤0.5.x or use the manual backend for your own libvirt domain)\n\n\u003c/td\u003e\u003ctd width=\"50%\"\u003e\n\n**Peripherals \u0026 sharing**\n- **Clipboard**: bidirectional copy-paste (text + images) — on by default\n- **Sound**: RDP audio streaming (`/sound:sys:alsa`) — on by default\n- **Printer**: Linux printers shared to Windows — on by default\n- **Home directory**: shared as `\\\\tsclient\\home`\n- **USB drives**: auto-mapped to drive letters (E:, F:, …) via FileSystemWatcher; subfolders work for drives plugged in after session start; the USB desktop shortcut (`\\\\tsclient\\media`) always resolves, opening an empty folder when nothing is mounted instead of erroring\n- **Host USB / PCI device passthrough** (0.6.0): pass real host devices into the Windows guest — `winpodx device list / attach \u003cid\u003e / detach \u003cid\u003e`, a GUI \"Devices\" tab (two-column host↔guest mover), and a system-tray USB switcher. USB hot-plugs live (`cfg.pod.usb_live`, default on); PCI is boot-added and needs a guest restart plus a `--force` / dialog confirmation\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd width=\"50%\"\u003e\n\n**Automation \u0026 security**\n- Auto suspend / resume: container pauses when idle, resumes on next launch\n- Pod auto-start on login (v0.5.9, opt-in): `winpodx autostart on` installs a tray autostart entry so the pod starts/resumes at login — off by default (`autostart off|status`, or a GUI Settings checkbox)\n- UNRESPONSIVE → recover (v0.5.5): stalled RDP guest is detected on `RUNNING → UNRESPONSIVE` and self-healed via in-guest TermService cycle, no `pod restart` needed\n- Host-adaptive Windows-on-KVM tuning profile (v0.5.5): `+invtsc`, `platform_tick` and more, gated by host capability — `tuning_profile = auto|safe|off`\n- Password auto-rotation: 20-char cryptographic password, 7-day cycle with atomic rollback\n- Smart DPI scaling: auto-detects from GNOME, KDE, Sway, Hyprland, Cinnamon, xrdb\n- Windows debloat: telemetry, ads, Cortana, search indexing disabled by default\n- FreeRDP `extra_flags` allowlist (regex-validated) as the user-input safety boundary\n- Time sync: force Windows clock resync after host sleep/wake\n\n\u003c/td\u003e\u003ctd width=\"50%\"\u003e\n\n**Operations \u0026 resilience**\n- Multilingual UI (v0.5.9): tray / GUI / CLI fully translated to 7 languages (en / ko / zh / ja / de / fr / it), auto-detected from `$LANG` — override with `winpodx language \u003ccode\u003e` or GUI Settings → \"WinPodX UI language\"\n- Windows disk auto-grow (v0.5.9): C: grows itself when it fills past a threshold while idle, bounded by host free space — or grow on demand (`winpodx install grow-disk [SIZE]`, `winpodx install disk-usage`, GUI Tools → Grow Disk)\n- Guest sync (v0.5.9): push updated agent / urlacl / rdprrap / fixes into a running guest after a host upgrade — automatic once per pod start, or `winpodx guest sync [--force]`\n- Offline / air-gapped install (`--source` + `--image-tar`)\n- One-line uninstall (keeps Windows VM data unless `--purge`)\n- Health checks via `winpodx doctor` (deps / pod / RDP / agent / disk / round-trip / password age; `--json` for machine-readable, `--quick` for cheap subset, `--fix` for idempotent auto-remediation of common findings)\n- Redesigned Qt6 GUI (0.6.0): a left Start-menu-style navigation sidebar + a new **Dashboard** home with live Pod / RAM / CPU ring gauges, disk usage, an auto-recovery status card, pinned/recent workspace tiles, and a reverse-open toggle; the app launcher is now the \"All apps\" page, alongside Devices / Settings / Tools / Terminal / Info — plus a lighter system tray. In-house SVG icon set, responsive reflow, and a hero search that doubles as a command bar\n- Stdlib-leaning Python (no pip-deps on 3.11+; one `tomli` fallback on 3.9 / 3.10)\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\nSee [docs/FEATURES.md](docs/FEATURES.md) for deep dives, including multi-session RDP internals, app profile schema, and the reverse-open architecture.\n\n## Documentation\n\n| Document | What's inside |\n|----------|---------------|\n| [INSTALL.md](docs/INSTALL.md) | Every install path — one-liner, package managers, AppImage, offline, Nix, source |\n| [USAGE.md](docs/USAGE.md) | CLI reference, Qt6 GUI tour, health checks, configuration file |\n| [FEATURES.md](docs/FEATURES.md) | Reverse-open, multi-session RDP, peripherals, app profiles, auto-discovery |\n| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | How it works (diagram), tech stack, source tree, data flows |\n| [COMPARISON.md](docs/COMPARISON.md) | WinPodX vs winapps / LinOffice / winboat, and WinPodX vs Wine |\n| [CHANGELOG.md](CHANGELOG.md) | Full version history |\n| [CONTRIBUTING.md](CONTRIBUTING.md) | Development setup and workflow |\n| [SECURITY.md](SECURITY.md) | Security disclosure process |\n\n## Supported distros\n\n| Distro | Package manager | Status |\n|--------|-----------------|--------|\n| openSUSE Tumbleweed / Leap 15.6 / Leap 16.0 / Slowroll | zypper | Tested |\n| Fedora 42 / 43 / 44 / Rawhide | dnf | Supported |\n| Fedora Silverblue / Kinoite / Sericea / Bluefin / Bazzite (42 / 43 / 44) | rpm-ostree (OBS, `--apply-live`) | Supported |\n| Debian 12 / 13, Ubuntu 24.04 / 25.04 / 25.10 / 26.04 | apt | Supported |\n| AlmaLinux / Rocky / RHEL 9 / 10 | dnf | Supported |\n| Arch / Manjaro | pacman + `yay -S winpodx` | Supported |\n| NixOS (and Nix on any distro) | nix flake | Supported |\n\nEach tag push (`v*.*.*`) publishes to all channels automatically — see [packaging/](packaging/) for maintainer details.\n\n## Testing\n\n```bash\n# From repo root (no install needed)\nexport PYTHONPATH=\"$PWD/src\"\npython3 -m pytest tests/    # 1800+ tests\nruff check src/ tests/      # Lint\nruff format --check src/ tests/\n```\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, branch naming, commit conventions, and CI expectations.\n\n## Security\n\nFor security issues, follow the process in [SECURITY.md](SECURITY.md).\n\n## Star History\n\n\u003ca href=\"https://star-history.com/#kernalix7/winpodx\u0026Date\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=kernalix7/winpodx\u0026type=Date\u0026theme=dark\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=kernalix7/winpodx\u0026type=Date\" /\u003e\n    \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=kernalix7/winpodx\u0026type=Date\" /\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n## Support\n\nIf WinPodX makes your Linux desktop a little nicer:\n\n[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-GitHub-EA4AAA?logo=githubsponsors\u0026logoColor=white\u0026style=for-the-badge)](https://github.com/sponsors/kernalix7)\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-F16061?logo=ko-fi\u0026logoColor=white\u0026style=for-the-badge)](https://ko-fi.com/kernalix7)\n[![Fairy](https://img.shields.io/badge/🧚_Fairy-EE6E73?style=for-the-badge\u0026logoColor=white)](https://fairy.hada.io/@kernalix7)\n\nGitHub Sponsors supports recurring or one-time sponsorship; Ko-fi handles international cards and PayPal; fairy.hada.io is a Korean tipping platform. Bug reports, PRs, and stars on the repo are equally appreciated and free.\n\n## License\n\n[MIT](LICENSE) — Kim DaeHyun (kernalix7@kodenet.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernalix7%2Fwinpodx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkernalix7%2Fwinpodx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernalix7%2Fwinpodx/lists"}