diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..64a3ea7 --- /dev/null +++ b/README.en.md @@ -0,0 +1,304 @@ +
Native Linux windows for every Windows app — real icons, real WM_CLASS,
+pin-to-taskbar. FreeRDP RemoteApp + dockur/windows. Zero config.
# Latest stable release (default)
+curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash
+
+# Latest main HEAD (development; may be unstable)
+curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash -s -- --main
+
+# Uninstall (keeps Windows VM data; pass --purge to wipe everything)
+curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/uninstall.sh | bash -s -- --confirm
+
+
+
+
+
+Windows About / Task Manager / PowerShell each in their own Linux window, alongside the WinPodX Dashboard (live Pod / RAM / CPU gauges, workspace tiles).
+
+[](#status-beta)
+[](https://github.com/kernalix7/winpodx/releases)
+
+[](LICENSE)
+[](https://www.python.org/)
+[](#testing)
+[](https://github.com/kernalix7/winpodx/actions/workflows/ci.yml)
+[](https://github.com/kernalix7/winpodx/stargazers)
+[](https://github.com/kernalix7/winpodx/releases)
+
+###### Works on
+
+[](https://www.opensuse.org/)
+[](https://fedoraproject.org/)
+[](https://fedoraproject.org/atomic-desktops/)
+[](https://www.debian.org/)
+[](https://ubuntu.com/)
+[](https://www.redhat.com/)
+[](https://archlinux.org/)
+[](docs/INSTALL.md#nix)
+[](docs/INSTALL.md)
+
+**English** · [한국어](docs/README.ko.md) · [Install](docs/INSTALL.md) · [Usage](docs/USAGE.md) · [Features](docs/FEATURES.md) · [Architecture](docs/ARCHITECTURE.md) · [Comparison](docs/COMPARISON.md)
+
+| + +**Bare-metal disguise (VM-detection avoidance)** — new in 0.7.0 · opt-in, off by default +- 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 +- `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) +- Host-derived strings stay in the **local image only** (never committed to git); serial / UUID / asset-tag are never read +- **al-khaser 0.82-verified** — enable with `winpodx config set pod.disguise_level max` or the GUI Settings "Bare-metal" selector +- [Details →](docs/FEATURES.md#bare-metal-disguise-vm-detection-avoidance) + + | |
| + +**Reverse-open** +- Linux apps appear in the Windows guest's right-click "Open with…" menu by default +- Correct per-app icons in both the short menu and the long "Choose another app" dialog +- Selecting one round-trips the file open to host `xdg-open` +- Auto-discovers host-side Linux apps + their MIME associations from freedesktop standards +- Manage via `winpodx host-open` CLI or the GUI Settings panel +- [Details →](docs/FEATURES.md#reverse-open-linux-apps-in-windows-open-with) + + |
+
+**Seamless app windows**
+- RemoteApp (RAIL) renders each Windows app as a native Linux window — no full desktop
+- Per-app taskbar icons via `WM_CLASS` matching (`/wm-class: |
| + +**Zero-config launch** +- First app click auto-provisions everything: config, container, desktop entries +- 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) +- Manual rescan any time via `winpodx app refresh` or the GUI Refresh button +- 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) + + |
+
+**Peripherals & sharing**
+- **Clipboard**: bidirectional copy-paste (text + images) — on by default
+- **Sound**: RDP audio streaming (`/sound:sys:alsa`) — on by default
+- **Printer**: Linux printers shared to Windows — on by default
+- **Home directory**: shared as `\\tsclient\home`
+- **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
+- **Host USB / PCI device passthrough** (0.6.0): pass real host devices into the Windows guest — `winpodx device list / attach |
| + +**Automation & security** +- Auto suspend / resume: container pauses when idle, resumes on next launch +- 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) +- 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 +- Host-adaptive Windows-on-KVM tuning profile (v0.5.5): `+invtsc`, `platform_tick` and more, gated by host capability — `tuning_profile = auto|safe|off` +- Password auto-rotation: 20-char cryptographic password, 7-day cycle with atomic rollback +- Smart DPI scaling: auto-detects from GNOME, KDE, Sway, Hyprland, Cinnamon, xrdb +- Windows debloat: telemetry, ads, Cortana, search indexing disabled by default +- FreeRDP `extra_flags` allowlist (regex-validated) as the user-input safety boundary +- Time sync: force Windows clock resync after host sleep/wake + + |
+
+**Operations & resilience**
+- 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 ` or GUI Settings → "WinPodX UI language"
+- 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)
+- 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]`
+- Offline / air-gapped install (`--source` + `--image-tar`)
+- One-line uninstall (keeps Windows VM data unless `--purge`)
+- 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)
+- 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
+- Stdlib-leaning Python (no pip-deps on 3.11+; one `tomli` fallback on 3.9 / 3.10)
+
+ |