HiDPI

提供: ArchWiki
2018年1月18日 (木) 22:02時点におけるKusakata.bot (トーク | 投稿記録)による版 (Pkg/AUR テンプレートの更新)
ナビゲーションに移動 検索に移動

関連記事

HiDPI (High Dots Per Inch) ディスプレイとは、比較的小さい型で高解像度を誇るディスプレイのことで、Apple の "Retina Display" の名称でも知られています。Apple の製品やハイエンドの "ultrabook" でよく使われています。また、4K (Ultra HD) もしくは 5K モニターも含まれます。

今のところ全てのソフトウェアが高解像度モードで上手く動作するわけではありません。以下では HiDPI の画面での作業を快適する一般的な設定を記載しています。

デスクトップ環境

GNOME

HiDPI を有効にするには、gsettings を使ってインターフェイスのスケールファクタを設定します:

$ gsettings set org.gnome.desktop.interface scaling-factor 2

設定をリセットしたいときは scaling-factor1 に設定してください。

ノート: scaling-factor に設定できるのは整数だけです。1 = 100%, 2 = 200% など。

scaling-factor で設定できる2や3という数字では、使用している HiDPI ディスプレイや小型スクリーンに適合しない場合があります。

scaling-factorxrandr を組み合わせることで整数以外のスケールファクタが使えます。xrandr だけを使用したときのように TTF フォントが汚くなることはありません。

まずは GNOME をスケールさせます。2で小さすぎる場合は3以上を使ってください。

$ gsettings set org.gnome.desktop.interface scaling-factor 2

それから xrandr でズームアウトファクタを設定して小さくスケールします。まずは出力の名前を確認:

$ xrandr | grep -w connected | cut -d' ' -f1
eDP1

以下、確認できた値を --output で指定するようにしてください。ディスプレイが複数ある場合はそれぞれで個々にスケールを設定できます。

1.2倍に拡大するには、以下のコマンドを実行:

$ xrandr --output eDP1 --scale 1.2x1.2

UI が大きすぎる場合、スケールを増やします:

$ xrandr --output eDP1 --scale 1.25x1.25

UI が小さすぎる場合、スケールを減らしてください。一番良い値を見つけるまで繰り返し実行してください。

最後に、マウスがスクリーンを正しく使えるように設定する必要があります。スケール後の解像度を取得してください:

$ xrandr | grep eDP1
eDP1 connected primary 2304x1296+0+0 (normal left inverted right x axis y axis) 239mm x 134mm

確認できた値を使って以下のコマンドを実行:

$ xrandr --output eDP1 --panning 2304x1296

KDE

KDE Plasma 5 は HiDPI ディスプレイの優れたサポートを有しています。X サーバーがディスプレイのピクセル密度を正しく認識するように設定するだけで後は勝手にやってくれます。/etc/sddm.conf を編集して [X11] セクションの ServerArguments に dpi 引数を追加してください:

ServerArguments=-nolisten tcp -dpi 276

詳しい情報は Xorg#画面サイズと DPI を見てください。

マルチディスプレイ構成

全てのディスプレイの DPI が同じであれば上記の設定で上手くいきますが、ディスプレイの出力が異なる場合はディスプレイごとにスケールさせる必要があります:

  1. システム設定 → ディスプレイとモニター → ディスプレイの設定 → ディスプレイのスケール
  2. スライダーを 2 までドラッグしてください。
  3. 一度ログアウトしてログインしなおすと全てのアプリケーションに新しい設定が適用されます。

固定サイズのトレイアイコン

トレイアイコンがスケールしない場合、/usr/share/plasma/plasmoids/org.kde.plasma.private.systemtray/contents/config/main.xmliconSize でデフォルトのサイズ値を設定できます:

/usr/share/plasma/plasmoids/org.kde.plasma.private.systemtray/contents/config/main.xml
<entry name="iconSize" type="Int">
    <label>Default icon size for the systray icons, it's an enum which values mean, 
           Small, SmallMedium, Medium, Large, Huge, Enormous respectively. On low 
           DPI systems they correspond to 16, 22, 32, 48, 64, 128 pixels. On high
           DPI systems those values would be scaled up, depending on the DPI.</label>                    
    <default>2</default>
