Wine

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

Wine は、Microsoft Windows のアプリケーションを UNIX ライクな OS で動かすための 互換レイヤー です。Wine で実行されるプログラムは、エミュレータにあるようなパフォーマンスやメモリのペナルティなしに、ネイティブプログラムと同じように機能します。

警告:

目次

インストール

multilib リポジトリを有効にし、wine (開発版)、wine-stableAUR (安定版)、wine-staging (テスト版) のどれかをインストールすることで、Wine を利用できます。Wine StagingWine にパッチが適用されたバージョンで、安定ブランチや開発ブランチにマージされていないバグフィックスや機能追加が含まれています。

その他の要件については #グラフィックドライバ#サウンド も見てください。

Internet Explorer や .NET に依存しているアプリケーションを使う場合、それぞれ wine-geckowine-mono をインストールしてください。Wine は必要なときに関連ファイルをダウンロードするので、これらのパッケージは厳密には必要ありません。しかし、先にファイルをダウンロードしておくことで、オフラインでも作業できるようになり Wine はそれぞれの Wine prefix が必要とするファイルをダウンロードしなくなります。

サードパーティ製アプリケーション

以下のアプリケーションは、独自のコミュニティーとウェブサイトを持っており、メインの Wine コミュニティによって サポートされていません。詳しくは Wine Wiki を見てください。

  • CrossOver — 公式の商用版 Wine。グラフィカルなインターフェイスと包括的なエンドユーザーサポートを提供しています。
https://www.codeweavers.com || crossoverAUR
  • icoextract — Windows の実行ファイル (.exe と .dll) のサムネイルを生成します。
https://github.com/jlu5/icoextract || icoextractAUR
  • Lutris — Wine のゲームから Linux ネイティブのゲーム、エミュレータまで、あらゆるゲームに対応するゲームランチャー (prefix の管理機能が存在します)。
https://lutris.net || lutris
  • PlayOnLinux — Wine のグラフィカルな prefix マネージャです。プログラムのインストールと設定を支援するスクリプトが含まれています。
https://www.playonlinux.com || playonlinuxAUR
  • ProtonSteam のために作成された互換ツール。Wine と追加のコンポーネントをベースとしています。互換性のリストは ProtonDB を見てください。
https://github.com/ValveSoftware/Proton || protonAUR
  • PyWinery — シンプルでグラフィカルな Wine 用の prefix マネージャ。
https://github.com/ergoithz/pywinery || pywineryAUR
  • Q4Wine — Wine のグラフィカルな prefix マネージャ。Qt テーマを Wine の設定に適用することで見た目を統合することができます。
https://sourceforge.net/projects/q4wine/ || q4wine-gitAUR
  • Bottles — Wine 用のグラフィカルな prefix マネージャであり、ランナーマネージャ。GTK ベース。
https://usebottles.com/ || bottlesAUR
  • WINEgui — ユーザフレンドリーな WINE グラフィカルインターフェイス。
https://gitlab.melroy.org/melroy/winegui || wineguiAUR, winegui-binAUR

設定

通常 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 ドライブ) とみなします。

ノート: Wine の prefix には前方互換性がありません。新しいバージョンの Wine は、必要に応じて自動的に古い prefix をアップグレードします。アップグレードされると、その prefix は古いバージョンの Wine で動作しなくなる場合があります。[1]

WINEPREFIX 環境変数を設定することで、Wine が使用する prefix の場所を指定することができます。これは Windows プログラムにそれぞれ違う設定をしたいときに便利です。初めて新しい Wine の prefix を使ってプログラムを起動した時、Wine は自動で C ドライブとレジストリの入ったディレクトリを作成します。

例えば、env WINEPREFIX=~/.win-a wine program-a.exeenv WINEPREFIX=~/.win-b wine program-b.exe のようにプログラムを動かせば、2つのプログラムは別の C ドライブとレジストリを使います。

警告: Wine の prefix はサンドボックスではありません!Wine で動いているプログラムは依然として Wine システムの外にアクセスすることが可能です (例えば、Wine の prefix に関係なく、Z:/ にマッピングされます)。

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

WINEARCHwinetricks などの他の 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
ノート: 適切なライブラリをインストールした後は X を再起動する必要があるかもしれません。

サウンド

デフォルトの状態では、Wine アプリケーションを実行するとサウンドの問題が発生する場合があります。winecfg でサウンドデバイスが1つだけ選択されていることを確認してください。

あなたが使いたいオーディオドライバの正しいパッケージをインストールしてください:

上記のパッケージをインストールしても 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 出力を使うように設定しなくてはなりません。

他の依存ライブラリ

一部のアプリケーションは追加のパッケージを必要とします [2]:

フォント

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 は全てのユーザー共通で Windows アプリケーションをインストールすることはできません。.desktop ファイルが /usr/share/applications に作成されることはありません。詳しくは WineHQ バグの 11112 を見てください。
ヒント: メニューがインストールしてもファイルが作られなかったりもしくは消えてしまった場合、wine winemenubuilder を使ってください。

Wine ユーティリティのメニューエントリを作成する

