試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Wine 0.9.60のウィンドウ管理と装飾に関する新しいモードについて

Wineのバージョン0.9.60では、Wine上のウィンドウをX Window Systemのウィンドウマネージャに管理させつつ、Windows風の装飾を使用することができる。
これまでは

  • ウィンドウをウィンドウマネージャに管理させると、装飾はウィンドウマネージャによるものになってしまう
  • 逆に使用しない設定にすると、他の全ウィンドウよりも手前(最前面)に、しかも全ての仮想画面*1上に居座ってしまう

となっていたため、この変更は有用。

  1. 設定方法(全体の設定)
  2. 個別のアプリケーションごとのルールで指定

設定方法(全体の設定)

バージョン0.9.60の時点では、日本語で起動すると設定項目が出ないため

$ LC_MESSAGES=C winecfg

winecfg設定ツールを起動して「Graphics」タブに切り替えて

  • 「Allow the window manager to decorate the windows(ウィンドウ マネージャがウィンドウを装飾するのを許可する)」のチェックが外れている
  • 「Allow the window manager to control the windows(ウィンドウ マネージャがウィンドウを制御するのを許可する)」がチェックされている

という状態にする。
(2008/5/4)バージョン0.9.61では上記チェックボックスは日本語ロケール上で起動しても表示されるようになった(ただしこの部分のみ英語)。
(2009/2/23)日本語ロケール上の訳を付け足した
あるいは、レジストリの該当部分を
ファイル名: ${WINEPREFIX}/user.reg

[Software\\Wine\\X11 Driver]
"Managed"="Y"
"Decorated"="N"

このように指定する。

ウィンドウはこのように表示され、ウィンドウマネージャの装飾は付かない。
(2008/7/18)レジストリエディタで取り込むレジストリファイルでは、下のようになる。
[任意]ファイル名: window-managed-nodecorator.reg

REGEDIT4

[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"Decorated"="N"
"Managed"="Y"

個別のアプリケーションごとのルールで指定

一部のアプリケーションのみに対して、例外として上の全体設定よりも優先して指定することもできる。*2
下はWinampの例。
ファイル名: ${WINEPREFIX}/user.reg

[Software\\Wine\\AppDefaults\\winamp.exe\\X11 Driver]
"Managed"="Y"
"Decorated"="N"

Winampはこれで多少扱いやすくはなったが、メインウィンドウ以外のイコライザやプレイリストなどは「最前面 + 全仮想画面」に出てしまうようだ。Winampの場合、これらのウィンドウをドラッグ移動もしくはサイズ変更を行おうとしたところでウィンドウマネージャの管理下になるようで、プレイリストでは右下の隅をクリックするだけでOKだったが、これに確実に対処するにはデスクトップウィンドウを使用するのがよさそう。

使用したバージョン:

  • Wine 0.9.60

*1:ワークスペースやビューポート

*2:ここの設定に限らず、アプリケーションごとに色々な設定を行うことができる仕組みになっている

Windows版のPythonをWineで動かす

Windows版のPythonはWineで動く。全ての機能が正常に使えるかどうかは分からないが、Windows上で動くかどうかの参考にはなるかもしれない。

  1. ダウンロードするファイル
  2. インストール方法
  3. Pythonシェル
  4. スクリプトを実行

ダウンロードするファイル

Python 2.5.2 Windows installer」と書かれているもの(x86_32版)を使用する。

インストール方法

インストーラMSI形式(Windowsインストーラパッケージ)で、Wineに含まれるmsiexecコマンドによりインストール可能。

$ wget http://www.python.org/ftp/python/2.5.2/python-2.5.2.msi
$ msiexec /i python-2.5.2.msi

ファイルを指定するとGUIインストーラが起動し、普通にインストール作業を行うことができる。

Pythonシェル

GNU/Linux版のPythonと同様、(端末から)直接pythonを実行すると、対話シェルが開く。操作は基本的に同様だが、バックスペースが利かない。

$ wine "C:\Python25\python.exe"

GUI版(IDLE)も起動できる。

$ wine "C:\Python25\pythonw.exe" "C:\Python25\Lib\idlelib\idle.pyw"

スクリプトを実行

最初の「#!」で始まる行*1

#! /usr/bin/wine C:\Python25\python.exe

と書くと、このスクリプトを直接実行したときにWineが起動され、WindowsPythonスクリプトが渡されて実行される。
あるいは、

$ wine "C:\Python25\python.exe" [スクリプトの場所]

として実行することで、pythonコマンドの引数にスクリプトを指定したことになる。
なお、インストール先を標準から変更した場合はその場所に合わせて指定する。

使用したバージョン:

  • Wine 0.9.60
  • Python 2.5.2(win32)

*1:どのプログラムに渡してファイル内容を処理するかを記述する部分