</entry>

Xfce

Xfce の設定マネージャ→外観→フォントから DPI のパラメータを変更してください。Retina スクリーンでは 180 または 192 がぴったりです。正確な数字を得たいときは、$ xdpyinfo | grep resolution を実行して得た数字を2倍してください。

システムトレイのアイコンを拡大するには、システムトレイを右クリック (アイコンをクリックしないように、空きスペースや上部・下部のピクセルを右クリックしてください) → “Properties” → “Maximum icon size” を 32, 48, 64 などに設定してください。

Cinnamon

Cinnamon は 2.2 から HiDPI をサポートしています。GTK3 をリビルドしなくても、十分なサポートが得られます (例: ウィンドウの縁のサイズが正しく設定されます。Xfce では行われません)。

Enlightenment

E18 の場合、E 設定パネルを開いて下さい。Look → Scaling から、UI のスケール比を設定できます。MBPr 15" のネイティブ解像度なら 1.2 が丁度です。

X サーバー

プログラムによっては物理的な横幅を使って DPI を検出します。例えば i3 (ソース) や Chromium (ソース) などが挙げられます。

X サーバーがモニターの物理的な寸法を正しく検出できているか確認するには、次を実行 (xdpyinfo ユーティリティは xorg-xdpyinfo パッケージに含まれています):

$ xdpyinfo | grep -B 2 resolution
screen #0:
  dimensions:    3200x1800 pixels (423x238 millimeters)
  resolution:    192x192 dots per inch

上の例では 96 dpi の倍数を使うために (この場合 192 dpi)、少しだけ誤っている面積 (Dell XPS 9530 は 346mm x 194mm なのに 423mm x 328mm になっている) を使っています。これは正確な DPI を使うよりも良い場合が多く、例えば i3 では Pango のフォントレンダリングがパリッとします。

xdpyinfo によって示された DPI が正しくない場合、修正方法は Xorg#画面サイズと DPI を見てください。

X Resources

X の設定をしてくれる GNOME, KDE, Xfce などのデスクトップ環境を使っていない場合、~/.Xresources で手動で Xft の DPI を設定できます:

~/.Xresources
Xft.dpi: 180
Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb

~/.xinitrcxrdb -merge ~/.Xresources と記述するなどして X の起動時に設定が正しくロードされるようにしてください (詳しくは Xresources を参照)。

設定することでほとんどのツールキットやアプリケーションでフォントが正しく表示されるようになりますが、アイコンのサイズなどは変わりません。また、ツールキットのスケール (例: GDK_SCALE) と一緒に Xft.dpi を設定した場合、Firefox などのプログラムでインターフェイスの表示が大きくなりすぎることがあります。

GUI ツールキット

Qt 5

X サーバーで DPI の値を変えられない場合でも、Qt アプリケーションには HiDPI でちゃんと表示されるようにする方法があります。

Qt 5.6 から、Qt 5 アプリケーションは QT_AUTO_SCREEN_SCALE_FACTOR 環境変数によって設定された画面 DPI を使用するようになりました。例えば /etc/profile.d/qt-hidpi.sh ファイルを作成し、以下を記述して実行可能属性を付与します:

export QT_AUTO_SCREEN_SCALE_FACTOR=1

DPI の自動検知が上手くいかない場合、スケーリングをスクリーンごと (QT_SCREEN_SCALE_FACTORS)、あるいは全てのスクリーン (QT_SCALE_FACTOR) に手動で設定することができます。詳しくは Qt のブログ記事 を参照してください。

ノート: startkde スクリプトによって上記の変数は unset されるため、KDE では X サーバーで設定された DPI による解像度を優先します。

手動でスクリーンファクタを設定した場合、QT_AUTO_SCREEN_SCALE_FACTOR=0 を設定しないと明示的に高 DPI を有効にしている一部のアプリケーションも2倍にスケールされてしまいます。このため KDE ではスケールの手動設定を無効にしています。

  • QT_SCALE_FACTOR はフォントを拡大します。
  • QT_SCREEN_SCALE_FACTORS はフォントを拡大しません。

他のツールキットでも設定を適用するために xrdb でフォントの DPI を手動で設定していた場合、QT_SCALE_FACTORS はかなり巨大なフォントを表示するようになります。

GDK 3 (GTK+ 3)

GTK+ 3 アプリケーションで 2倍に UI エレメントを拡大するには:

$ export GDK_SCALE=2

テキストのスケーリングを戻すには:

$ export GDK_DPI_SCALE=0.5

GTK+ 2

ツールキットによる UI エレメントの拡大は不可能ですが、oomox-gitAUR を使用することで HiDPI ディスプレイ用にあらかじめ拡大されたエレメントを使用するテーマを生成できます。

Elementary (EFL)

UI のエレメントを1.5倍に拡大するには:

$ export ELM_SCALE=1.5

詳しくは https://phab.enlightenment.org/w/elementary/ を参照。

ディスプレイマネージャ

SDDM

SDDM を拡大するには /etc/sddm.conf の以下のプロパティを変更してください。ファイルを編集する前にバックアップを作成することを推奨します。

[X11]
# X server arguments
ServerArguments=-nolisten tcp -dpi 144

Xrandr を使用する方法

ServerArguments で設定できない場合、xrandr で直接 DPI を変更できます。/etc/sddm.conf を編集して以下のセクションを追加してください:

[X11]
# script to execute when starting the display server
# default to /usr/share/sddm/scripts/Xsetup
DisplayCommand=/etc/sddm/Xsetup

そして以下の内容の /usr/share/sddm/scripts/Xsetup/etc/sddm/Xsetup にコピーします:

#!/bin/sh
# Xsetup - run as root before the login dialog appears
/usr/bin/xrandr --dpi 144

設定パラメータについて詳しくは sddm.conf(5) を読んでください。

ブートマネージャ

GRUB

大きなサイズのフォントを使用する方法があります。ttf-dejavu パッケージに含まれている DejaVu Sans Mono フォントでサイズが 36 の GRUB フォントを生成:

# grub-mkfont --output=/boot/grub/fonts/DejaVuSansMono36.pf2 --size=36 /usr/share/fonts/TTF/DejaVuSansMono.ttf

/etc/default/grubGRUB_FONT 行を追加することで GRUB から生成したフォントを使用できます:

/etc/default/grub
GRUB_FONT=/boot/grub/fonts/DejaVuSansMono36.pf2

最後に GRUB の設定を更新してください:

# grub-mkconfig -o /boot/grub/grub.cfg

アプリケーション

ブラウザ

Firefox

Firefox の高度な設定のページ (about:config) を開いて layout.css.devPixelsPerPx パラメータを 2 に設定してください (2 は Retina スクリーンに合った数値です、必要に応じて数値を変更してください)。

Firefox バージョン 38 以降から、システム設定 (GTK+ 3.10) が適用されるようになっています [1]

メニューや URL バーのフォントが小さい場合は userChrome.css ファイルを作成することで明示的にフォントサイズを設定できます。ファイルは $HOME/.mozilla/firefox/*.default/chrome/ フォルダに保存してください。chrome フォルダは自分で作成する必要があります。別の場所にある chrome フォルダに css ファイルを保存しても適用されません。

css ファイルの中身は以下のようにします:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */
* { font-size: 16px !important; }

設定ページが小さい場合、設定 -> コンテンツ -> フォントと配色 -> 詳細設定から最小フォントサイズを設定してみてください。

Chromium / Google Chrome

バージョン 43.0.2357.2-1 からメインブランチの google-chromeAUR で完全な HiDPI サポートが含まれており、何も設定しなくても動作します (Gnome と Cinnamon でテスト済み)。また、AUR の古い Chrome パッケージでは、chromium パッケージと同じように、--force-device-scale-factor コマンドラインフラグを使ってブラウザを起動することができます。全てのコンテンツと ui、さらにタブやフォントサイズがスケールします。例:

$ chromium --force-device-scale-factor=2

このオプションを使う場合、スケールファクター1が通常のスケーリングです。少数点を使うこともできます。

Retina ディスプレイのような HiDPI モニターと別のモニターを一緒に使用する場合、reszoom 拡張を使うことで使用しているディスプレイにあわせてズームレベルを自動的に調整することができます。

Opera

バージョン24から、--alt-high-dpi-setting=X コマンドラインオプションを使って Opera を起動することで DPI を変更することができます。X は希望の DPI に置き換えて下さい。例えば、--alt-high-dpi-setting=144 なら Opera は DPI が144だと認識します。新しいバージョンの opera ではフォントの DPI 設定を使って DPI を自動で検出します (KDE の場合: force font DPI の設定)。

一般的にいって、Opera の HiDPI サポートは優れています。また、Chrome の blink レンダラを使って作成されているので、ほとんどの Chrome 拡張が動作します。HiDPI のサポートが上手く行っている Chrome として使うことができるでしょう。

メールクライアント

Thunderbird

Firefox を見てください。about:config にアクセスするには、Edit → Preferences → Advanced → Config editor を開きます。

Wine アプリケーション

次を実行して、"画面"タブの"画面の解像度"設定を変更してください:

$ winecfg

フォントのサイズにだけ影響を与えます。

Skype

新しい Skype for Linux Alpha (skypeforlinuxAUR[リンク切れ: パッケージが存在しません]) は GTK+ 3 を使用し、skypeforlinux-binAUR[リンク切れ: パッケージが存在しません] パッケージは GTK+ 2 を使用しています。

旧バージョンの Skype (skypeAUR[リンク切れ: パッケージが存在しません]) は Qt 4 を使っており、別個に設定する必要があります。Skype の DPI 設定を変更することはできませんが、フォントサイズは変更することができます。qt4 をインストールして qtconfig-qt4 を実行して設定してください。

Spotify

Spotify はスケーリングファクタを指定して起動することができます。例:

$ spotify --force-device-scale-factor=1.5

Spotify の .desktop ファイルを上書きすることもできます。ファイルをコピーしてください:

$ cp /usr/share/applications/spotify.desktop ~/.local/share/applications/

それからファイルを編集して --force-device-scale-factor オプションを追加してください:

[Desktop Entry]
Name=Spotify
GenericName=Music Player
Comment=Spotify streaming music client
Icon=spotify-client
Exec=spotify %U --force-device-scale-factor=1.5
TryExec=spotify
Terminal=false
Type=Application
Categories=Audio;Music;Player;AudioVideo;
MimeType=x-scheme-handler/spotify;

IntelliJ IDEA

HiDPI のサポートが機能しない場合、vmoptions ファイルに -Dhidpi=true を追加してください [2]:

/usr/share/intellij-idea-ultimate-edition/bin/idea.vmoptions
/usr/share/intellij-idea-ultimate-edition/bin/idea64.vmoptions

もしくは、$HOME ディレクトリの .vmoptions ファイルに以下を追加します:

echo -Dhidpi=true >> $HOME/.IdeaIC14/idea64.vmoptions

NetBeans

Netbeans では --fontsize パラメータを使うことで起動時にインターフェイスのフォントのサイズを変更することができます。変更を永続的にするには、/usr/share/netbeans/etc/netbeans.conf ファイルを編集して netbeans_default_options プロパティに --fontsize パラメータを追加してください [3]

エディタのフォントサイズは Tools → Option → Fonts & Colors から変えられます。

出力ウィンドウのフォントサイズは Tools → Options → Miscelaneous → Output から変えられます。

GIMP 2.8

GIMP の場合、HiDPI 対応のテーマを使用するか、既存のテーマの gtkrc変更 してください。例えば GimpToolPalette::tool-icon-sizedialog に設定します。

HiDPI ディスプレイ用のテーマである gimp-hidpi も存在します。

VLC

2015年5月現在、AUR にある git バージョン vlc-gitAURVLC で問題は解決します。

