M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Windows 10でEclipseのHiDPI対策

4月初め、LenovoのショッピングサイトでThinkpad X1 Carbonが38%割引されているのを知り、さすがにこれ以上の割引率になることはそうそうなかろうということで、ついに購入してしまいました。ディスカウントされていたマシンのスペックはタテ・ヨコのピクセルが2560x1440のもの(サイズは14インチ)。Windows OSの初期設定で200%のスケーリングがなされています。

ここ数年でこのようなHiDPI(高解像度)ディスプレイへのWindows向けアプリケーションの対応状況はだいぶ改善してきていますが、Eclipseは中途半端な状態にとどまっているようです。

こちらの記事にもあるとおり、私も使用しているEclipse Marsはテキスト表示や画面レイアウトこそスケーリングされているものの、アイコンは判読不可能なほど小さく表示されてしまう状態。というわけで応急処置です。

  1. レジストリエディタ(regedit)を起動
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide配下にDWORD値のエントリPreferExternalManifestを追加
  3. 同項目の値をデフォルトの0から1に変更
  4. HiDPI対策対象のEclipseの実行可能ファイル(eclipse.exe)と同じディレクトリにeclipse.exe.manifestというテキスト・ファイルを作成
  5. 同ファイルに下記の内容を記載して保存
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <description>eclipse</description>
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges>
                <requestedExecutionLevel xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3"
                               level="asInvoker"
                               ms_asmv3:uiAccess="false">
                </requestedExecutionLevel>
            </requestedPrivileges>
        </security>
    </trustInfo>
    <asmv3:application>
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
            <ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>
        </asmv3:windowsSettings>
    </asmv3:application>
</assembly>

この状態でEclipseを起動するとアイコンもスケーリングされた状態になります。ただし解像度の低いビットマップ画像を単純に拡大表示するので、ピンぼけしたような表示になってしまいます。ともあれ判読不可能なアイコンよりはマシということです。