Wine

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

関連記事

Wine は Microsoft Windows のアプリケーションを UNIX ライクな OS で動かすための互換レイヤーです。プログラムの挙動が Windows と同じなので、エミュレータと違ってパフォーマンス低下がありません。より詳しい記述は プロジェクトの公式ページwiki を見てください。

警告:

インストール

multilib リポジトリを有効にし、wine (安定版) または wine-staging (テスト版) パッケージでインストールできます。Wine StagingWine にパッチが適用されたバージョンで、安定版ブランチにマージされていないバグフィックスや機能追加が含まれています。#グラフィックドライバ#サウンドも見てください。

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

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

以下のアプリケーションは Wine コミュニティではサポートされていません。詳しくは Wine Wiki を見てください。

  • CrossOver — 有料・商用版の Wine。包括的なエンドユーザーサポートを提供しています。
crossoverAUR || https://www.codeweavers.com/
  • exe-thumbnailer — Windows の実行ファイル (.exe, .lnk, .msi, .dll) のサムネイルを生成します。
exe-thumbnailerAUR || https://github.com/exe-thumbnailer/exe-thumbnailer
  • Lutris — Wine のゲームから Linux ネイティブのゲーム、エミュレータまで、あらゆるゲームに対応するゲームランチャー (prefix の管理機能が存在します)。
lutris || https://lutris.net/
  • PlayOnLinux — Windows と DOS プログラムのグラフィカルマネージャです。プログラムを動かすための設定をアシストするスクリプトや、それぞれの実行ファイルにあった Wine のバージョンを(リグレッションのため)選択する機能があります。
playonlinux || https://www.playonlinux.com/
  • Proton — Compatibility tool made for Steam based on Wine and additional components. See ProtonDB for compatibility list.
https://github.com/ValveSoftware/Proton || protonAUR
  • PyWinery — グラフィカルでシンプルな wine-prefix マネージャ。DirectX を使うゲームやオフィススイートなどアプリケーション毎に違う設定を使ったり環境を選びたいときに便利です。
pywineryAUR || https://github.com/ergoithz/pywinery
  • Q4Wine — グラフィカルな wine-prefix マネージャ。Qt テーマを wine の設定に適用することで見た目を統合することができます。
q4wineAUR || https://sourceforge.net/projects/q4wine/
  • Bottles — Graphical prefix and runners manager for Wine based on GTK.
https://usebottles.com/ || bottlesAUR

設定

Wine の設定に使われるツール:

  • winecfg は Wine の GUI 設定ツールです。コンソールから動かすことができます: $ wine winecfg または $ WINEPREFIX=~/.some_prefix wine winecfg
  • control.exe は Windows のコントロールパネルを Wine で模したものです。使うには $ wine control で起動します。
  • regedit は Wine 版のレジストリエディタです。winecfg やコントロールパネルでは充分でない場合に使います。詳しくは WineHQ のレジストリキーに関する記事 を見て下さい。
  • Wine の完全なコマンドリストは WineHQ の List of Commands を見てください。

WINEPREFIX

デフォルトでは、Wine の設定ファイルとインストールされた Windows のプログラムは ~/.wine に置かれます。このフォルダは通常 "Wine prefix" や "Wine bottle" と呼ばれます。Windows プログラムを動かしたり、Wine を設定するための winecfg を動かすと自動的にフォルダが作成されます。そして Wine で動いているプログラムはこのフォルダの下のツリーを C:\ (C ドライブ) とみなします。

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

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

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

プログラムを動かしたり GUI ツールを使わずに Wine へフォルダを設定したいときは

$ 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
ノート: prefix の作成で、wine の64ビット版は全てのフォルダを64ビットの prefix として扱い既存のフォルダに32ビットを作成しません。32ビットの prefix を作成するには WINEPREFIX で指定したフォルダを作るように wine に指示を出す必要があります。

winetricks と WINEARCH をひとつのコマンドで一緒に使うことで以下のように winetricks からインストールをさせることもできます (例: Steam):

env WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam
ヒント: ~/.bashrc を使うことで WINEPREFIXWINEARCH をコマンド毎に指定する必要をなくせます。
ノート: wineprefixes ディレクトリに steam サブディレクトリを作成していないと、自動で作成されます。詳しくは下の Bottles セクションを見て下さい。

グラフィックドライバ

ゲームを動作させる時はほとんどの場合、パフォーマンスを出すためにグラフィックドライバが必要になります。基本的にプロプライエタリな NVIDIAAMD Catalyst ドライバを使うべきですが、オープンソース radeon ドライバーも Wine の使用に耐えるほど成熟してきています。Intel ドライバは何も設定しなくとも問題なく動くはずです。

