Wine
Wine 是一款可以在類 Unix 作業系統上運行微軟 Windows 應用程式的兼容層。在 Wine 中運行的程序可以像本地程序一樣運行,而沒有模擬器的性能/內存損失。
- Wine 並非與你的系統隔離。
- 如果你可以使用你的用戶帳戶訪問某個文件或資源,那麼在 Wine 中運行的程序也可以。參見#在單獨的用戶帳戶下運行 Wine和安全#沙盒程序了解可能的預防措施。
- Wine 也可以運行惡意軟體(參見 Wine 關於惡意軟體兼容性的 FAQ)
安裝[編輯 | 編輯原始碼]
首先啟用multilib倉庫,然後安裝 wine包(開發版),wine-stableAUR(穩定版)或 wine-staging包(測試版本)。Wine Staging 是 Wine 的修補版本, 其中包含了漏洞修復和尚未集成到穩定或開發分支中的特性。
可以考慮為依賴於 Internet Explorer 和 .NET 的應用程式分別安裝 wine-gecko包 和 wine-mono包。這兩個軟體包不是一定要安裝的,因為 Wine 會根據需要自行下載相關文件。反過來說,如果提前安裝了軟體包,Wine 就不需要再下載這些文件了。
可選依賴項[編輯 | 編輯原始碼]
Wine 有許多可選依賴項,簡單的應用程式可能不需要這些依賴項,但如果希望使用聲音、3D 圖形、視頻播放等功能,則應安裝這些依賴項。
請注意,許多 Windows 應用程式都是 32 位的,因此需要 32 位版本的相應庫,其中有些庫僅在 AUR 上提供。標準(64 位)庫可用於 64 位應用程式,如果運行的 Wine 版本採用新的 WoW64 模式(參見#安裝中的說明),則可用於任何應用程式。使用 file(1) 命令可以檢查 Windows 可執行文件是否為 64 位。
圖形驅動程序[編輯 | 編輯原始碼]
當你需要安裝 32 位版本的圖形驅動程序時。請安裝 Xorg#驅動安裝頁面中 OpenGL (multilib) 一欄列出的軟體包。
當 Wine 在你的終端窗口中報告以下內容時,你的驅動程序可能沒有正確安裝或配置:
Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly
聲音[編輯 | 編輯原始碼]
winecfg
中檢查聲音設備的配置,確認選擇了正確的聲音設備。根據不同的聲音驅動,安裝對應的軟體包:
- ALSA :安裝 lib32-alsa-lib包 和 lib32-alsa-plugins包
- PulseAudio :安裝 lib32-libpulse包
- PipeWire :安裝 lib32-pipewire包 以及根據需求安裝下面的包:
- 安裝 pipewire-pulse包 和 lib32-libpulse包 以使用 PulseAudio 作為聲音前端
- 安裝 pipewire-alsa包、lib32-alsa-lib包 和 lib32-alsa-plugins包 以使用 ALSA 作為聲音前端
- OSS : 安裝 lib32-alsa-oss包
MIDI支持[編輯 | 編輯原始碼]
MIDI 是一種在 20 世紀 90 年代被廣泛使用的音樂系統。如果您使用 Wine 遊玩使用了相關技術的老遊戲,可能會發現遊戲音樂無法正常播放。 事實上 Wine 提供了非常好的 MIDI 支持,但前提是您的主機系統也支持 MIDI,相關內容請參閱英文頁面。 最後需要注意的是,請確保 Wine 使用了正確的 MIDI 輸出。
其他依賴[編輯 | 編輯原始碼]
部分應用可能會需要其他的依賴(參考 WineHQ 頁面)
- TLS 的 32 位支持可以安裝 lib32-gnutls包
- 手柄和遊戲杆的 32 位支持可以安裝 lib32-sdl2包
- 媒體播放的 32 位支持可以根據需求安裝 lib32-gst-plugins-base包、 lib32-gst-plugins-good包、lib32-gst-plugins-badAUR、lib32-gst-plugins-uglyAUR 和 lib32-gst-libavAUR
- 對於 NTLM 驗證可以安裝 samba包
WINEPREFIX 內部依賴[編輯 | 編輯原始碼]
除了系統依賴項之外,一些程序還需要額外的字體或 dll 庫文件,這時您可以將相關內容複製或安裝到 #WINEPREFIX 中(相關說明可以參考 WineHQ 頁面)。
我們姑且將上面這種依賴情況稱為「WINEPREFIX 內部依賴(In-prefix dependencies)」。
您可以嘗試使用 Winetricks 來滿足一些程序的依賴。它像一個簡陋的「包管理器」,通過安裝一些軟體及應用相關配置來滿足不同程序的運行需求。關於它的安裝和使用可以參考下文的 #Winetricks 章節。
由於依賴關係之間的衝突,您可能無法創建可以運行所有程序的「完美」運行環境 [2] [3]。建議您將前綴(Wine Prefix)視為可以隨時被銷毀的(除非它們包含重要的配置或數據),並為具有不同依賴關係的程序使用單獨的前綴。您可以使用 #WINEPREFIX 環境變量來指定您期望操作的前綴環境。
確定某個應用需求所需的依賴往往需要反覆試驗,您可以參考 Bottles 的依賴頁面,了解一些常見的依賴關係。下面的內容對解決一些特定的應用依賴問題可能會有所幫助:
- Wine Application Database:Wine 的官方資源,但是內容可能比較老舊且相對下面的內容可能相對缺少維護。
- Lutris:您可以在 lutris 的頁面上搜索您想遊玩的遊戲,部分遊戲可以在詳細頁面點擊下拉菜單按鈕,選擇「View install script」來查看 lutris 所使用的 Winetricks 的配置。
- Bottles program repository:資源規模較小,但不僅僅包括遊戲。
- ProtonDB:雖然 Proton 與 Wine 的兼容性不同(如果您使用該網站資源或在網站創建回復,建議僅使用 Proton),但是評論中可能會搜集到用戶所使用的配置。
- 您也可以查閱 protonfixes 工具的原始碼,以及包含其內容的 proton-ge-custom。但要注意的是,他們假定您的運行環境中存在 Proton 和 GE 的修復遊戲運行補丁。
如果您發現自己在管理遊戲運行環境上花費了大量時間,那麼使用第三方應用程式代為處理可能會更方便。
第三方程序[編輯 | 編輯原始碼]
以下的程序均有他們自己的社區與官網,Wine的官方社區不支持。詳見Wine Wiki
- Bottles — 一個基於GTK圖形化的Wine前綴和運行管理器。
- CrossOver — 收費的商用官方 Wine。提供更多的終端用戶支援和圖形化界面。
- icoextract — Windows 的可執行程序 (.exe 和 .dll) 的圖標生成器。
- Lutris — 一個遊戲啟動器(附前綴管理功能),支持Wine上的遊戲以及Linux原生遊戲。
- PlayOnLinux — 圖形化 Wine 前綴管理器。包括腳本協助程序的安裝與配置。
- PyWinery — 為 Wine 打造的簡單前綴管理器。
- Q4Wine — 給 Wine 的圖形化前綴管理器。為更好地設計統一,可以使用Qt主題到 Wine 設置中。
- WINEgui — 用戶友好的 wine 圖形界面
配置[編輯 | 編輯原始碼]
配置 Wine 通常使用以下方法:
- winecfg 是 Wine 的 GUI 配置工具,可以通過運行
winecfg
來啟動。 - regedit 是 Wine 的註冊表編輯工具,可以通過運行
regedit
來啟動。另見 WineHQ 關於有用的註冊表鍵的文檔。 - control 是 Wine 的 Windows 控制面板的實現,可以通過運行
wine control
來啟動。 - 完整列表見 WineHQ 的命令列表。
WINEPREFIX[編輯 | 編輯原始碼]
默認情況下,Wine 將其配置文件和安裝的 Windows 程序存儲在 ~/.wine
,通常會把此目錄叫作「Wine prefix」或「Wine bottle」。當您運行 Windows 程序或 Wine 的捆綁程序(如 winecfg)時,它會自動創建/更新。前綴目錄還包含一個目錄,您的 Windows 程序將其視為 c:
( C 盤)。
您可以通過 WINEPREFIX
環境變量指定 Wine 使用的前綴位置。如果您希望為不同的 Windows 程序使用單獨的配置,這會非常有用。當 Wine 在指定的 WINEPREFIX
第一次運行時,Wine 將自動創建一個帶有 C 盤和註冊表信息的目錄。
例如,如果您分別執行命令 env WINEPREFIX=~/.win-a wine program-a.exe
和 env WINEPREFIX=~/.win-b wine program-b.exe
,這兩個程序將分別在 ~/.win-a
和 ~/.win-b
路徑下有各自單獨的 C 盤目錄和註冊表配置。
若要在不運行 Windows 程序或其他圖形工具的情況下創建前綴,可以執行:
$ env WINEPREFIX=~/.customprefix wineboot -u
WINEARCH[編輯 | 編輯原始碼]
Wine將默認啟動一個64位環境。你可以改變它使用WINEARCH
環境變量。改名你的~/.wine
目錄並創建一個新的Wine環境通過使用$WINEARCH=win32 winecfg
。這將給你一個32位Wine環境。不設置WINEARCH
將給你一個64位環境。
你可以通過修改WINEPREFIX
來創建一個分開的win32
和win64
環境:
$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg $ WINEPREFIX=~/win64 winecfg
你也可以使用WINEARCH
與其它Wine程序合併,例如winetricks(以Steam為例)
WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam
為了使用這個架構在一個存在的預設,你可以檢查他的註冊表文件。如下的命令讀了~/.wine
的預設系統註冊表並返回#arch-win32
或#arch=win64
依賴於架構類型。
$ grep '#arch' ~/.wine/system.reg
字體[編輯 | 編輯原始碼]
如果 Wine 應用程式沒有顯示易讀的字體,則可能沒有安裝任何字體。輕鬆連結所有的系統字體,使其可以從Wine:
$ cd ${WINEPREFIX:-~/.wine}/drive_c/windows/Fonts && for i in /usr/share/fonts/**/*.{ttf,otf}; do ln -s "$i" ; done
Wine 使用 FreeType 渲染字體,而 FreeType 的默認設置在幾個版本之前已經改變了。嘗試在Wine項目中使用這種環境設置:
FREETYPE_PROPERTIES="truetype:interpreter-version=35"
另一種可能性是在Wine前綴中安裝微軟的 TrueType 字體。詳見微軟字體。 如果這沒有幫助,請先運行winetricks corefonts
,如果依然不能,請運行 winetricks allfonts
。
運行此類程序後,關閉所有 Wine 服務並運行 winecfg
。字體現在應該是可讀的。
如果字體看起來模糊不清,導入以下文本文件到 Wine 註冊表regedit:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\X11 Driver] "ClientSideWithRender"="N"
對於高解析度顯示,可以在 winecfg 中調整 dpi 值。
啟用平滑字體[編輯 | 編輯原始碼]
提高Wine渲染效果的一個好方法是使用cleartype平滑字體。 若要啟用「次像素平滑(ClearType) RGB」:
/tmp/fontsmoothing
REGEDIT4 [HKEY_CURRENT_USER\Control Panel\Desktop] "FontSmoothing"="2" "FontSmoothingOrientation"=dword:00000001 "FontSmoothingType"=dword:00000002 "FontSmoothingGamma"=dword:00000578 EOF $ WINE=${WINE:-wine} WINEPREFIX=${WINEPREFIX:-$HOME/.wine} $WINE regedit /tmp/fontsmoothing 2> /dev/null
詳見[4]。
桌面啟動器[編輯 | 編輯原始碼]
當使用 Windows 應用安裝程序創建一個快捷方式時,Wine 會創建 .desktop 文件。Arch Linux 中這些文件的默認位置是:
- 桌面快捷方式位於
~/Desktop
下。 - 開始菜單圖標位於
~/.local/share/applications/wine/Programs/
下。
/usr/share/applications
下。詳見 WineHQ bug 11112wine winemenubuilder
也許能幫得上忙。為Wine utilities創建菜單項[編輯 | 編輯原始碼]
默認情況下,Wine 的安裝不會為 Wine 附帶的軟體創建桌面菜單/圖標(例如「 winecfg」、「 winebroserer」等)。這可以通過安裝 wine-installerAUR或 wine-installer-gitAUR meta-package (後者沒有附加依賴項)來實現,否則這些說明將為這些應用程式添加條目。
首先,使用 Wine 安裝一個 Windows 程序來創建基本菜單。創建基本菜單後,可以在 ~/.local/share/applications/wine/
:
wine-browsedrive.desktop
[Desktop Entry] Name=Browse C: Drive Comment=Browse your virtual C: drive Exec=wine winebrowser c: Terminal=false Type=Application Icon=folder-wine Categories=Wine;
wine-uninstaller.desktop
[Desktop Entry] Name=Uninstall Wine Software Comment=Uninstall Windows applications for Wine Exec=wine uninstaller Terminal=false Type=Application Icon=wine-uninstaller Categories=Wine;
wine-winecfg.desktop
[Desktop Entry] Name=Configure Wine Comment=Change application-specific and general Wine options Exec=winecfg Terminal=false Icon=wine-winecfg Type=Application Categories=Wine;
並在~/.config/menus/applications-merged/
目錄下創建如下文件:
wine.menu
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd"> <Menu> <Name>Applications</Name> <Menu> <Name>wine-wine</Name> <Directory>wine-wine.directory</Directory> <Include> <Category>Wine</Category> </Include> </Menu> </Menu>
如果這些設置產生了一個難看的/不存在的圖標,這意味著在您所啟用的圖標集中沒有這些啟動程序的圖標。您應該將圖標設置替換為所需圖標的位置。單擊啟動器屬性菜單中的圖標將會產生同樣的效果。一個支持這些快捷方式的圖標集是gnome-colors-icon-themeAUR。
刪除選單條目[編輯 | 編輯原始碼]
由 Wine 創建的菜單條目位於 ~/.local/share/applications/wine/Programs/
.
除了通過 Wine 刪除不需要的擴展綁定,還可以執行以下命令(摘自 Wine 官網) :
$ rm ~/.local/share/mime/packages/x-wine* $ rm ~/.local/share/applications/wine-extension* $ rm ~/.local/share/icons/hicolor/*/*/application-x-wine-extension* $ rm ~/.local/share/mime/application/x-wine-extension*
有時你也可以通過移除在/.config/menus/
中的wine-*.menu
文件以徹底移除來自kde裡的Wine子菜單中的圖標。
主題[編輯 | 編輯原始碼]
類似於 xp 外觀的主題可以在這裡下載. 為安裝它,見上游維基文檔. 最後,用 winecfg 選擇它。
Zune
目錄和Zune.theme
檔案自32位前綴中的drive_c/Windows/Resources/Themes
目錄到你常用的前綴。測試版Wine用戶也許想要嘗試啟用Enable GTK3 Theming在winecfg的測試部分作為一個主題匹配正在使用的GTK主題。
列印[編輯 | 編輯原始碼]
為了在Wine程序中使用已安裝的印表機(包括本地與網路的)在 win32 前綴(如微軟 Word ),安裝lib32-libcups包包,使用(wineboot)重啟 wine,然後重新啟動你的wine程序。
網絡[編輯 | 編輯原始碼]
安裝過後,lib32-gnutls包 包也許需要為一些程序安裝來創建 TLS 或 HTTPS 連接。
對於 ICMP(ping),Wine 也許需要如上所述的網絡訪問,見 WineHQ FAQ:
# setcap cap_net_raw+epi /usr/bin/wine-preloader
如果在這之後出事(例如未處理的異常或特權指令),刪除它通過:
# setcap -r /usr/bin/wine-preloader
使用[編輯 | 編輯原始碼]
見Wine用戶手冊以獲得Wine使用中的通用訊息。
見Wine程序資料庫(AppDB)以獲得Wine中特殊Windows程序的附加訊息。
Wayland[編輯 | 編輯原始碼]
Wine 當前並不直接支持 Wayland,但你可以使用 XWayland。
這有一些支持 Wayland 的努力:
- wine-wayland:一個 Wine 的定製版本,可支持 Wayland 通過 Vulkan(所以它只支持Direct9、10和11通過#DXVK和 Vulkan 完全支持的程序)。
提示與技巧[編輯 | 編輯原始碼]
Wineconsole[編輯 | 編輯原始碼]
通常情況下,你可能需要運行.exe來修補遊戲文件,例如一個老遊戲的寬屏 mod,通過 Wine 正常運行.exe可能不會產生任何效果。在這種情況下,你可以打開一個終端,運行以下命令。
$ wineconsole cmd
然後轉到該目錄,從那裡運行.exe文件。
Winetricks[編輯 | 編輯原始碼]
Winetricks是一個可以幫助用戶安裝一些 windows 程序所需以來的腳本。可安裝的組件包括 Direct9、MSXML(Office 2007 和 Internet Explorer 所需依賴)、Visual 運行時庫和很多其它組件。
安裝winetricks包(或winetricks-gitAUR)後,直接執行下面命令即可使用:
$ winetricks
如果希望使用圖形界面,需要安裝 zenity包(GTK)或 kdialog包(QT)。
性能[編輯 | 編輯原始碼]
CSMT[編輯 | 編輯原始碼]
CSMT 是 Wine 使用的一項技術,它為 OpenGL 調用使用了一個單獨的線程,以顯著提高性能。從 Wine 3.2 開始,CSMT 被默認啟用。
更多:
強制使用OpenGL模式運行遊戲[編輯 | 編輯原始碼]
有些遊戲可能有 OpenGL 模式,其性能可能比其默認的 DirectX 模式更好。雖然啟用 OpenGL 渲染的是 "特定應用",但許多遊戲可以使用 -opengl
參數。
$ wine /path/to/3d_game.exe -opengl
你應該參考你的應用程式文檔和 Wine 的官網 AppDB 來了解這些應用程式的具體信息。
VKD3D-Proton[編輯 | 編輯原始碼]
VKD3D-Proton 是 VKD3D 的一個 fork,這旨在用 Vulkan 實現完整的 Direct3D 12 API。該項目是 Proton 中 Direct3D 12 支持的開發項目,旨在提高 DirectX 12 遊戲的性能和兼容性。
為使用它,安裝 vkd3d-proton-binAUR。然後運行下面的指令來在你的 Wine 前綴中激活它(默認是 ~/.wine
)。
$ WINEPREFIX=your-prefix setup_vkd3d_proton install
DXVK[編輯 | 編輯原始碼]
DXVK 是在 Vulkan 上對 DirectX 9、10 和 11 的一個可能的新實現。這應該有更好的性能,在某些情況下,甚至更好的兼容性。例如,《戰地1》在 DXVK 下運行。另一方面,DXVK 並不支持所有的 Wine 遊戲(目前)。
安裝 dxvk-binAUR 以使用它. 然後運行以下命令,在 wine 前綴中激活它(默認為 ~/.wine
):
$ WINEPREFIX=your-prefix setup_dxvk install
Gallium Nine[編輯 | 編輯原始碼]
這裡是Gallium Direct3D state tracker,協同開源的基於 gallium 的驅動(可用於絕大部分的 AMD 與 Intel 顯卡),目標是可提供接近真實的 DirectX 9 性能。在大多數情況下,它相對上游 wine 故障更少,卻擁有著加倍的性能。相對於 CSMT,它消耗更少的 CPU 分時。
安裝 wine-nine包 來使用它。這是個單獨包,可以同任何 wine 版本一起安裝。使用 wine ninewinecfg
來檢查它是否啟用。
對於老 Intel 顯示卡(en4-7: GMA 3000, GMA 4500, HD 2000-5000; 2006-2014 年),自 Mesa 21.2 開始,Crocus Gallium 驅動需要使用 i965 。Export 這個環境變量在運行 wine 之前:
MESA_LOADER_DRIVER_OVERRIDE=crocus
取消註冊已經存在的Wine檔案關聯[編輯 | 編輯原始碼]
默認情況下,Wine 接管了許多格式的默認程序。一些(例如 vbs
或是 chm
)都是 Windows 獨有的,並且用 Wine 打開他們是方便的。但是,很多其它的格式(例如 gif
、{{ic}jpeg}}、txt
、js
在Wine的模擬 Internet Explorer 或 Notepad 中打開是煩人的
Wine的檔案關聯都設定在 ~/.local/share/applications/
作為 wine-extension-extension.desktop
檔案。刪除這些檔案對應的就像你想的那樣取消註冊了。或者,刪除所有的 wine 拓展:
$ rm -f ~/.local/share/applications/wine-extension*.desktop $ rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
接下來,刪除舊緩存:
$ rm -f ~/.local/share/applications/mimeinfo.cache $ rm -f ~/.local/share/mime/packages/x-wine* $ rm -f ~/.local/share/mime/application/x-wine-extension*
並且,升級這些緩存:
$ update-desktop-database ~/.local/share/applications $ update-mime-database ~/.local/share/mime/
請注意,如果應用程式再次設置文件關聯,Wine仍將創建新的文件關聯,甚至重新創建文件關聯。
阻止 Wine 創建文件關聯[編輯 | 編輯原始碼]
/usr/share/wine/wine.inf
,否則不應更新文件關聯。這個方法避免建立檔案類型關聯,但是保留建立的 XDG .desktop 檔案(你可能會在選單中看到它們)。
如果你想阻止 wine 通過 winecfg 創建檔案關聯,你必須不檢查桌面通訊選項卡下的「管理檔案關聯」複選框,見 Wine FAQ
為了創建相同的更改通過註冊表,在以下的路徑加入字符串值 N
來 啟用
。
HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations
你也許需要先創建鍵 FileOpenAssociations
!
為了在命令行創建相同的改變,運行下面的指令:
$ wine reg add "HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations" /v Enable /d N
如果你想去應用默認設置在新的 Wine 前綴,編輯 /usr/share/wine/wine.inf
並加入這一行到 Services
段下:
HKCU,"Software\Wine\FileOpenAssociations","Enable",2,"N"
為了防止包升級覆蓋設置檔案,創建一個 pacman 鉤子來讓這個變化自動進行:
/etc/pacman.d/hooks/stop-wine-associations.hook
[Trigger] Operation = Install Operation = Upgrade Type = Path Target = usr/share/wine/wine.inf [Action] Description = Stopping Wine from hijacking file associations... When = PostTransaction Exec = /bin/sh -c '/usr/bin/grep -q "HKCU,\"Software\\\Wine\\\FileOpenAssociations\",\"Enable\",2,\"N\"" /usr/share/wine/wine.inf || /usr/bin/sed -i "s/\[Services\]/\[Services\]\nHKCU,\"Software\\\Wine\\\FileOpenAssociations\",\"Enable\",2,\"N\"/g" /usr/share/wine/wine.inf'
See Pacman#Hooks
自動使用 Wine 執行 Windows 程序[編輯 | 編輯原始碼]
wine包 軟體包會安裝一個 binfmt 文件,這可使你能夠直接運行 Windows 程序,例如,./myprogram.exe
將與 wine ./myprogram.exe
效果相同。服務默認在開機時啟動,如果在安裝 Wine 之後還沒有重啟過,啟動 systemd-binfmt.service
即可。
雙顯示器具有不同的解析度[編輯 | 編輯原始碼]
如果您在雙顯示器設置與不同的顯示解析度方面有問題,這可能是缺少了 lib32-libxrandr包。
安裝 lib32-libxinerama包 也許可以解決 wine 中的雙頭問題(例如,最底部或右側的顯示器的程序中的按鈕與選單不可被按下,該區域中應用程式的界面不可重繪,離開應用程式區域後拖動滑鼠光標狀態受阻)。
燒錄光碟[編輯 | 編輯原始碼]
為了燒錄 CD 或者是 DVD,你將需要加載sg
內核模塊。
正確的掛載光碟[編輯 | 編輯原始碼]
一些程序會將光碟作為一個設備檢查。他們可能只檢查數據,在這種情況下,可將相應路徑配置為「winecfg」中的 CD-ROM 驅動器。
但是。其它程序將找到媒體名稱或/和序列號,在這種情況下映像要用特殊的屬性掛載。
一些虛擬設備無法處理這些元數據,就像是基於 FUSE 的虛擬設備(譬如 Acetoneiso)。 CDemu 將會正確的處理它。
遊戲內顯示幀數[編輯 | 編輯原始碼]
Wine 有一個內置的 FPS 檢測器,在環境變量 WINEDEBUG=fps
設定的情況下,它會運行在所有圖形程序上。這將會輸出幀率到標準輸出。你可以顯示幀率到屏幕最上面通過 xosd包 包中的 osd_cat
。winefps.sh 為它的幫助腳本。
在單獨的用戶帳戶下運行 Wine[編輯 | 編輯原始碼]
在一個專門創建的用戶帳戶下運行Wine可能是可取的,以便減少對 Windows 應用程式訪問你的主目錄的擔憂。
第一步,建立一個用戶帳戶給Wine:
# useradd -m -s /bin/bash wineuser
現在切換到另一個 TTY,像平常一樣啟動你的X WM或DE,或者繼續閱讀......
xhost
命令的更多信息,請參見Xorg#Rootless Xorg 。之後,為了使用這個新的用戶帳戶打開Wine應用程式,你需要將這個新用戶添加到X伺服器的權限列表中。
$ xhost +SI:localuser:wineuser
最後,你可以通過以下命令來運行Wine,該命令使用env
來啟動Wine,並加入它所期望的環境變量。
$ sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine arguments
可以使用如下的shell腳本,使用Wine運行Windows應用程式的過程自動化:
/usr/local/bin/runaswine
#!/bin/bash xhost +SI:localuser:wineuser sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine "$@"
Wine程序可以被通過以下指令啟動:
$ runaswine "C:\path\to\application.exe"
為了在每次以其他用戶身份運行Wine時不被要求輸入密碼,可以在sudoers文件中加入以下條目。mainuser ALL=(wineuser) NOPASSWD: ALL
。更多信息見Sudo#Configuration。
建議以Wine用戶身份運行winecfg
,並在配置窗口的 "桌面集成 "部分刪除Wine用戶主目錄以外的所有目錄綁定,這樣,使用Wine運行的程序就無法讀取特殊用戶主目錄以外的任何文件。
請記住,如果使用了PulseAudio,那麼在以這種方式運行的Wine程序中,音頻可能將無法發揮作用。請參閱 PulseAudio/Examples#Allowing multiple users to share a PulseAudio daemon 以了解關於允許Wine用戶訪問主用戶的PulseAudio daemon的信息。
Tmpfs 上的臨時目錄[編輯 | 編輯原始碼]
為了防止 Wine 寫它的臨時的文件到物理硬碟上,需要設置一個另外的位置,例如 tmpfs。刪除 Wine 放臨時文件的默認位置並建立一個軟連結:
$ rm -r ~/.wine/drive_c/users/$USER/Temp ~/.wine/drive_c/windows/temp $ ln -s /tmp/ ~/.wine/drive_c/users/$USER/Temp $ ln -s /tmp/ ~/.wine/drive_c/windows/temp
防止 Mono/Gecko 的安裝[編輯 | 編輯原始碼]
如果 Gecko 或/和 Mono 都不在系統或 Wine 前綴中,Wine 將提示從網路上下載他們。如果你並不需要 Gecko 或/和 Mono,你也許希望關閉這個提示,通過設置 WINEDLLOVERRIDES
環境變量為 mscoree=d;mshtml=d
.。
Vulkan[編輯 | 編輯原始碼]
默認的 wine Vulkan ICD 加載器在大多數程序中都工作地很好,但是不支持高級特性,例如 Vulkan 層。為使用這些特性,你需要安裝官方的 Vulkan SDK,見原始的Vulkan補丁作者的 GitHub page 的第二到四步。
刪除Wine文件綁定[編輯 | 編輯原始碼]
因為安全因素,移除 Wine 綁定來讓 Windows 程序無法直接從文件管理器或是瀏覽器(Firefox 提供直接使用 Wine 打開 EXE 文件的方法)或許是有用的。
假如你想這麼做,你也需要加入下面的內容到 /etc/pacman.conf
的 [options]
部分。
NoExtract = usr/lib/binfmt.d/wine.conf NoExtract = usr/share/applications/wine.desktop
WineASIO[編輯 | 編輯原始碼]
如果你需要 Wine 下的專業的音頻支持,你可以使用 wineasioAUR 來提供一個給 wine 的 ASIO 界面來讓你可以使用 JACK。
為了使用 wineasio,你必須將自己加入realtime
用戶組。
然後你需要註冊 wineasio 到你的選定的 wine 前綴。註冊32位或/和64位版本作為需要的:
$ regsvr32 /usr/lib32/wine/i386-windows/wineasio.dll $ wine64 regsvr32 /usr/lib/wine/x86_64-windows/wineasio.dll
疑難解答[編輯 | 編輯原始碼]
見 Wine 用戶指北和 Wine FAQ (特別注意這個 Troubleshooting 會話)以參閱通用指北。
也請將運行程序的建議也反饋到 Wine AppDB。
XWayland問題[編輯 | 編輯原始碼]
如果你在 XWayland 下使用 wine,你可以在 winecfg 的顯示菜單啟用「模擬虛擬桌面」來避免以下的問題:
- 窗口閃動;
- 錯誤的窗口位置;
- 錯誤的滑鼠位置和點擊;
- 鍵盤監察錯誤。
鍵盤輸入不工作[編輯 | 編輯原始碼]
這可能是由於窗口管理器沒有切換焦點造成的。在winecfg的圖形標籤中,禁用'允許窗口管理器...'選項,或者用'模擬虛擬桌面'設置窗口模式。
- 有人建議切換所有的 "窗口設置",點擊 "應用",然後把它們改回來。如果這不起作用,請嘗試上述方法。
如果在取消應用程式的焦點後,鍵盤不能工作,請嘗試編輯註冊表。
- 在HKEY_CURRENT_USER\Software\Wine\X11 Driver下,添加一個字符串值 UseTakeFocus 並將其設置為 N。
- 另外,你也可以用 winetricks 來設置這個值。
winetricks usetakefocus=n
參見[編輯 | 編輯原始碼]
- Wine 主頁
- Wine 維基
- Wine 程序資料庫 (AppDB) - 關於運行一些特定的 Windows 程序的訊息 (已知問題、指北、等級、其它關於程序的訊息)
- Wine 論壇 - 一個問問題的好地方在你看了 FAQ 和 AppDB 後。
- Gentoo:Wine
- Darling - 一個模擬 MacOS 程序的小項目
- WineASIO - WineASIO 項目的 Github Page,有更多的訊息。