デフォルトでは、Wine をインストールしても Wine に付属しているソフトウェア (例:winecfgwinebrowser など) のデスクトップメニューやアイコンは作られません。wine-installerAURwine-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 による不要な拡張を削除するのに加えて、以下のコマンドを実行: [3]

$ 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 を使ってそのテーマを選択してください。

ノート: 上記のリンクのテーマは、Windows XP の prefix バージョンが設定された32ビット prefix にしかインストールできません。64ビット prefix にインストールするには、一時的な32ビット prefix を作成し、テーマをインストールし、drive_c/Windows/Resources/Themes から Zune フォルダと Zune.theme ファイルを64ビットの prefix の同じ場所にコピーする必要があるかもしれません。

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 アプリケーションを root として実行/インストールしないでください! 詳細は Wine FAQ を見てください。

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

実行中の winewineconsole プロセスは、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-ProtonVKD3D のフォークで、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
警告: VKD3D-Proton は DirectX 12 の DLL を上書きします。これは、オンラインマルチプレイヤーゲームではチートとみなされる場合があり、あなたのアカウントが BAN されてしまうかもしれません。自己責任で使用してください!

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 は DirectX 10 と 11 の DLL を上書きします。これは、オンラインマルチプレイヤーゲームではチートとみなされる場合があり、あなたのアカウントが BAN されてしまうかもしれません。自己責任で使用してください!

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 にしかないフォーマットもあり (例: vbschm)、その場合 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 がファイルの関連付けをしないようにする

ノート: 以下の作業は、/usr/share/wine/wine.inf を変更しない限り、ファイルの関連付けをアップデートさせたくない WINEPREFIX それぞれに対して行わなければなりません。

以下の方法は、ファイルの関連付けを作成することを防止しますが、XDG .desktop ファイルは保持します (メニューなどに表示されるかもしれません)。

winecfg を通して Wine がファイルの関連付けをしないように設定するには、Desktop Integration タブのチェックボックス "Manage File Associations" のチェックを解除する必要があります。Wine FAQ を見てください。

レジストリを通して同じ変更を加えるには、以下に文字列 EnableN という値で追加してください:

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起動することで、すぐに使えるようになります。

ノート: Windows バイナリが実行可能であることを確認してください。さもないと、バイナリは実行されません。

異なる解像度でのデュアルスクリーン

デュアルヘッドの設定でディスプレイの解像度が異なったときに問題が起きる場合はおそらく 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 を起動するか、このまま読み続けてください。

ノート: 以下の方法は Xorg の root を有効にしている場合にのみうまく行きます。メインのユーザで 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

以下のようにシェルスクリプトを使って 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

Wine が自身のアプリケーションをデフォルトとして設定してしまう

Wine は、prefix を作成 (または更新) する度に、それに応じて Notepad や Winebrowser などのバンドルされたアプリをデフォルトのテキストエディタやウェブブラウザとして設定します。

この望ましくない挙動を回避する方法は、以下の環境変数を設定することです:

$ WINEDLLOVERRIDES=winemenubuilder.exe=d ...

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 GuideWine FAQ (特に Troubleshooting セクション) を見てください。

また、特定のアプリケーションでの推奨事項は Wine AppDB を見てください。

インストールの一般的な問題

それぞれの #Wine prefix[リンク切れ: セクションが存在しません] には、インストールされているプログラムからレジストリに至るまで多くの永続的な状態があります。プログラムのインストールに関する問題のトラブルシューティングの第一歩として、隔離された prefix を作成するか、rm -rf ~/.wine でデフォルトの prefix を削除してみるべきでしょう。後者のコマンドは、デフォルトの prefix に追加したプログラムと設定を全て削除します。

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 カーネルの既知のバグです。

sysctlvm.mmap_min_addr の値をデフォルトの 65536 から変更することで、問題が解決するようです:

# sysctl -w vm.mmap_min_addr=32768

Xwayland の問題

Xwayland で Wine を使用する場合、以下のような問題を避けるために winecfg の Graphics タブで "Emulating a virtual desktop" のオプションを有効化できます:

  • チラつき
  • 誤ったウィンドウの位置
  • 誤ったマウスカーソルの位置とクリック
  • キーボード検出

仮想デスクトップを無効化すると winecfg のウィンドウがマウスとキーボードに反応しなくなってしまう場合、以下のコマンドで明示的にどれかの仮想デスクトップ上で winecfg を起動することで、再び使えるようにできます:

$ wine explorer /desktop=name,800x600 winecfg

キーボード入力ができない

ウィンドウマネージャがフォーカスを切り替えないことにより発生することがあります。winecfgGraphics タブで、'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 を実行する前に cd exeへのパス を使ってください。

参照

  • Wine Homepage
  • Wine Wiki
  • Wine Application Database (AppDB) - 特定のアプリケーションを動作させるための情報 (特定のアプリケーションの既知の問題、評価、ガイドなど)
  • Wine Forums - あなたが FAQ と AppDB を見たに質問するための素晴らしい場所
  • Gentoo:Wine
  • Darling - MacOS ソフトウェア向けの Wine と似たプロジェクト
  • WineASIO - WineASIO プロジェクトの GitHub ページ。追加の情報あり。
翻訳ステータス: このページは en:Wine の翻訳バージョンです。最後の翻訳日は 2023-08-20 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。