
桌面應用【免費下載鏈接】BottlesRun Windows software and games on Linux項目地址https://gitcode.com/gh_mirrors/bo/Bottles點擊查看免費下載Bottles 是一個面向 Linux 桌面的開源應用其核心使命是Run Windows Software on Linux——通過 Wine 與 Proton 等技術讓 Windows 應用與游戲在 Linux 上獲得原生的運行體驗。本文以倉庫 README.md 為基礎系統(tǒng)講解 Bottles 的安裝方式、三種本地構建路徑開發(fā) Flatpak、發(fā)布 Flatpak、Meson 直構并結合倉庫源碼剖析其背后的組件化架構、瓶Bottle配置模型與運行器管理機制幫助你從會用進階到會搭、懂原理。項目概覽Bottle 是什么Bottles 將每個 Windows 應用環(huán)境抽象為一個獨立的瓶Bottle本質上是對 Wine 前綴wineprefix的現(xiàn)代化管理封裝。相比直接操作wine命令行Bottles 提供了一套完整的圖形界面GTK4 前端與命令行工具CLI自動處理運行器Runner、圖形組件DXVK、VKD3D、NVAPI、依賴與安裝器Installer等繁雜環(huán)節(jié)。從倉庫結構可以清晰看到它的雙層設計詳見 bottles/backend/ 與 bottles/frontend/backend核心邏輯層包含managers/瓶、組件、依賴、安裝器、庫、版本控制、Steam/Epic/Ubisoft 集成等管理模塊、wine/Wine 命令封裝如 reg、wineboot、winecfg、msiexec、explorer 等 30 余個工具模塊、models/配置與結果數(shù)據(jù)模型、umu/UMU 啟動器集成與dlls/DXVK 等 DLL 組件。frontendGTK4 圖形界面與 CLIfrontend/cli/cli.py提供命令行入口frontend/bottles.py與frontend/main.py構成 GUI 入口。當前倉庫版本號為 67.4見 VERSIONcpak.json中同步聲明了version: 67.4并描述為Run and manage your Windows applications on Linux with Wine and Proton。安裝方式Bottles 官方支持兩種主流分發(fā)渠道Flathub以 Flatpak 形式分發(fā)應用 ID 為com.usebottles.bottles是官方推薦的首選渠道沙箱環(huán)境與權限模型均由 Flatpak 清單定義。cpak倉庫根目錄提供了 cpak.json 清單可用于 cpak 容器化分發(fā)該清單聲明了/usr/bin/bottles與/usr/bin/bottles-cli兩個二進制入口以及桌面項com.usebottles.bottles.desktop。值得注意的是cpak.json中關于權限與環(huán)境的細節(jié)它們揭示了 Bottles 運行時的關鍵依賴網(wǎng)絡network: true、Wayland socket、PulseAudio socket 默認開啟deviceAll: true允許訪問全部設備GPU 等硬件直通文件系統(tǒng)僅向~/.local/share/bottles與~/.local/share/icons開放讀寫環(huán)境變量中注入了 MangoHud、OBSVkCapture、gamescope 等 Vulkan 擴展的搜索路徑/usr/lib/extensions/vulkan/...這正是 Bottles 能在 Flatpak 沙箱內調用這些圖形增強工具的通道。這一設計在源碼中有對應印證bottles/backend/globals.py通過check_flatpak_extension()檢測gamemoderun、gamescope、mangohud、obs-vkcapture等外部工具并探測 vkBasalt、LSFG-VK幀生成等 Vulkan 層的可用性運行期再據(jù)實啟用對應功能。從源碼構建 Bottles?? 官方在 README 中明確警告在測試實驗性構建前務必備份全部數(shù)據(jù)。Bottles 主要面向 Flatpak 環(huán)境構建倉庫內提供三種路徑開發(fā)版 Flatpak、發(fā)布版 Flatpak以及 Meson 直構需在 Flatpak 開發(fā)環(huán)境中進行。開發(fā)版 FlatpakDevelopment Flatpak面向日常開發(fā)迭代使用倉庫內的開發(fā)清單build-aux/com.usebottles.bottles.Devel.json應用 ID 為com.usebottles.bottles.Devel。步驟從 Flathub 安裝org.flatpak.Builder克隆倉庫或你自己的 forkhttps://github.com/bottlesdevs/Bottles.git在倉庫根目錄執(zhí)行flatpak run org.flatpak.Builder --install --install-deps-fromflathub --default-branchmaster --force-clean build-dir build-aux/com.usebottles.bottles.Devel.json必要時加--user參數(shù)以用戶態(tài)安裝運行flatpak run com.usebottles.bottles.Devel啟動開發(fā)版。發(fā)布版 FlatpakRelease Flatpak穩(wěn)定版的權威清單由 Flathub 倉庫獨立維護com.usebottles.bottles清單它定義了每次發(fā)布所使用的 Bottles 源碼、依賴、運行時與權限。本地構建發(fā)布版需單獨克隆 Flathub 清單倉庫git clone https://github.com/flathub/com.usebottles.bottles.git cd com.usebottles.bottles flatpak run org.flatpak.Builder \ --user \ --install \ --install-deps-fromflathub \ --default-branchlocal \ --force-clean \ build-dir \ com.usebottles.bottles.yml構建完成后通過flatpak run com.usebottles.bottles//local啟動。這里有兩個值得注意的行為local分支與 Flathub 分支共用同一個應用 ID 和數(shù)據(jù)目錄~/.local/share/bottles兩個構建的改動會相互影響若要構建歷史版本先用git log -- com.usebottles.bottles.src.yaml找到對應的 Flathub 提交并 checkout再執(zhí)行構建命令。Meson 直構由于 Bottles 官方只以 Flatpak 形式分發(fā)倉庫僅提供在 Flatpak 環(huán)境內直接構建的路徑下載并安裝最新構建包bottles-x86_64.zip解壓后執(zhí)行flatpak install bottles.flatpak必要時加--user在倉庫根目錄運行flatpak run -d --filesystem$PWD --commandbash com.usebottles.bottles.Devel ./build-aux/install.sh該腳本會將 Bottles 構建并安裝到倉庫內的build/目錄通過./build/bin/bottles啟動。官方同時說明由于 GNOME Builder 的限制目前無法直接用 Builder 構建 Bottles相關討論見GNOME/gnome-builder#2061上述方式是最佳替代方案。此外meson_options.txt中的profile選項default/development可用于控制構建配置的側重點。深入源碼Bottles 的核心架構瓶配置模型一切圍繞 BottleConfig每個 Bottle 的配置以 YAML 形式存儲由 bottles/backend/models/config.py 中的BottleConfig數(shù)據(jù)類建模并通過dump()/load()實現(xiàn)原子化讀寫先寫臨時文件再os.replace避免配置損壞。配置的關鍵字段包括Name、Arch默認win64、Windows默認win10、Runner運行器名稱支持sys-*系統(tǒng)前綴EnvironmentSteam或Custom決定是否啟用 Steam 環(huán)境集成ParametersBottleParams圖形與運行參數(shù)集合SandboxBottleSandboxParams沙箱共享策略網(wǎng)絡、聲音、輸入、USB 等DLL_Overrides、Registry_Rules、Environment_Variables、Installed_Dependencies、External_Programs等。其中BottleParams幾乎涵蓋 Linux 游戲生態(tài)的所有增強工具開關從源碼可完整列出參數(shù)默認值說明d7vk/dxvk/dxvk_nvapi/vkd3d/latencyflexfalseDLL 組件開關DXVK 等mangohud/mangohud_display_on_game_startfalse/trueMangoHud 性能監(jiān)控obsvkc/vkbasalt/lsfg_vkfalseOBS 錄制、畫面增強、幀生成gamemode/gamescopefalse性能模式與合成器封裝gamescope_*寬高、FPS、縮放、無邊框等0/falsegamescope 詳細配置syncwine同步機制frame_rate_limit/fsr/fsr_sharpening_strength0/false/8幀率限制與 FSR 超分custom_dpi/renderer96/gl渲染與 DPIvirtual_desktop/virtual_desktop_resfalse/1280x720虛擬桌面wayland/hdr/pulseaudio_latencyfalse顯示與音頻選項use_runtime/use_eac_runtime/use_be_runtimefalse/true/trueBottles Runtime 與反作弊運行時winebridge/sandboxfalseWineBridge 集成與沙箱versioning_*false版本控制壓縮、自動快照、排除規(guī)則vmtouch/adaptive_launchfalse緩存預熱與自適應啟動Manager 核心與組件生態(tài)bottles/backend/managers/manager.py中的Manager類是Bottles 的核心一切從這里開始源碼 docstring 原話。它以單例模式存在初始化時會檢查并創(chuàng)建 bottles 目錄結構根據(jù)網(wǎng)絡連接狀態(tài)加載組件目錄離線時使用本地緩存見ConnectionUtils與force-offline設置依次初始化各子管理器RepositoryManager、VersioningManager、ComponentManager、InstallerManager、DependencyManager、ImportManager、SteamManager以及游玩時間追蹤器Playtime Tracker數(shù)據(jù)寫入process_metrics.sqlite若配置了自定義 Bottles 路徑CustomBottlesPath會校驗其可寫性并對文檔門戶portal路徑降級回默認路徑。Manager持有的組件列表清晰體現(xiàn)了 Bottles 的模塊化思路runnersWine/Proton 運行器、DXVK、VKD3D、NVAPI、D7VK、LatencyFleX 各成體系分別對應 bottles/backend/dlls/ 下的dxvk.py、vkd3d.py、nvapi.py、d7vk.py、latencyflex.py。數(shù)據(jù)路徑規(guī)劃見 bottles/backend/globals.py 的Paths類默認位于~/.local/share/bottles/runners/ Wine/Proton 運行器 bottles/ 瓶Bottle配置與數(shù)據(jù) dxvk/ vkd3d/ nvapi/ d7vk/ latencyflex/ 圖形組件 templates/ 瓶模板 runtimes/ Bottles Runtime winebridge/ WineBridge 集成 library.yml 應用庫 process_metrics.sqlite 游玩時間統(tǒng)計TrdyPaths則記錄了可遷移的第三方管理器路徑~/.wine、Lutris 的~/Games、PlayOnLinux 的~/.PlayOnLinux/wineprefix、Bottles v1 的~/.Bottles為導入舊環(huán)境提供依據(jù)。運行器管理Runner 與 Wine 工具鏈bottles/backend/runner.py中的Runner類專門負責運行器Wine/Proton相關操作與瓶配置、DLL 組件管理解耦。其核心方法runner_update()展示了切換運行器的完整流程校驗運行器路徑存在sys-*系統(tǒng)運行器除外終止 wineserverwineboot.kill(force_if_stalledTrue)更新瓶配置中的Runner字段執(zhí)行前綴更新wineboot.update()并重建用戶 profile 鏈接按Parameters中開啟的項重新初始化 DLL 組件DXVK 等overrides_onlyTrue重建覆蓋項與注冊表鍵根據(jù)是否為 Proton 運行器自動啟停use_steam_runtime——官方 Proton 運行器依賴 Steam Runtime 提供大量庫而 Soda、Wine-GE 等社區(qū)運行器則無需源碼注釋對此有明確說明。在更底層bottles/backend/wine/ 提供了 30 余個 Wine 工具模塊覆蓋reg注冊表、regedit、wineboot前綴初始化/更新、winecfg配置、msiexecMSI 安裝、uninstaller、explorer、wineserver、winepath、winedbg、start啟動程序等每個模塊都是對對應 Wine 命令的 Python 封裝構成瓶內操作的基礎執(zhí)行層。瓶的生命周期與導入Manager.create_bottle()見 manager.py負責新瓶的創(chuàng)建前端入口位于 frontend/views/new_bottle_dialog.pycreate_bottle()。ImportManager則支持將既有 Wine 前綴、Lutris/PlayOnLinux/Bottles v1 環(huán)境導入為瓶。此外Steam、Epic Games Store、Ubisoft Connect 均有獨立管理器bottles/backend/managers/ 下的steam.py、epicgamesstore.py、ubisoftconnect.py可以橋接各平臺安裝的 Windows 游戲。貢獻與工程規(guī)范README 明確指向 CONTRIBUTING.md 作為貢獻指南并補充了兩條工程約束行為準則項目遵循 GNOME Code of Conduct適用于倉庫、社交媒體、聊天群與論壇等所有 Bottles 社區(qū)空間。生成式 AI 使用聲明維護者會在代碼注釋/文檔、樣板代碼、issue 歸類等場景使用 AI 輔助但架構、復雜邏輯、安全與沙箱模型、用戶體驗等核心工作始終由維護者人工設計與編寫每一行生成代碼在合并前都必須經(jīng)維護者人工審查。自 2026 年 9 月 10 日起AI 輔助貢獻需在提交信息中注明feat: add support for X Assisted-by: tool:model-version AI-Scope: what the AI generated in this commit, and the prompt used (or a short summary of it)單行、重命名、格式化等瑣碎補全無需標注不符合該格式的 Pull Request 將被關閉。編碼代理coding agents在改動文件、創(chuàng)建提交或發(fā)起 PR 前還必須遵循倉庫的 AGENTS.md。結語從安裝到構建從配置模型到運行器管理Bottles 展示了一個成熟的Linux 上跑 Windows 軟件工程化方案它以瓶為隔離單元、以 Manager 為中樞、以組件生態(tài)為能力來源把 Wine 世界的復雜性收斂為可配置、可版本化、可遷移的現(xiàn)代體驗。對開發(fā)者而言bottles/backend/ 與 bottles/frontend/ 的代碼組織本身就是一個值得研讀的 GTK4 Python 桌面應用范例對普通用戶而言Flathub 一行安裝即可開箱使用而本文的構建路徑則為深度定制與二次開發(fā)鋪平了道路。贊分享桌面應用【免費下載鏈接】BottlesRun Windows software and games on Linux項目地址https://gitcode.com/gh_mirrors/bo/Bottles點擊查看免費下載相關推薦Bottles終極指南 - 如何在Linux上完美運行Windows軟件和游戲Bottles終極指南 如何在Linux上完美運行Windows軟件和游戲 想要在Linux系統(tǒng)上暢玩Windows游戲或使用專業(yè)軟件嗎Bottles為你提桌面應用Bottles在Linux上完美運行Windows軟件的完整指南Bottles在Linux上完美運行Windows軟件的完整指南 你是否曾經(jīng)在Linux系統(tǒng)上遇到這樣的困擾需要運行某個Windows專用軟件卻束手無策或桌面應用Bottles在Linux上運行Windows軟件的完全指南Bottles在Linux上運行Windows軟件的完全指南 你是否曾經(jīng)在Linux系統(tǒng)上想要運行某個Windows專屬的應用程序或游戲卻因為兼容性問題而束桌面應用上一篇貓抓 Cat-Catch 瀏覽器資源嗅探擴展完整指南免費嗅探網(wǎng)頁視頻、3 步合并下載 M3U8下一篇iOS崩潰定位終極指南使用DSYMTools快速解決線上崩潰問題創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考