「Wine」の版間の差分
(同期) |
細 (リンクを修正) |
||
277行目: | 277行目: | ||
=== Wayland === |
=== Wayland === |
||
− | 現在、Wine は Wayland を直接はサポートしていませんが、代わりに [[Wayland# |
+ | 現在、Wine は Wayland を直接はサポートしていませんが、代わりに [[Wayland#Xwayland|Xwayland]] を使うことができます。 |
Wayland をサポートしようとする取り組みもあります: |
Wayland をサポートしようとする取り組みもあります: |
||
586行目: | 586行目: | ||
=== XWayland の問題 === |
=== XWayland の問題 === |
||
− | [[Wayland# |
+ | [[Wayland#Xwayland|Xwayland]] で Wine を使用する場合、以下のような問題を避けるために winecfg の Graphics タブで "Emulating a virtual desktop" のオプションを有効化できます: |
* チラつき |
* チラつき |
2023年7月14日 (金) 11:45時点における版
Wine は、Microsoft Windows のアプリケーションを UNIX ライクな OS で動かすための 互換レイヤー です。Wine で実行されるプログラムは、エミュレータにあるようなパフォーマンスやメモリのペナルティなしに、ネイティブプログラムと同じように機能します。
目次
- 1 インストール
- 2 設定
- 3 使用法
- 4 ヒントとテクニック
- 4.1 Wineconsole
- 4.2 Winetricks
- 4.3 パフォーマンス
- 4.4 Wine によるファイルの関連付けの解除
- 4.5 Wine がファイルの関連付けをしないようにする
- 4.6 Windows バイナリを暗黙的に Wine で実行する
- 4.7 異なる解像度でのデュアルスクリーン
- 4.8 光学メディアを焼く
- 4.9 光学メディアイメージの適切なマウント
- 4.10 ゲーム内に FPS オーバーレイを表示
- 4.11 Wine を別のユーザアカウントで実行する
- 4.12 Temp ディレクトリを tmpfs 上に置く
- 4.13 Mono/Gecko をインストールさせない
- 4.14 Vulkan
- 4.15 Wine のファイルバインディングを除去する
- 4.16 WineASIO
- 4.17 explorer.exe の起動を無効化する
- 5 トラブルシューティング
- 6 参照
インストール
multilib リポジトリを有効にし、wine (開発版)、wine-stableAUR (安定版)、wine-staging (テスト版) のどれかをインストールすることで、Wine を利用できます。Wine Staging は Wine にパッチが適用されたバージョンで、安定ブランチや開発ブランチにマージされていないバグフィックスや機能追加が含まれています。
その他の要件については #グラフィックドライバ と #サウンド も見てください。
Internet Explorer や .NET に依存しているアプリケーションを使う場合、それぞれ wine-gecko と wine-mono をインストールしてください。Wine は必要なときに関連ファイルをダウンロードするので、これらのパッケージは厳密には必要ありません。しかし、先にファイルをダウンロードしておくことで、オフラインでも作業できるようになり Wine はそれぞれの Wine prefix が必要とするファイルをダウンロードしなくなります。
サードパーティ製アプリケーション
以下のアプリケーションは、独自のコミュニティーとウェブサイトを持っており、メインの Wine コミュニティによって サポートされていません。詳しくは Wine Wiki を見てください。
- CrossOver — 公式の商用版 Wine。グラフィカルなインターフェイスと包括的なエンドユーザーサポートを提供しています。
- icoextract — Windows の実行ファイル (.exe と .dll) のサムネイルを生成します。
- Lutris — Wine のゲームから Linux ネイティブのゲーム、エミュレータまで、あらゆるゲームに対応するゲームランチャー (prefix の管理機能が存在します)。
- PlayOnLinux — Wine のグラフィカルな prefix マネージャです。プログラムのインストールと設定を支援するスクリプトが含まれています。
- PyWinery — シンプルでグラフィカルな Wine 用の prefix マネージャ。
- Q4Wine — Wine のグラフィカルな prefix マネージャ。Qt テーマを Wine の設定に適用することで見た目を統合することができます。
- Bottles — Wine 用のグラフィカルな prefix マネージャであり、ランナーマネージャ。GTK ベース。
- WINEgui — ユーザフレンドリーな WINE グラフィカルインターフェイス。
設定
通常 Wine の設定には以下を用います:
- winecfg は Wine の GUI 設定ツールです。
winecfg
を実行することで起動できます。 - regedit は Wine のレジストリ編集ツールです。
regedit
を実行することで起動できます。WineHQ の記事 Useful Registry Keys を見てください。 - control は Windows コントロールパネルの Wine 実装です。
wine control
を実行することで起動できます。 - 完全なリストは WineHQ の List of Commands を見てください。
WINEPREFIX
デフォルトでは、Wine の設定ファイルとインストールされた Windows プログラムは ~/.wine
に置かれます。このディレクトリは一般的に "Wine prefix" や "Wine bottle" と呼ばれます。Windows プログラムを動かしたり、Wine を設定するための winecfg
を動かすと自動的にフォルダが作成されます。そして Wine で動いているプログラムはこのフォルダの下のツリーを C:
(C ドライブ) とみなします。
WINEPREFIX
環境変数を設定することで、Wine が使用する prefix の場所を指定することができます。これは Windows プログラムにそれぞれ違う設定をしたいときに便利です。初めて新しい Wine の prefix を使ってプログラムを起動した時、Wine は自動で C ドライブとレジストリの入ったディレクトリを作成します。
例えば、env WINEPREFIX=~/.win-a wine program-a.exe
と env WINEPREFIX=~/.win-b wine program-b.exe
のようにプログラムを動かせば、2つのプログラムは別の C ドライブとレジストリを使います。
Windows プログラムや GUI ツールを実行せずに、デフォルトの prefix を作成するには:
$ env WINEPREFIX=~/.customprefix wineboot -u
WINEARCH
Wine はデフォルトで 64 ビットの環境を作ります。この挙動は WINEARCH
環境変数を使うことで変更できます。~/.wine
ディレクトリの名前を変更し、$ WINEARCH=win32 winecfg
を実行して新しい Wine 環境を作成してください。これで 32 ビットの Wine 環境が作られます。WINEARCH
を設定しないときは 64 ビット環境が作られます。
WINEPREFIX
を使うことで win32
環境と win64
環境を分離することができます:
$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg $ WINEPREFIX=~/win64 winecfg
WINEARCH
を winetricks などの他の Wine プログラムと一緒に使うこともできます (以下の例では Steam):
WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam
prefix のアーキテクチャは、レジストリファイルを見ることで確認できます。以下のコマンドは、~/.wine
prefix のシステムレジストリを読み込み、アーキテクチャタイプに応じて #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 でサウンドデバイスが1つだけ選択されていることを確認してください。
あなたが使いたいオーディオドライバの正しいパッケージをインストールしてください:
- ALSA の場合、lib32-alsa-lib と lib32-alsa-plugins をインストールしてください
- PulseAudio の場合、lib32-libpulse をインストールしてください
- PipeWire の場合、lib32-pipewire と、以下のどれかをインストールしてください:
- PulseAudio をフロントエンドとして使用するには pipewire-pulse と lib32-libpulse。
- ALSA をフロントエンドとして使用するには pipewire-alsa、lib32-alsa-lib、lib32-alsa-plugins。
- OSS の場合、lib32-alsa-oss をインストールしてください
上記のパッケージをインストールしても winecfg
がオーディオドライバを見つけられない時 (Selected driver: (none)) は、レジストリから設定してください。例えば、64ビットの標準の wine-1.9.7 で32ビットの Windows アプリケーションを使ったときにマイクが機能しない場合、次の手順でサウンドハードウェア (サウンドプレイバックとマイク) にアクセスできるようになります: regedit を開いて HKEY_CURRENT_USER > Software > Wine > Drivers と進んで Audio という名前の文字列を追加して値を alsa に設定してください。また、prefix を再作成することで解決するかもしれません。
MIDI サポート
90年代のビデオゲームでは音楽に MIDI を使うのが人気でした。古いゲームを動かすときは、設定をしないと音楽が再生できないのは珍しくありません。Wine には素晴らしい MIDI サポートがあります。ただし、最初に MIDI がシステムで動くように設定する必要があります。詳しくは MIDI を見てください。そして Wine が適切な MIDI 出力を使うように設定しなくてはなりません。
他の依存ライブラリ
一部のアプリケーションは追加のパッケージを必要とします [1]:
- 暗号化サポートは、lib32-gnutls をインストールしてください
- 32ビットプログラムでのメディアプレイバックは、lib32-gst-plugins-base、lib32-gst-plugins-good、lib32-gst-plugins-badAUR、lib32-gst-plugins-uglyAUR をインストールしてください
- 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 prefix に Microsoft の TrueType フォントをインストールするというものがあります。これでもうまく行かない場合、まず winetricks corefonts
を実行し、最後の手段として winetricks allfonts
を実行してみてください。
プログラムを実行した後は、すべての Wine サーバを kill して winecfg
を実行してください。これでフォントが読めるようになるはずです。
フォントが汚く見える場合、regedit を使って以下のテキストファイルを Wine のレジストリにインポートしてください:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\X11 Driver] "ClientSideWithRender"="N"
高解像度ディスプレイにおいては、dpi の値を winecfg で調整できます。
フォント設定#fontconfig をサポートしていないアプリケーション も参照してください。
フォントスムージングの有効化
Wine のフォントレンダリングを改善する良い方法として、cleartype フォントスムージングを有効化するというものがあります。 "Subpixel smoothing (ClearType) RGB" を有効化するには:
/tmp/fontsmoothing.reg
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.reg 2> /dev/null
詳細は 元になった回答 を見てください。
デスクトップランチャーメニュー
Windows アプリケーションインストーラによってショートカットが作成された場合、Wine は .desktop ファイルを作成します。Arch Linux ではデフォルトで以下の場所にファイルが作成されます:
- デスクトップショートカットは
~/Desktop
に保存されます - スタートメニューのショートカットは
~/.local/share/applications/wine/Programs/
に保存されます
Wine ユーティリティのメニューエントリを作成する
デフォルトでは、Wine をインストールしても Wine に付属しているソフトウェア (例:winecfg や winebrowser など) のデスクトップメニューやアイコンは作られません。wine-installerAUR か wine-installer-gitAUR をインストールすることでこれらを作成できます。あるいは、以下の指示により、これらのアプリケーションのエントリを追加できます。
まず、ベースメニューを作るために 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/
にあります。プログラムの ".desktop" エントリを削除すればメニューからアプリケーションが削除されます。
Wine による不要な拡張を削除するのに加えて、以下のコマンドを実行: [2]
$ 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*
場合によっては、KDE の Wine サブメニューからアイテムを完全に削除するために、wine-*.menu
も /.config/menus/
から削除する必要があります。
外観
XP のような見た目のテーマをダウンロードできます。これをインストールするには、この上流の wiki 記事 を見てください。最後に、winecfg を使ってそのテーマを選択してください。
Wine staging のユーザは、現在の GTK テーマにマッチさせるために、代わりに winecfg の Staging セクションの Enable GTK3 Theming オプションを有効化する必要があるかもしれません。
印刷
win32 prefix で wine アプリケーション (例: MS Word) を使ってプリンター (ローカル・ネットワーク両方) を使用するには lib32-libcups パッケージをインストールしてください。それから wine アプリケーションを再起動 (wineboot) してください。
ネットワーク
アプリケーションが LTS や HTTPS 接続を行えるようにするために、場合によっては Wine のインストール後に lib32-gnutls をインストールする必要があります。
ICMP (ping) の場合、WineHQ FAQ で説明されているように Wine はネットワークアクセスを必要とします:
# setcap cap_net_raw+epi /usr/bin/wine-preloader
このコマンドを実行した後に問題が発生する場合 (キャッチされない例外や特権命令など)、以下を実行してケーパビリティを削除してください:
# setcap -r /usr/bin/wine-preloader
使用法
Wine の使用法に関する一般的な情報は Wine User's Guide を見てください。
Wine における特定の Windows アプリケーションに関する追加の情報は Wine Application Database (AppDB) を見てください。
Wayland
現在、Wine は Wayland を直接はサポートしていませんが、代わりに Xwayland を使うことができます。
Wayland をサポートしようとする取り組みもあります:
- OpenGL と Windows GDI の仕様をサポートする、Wine 用の実験的な Wayland ドライバ。こちら と こちら の Wine 開発メーリングリストエントリを見てください。
- wine-wayland: Wine のカスタムバージョン。Vulkan を通して Wayland をサポートします (なので、#DXVK を通して DirectX 9、10、11 と Vulkan 互換のアプリケーションのみをサポートします)。
Wine の実行を停止する
起動済みのプログラムを停止する (wine
に対して wine
、あるいは wineconsole
に対して Ctrl+C を押す) と、バックグラウンドでプロセスが実行中のままになってしまうかもしれません。例えば:
$ ps -xo pid,cmd PID CMD 297 -bash 933 /usr/bin/wineserver 939 C:\windows\system32\services.exe 942 C:\windows\system32\winedevice.exe 950 C:\windows\system32\explorer.exe /desktop 954 C:\windows\system32\winedevice.exe 965 C:\windows\system32\plugplay.exe 977 C:\windows\system32\svchost.exe -k LocalServiceNetworkRestricted 984 C:\windows\system32\rpcss.exe 997 mbserver.exe 1017 start.exe /exec 1019 C:\windows\system32\conhost.exe --unix --width 169 --height 40 --server 0x10 1021 Z:\home\wineuser\mbserver.exe 1030 ps -xo pid,cmd
実行中の wine
と wineconsole
プロセスは、wineserver -k コマンドを使って一度にすべて停止できます。例えば:
$ wineserver -k 15
上記の例で挙げたプログラムを両方停止するコマンドは以下のようになります:
$ kill 997 1021
ヒントとテクニック
Wineconsole
.exe を実行してゲームファイルにパッチを適用する必要がある場合 (例えば古いゲームにワイドスクリーン対応 MOD を適用するなど)、通常の方法で Wine から .exe を実行しても何も起きないことがあります。その場合、ターミナルを開いて以下のコマンドを実行してください:
$ wineconsole cmd
そして、プログラムがあるフォルダまで移動して、.exe プログラムを実行してください。
Winetricks
Winetricks は Windows プログラムを動かすために必要なランタイムなどをインストールするためのスクリプトです。DirectX 9.x や MSXML (Microsoft Office 2007 や Internet Explorer で必要)、Visual ランタイムライブラリなどをインストールできます。
使うには winetricks パッケージ (あるいは winetricks-gitAUR) をインストールしてください。そして、以下で実行してください:
$ winetricks
GUI を使う場合、zenity (GTK) か kdialog (Qt) をインストールしてください。
パフォーマンス
CSMT
CSMT は OpenGL 呼び出しに対して別のスレッドを使うことでパフォーマンスを著しく向上させる技術で、Wine によって使われています。Wine 3.2 から CSMT はデフォルトで有効になっています。
アプリケーションによっては CSMT がパフォーマンスを劣化させることがあります。そのような場合、wine regedit
を実行してレジストリエディタを起動し、HKEY_CURRENT_USER -> Software > Wine > Direct3D > csmt に DWORD の値 0x00 を設定して、CSMT を無効化してください。
詳細:
- CSMT の開発者 Stefan Dösinger による Phoronix Forum の議論
ゲームで強制的に OpenGL モードにする
多くのゲームには OpenGL モードがあり多くの場合デフォルトの DirectX モードより良いパフォーマンスが出ます。OpenGL レンダリングを有効にする方法はそれぞれのアプリケーションによる一方、多くのゲームは -opengl
パラメータを認識します。
$ wine /path/to/3d_game.exe -opengl
詳しい情報は、それぞれのアプリケーションのドキュメントや Wine の AppDB を見てください。
VKD3D-Proton
VKD3D-Proton は VKD3D のフォークで、Vulkan を用いて完全な Direct3D 12 API の実装を目指しています。このプロジェクトは、Proton で Direct3D 12 をサポートし、DirectX 12 ゲームのパフォーマンスと互換性を向上させるものです。
VKD3D-Proton を使うには、vkd3d-proton-mingwAUR または vkd3d-proton-binAUR をインストールしてください。そして、以下のコマンドを実行し、prefix (デフォルトでは ~/.wine
) で VKD3D-Proton を有効化してください:
$ WINEPREFIX=your-prefix setup_vkd3d_proton install
DXVK
DXVK は Vulkan 上での DirectX 9、10、11 の有望な新しい実装です。これにより、パフォーマンスが向上し、場合によっては互換性も向上するはずです。例えば、Battlefield 1 は DXVK でのみ動作します。しかし、DXVK は全ての Wine ゲームをサポートしているわけではありません (今の所は)。
DXVK を使うには、dxvk-mingwAUR または dxvk-binAUR をインストールしてください。そして、以下のコマンドを実行し、prefix (デフォルトでは ~/.wine
) で DXVK を有効化してください:
$ WINEPREFIX=your-prefix setup_dxvk install
DXVK をデュアルグラフィックスの環境で使用する場合、Wine は専用の GPU を優先します。ノート PC では、省電力のためにこれを上書きできます:
$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/your_gpu.json wine executable
HDR サポート
Gamescope と一緒に使用する場合、DXVK (V2.1+) は HDR10 ディスプレイのサポートを提供します (AMDGPU ユーザのみ)。詳細は HDR モニターのサポート を参照してください。
Gallium Nine
オープンソースの gallium ベースのドライバ (たいてい AMD と Intel のカード) には、DirectX 9 でほぼネイティブなパフォーマンスを提供することを目指している Gallium Direct3D ステートトラッカーがあります。ほとんどの場合、上流の Wine よりもグラフィックのバグが少なく、パフォーマンスが2倍になります。CSMT よりも CPU 使用量が大幅に少ないです。
Gallium Nine を使うには wine-nine をインストールしてください。これはスタンドアローンパッケージで、どの Wine バージョンとも併用できます。有効化されているか確かめるには wine ninewinecfg
を実行してください。
古い Intel graphics (4 から 7 世代: GMA 3000, GMA 4500, HD 2000-5000; 2006年-2014年) では、Mesa 21.2 以降 Crocus Gallium ドライバが i965 の代わりに使用されるはずです。Wine を実行する前に以下の環境変数を Export してください:
MESA_LOADER_DRIVER_OVERRIDE=crocus
Wine によるファイルの関連付けの解除
デフォルトで、大量のフォーマットで Wine はデフォルトアプリケーションとして設定されます。Windows にしかないフォーマットもあり (例: vbs
や chm
)、その場合 Wine で開けるようになるのは便利かもしれません。しかしながら、他のフォーマット (例: gif
, jpeg
, txt
, js
) が Wine の素っ気ない Internet Explorer やメモ帳で開かれるのは迷惑と感じることもあるでしょう。
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 がファイルの関連付けをしないようにする
以下の方法は、ファイルの関連付けを作成することを防止しますが、XDG .desktop ファイルは保持します (メニューなどに表示されるかもしれません)。
winecfg を通して Wine がファイルの関連付けをしないように設定するには、Desktop Integration タブのチェックボックス "Manage File Associations" のチェックを解除する必要があります。Wine FAQ を見てください。
レジストリを通して同じ変更を加えるには、以下に文字列 Enable
を N
という値で追加してください:
HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations
まず、FileOpenAssociations
キーを作成する必要があるかもしれません。
この変更をコマンドラインを通して加えるには、以下のコマンドを実行してください:
$ wine reg add "HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations" /v Enable /d N
新しく作成される WINEPREFIX に対してこの変更をデフォルトで加えるようにしたい場合、/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'
詳細は Pacman#フック を見てください。
Windows バイナリを暗黙的に Wine で実行する
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 は適切にこれを処理します。
ゲーム内に FPS オーバーレイを表示
Wine には全てのグラフィカルアプリケーションで使える FPS モニター機能があります。環境変数 WINEDEBUG=fps
を設定してください。FPS は標準出力にアウトプットされます。xosd パッケージの osd_cat
を使うことでウィンドウ上に FPS を表示することが可能です。ヘルパースクリプト winefps.sh を見てください。
Wine を別のユーザアカウントで実行する
別のユーザーアカウントで Wine を実行することで、Windows アプリケーションからホームディレクトリにアクセスできてしまうという懸念を減らすことができます。
まず Wine 用のユーザーアカウントを作成:
# useradd -m -s /bin/bash wineuser
他の TTY に切り替えて、通常通り X WM や DE を起動するか、このまま読み続けてください。
新しいユーザーアカウントを使って Wine アプリケーションを開けるようにするために、X サーバーのパーミッションリストに新しいユーザーを追加してください:
$ xhost +SI:localuser:wineuser
以下のコマンドを使って Wine を実行することができます (env
を使用して Wine の起動する環境を設定します):
$ sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine arguments
以下のようにシェルスクリプトを使って Wine による Windows アプリケーションの実行を自動化できます:
/usr/local/bin/runaswine
#!/bin/sh 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#設定を参照。
winecfg
を Wine ユーザーで起動して、"Desktop Integration" タブから Wine ユーザーのホームディレクトリ以外のディレクトリのバインドを全て削除することを推奨します (Wine によって起動したプログラムが Wine ユーザーのホームディレクトリの外のファイルにアクセスできないようにするため)。
PulseAudio を使用している場合、Wine プログラムで音が鳴らなくなってしまいます。他のユーザーの PulseAudio デーモンに Wine ユーザーからアクセスできるようにする情報が PulseAudio/サンプル#複数のユーザーが同時に PulseAudio を使えるようにするにあります。
Temp ディレクトリを 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 prefix のどちらにも存在しない場合、Wine はそれらをインターネットからダウンロードするか尋ねるダイアログを表示します。Gecko や Mono が必要ない場合、このダイアログを無効化できます: WINEDLLOVERRIDES
環境変数に mscoree=d;mshtml=d
を設定してください。
Vulkan
デフォルトの Wine Vulkan ICD ローダは、ほとんどのアプリケーションでうまく動作しますが、高度な機能はサポートしていません (例えば Vulkan レイヤー)。これらの機能を使うには、公式の Vulkan SDK をインストールしなければなりません。オリジナルの Vulkan パッチの作者の GitHub ページ のステップ 2 から 4 を見てください。
Wine のファイルバインディングを除去する
セキュリティ上の理由により、事前にインストールされている Wine バインディングを削除することは有用である場合があります。これにより、Windows アプリケーションはファイルマネージャやブラウザ (Firefox は EXE ファイルを直接 Wine で開くことができます) から直接起動できなくなります。
以下を /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 prefix に登録する必要があります。必要に応じて32ビットバージョンや64ビットバージョンに登録してください:
$ regsvr32 /usr/lib32/wine/i386-windows/wineasio.dll $ wine64 regsvr32 /usr/lib/wine/x86_64-windows/wineasio.dll
explorer.exe の起動を無効化する
X がインストールされていない状態でテキストモード (Command User Interface) の実行ファイルを実行すると、実行ファイルの起動中に以下のエラーが発生するかもしれません:
0060:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0060:err:winediag:nodrv_CreateWindow L"The explorer process failed to start." 0060:err:systray:initialize_systray Could not create tray window
wine
はデフォルトで explorer.exe を起動することが原因です。ps
の出力を見ればわかる通り、wineconsole
ですら explorer.exe /desktop
を起動します。
以下のように環境変数を設定することで、systray も含めて explorer の起動を無効化することができます:
$ WINEDLLOVERRIDES="explorer.exe=d" wine program.exe
CUI プログラムによっては、services.exe も無効化することによって目盛り使用量を最小限にすることができるかもしれません:
$ WINEDLLOVERRIDES="explorer.exe,services.exe=d" wine program.exe
トラブルシューティング
一般的なヒントは Wine User's Guide と Wine FAQ (特に Troubleshooting セクション) を見てください。
また、特定のアプリケーションでの推奨事項は Wine AppDB を見てください。
libc.so.6 のロードエラー
wine を実行すると以下のエラーが発生することがあります:
$ wine cmd
/usr/bin/wine: error while loading shared libraries: libc.so.6: cannot create shared object descriptor: Operation not permitted
これは、mmap2
のシステムコールが失敗したことが原因です:
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 EPERM (Operation not permitted)
これは Linux カーネルの既知のバグです。
sysctl の vm.mmap_min_addr
の値をデフォルトの 65536
から変更することで、問題が解決するようです:
# sysctl -w vm.mmap_min_addr=32768
XWayland の問題
Xwayland で Wine を使用する場合、以下のような問題を避けるために winecfg の Graphics タブで "Emulating a virtual desktop" のオプションを有効化できます:
- チラつき
- 誤ったウィンドウの位置
- 誤ったマウスカーソルの位置とクリック
- キーボード検出
キーボード入力ができない
ウィンドウマネージャがフォーカスを切り替えないことにより発生することがあります。winecfg の Graphics タブで、'Allow the window manager...' オプションを無効化してください。あるいは、ウィンドウモードを 'Emulate a virtual desktop' に設定してください。
- Window settings のオプションを全て切り替えて、Apply をクリックし、そしてオプションを全て戻すと問題が解決するという人もいます。これがうまく行かない場合、上記の方法を試してください。
アプリケーションからフォーカスを移動させた後にキーボードが動作しなくなる場合、レジストリを編集してみてください:
- HKEY_CURRENT_USER\Software\Wine\X11 Driver に行き、文字列 UseTakeFocus を追加し、それを N にセットする。
- あるいは、Winetricks を使って値をセットできます。
winetricks usetakefocus=n
Wine が自身のアプリケーションをデフォルトとして設定してしまう
Wine は、prefix を作成 (または更新) する度に、それに応じて Notepad や Winebrowser などのバンドルされたアプリをデフォルトのテキストエディタやウェブブラウザとして設定します。
この望ましくない挙動を回避する方法は、以下の環境変数を設定することです:
$ WINEDLLOVERRIDES=winemenubuilder.exe=d ...
参照
- Wine Homepage
- Wine Wiki
- Wine Application Database (AppDB) - 特定のアプリケーションを動作させるための情報 (特定のアプリケーションの既知の問題、評価、ガイドなど)
- Wine Forums - あなたが FAQ と AppDB を見た後に質問するための素晴らしい場所
- Gentoo:Wine
- Darling - MacOS ソフトウェア向けの Wine と似たプロジェクト
- WineASIO - WineASIO プロジェクトの GitHub ページ。追加の情報あり。