(2010-07-17)
Em 2006, expliquei como definir o tamanho do ecrã no X11 e no Firefox (no meu weblog). Parece que agora algumas coisas podem não funcionar, por isso decidi ver como dar a volta.
Apesar de alguns monitores conservarem 96 pontos por polegada, há casos em que isso não acontece — por exemplo, monitores feitos para outras coisas (por exemplo, para ver televisão), ou monitores de "alta definição" (em que há mais pontos por polegada).
Nesses casos, queremos que as coisas tenham o mesmo tamanho (por exemplo, para continuarem legíveis), isto é, que ocupem mais espaço.
Em 2006, fazer isto implicava
Por vezes o X parece ignorar a directiva DisplaySize (pode até aceitá-la e depois mudar o seu valor para o original).
Para alterar o tamanho do ecrã depois do X ser inicializado, podemos usar o XRandR para alterar o tamanho do ecrã:
xrandr --output XPTO --fbmm LARGURAxALTURAEm que XPTO é o nome da saída em que está ligado o monitor (correr xrandr sem argumentos mostra as saídas activas, por exemplo "VGA connected ..." (saída VGA)), e ALTURA e LARGURA são as dimensões.
A propriedade layout.css.dpi apenas é usada nalguns casos — parece que, por exemplo, imagens não são redimensionadas, e alguns textos também não. Isto é — pelo menos em parte — devido a tamanhos definidos em pixels.
Para esse caso, é necessário alterar a definição layout.css.devPixelsPerPx, que é a relação entre o tamanho de um pixel (em 96 dpi) e um pixel do ecrã actual. Tal como a outra propriedade, os valores -1 e 0 fazem as contas automaticamente, mas usam sempre um resultado inteiro (provavelmente para evitar distorcer imagens).
Além disso, segundo o código, o valor pode ser diferente quando o Firefox usa GTK2.
Para resolver isto, é preciso fazer as contas de cabeça (dividir o valor de dpi do ecrã por 96) e meter o valor manualmente na propriedade.
É claro que se o ecrã não tiver um número de pontos por polegada múltiplo de 96, algumas coisas podem aparecer distorcidas, como imagens ou mesmo os ícones da interface do Firefox.