西川和久の不定期コラム
Chrome OS Flexと最新版Wine 7.0の組み合わせでWindowsアプリを動かしてみる
2022年4月11日 06:19
2月にGoogleの「Chrome OS Flex」をご紹介した。本家Chrome OSとの一番の違いは今のところAndroidアプリが使えないこと。それでは!ということで、Wineを使ってWindowsアプリが動くかテストしてみた。今回はそのお試し日記となる。
WineとChrome OS FlexでのLinux作動要件
Wineを動かすにあたり、作動要件としてChrome OS Flex上でLinuxが動く必要がある。以前は古いプロセッサでも大丈夫だったが、Chrome OS v91以降、セキュリティが厳しくなり、プロセッサがSpectreおよびMeltdownの脆弱性の影響を受けている場合、Linuxが作動しない(対応BIOSだから動くとも限らない)。つまりほぼWindows 11が対応するプロセッサと同じとなる。「であれば普通Windows 11で使うでしょ!(笑)」と言う話もあるだろうが、それはそれとして話を進めたい。
今回は手元の環境上、Ryzen 7 PRO 2700U搭載PCで試している。このプロセッサはMeltdownは無関係だが、Spectreは関係あり。先の条件がandではなくorなのかこの辺りは不明な部分だが、Linuxは起動する(逆にWindows 11は対象外)。いずれにしても設定/デベロッパー(Linux)でLinuxを起動して、無事プロンプトが出ればOK。「Error starting crostini for terminal: 5」となった時は諦めるしかない。
また以降の仕掛けは、Intelプロセッサ搭載のChromebook/Chromeboxでも作動する(確認済み)。Arm搭載機は駄目だが該当機種を持っている場合は是非試して欲しい。
執筆時点のLinuxのバージョンはDebian 11.2(Bullseye)。これに合ったWineなどをインストールすることになる。作業前にsudo apt update / sudo apt upgradeを忘れずに。
$ cat /etc/debian_version
11.2(Bullseye)
※執筆時、Chrome OS Flexのバージョンは101.0.4951.7 (Offical Build) dev (64bit)
$ sudo apt update
$ sudo apt upgrade
設定1 / IME(Mozc)
Chrome OS Flex上のIMEは今のところLinux環境下では使えない。ターミナルで使えるのはChromeのウィンドウで表示しているからだ。Wineを入れてもIMEが使えないとお手上げなので、先にLinux環境用としてIMEをインストールする。手順は以下の通り。
1)環境の確認
$ apt list task-japanese
Listing... Done
task-japanese/stable 3.68+deb11u1 all
$ apt list fonts-ipafont
Listing... Done
fonts-ipafont/stable 00303-21 all
$ apt list locales-all
Listing... Done
locales-all/stable 2.31-13+deb11u3 amd64
locales-all/stable 2.31-13+deb11u3 i386
2)localeの設定
$ sudo localectl set-locale LANG=ja_JP.UTF-8
$ source /etc/default/locale
3)IMEのインストール1
$ sudo apt install fcitx-mozc
$ sudo sh -c 'cat <<EOF >> /etc/systemd/user/cros-garcon.service.d/cros-garcon-override.conf
Environment="GTK_IM_MODULE=fcitx"
Environment="QT_IM_MODULE=fcitx"
Environment="XMODIFIERS=@im=fcitx"
Environment="GDK_BACKEND=x11"
EOF'
$ echo /usr/bin/fcitx-autostart >> ~/.sommelierrc
VMの再起動(Linuxをシャットダウン)
4)IMEのインストール2
$ fcitx-configtool
1.検索でMozcを探し追加(なければ)
2.アドオン > Advanced > Fcitx XIM Frontend のチェックを一旦外し再チェック
[設定]が有効になるので設定
3.「XIMでOn The Spotスタイルを使う」にチェックして[OK](これをしないとインライン変換で作動しない)
4.VMの再起動(Linuxをシャットダウン)
ターミナル上で動くnanoやviはChrome OS側のIMEを使うため確認用にはならず、例えばVisual Studio Codeやgeditなどを使う(なければsudo apt install gedit)。USキーボードの場合はCtrl+SpaceでIMEがON/OFFする。
これでIME(Mozc)がインライン変換で使えるはずだ。実は今回の設定で一番面倒なのがこのIME関連。筆者は以前からChrome OS上のIMEをwrapperか何かでLinux上でも使えるようにして欲しいと書いていたが、実はGoogleも考えてはいるようで、chrome://flagsで
#crostini-ime-support
#crostini-virtual-keyboard-support
を用意している。ただし現在はEnableにしても動かない。これが使えるようになると、Linuxの環境設定が楽になるのでGoogleにはできるだけ早い対応をお願いしたい。
設定2 / Wine 7.0
Wine自体のインストールは、先のIMEと比べると非常に簡単。以下を順にコピペすればOKだ。肝はDebian 11.2(Bullseye)用のWineをrepositoryで指定している程度。
1)Wine 7.0のインストール
$ sudo dpkg --add-architecture i386
$ wget -nc https://dl.winehq.org/wine-builds/winehq.key
$ sudo apt-key add winehq.key
$ sudo apt install software-properties-common
$ sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/debian/ bullseye main'
$ sudo apt update
$ sudo apt install --install-recommends winehq-stable
$ wine --version
wine-7.0
2)Wine 7.0の設定
次にWineの基本作動部分をwinecfgを実行して設定する。ここでの肝は、「互換性Windows 8」へと、「ウィンドウマネージャがウィンドウを修飾するのを許可する」のチェックを外し、「ウィンドウマネージャがウィンドウを制御するのを許可する」のみチェックを入れること。
$ winecfg
1.アプリケーション > 互換性Windows 8へ
2.画面 > ウィンドウマネージャがウィンドウを修飾するのを許可するのチェックを外す
この2点は、内部でどのようにしているのか仕掛けが分からないため、理論的にではなく実際試したところ……的なものとなる。まずアプリケーションの互換性は8.1や10にすると、DialogBoxがうまく表示できなかったり、動きがおかしくなるケースが見られた(もちろん10で問題ないもの多数)。既存の設定を10にして、個別アプリ指定で8にする手もある。
次に画面の
1.ウィンドウマネージャがウィンドウを“修飾”するのを許可する
2.ウィンドウマネージャがウィンドウを“制御”するのを許可する
は、1は画面キャプチャにあるWindowsアプリのタイトルバーが消え替わりに白いバーが付く。これはLinux側のUIに合わすものだが、白いバーが付く以外、特に意味もなく、またDialogBoxなどがうまく開かないケースも見られたのでチェックを外す。
2は少し話がややこしく、どうやらLinuxの画面マッピングと(おそらく裏で動いている)Windowsの画面マッピングを調整する機能だ。
チェックした場合、うまく動けば、Windowsアプリは、Linuxアプリと同じ様に画面上で移動したりリサイズできる。チェックを外した場合は、一部移動出来ないエリアがあったり、リサイズ時、再描画がうまく行かない、ウィンドウが裏に回らないケースがなど見られた。通常はチェックでいいのだが、WinSCPはDialogBoxが表示できず操作不能になる(時がある)。この現象はmacOS上のWineでは発生しないので、Chrome OS側の問題なのかも知れない。
最後はdpi調整。フルHD以上の解像度の時、96dpiでは文字が小さく読みにくい時に適当な値に変える。
設定3 / 日本語フォントなど
Linux上には設定1 - 1)でIPAフォントが入っているのを確認している。ただしこれはLinux用なのでWindows用ではなく、そのままWineで日本語アプリを使うと文字化けが発生する。これを防ぐために、Windowsでよく使われている日本語フォント名をLinux上の日本語フォント名に読み替える必要がある(フォントもインストールする)。それを一手に引き受けてくれるのがwinetricksだ。インストールの手順は以下の通り。
基本fakejapaneseだけで良いが、他にもいろいろな書体を使いたい場合は追加でcjkfontsも追加でインストールする。ただ1回実行すると処理にかなり時間がかかるので気長に待つ必要がある。
1)winetricksインストール
$ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
$ chmod +x winetricks
$ sudo mv winetricks /usr/bin/
$ winetricks fakejapanese
$ winetricks cjkfonts (必要に応じて)
32bitと64bitの混在可能!~ファイル構成
Windows関連のファイルは~/.wineに入っている。ファイル構成は画面キャプチャの通り(ファイルアプリで非表示のファイルを表示するには、右上のその他をクリック、非表示のファイルを表示にチェックする)。
drive_cの下には見慣れたProgram FilesやProgram Files(x86)などがある。Windowsアプリのインストーラを使ってインストールすると64bitなら前者、32bitなら後者にインストールされる。
例えば64bit版の筆丸だと「~/.wine/Program Files/Hidemaru/Hidemaru.exe」があるので、クリックすると「Windows Windows プログラムローダーで開く」と出るので、それで開けばOKだ。この時、ユーザーはアプリが32bitなのか64bitなのか気にする必要はない。また、秀丸から「プログラム実行」でexeを指定しアプリを起動すると、32bit/64bit関係なく作動する。
余談になるが、Wineでいろいろ検索すると以下のような表記が多く見られる。これは、古いバージョンが32bitのみだったり、64bit対応初期などに、環境を切り替える必要があり、その名残だ。現在は(機能するが)設定する必要はない。
$ export WINEPREFIX=~/.wine32
$ export WINEARCH=win32
※環境は~/.wine32以下、起動するのは32bitアプリ……という意味
以上がChrome OS Flex(Intel版Chromebook/Chromeboxも含む)でWine 7.0を使い、Windowsアプリを動かす方法となる。IME関連が少し面倒なだけで、後はコマンドをコピペするだけでOKなのはお分かり頂けたと思う。もし失敗してもLinux環境を削除(設定からできる)、再インストールすればクリーンなLinux環境となるので何度でもチャレンジ可能だ。
ここまでできれば目的のアプリをChromeなどでダウンロードし、セットアップファイルをLinux環境へ保存、setup.exeなどを起動すれば、多くの場合はそのままインストール/アプリを実行できる。扉の画面キャプチャのように(Linux版もあるのであまり意味はないのだが)LibreOfficeとういった大型アプリも作動可能だ。またIMEのMozcは、Google日本語入力のオープンソース版なので安定した変換も期待できる。
ただすべてが全て作動するわけではなく、WinSCPのようにちょっとwinecfgを調整したり、全く駄目だったりするケースもあるため万能ではない。この辺りは、WineやChrome OS Flex/Linux環境のアップデートで徐々に改善される……かも知れない。
以上のようにChrome OS Flex+Wine 7.0は、Chrome OS Flex上でWindowsアプリを作動可能にする環境だ。しかしアプリによって、動いたり、工夫が必要だったり、セットアップすらできずまったく駄目だったり……と、多くのユーザーにお勧めできる状態ではないこともわかった。
とはいえ、Windows互換レイヤーとしては初期を知っているだけに、それなりに実用的になってきたもの事実。Chrome OS FlexではAndroidアプリが使えないこともあり、Windowsアプリが使えるのなら強力な助っ人となる。今後のアップデートに期待しつつ、まず動く範囲で使っていきたい。