Wine

提供: ArchWiki
2024年6月16日 (日) 12:55時点におけるAshMyzk (トーク | 投稿記録)による版 (同期)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

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

警告:

目次

インストール

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

ノート: multilib リポジトリを有効化したくない場合や、追加の 32 ビットライブラリをインストールしたくない場合、wine-wow64AUR パッケージや wine-staging-wow64AUR パッケージを代わりに使うことができます。これらは、64 ビット Linux ライブラリのみを使用しており、32 ビット Windows アプリケーションを実行するための "新しい WoW64 モード" 付きでビルドされています。ただし、このモードのサポートは現在実験的です。[1]

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

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

任意の依存パッケージ

ヒント: 一般的な依存パッケージ (特にゲーム関連) は lutris のドキュメントにリストアップされています。

Wine には、基本的なアプリケーションでは必要ないが、サウンド、3D グラフィックス、動画再生などを提供するためにインストールする必要がある任意の依存パッケージが多くあります。

多くの Windows アプリケーションは 32 ビットであり、32 ビット版のライブラリが必要であることに注意してください。これらのライブラリの一部は AUR でしか入手できません。標準 (64 ビット) のライブラリは、64 ビットアプリケーションに対して、または、新しい WoW64 モード (#インストール 章のノートを参照) のある Wine バージョンを実行している場合は全てのアプリケーションに対して使用することができます。Windows 実行ファイルが 64 ビットであるかどうかは、file(1) コマンドで確認することができます。

グラフィックドライバ

グラフィックドライバの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]

Prefix 内の依存パッケージ

システムの依存パッケージとは別に、多くのプログラムは追加のフォントや DLL が Wine prefix にインストールされていることを要求します [3]。これらの依存関係は、Winetricks を使うことでインストールすることができます。Winetricks はシンプルなパッケージマネージャで、何かをインストールしたり、設定の調整を行ったりする verb が用意されています。Winetricks には2つの使い方があります:

  • CLI から: winetricks verb_name を実行する。
  • GUI から: zenitykdialog をインストールし、winetricks を実行する。

依存パッケージ間の衝突により、何でもできる "完璧な" Windows 環境を構築することができない場合があります [4] [5]。そうするよりも、(重要な設定やデータが存在しない限り) prefix を使い捨てにして、異なる依存パッケージを必要とするプログラム毎に個別の prefix を使用するほうが良いです。#WINEPREFIX 環境変数を使うことで、どの prefix に対して verb を実行するかを指定することができます。

プログラムが必要とする verb を知るには、多くのトライアンドエラーが必要になる可能性があります。一部のより一般的な依存パッケージは Bottles の依存関係ページを、また以下のプログラム固有のリソースを参照してください:

  • Wine Application Database: 公式のリソースですが、古く、他のものと比べてメンテナンスされていないかもしれません。
  • Lutris のウェブサイト。このサイトで扱われているゲームを実行しようとしているならば、ドロップダウンメニューをクリックして、View install script をクリックすることで Lutris で使用されている Winetricks の verb を見ることができます。
  • Bottles のプログラムリポジトリ。小さいですが、ゲーム以外もあります。
  • ProtonDB。Proton は Wine とは異なる互換性があります (それに加え、このサイトを見るなら単に Proton を使うほうが良いかもしれません)。しかし、ユーザーが書き込んだ verb は使えるかもしれません。
    • また、proton-ge-custom に同梱されている変化の速い protonfixes ツールのソースを参照することもできます。しかし、このツールはゲームを修正する追加の Proton と GE のパッチが存在していることを想定しています。

ゲームの prefix を管理するのに多くの時間が掛かる場合は、prefix を管理してくれるサードパーティのアプリケーションを使う方が簡単かもしれません。

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

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

  • Bottles — Wine 用のグラフィカルな prefix マネージャであり、ランナーマネージャ。GTK ベース。
https://usebottles.com/ || bottlesAUR
  • CrossOver — 公式の商用版 Wine。グラフィカルなインターフェイスと包括的なエンドユーザーサポートを提供しています。