詳細は Gaming On Wine: The Good & Bad Graphics Drivers を参照してください。

ドライバが見つからなかったり作動していない時、Wine はターミナルに次のように表示します:

Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly

32ビットの [multilib] パッケージが必要です。Xorg#ドライバーのインストール にある表の Multilib パッケージに記載されているパッケージをインストールしてください。

ノート: ライブラリをインストールしたあと、X を再起動する必要があるかもしれません。

サウンド

Wine を動かしたときに自動的にサウンド設定がなされますが、winecfg で使うサウンドデバイスを選択することができます。

  • x86_64 環境で Wine の Alsa ドライバを使いたいときは、lib32-alsa-liblib32-alsa-plugins をインストールする必要があります。
  • Wine で PulseAudio を使いたいときは、lib32-libpulse パッケージをインストールしてください。
  • OSS ドライバを Wine で使うためには、lib32-alsa-oss パッケージが必要です。カーネルに付属している 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 がシステムで動くように設定する必要があります。詳しくは MIDI を見てください。そして Wine が適切な MIDI 出力を使うように設定しなくてはなりません。

他のライブラリ

フォント

Microsoft の Truetype フォントがインストールされてない場合、表示されるフォントが見づらいものになることがあります。MS フォントを参照してください。winetricks corefonts をまず試してみて、それでもダメな場合、winetricks allfonts を試してください。

その後、すべてのWineサーバーを終了して winecfg を動かしてください。フォントが改善されているはずです。

フォントが不鮮明な場合、regedit を使って以下のようにレジストリを編集してください:

