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 位。
前綴依賴項(In-prefix dependencies)[編輯 | 編輯原始碼]
除了系統依賴項之外,許多程序還需要將其他字體和dll安裝到Wine前綴 My_application_says_some_DLL_or_font_is_missing._What_do_I_do?。為了滿足這些依賴關係,你可以使用 Wineticks,一個原始的 「包管理器」,其中每個 「verb」 可執行安裝,或調整配置。有兩種使用wineticks的方法:
由於依賴關係之間的衝突,您可能無法創建可以運行所有內容的 「完美」 Windows安裝 [2] [3]。相反,您應該將前綴視為一次性的 (除非它們包含重要的配置或數據),並為具有不同依賴關係的程序使用單獨的前綴。您可以使用 # WINEPREFIX 環境變量來控制動詞作用於哪個前綴。
確定程序需求所需的動詞需要反覆試驗。請參閱Bottles dependency page,了解一些更常見的依賴關係,以及以下針對特定程序的資源:
- Wine Application Database. 官方資源,但年代久遠,維護可能不如其他資源。
- Lutris website. 如果您正在嘗試運行恰好在此站點上顯示的遊戲,則可以單擊下拉菜單,然後單擊 「查看安裝腳本」 以查看Lutris使用了哪些wineticks動詞。
- 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 設置中。
- Bottles — Wine 的圖形化前綴和運行管理器,基於 GTK。
- 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 前綴的程序時,Wine 將自動創建一個帶有 c 驅動器和註冊表的目錄。
例如,如果您運行一個帶有$ env WINEPREFIX=~/.win-a wine program-a.exe
的程序,和另一個 $ env WINEPREFIX=~/.win-b wine program-b.exe
這兩個程序將分別有一個單獨的 c 驅動器和單獨的註冊。
若要在不運行 Windows 程序或其他 GUI 工具的情況下創建默認前綴,可以使用:
$ 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
圖形驅動程序[編輯 | 編輯原始碼]
你需要安裝 32 位版本的圖形驅動程序。請安裝Xorg#驅動安裝中 OpenGL (multilib) 一欄列出的軟件包。
當 Wine 在你的終端窗口中報告以下內容時,很可能你的驅動程序不合適或沒有正確配置:
Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly
聲音[編輯 | 編輯原始碼]
默認情況下,運行Wine應用程序時可能會出現聲音問題。確保在winecfg中只選擇一個聲音設備。
為你要使用的音頻驅動器安裝正確的軟件包:
- 對於 ALSA 安裝 lib32-alsa-lib包 和 lib32-alsa-plugins包
- 對於 PulseAudio 安裝 lib32-libpulse包
- 對於 PipeWire 同時安裝 pipewire-pulse包和 lib32-libpulse包 以使用PulseAudio作為前端 或者 pipewire-alsa包 和 lib32-alsa-lib包 + lib32-alsa-plugins包 以使用ALSA作為前端
- 對於 OSS 安裝 lib32-alsa-oss包
額外的軟件包:
使用高級聲音系統的遊戲(例如 TESV: Skyrim)可能還需要安裝 lib32-openal包。 如果 winecfg 仍然無法檢測到音頻驅動(Selected driver: (none)),請通過註冊表對其進行配置。例如,在64位的wine-1.9.7系統上,麥克風無法在 32 位的 Windows 應用程序中工作,這就提供了對聲音硬件(聲音播放和麥克風)的完全訪問:打開 regedit,尋找路徑 HKEY_CURRENT_USER → Software → Wine → Drivers,添加一個名為 Audio 的字符串,給它一個值 alsa。另外,重新創建前綴可能有幫助。
MIDI支持[編輯 | 編輯原始碼]
在90年代,MIDI是相當流行的遊戲音樂系統。嘗試遊玩老遊戲時,音樂可能無法直接播放。 Wine 對 MIDI 有良好的支持,但首先需要讓它在系統上工作,如 MIDI 中所解釋的。最後,需要確保 Wine 使用了正確的 MIDI 輸出。
其他依賴項[編輯 | 編輯原始碼]
某些應用程序可能需要額外的軟件包 [5]:
- 如需加密支持,安裝 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包
字體[編輯 | 編輯原始碼]
如果 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
詳見[6]。
桌面啟動器[編輯 | 編輯原始碼]
當使用 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
性能[編輯 | 編輯原始碼]
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,有更多的訊息。