Qt5 によって HiDPI ディスプレイが検出されて、フルスクリーンで再生されている場合でも、動画がウィンドウの隅に表示されて無駄な領域が生まれることがあります。QT_AUTO_SCREEN_SCALE_FACTOR=0 を使って VLC を起動することで問題は解決しますが、インターフェイスが小さくなってしまいます (ソース)。

Steam

HiDPI-Steam-Skin をインストールすることで Steam のインターフェイスのフォントサイズを大きくすることができます。完全ではありませんが、可読性は向上します。

ノート: スキンは ~/.local/share/Steam/skins にダウンロードしてください。README に書かれている ~/.steam/skins/ ではありません。

MetroSkin Unofficial Patch も HiDPI 環境の Linux で Steam を使う場合に役立ちます。

他のアプリケーション

アプリケーションを VNC デスクトップでフルスクリーンで実行して、装飾を省かせるという方法があります。それからビューアを拡大します。Vncdesk (AURvncdesk-gitAUR でインストールできます) では、アプリケーションごとにデスクトップを設定することができます。vncdesk 2 などのシンプルなコマンドでサーバーとクライアントを起動します。

x11vnc には実験的なオプションとして -appshare があり、アプリケーションウィンドウごとにビューアを開きます。

マルチディスプレイ

HiDPI の設定は全てのデスクトップに適用されるため HiDPI ではない外部ディスプレイには全てが大きく表示されてしまいます。

外部ディスプレイ

xrandr のスケールオプションを使って回避することができます。HiDPI の内部ディスプレイ (eDP-1) の右に HiDPI ではないモニター (DP-1) がある場合、次を実行:

$ xrandr --output eDP-1 --auto --output DP-1 --auto --scale 2x2 --right-of eDP-1

内部ディスプレイを拡張すると、外部ディスプレイに内部ディスプレイの一部が表示されることがあります。その場合、このスクリプト を使うなどしてポジションを手動で設定してください。

マウスが画面の全体で使えないという問題が発生することもあります。これは 既知のバグ であり xserver-org のパッチがあります (もしくはパンするという方法もありますが、別の問題が発生する可能性もあります)。

4k のノートパソコンの右に外付けの 1920x1080 モニターを縮小して右に表示させる例:

$ xrandr --output eDP-1 --auto --output HDMI-1 --auto --panning 3840x2160+3840+0 --scale 2x2 --right-of eDP-1

hidpi のモニターが AxB ピクセルで通常のモニターが CxD、そして [ExF] でスケールする場合、コマンドは以下のようになります:

$ xrandr --output eDP-1 --auto --output HDMI-1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP-1
ノート: 上記の --scale 2x2 は一部の Nvidia カードでは機能しません。現在のところ解決方法は見つかっていません [4]

ミラーリング

ディスプレイをミラーしたい場合、簡単にできます:

HiDPI の解像度が AxB で、外部ディスプレイの解像度が CxD の場合:

$ xrandr --output HDMI --scale [A/C]x[B/D]

例えば QHD の場合 (3200/1920 = 1.66 と 1800/1200 = 1.5):

$ xrandr --output HDMI --scale 1.66x1.5

UHD から 1080p の場合 (3840/1920=2 2160/1080=1.98):

$ xrandr --output HDMI --scale 2x1.98

スケーリングによって画面が霞むときは、モニター設定で"シャープネス"パラメータを調整してください。

Linux コンソール

デフォルトのコンソールフォントでは hidpi ディスプレイでとても小さくなってしまいます。kbd パッケージに含まれている一番巨大なフォントは latarcyrheb-sun32 であり、(一時的に) 有効にするには:

$ setfont latarcyrheb-sun32

terminus-font など他のパッケージには大きいフォントとして ter-132n(normal) や ter-132b(bold) が含まれています。詳しくはフォント#コンソールフォントを見てください。

フォントを変更した場合、他の仮想端末 (tty2-6) に切り替えたときに問題が発生することがあります。KMS の特定のモード (例: video=2560x1600@60) を強制的に使うように設定して再起動することで問題は解決します (使用している HiDPI ディスプレイのネイティブ解像度にあわせて設定してください)。

参照