[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"ClientSideWithRender"="N"

HiDPI ディスプレイを使っている場合、winecfg で DPI の値を調整できます。

フォント設定#fontconfig をサポートしていないアプリケーションも参照。

デスクトップランチャーメニュー

Windows アプリケーションランチャーによってショートカットが作成された場合、wine は .desktop ファイルを作成します。Arch Linux ではデフォルトで以下の場所にファイルが作成されます:

  • デスクトップショートカットは ~/Desktop に保存されます。
  • スタートメニューのショートカットは ~/.local/share/applications/wine/Programs/ に保存されます。
ノート: Wine は全てのユーザー共通で Windows アプリケーションをインストールすることはできません。.desktop ファイルが /usr/share/applications に作成されることはありません。詳しくは WineHQ バグの 11112 を見てください。
ヒント: メニューがインストールしてもファイルが作られなかったりもしくは消えてしまった場合、wine winemenubuilder を使ってください。

メニューエントリを作成

デフォルトでは Wine をインストールしても Wine に付属しているソフトウェア (例: winecfg, winebrowser, etc) のデスクトップメニューやアイコンは作られません。ここではこれらのアプリケーションのためのエントリを追加する方法を説明します。

まず、ベースメニューを作るために 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"
"https://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 です。

メニューエントリを削除する

Wine によって作成されるエントリは ~/.local/share/applications/wine/Programs/ にあります。プログラムの ".desktop" エントリを削除すればメニューからアプリケーションが削除されます。

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*

Mono と Gecko

新しい wineprefix を初期化したとき、Wine は Mono と Gecko のインストールを要求します。また、wine-monowine_gecko[リンク切れ: 置換パッケージ: wine-gecko] パッケージがインストールされている場合、wine は特に何もメッセージを表示せずに mono と gecko の 450MB 近いファイルを wineprefix にコピーします。

Wine によって Mono と Gecko がインストールされないようにしたい場合、以下のようにして wine を起動してください:

WINEDLLOVERRIDES=mscoree=d;mshtml=d wine somewineapp

印刷

win32 prefix で wine アプリケーション (例: MS Word) を使ってプリンター (ローカル・ネットワーク両方) を使用するには lib32-libcups パッケージをインストールしてください。それから wine を再起動 (wineboot) してください。

ヒントとテクニック

Wine コンソール

.exe を実行してゲームファイルにパッチを適用する必要がある場合 (例えば古いゲームにワイドスクリーン対応 MOD を適用するなど)、通常の方法で Wine から .exe を実行しても何も起きないことがあります。その場合、ターミナルを開いて以下のコマンドを実行してください:

$ wineconsole cmd

コマンドラインが開くのでプログラムがあるフォルダまで移動して、.exe プログラムを実行してください。

Winetricks

Winetricks は Windows プログラムを動かすために必要なランタイムなどをインストールするためのスクリプトです。DirectX 9.x や MSXML (Microsoft Office 2007 や Internet Explorer で必要)、Visual ランタイムライブラリなどをインストールできます。

使うには pacman から winetricks をインストールしたり、AURwinetricks-gitAUR パッケージをインストールしてください。次のコマンドで動きます:

$ winetricks

CSMT

CSMT は OpenGL コールに対して特別なスレッドを使うことでパフォーマンスを著しく向上させる技術で、Wine によって使われています。Wine 3.3 から CSMT はデフォルトで有効になっています。ただし 3.3 以前の Wine では CSMT のサポートを手動で有効にする必要があります。通常の Wine の場合、wine regedit を実行して HKEY_CURRENT_USER -> Software > Wine > Direct3D > csmt で DWORD の値を 0x01 (有効) に設定してください。wine-staging の場合、winecfg を起動して staging タブで有効にしてください。

詳細:

Wine によるファイルの関連付けの解除

デフォルトで、大量のフォーマットで Wine はデフォルトアプリケーションとして設定されます。Windows にしかないフォーマットもあり (例: vbschm)、その場合 Wine で開けるようになるのは便利かもしれません。しかしながら、他のフォーマット (例: gif, jpeg, txt, js) が Wine の素っ気ない Internet Explorer やメモ帳で開かれるのは迷惑と感じることもあるでしょう。

Wine のファイルの関連付けは ~/.local/share/applications/ にある {{ic|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 に関連するキャッシュだけを削除することもできます:

$ find ~/.local/share -name "*wine*" | xargs --no-run-if-empty rm -r

その後、上述のようにキャッシュをアップデートしてください。

削除しても、アプリケーションによってファイルの関連付けが設定されたら、Wine はファイルの関連付けを作成し続けます。

Wine によるファイルの関連付けを停止

関連付けを作成しないように設定するには、レジストリを編集してください:

associations.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
"winemenubuilder"="C:\\windows\\system32\\winemenubuilder.exe -r"

上記を Wine のレジストリに追加してください。wine regedit associations.reg を実行するか、wine regedit を起動してメニューの Registry > Import Registry File からインポートすることで追加できます。

ファイルの関連付けを更新したくない全ての WINEPREFIX で上記を設定してください。

以下の環境変数を設定することで全ての WINEPREFIX で winemenubuilder を無効化することが可能です:

$ export WINEDLLOVERRIDES="winemenubuilder.exe=d"

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

デュアルヘッドの設定でディスプレイの解像度が異なったときに問題が起きる場合はおそらく lib32-libxrandr をインストールしていません。

lib32-libxinerama をインストールすることでも wine のデュアルスクリーンの問題が解決することがあります。

言語の変更

いくつかのプログラムには言語の選択がなく、システムのロケールを使用する言語として扱います。Wine は (ロケールを含む) 現在の環境をアプリケーションにわたすので、設定をしなくとも問題なく動くはずです。プログラムを (システムで生成した) 特定のロケールで動くように強制したい場合は、次の設定を使って Wine を呼び出して下さい:

$ LC_ALL=xx_XX.encoding wine /path/to/program

例:

$ LC_ALL=ja_JP.UTF-8 wine /path/to/program

Win16/Win32 バイナリのインタプリタとして Wine を使う

wine を全ての Win16/32 バイナリのインタプリタとして使うようにすることもできます:

# echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register

設定を永続的にするには、以下の内容で /etc/binfmt.d/wine.conf ファイルを作って下さい:

/etc/binfmt.d/wine.conf
# Start WINE on Windows executables
:DOSWin:M::MZ::/usr/bin/wine:

systemdproc-sys-fs-binfmt_misc.mount を使って自動で /proc/sys/fs/binfmt_misc ファイルシステムをマウントし、systemd-binfmt.service を実行して設定をロードします。

Windows プログラムを実行するには:

$ chmod +x exefile.exe
$ ./exefile.exe

これで exefile.exe が動作するはずです。

16ビットのプログラム

古い Windows 9x のプログラムを実行すると、以下のエラーが表示されることがあります:

modify_ldt: Invalid argument
err:winediag:build_module Failed to create module for "krnl386.exe",
16-bit LDT support may be missing.
err:module:attach_process_dlls "krnl386.exe16" failed to initialize,
aborting

Wine で16ビットのプログラムを実行するには、カスタムカーネルをコンパイル・インストールする必要があります (FS#57408 を参照)。カーネルコンフィグで以下のオプションが必要です:

CONFIG_X86_16BIT=y
CONFIG_X86_ESPFIX64=y
CONFIG_MODIFY_LDT_SYSCALL=y

オプティカルメディアを焼く

CD や DVD を焼くためには、sg カーネルモジュールをロードする必要があります。

オプティカルメディアイメージの正しいマウント

いくつかのアプリケーションはオプティカルメディアがドライブにあるかの確認をします。ほとんどはデータの確認だけなので、winecfg で CD-ROM ドライブのパスを正しく設定すれば問題ありません。 しかし、アプリケーションによってはメディアの名前やシリアルナンバーを確認するので、イメージを特別なプロパティを使ってマウントする必要があります。

fuse ベースの仮想ドライブ (例えば Acetoneiso) など、仮想ドライブツールはこれらのメタデータを扱えないことがあります。CDEmu は適切にこれを処理します。

OpenGL モード

多くのゲームには OpenGL モードがあり多くの場合デフォルトの DirectX モードより良いパフォーマンスが出ます。OpenGL レンダリングを有効にする方法はそれぞれのアプリケーションによる一方、多くのゲームは -opengl パラメータを認識します。

$ wine /path/to/3d_game.exe -opengl

詳しい情報は、それぞれのアプリケーションのドキュメントや Wine の AppDB を見てください。

ゲーム内に FPS オーバーレイを表示

Wine には全てのグラフィカルアプリケーションで使える FPS モニター機能があります。環境変数 WINEDEBUG=fps を設定してください。FPS は標準出力にアウトプットされます。xosd パッケージの osd_cat を使うことでウィンドウ上に FPS を表示することが可能です。ヘルパースクリプト winefps.sh を見てください。

Microsoft Office

wine-mono wine_gecko[リンク切れ: 置換パッケージ: wine-gecko] samba lib32-libxml2 パッケージをインストールしてください。

詳しくは Wine AppDB のページ を見てください。

特別なユーザーアカウントで Wine を実行

ノート: 以下の設定は Xorg の root を有効にしている場合にのみ機能します。詳しくは Xorg#Rootless Xorg (v1.16) を参照。

別のユーザーアカウントで Wine を実行することで、Windows アプリケーションからホームディレクトリにアクセスできてしまうという懸念を減らすことができます。

まず Wine 用のユーザーアカウントを作成:

# useradd -m -s /bin/bash wineuser

新しいユーザーアカウントを使って 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/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#設定を参照。

winecfg を Wine ユーザーで起動して、「デスクトップ統合」タブから Wine ユーザーのホームディレクトリ以外のディレクトリのバインドを全て削除することを推奨します (Wine によって起動したプログラムが Wine ユーザーのホームディレクトリの外のファイルにアクセスできないようにするため)。

PulseAudio を使用している場合、Wine プログラムで音が鳴らなくなってしまいます。他のユーザーの PulseAudio デーモンに Wine ユーザーからアクセスできるようにする情報が PulseAudio/サンプル#複数のユーザーが同時に PulseAudio を使えるようにするにあります。

DXVK

DXVKVulkan 上で DirectX 11 を実装する新しいプロジェクトです。パフォーマンスが向上するだけでなく、互換性が高まる場合もあります。例えば Battlefield 1 は DXVK でしか実行できません。ただし、DXVK は全ての Wine ゲームをサポートしているわけではありません。

DXVK を使いたい場合、#Vulkan を使用するように Wine を設定してから、dxvk-binAUR (公式バイナリ) または dxvk-gitAUR[リンク切れ: パッケージが存在しません] (開発版) をインストールしてください。以下のコマンドを実行することで Wineprefix (デフォルトでは ~/.wine) で DXVK が有効になります:

$ WINEPREFX=your-prefix setup_dxvk64

32ビットアプリケーションの場合は setup_dxvk32 を使ってください。

警告: DXVK は DirectX 11 の DLL を上書きするため、オンラインのマルチプレイゲームではチートとして認識されてアカウントが ban される危険性があります。自己責任で使ってください。

Vulkan

Wine 3.3 から Vulkan のサポートが含まれるようになっています。Wine Staging の古いバージョンの実装を置き換えます。現在のところ Vulkan は手動で設定が必要ですが、将来的には簡単に設定できるようになる予定です。Vulkan を設定する方法は GitHub のページ を見てください。

Troubleshooting

See Wine User's Guide - Troubleshooting and Wine FAQ, especially FAQ Section Troubleshooting for general tips on Troubleshooting.

Also refer to the Wine AppDB for advice on specific applications.

XWayland problems

If you use Wine under XWayland, you can activate the option for "Emulating a virtual desktop" in the Graphics Tab in winecfg, to avoid problems with:

  • flickering
  • wrong window location
  • wrong mouse cursor location and clicks
  • keyboard detection

参照