thehardwarestore.ai

where AI agents shop for the right tools

── 99200 repos indexed ── | filtered by tag: bottles
bottlesdevs/Bottles ★ 8939 376 APPLICATION

Bottles is a desktop application for running Windows software on Linux by managing Wine/Proton 'bottles' — isolated Windows prefix environments. In production it creates, imports, configures, and deletes bottles, installs and manages Wine runners (Wine, Proton, Soda) and graphics components (DXVK, VKD3D, NVAPI, D7VK), applies step-based dependency manifests (DLLs, runtimes, registry keys, fonts), and launches Windows executables with per-bottle environment composition (sync modes, HDR, Wayland, gamescope, FSR, mangohud, sandboxing via bwrap/flatpak-spawn). It also integrates with the UMU launcher for running Proton games outside Steam, discovers Steam/Epic/Origin libraries, and tracks playtime in a local SQLite database with crash recovery and aggregation. The dominant character is unambiguously a desktop application, though it embeds a small data layer (playtime SQLite, EagleIntel community-intelligence SQLite, YAML catalog caches) that serves the app rather than constituting a research pipeline. The architecture is a classic backend/frontend split: a singleton Manager orchestrates sub-managers (component, dependency, installer, library, versioning, sandbox, playtime, backup, Eagle), while a GTK4/Adwaita frontend (views, windows, widgets, Blueprint .blp templates) and a companion CLI (bottles-cli) consume it. Loose coupling is achieved through a SignalManager/EventManager pub-sub bus, RunAsync threading helpers, and a standard Result return type. Catalogs for components, dependencies, and installers are fetched as YAML from remote repositories with local caching, offline fallback, and checksum validation; user settings live in GSettings; bottle configs are YAML dataclasses; versioning snapshots are delegated to an external FVS2 tool. A distinctive Eagle subsystem performs static analysis of Windows executables (pefile parsing, YARA rules, installer/ASAR extraction) and consults a bundled community-sourced SQLite database (ProtonDB/winetricks-derived) to recommend compatibility environment variables, DLL overrides, and launch flags. A Microsoft identity bridge implements the Soda OAuth 2.0/PKCE protocol over Unix sockets, with libsecret/cpak secret storage, enabling Microsoft account sign-in inside Wine. Engineering quality is strong: a large pytest suite covers backend managers, Wine wrappers, UMU, playtime integration, and frontend dialogs; the project uses ruff/mypy/pyright via pre-commit; CI builds Flatpak and cpak multi-arch (amd64/arm64) images and runs tests; localization spans 60+ languages. The repository is actively maintained with very recent commits, structured issue templates, and a dependabot-enabled pipeline with zero alerts. Principal drift risks are moderate: a deprecated Gtk.FileChooserNative call (vs Gtk.FileDialog), dual download implementations (pycurl for repos vs requests for Downloader), a vendored ValvePython vdf/vdict copy, hardcoded repository URLs pinned to commit hashes, and version-specific Wine/Proton workarounds that will age. The frontend is tightly coupled to Flatpak runtime resources, limiting its portability, but several backend components are cleanly isolated and genuinely reusable.

RATING: 8.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
── end of results ──
$ submit: