![Como determinar qual entidade altera as configurações de DPI do Xorg?](https://rvso.com/image/169420/Como%20determinar%20qual%20entidade%20altera%20as%20configura%C3%A7%C3%B5es%20de%20DPI%20do%20Xorg%3F.png)
Instalei o Xubuntu 19.04 e, para levar em conta a resolução da tela do meu laptop, /etc/lightdm/lightdm.conf
adicionei a linha
xserver-command=X -dpi 166
O resultado é que o painel XFCE, terminal e outros programas GTK2 e GTK3 assumem os tamanhos de fonte corretos (os mesmos como se eu tivesse definidoConfiguração de DPI personalizadaemAparência→Fontespara 166), mas todos os outros como, por exemplo, Yakuake ainda veem 96 DPI. Além disso, se eu tentar xdpyinfo
, obtenho estes 96 DPI:
$ xdpyinfo | grep dot
resolution: 96x96 dots per inch
Além disso, se eu marcar e desmarcar novamente oConfiguração de DPI personalizadaopção, as fontes também diminuem no XFCE (aparentemente, o DPI é consultado novamente no servidor X).
Portanto, suspeito que, durante a inicialização da sessão, alguma entidade altere a configuração de DPI da tela como se estivesse executando xrandr --dpi 96
. Se eu executar manualmente xrandr --dpi 166
, os programas começarão a se comportar corretamente.
Eu gostaria de descobrir o que exatamente a entidade está fazendo isso, para corrigir isso no núcleo, em vez de adicionar soluções alternativas pós-inicialização. Como posso encontrá-lo?
Responder1
Graças aos comentários de @mosvy, descobri que o culpado é xfsettingsd
. Em particular, a suaxfce_displays_helper_normalize_crtc
A função contém esta escolha arbitrária codificada de 96 DPI:
/* The 'physical size' of an X screen is meaningless if that screen
* can consist of many monitors. So just pick a size that make the
* dpi 96.
*
* Firefox and Evince apparently believe what X tells them.
*/
helper->mm_width = (helper->width / 96.0) * 25.4 + 0.5;
helper->mm_height = (helper->height / 96.0) * 25.4 + 0.5;
Depois de eliminar essa função no binário, substituindo seu primeiro byte por 0xC3
(instrução x86/x86_64 RET
), não tenho mais 96 DPI forçados sobre mim.
Porém, esta não é uma solução totalmente de longo prazo, porque uma atualização pode sobrescrever esse arquivo, então tenho que manter xfce4-settings
o pacote (by apt-mark hold xfce4-settings
) ou fazer outra coisa para evitar esse comportamento incorreto.