https://www.codeweavers.com || crossoverAUR
  • 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
  • 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 で動作しなくなる場合があります。[6]

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

フォント

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 による不要な拡張を削除するのに加えて、以下のコマンドを実行: [7]

$ 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

警告: ネイティブな Wayland ドライバはまだ実験段階です。

デフォルトでは、Wine は Wayland 上で動作する際に Xwayland を使用します。これは、ほとんどのユーザーにとって十分なエクスペリエンスを得られます。バージョン 9.0rc1 現在、Wine はネイティブな Wayland サポートにおいて大幅な進捗があり、一部のユースケースにおいては使用に適した状態になっています。

最近の Wine バージョンで追加されたネイティブな Wayland ドライバを試すには、以下の手順を踏んでください:

  • regedit で以下のテキストファイルを Wine レジストリにインポートしてください:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Wine\Drivers]
"Graphics"="x11,wayland"
  • DISPLAY 環境変数を空にして、Xwayland を使用せずにネイティブな Wayland ドライバを強制してください:
$ DISPLAY= wine example.exe

2番目の手順で Wine が停止した場合は、インストールされている Wine のバージョンが新しい Wayland ドライバのサポートありでビルドされていることを確認してください。

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

このコマンドは WINEPREFIX 変数に依存しているため、カスタムの Wine prefix を使用している場合は、以下のコマンドを使用してください:

$ WINEPREFIX=~/wine/my-prefix wineserver -k

上記の例で挙げたプログラムを両方停止するコマンドは以下のようになります:

$ 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 は、DirectX 9、10、11 の Vulkan による実装です。ほとんどのゲームにおいて、こちらのほうが WineD3D ドライバよりもパフォーマンス及び互換性で勝っています。

DXVK を使うには、dxvk-mingwAUR または dxvk-binAUR をインストールしてください。そして、以下のコマンドを実行し、prefix (デフォルトでは ~/.wine) で DXVK を有効化してください:

$ WINEPREFIX=your-prefix setup_dxvk install

DXVK をデュアルグラフィックスの環境で使用する場合、Wine は専用の GPU を優先します。ノート PC では、省電力のためにこれを上書きできます:

$ VK_DRIVER_FILES=/usr/share/vulkan/icd.d/your_driver.json wine executable
HDR サポート

Gamescope と一緒に使用する場合、DXVK (V2.1+) は HDR10 ディスプレイのサポートを提供します (AMDGPU ユーザのみ)。詳細は HDR モニターのサポート を参照してください。

Gallium Nine

Gallium ベースの mesa ドライバを使用する場合 (ほとんどの場合 AMD と Intel のカード)、DirectX 9 で優れたパフォーマンスを出すネイティブな Gallium Direct3D ドライバがあります。このドライバは DXVK によりほとんど使われなくなりましたが、Vulkan のサポートがない場合に依然として便利である場合があります。DXVK と Gallium Nine のパフォーマンスはほぼ同じであるはずです。

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 を別のユーザアカウントで実行する

警告: これは適切なサンドボックス化方法ではなく、ファイルシステムのパーミッションによるホームディレクトリの保護しか行いません。サンドボックス化する必要がある場合は、firejailbubblewrap のようなものを使用するべきです (これらには、rootful Xorg が必要であったり、音声の問題が発生したりといった欠点がありません)。

別のユーザーアカウントで 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/wineasio32.dll
$ wine64 regsvr32 /usr/lib/wine/x86_64-windows/wineasio64.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

Wayland で GUI ウィンドウ (winecfg など) を起動すると、何も表示されずコンソールに以下のエラーが出力される場合:

$ wine winecfg
Authorization required, but no authorization protocol specified

008c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
008c:err:winediag:nodrv_CreateWindow L"The explorer process failed to start."
008c:err:systray:initialize_systray Could not create tray window

DISPLAY 変数を :1 に設定してみてください:

$ DISPLAY=:1 wine 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 の翻訳バージョンです。最後の翻訳日は 2024-06-16 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。