Xresource Xft.dpiを設定する人は誰ですか?

Xresource Xft.dpiを設定する人は誰ですか?

私たちは最近、2160pディスプレイを備えた新しいラップトップを受け取りました。 Ubuntu 16.04を受け取ったときにUnity Desktopがインストールされていました。 Xfce 4をインストールして使用しましたが、Unityの挨拶をそのまま維持しました(きれいに)。

高DPIディスプレイでフォントサイズの調整の問題が発生すると予想していましたが、XresourceはXft.dpi通常の96ではなく192に設定されました。ほとんどすべてのアプリがこの設定を使用するため、内部ディスプレイをほとんど使用できます。 10点満点で10点でしょ?

いいえ。これがどこにインストールされているのかわからない。 Xfceの外観パネルでは、DPIは96であると主張しています。 dconf存在する変数にも96が表示されます。 xdpyinfo96年生まれとも言いましたね。 Xorg.0.logDPIに関するメッセージがありますが、96と呼ばれます。 lightdm.conf(Unity グリーティング設定ファイル) に変更の試行は表示されません.そしてxrandr恒等変換行列を報告します(スケーリングなし)。

グリーティングは最初にFlyspeck 3でレンダリングされましたが、しばらくしてサイズが変更されるため、GNOMEまたはUnityのグリーティングが原因であると疑われます。ただし、これを行うように指示がどこにあるか、デスクトップセッションにどのように続くかはわかりません。

私の目標は、外部1080pモニターを接続し、両方のモニターが鮮明に見えるようにDPIを調整することです。しかし、後ろから他の人と戦うと効果的ではありません。

すべてのリードを歓迎します。

システムメッセージ

  • Ubuntu 16.04.3
  • Unity 7.4.0+16.04.20160906-0ubuntu1
  • xorg 1:7.7+13 Ubuntu 3
  • xfce 4.12.2

答え1

私はこの問題の根本的な原因を次に見つけることができると信じています。https://gitlab.freedesktop.org/xorg/xserver/-/issues/509そしてhttps://bugzilla.gnome.org/show_bug.cgi?id=757142

v3.17 の GTK は不要なXft.dpi: 96環境に課せられ、Xft.dpiそうでなければ何の効果もありません。 Gnome開発者は試行の復元を拒否し、Xorg開発者はGnome施行に対する解決策を提供しようとしませんでした。

*SUSE開発者は、私がこの問題に注意を払った直後に賢明に実施を再開しました。 * SUSEまたは同等の機能を持つディストリビューションに切り替えると、問題が解決する可能性があります。

Debian(少なくともTDEとIceWMの実行)とUbuntu(少なくともTDEとIceWMの実行)もこれを行うと思うので、他のディストリビューションがあるかもしれません。 Mint(最小XFCE実行)には明らかにまだこの機能がなく、Fedoraには確かにありません。これはGnomeの主力製品であり、最初ではなくても3.17に切り替えた最初の製品の1つだからです。要するに、最も基本的な設定を誰がしたかに対する答えは に埋もれていると思います。gdk/x11/gdkxftdefaults.c

答え2

明らかに、Gnome-settings-daemonがXft.dpiを変更しました。

私は/usr/lib/gsd-xsettings〜/ .xinitrcでこれを行います。私はGnomeを使用しませんが、カーソルを点滅させないなど、さまざまなGTKアプリケーションを設定する必要があるため、デーモンを実行します。 (修正も可能です~/.config/gtk-3.0/settings.ini

今変更してxrdbを実行します。後ろに設定デーモンを起動します。

この質問の一部の用語を理解していないかもしれませんが、これは役に立ちます。実行中のソフトウェアの1つがgsd-xsettingsを実行しているようです。

ここ以下は、Xft.dpi プロパティを変更するコードの断片です。

$ grep -n Xft.dpi gnome-settings-daemon/plugins/xsettings/gsd-xsettings-manager.c -2
852-        g_debug("xft_settings_set_xresources: orig res '%s'", add_string->str);
853-
854:        update_property (add_string, "Xft.dpi",
855-                                g_ascii_dtostr (dpibuf, sizeof (dpibuf), (double) settings->scaled_dpi / 1024.0));
856-        update_property (add_string, "Xft.antialias",

ファイルの上部には、ソフトウェアがデフォルトで96 DPIに設定されている理由が詳しく説明されています。おそらく設定するように何かを設定できます。X設定"Xft/DPI" の値を指定すると、GTK は ~/.Xdefaults で設定した値を "デフォルト" 96 で上書きする代わりに、私が好む値を使用します。

答え3

部分的に調べました。 @derobert そうなんですね。その設定はUnityの挨拶から残ります。

実験のために2つのダミーユーザーアカウントを作成しました。 Unityのグリーティングは96 DPIから始まり、192 DPIで再描画されます。新しく作成された仮想ユーザーを介してUnityセッションにログインしました。デスクトップはすぐに96 DPIに戻ります。さまざまなコントロールパネルでも96DPIが報告されます。だからUnityはこの設定を強制しているようです。

他の仮想ユーザーと一緒にXfceセッションにログインしました。すべてのコントロールパネルは96 DPIを報告します。ただし、実行中のすべてのプログラムで報告され使用されているDPIはxrdb -queryまだ192です。これはおそらくUnityの挨拶で遅れているようです。しかし、即時Xfce Appearance Control PanelでDPI設定を変更しましたが、デスクトップ全体がそのDPI値に切り替わりました。私の意見では、DPI値をタッチするまで設定はユーザーのxfconf変数にありません。存在しない場合はログイン時に明示的に設定されません。

したがって、Xfceにはバグがあるようです。Xft.dpi起動時に現在の値を確認しないか、予想されるデフォルトに強制しません。

当初、Unityの挨拶がなぜ192 DPIに移行したのかはまだわかりません。

関連情報