1 pontos por GN⁺ 2023-12-30 | 1 comentários | Compartilhar no WhatsApp
  • Um experimento para ir além de dividir monitores de desenvolvimento apenas entre 0° e 90° e aplicar rotações em ângulos arbitrários com xrandr no Linux para conseguir linhas de código mais longas
  • 0° funciona bem para apps e vídeos em formato wide, mas deixa muito espaço em branco em sites e documentos; 90° é bom para ler documentos de texto, mas é desfavorável para exibir filmes e para o ângulo de visão
  • 1° pode servir para compensar a inclinação da mesa, mas a renderização das fontes fica instável; 45° parece um meio-termo entre horizontal e vertical, mas em proporções de tela não quadradas o uso do espaço fica estranho
  • Em telas ultrawide 21:9, uma rotação de cerca de 22°, próxima da diagonal, é tratada como a configuração que oferece o maior comprimento de linha
  • A aplicação prática é feita no Xorg inserindo uma matriz de transformação em xrandr --output HDMI-3 --transform...; Wayland não era suportado

Experimento de rotação de monitor além de 0° e 90°

  • Monitores na vertical já eram usados havia muito tempo para leitura e programação, com a vantagem de mostrar uma grande quantidade de texto de uma vez
  • A comparação entre os ângulos básicos é a seguinte
    • : combina bem com a maioria dos aplicativos e com vídeos em formato wide
    • Desvantagem de 0°: pode sobrar muita margem e padding ao redor de sites e documentos
    • 90°: adequado para documentos de texto lidos de cima para baixo, como páginas de livro
    • Desvantagem de 90°: não exibe filmes bem e causa problemas de ângulo de visão
  • No Linux, é possível girar a tela em qualquer ângulo com xrandr
    • No macOS e no Windows, fazer o mesmo é mais complicado
    • No MacBook o experimento não funcionou, mas no desktop funcionou sem problemas
  • Os resultados para ângulos adicionais misturam utilidade prática e brincadeira
    • : a barra de menu parecia desaparecer para a direita e, embora possa ser útil quando a mesa está levemente inclinada, a renderização das fontes fica estranha
    • 45°: passa a sensação de ficar entre horizontal e vertical, perto da diagonal, mas em proporções de tela que não são quadradas o espaço não se encaixa bem
    • 22°: em uma proporção 21:9, fica próximo da rotação necessária pelo cálculo do ângulo de um triângulo e é tratado como o ajuste que oferece o maior comprimento de linha
  • A conclusão é que a rotação de 22° permite ignorar o limite de 80 colunas graças ao comprimento maior das linhas, mas a webcam começa a escorregar para baixo

Aplicando com a matriz de transformação do xrandr

  • O ambiente de funcionamento se limitava ao Xorg e não havia suporte a Wayland
  • O comando básico tem a forma xrandr --output HDMI-3 --transform lots of numbers here
  • Em --transform, entra uma matriz de transformação para posição e rotação da tela
  • O formato básico necessário para rotação e deslocamento é o seguinte
cos(x),-sin(x),shift_left,sin(x),cos(x),shift_up,0,0,1
  • Os comandos de exemplo não incluem deslocamento para centralizar e não alinham a tela ao centro porque a resolução não é conhecida
#-0.1
xrandr --output HDMI-3 --transform 0.999998476913288,0.00174532836589831,0,-0.00174532836589831,0.999998476913288,0,0,0,1

#1
xrandr --output HDMI-3 --transform 0.999847695156391,-0.0174524064372835,0,0.0174524064372835,0.999847695156391,0,0,0,1

#45
xrandr --output HDMI-3 --transform 0.707106781186548,-0.707106781186548,0,0.707106781186548,0.707106781186548,0,0,0,1

#22
xrandr --output HDMI-3 --transform 0.927183854566787,-0.374606593415912,0,0.374606593415912,0.927183854566787,0,0,0,1
  • Também está incluída uma pequena calculadora em JavaScript que gera comandos xrandr a partir dos valores de entrada

1 comentários

 
GN⁺ 2023-12-30
Opiniões do Hacker News
  • O texto trata isso de forma engraçada, mas, na prática, alguns sistemas de controle de tráfego aéreo usam telas giradas na diagonal, deixando aquela “linha longa” alinhada com a principal rota de aproximação do aeroporto
    A configuração que vi era um display grande com entrada por stylus, não uma tela ultrawide, mas um display de proporção relativamente padrão girado de lado
    • Também pesquisei, como outras pessoas, e vi muitas telas de proporção 1:1; nesse nível, não parece nada ruim
    • Eu adoraria ver uma foto dessa configuração
    • Interessante. Por isso acho difícil entender a escolha de usar GPS/apps de mapa em um dispositivo no modo paisagem, mesmo com a configuração em que a direção de deslocamento fica “para cima”
      Eu quero maximizar as informações “à frente”, para onde estou dirigindo, não nas laterais
  • Se você tiver um monitor ultrawide, será que não daria para girá-lo e criar um enorme display circular por persistência de visão? Também poderia funcionar como um ventilador para espalhar o calor gerado pela GPU redesenhando tudo sem parar
    • Alguns dias atrás apareceu no meu feed do YouTube “spinning gaming monitor”: https://youtu.be/J6P3o6zrqsc?si=NUB7YviQNYoSW7Vi
    • A maioria dos compositores já redesenha continuamente, e em chips modernos isso quase não pesa. As operações adicionais de deslocamento e rotação provavelmente nem seriam perceptíveis
  • Mudando um pouco de assunto, meu conselho é que 4K grande é melhor do que ultrawide. Você consegue mais pixels por menos dinheiro
    Os ultrawides que fazem sentido são só os modelos com resolução 5K x 2K; eles têm mais pixels do que um 4K único, mas são caros. Ainda assim, um monitor 5K 16:9 tem mais pixels
    Pessoalmente uso três monitores 4K de 27 polegadas; são mais baratos que um único ultrawide 5K e têm muito mais pixels
    • Não entendo muito bem por que usar vários monitores. Hoje faço 98% do trabalho em um único 32 polegadas 4K 16:9, com tudo em uma tela grande
      Tenho um monitor auxiliar ao lado para documentos, um webapp em hot reload, vídeos que vejo enquanto trabalho e videoconferência durante compartilhamento de tela, mas o esforço de virar a cabeça é grande, então na prática quase não uso. 80% do tempo ele fica simplesmente vazio
    • Sou totalmente o oposto. Usei 2 monitores 4K por vários anos e no ano passado mudei para um ultrawide; foi completamente diferente
      Sinto que nunca deveria ter comprado dois 4K, aliás, monitores duplos em geral. Um ultrawide é muito mais perfeito e funcional do que ter as molduras grossas dos dois monitores bem no centro do campo de visão
    • Por outro lado, uso um monitor 49 polegadas 32:9, e ele é excelente para notebook. O suporte a um único monitor é muito melhor do que configurações com dois ou mais
      Conectando direto ao notebook, simplesmente funciona. Quando usava dois displays, precisava de uma dock station e, sinceramente, a maioria era ruim. Indo para modelos superiores, desaparece todo o dinheiro economizado com monitores baratos
      Normalmente também é preciso uma dock compatível com Thunderbolt e, mesmo quando o notebook diz suportar, isso por si só vira uma fonte de problemas. No ultrawide, também foi mais fácil configurar atalhos de gerenciamento de janelas
    • É preciso sempre olhar o PPI. Aproximadamente:
      27” 5K (5120 x 2880) -> 218 PPI
      32” 4K (3840 x 2160) -> 137,68 PPI
      34” 5K (5120 x 2160) -> 163,44 PPI
      39,7” 5K (5120 x 2160) -> 139,97 PPI
      Apple Pro Display XDR 32" 6K (6016 x 3384) -> 218 PPI
    • Estou preparando uma nova build para substituir um sistema de 11 anos, e o monitor está sendo uma dor de cabeça. As exigências de trabalho geral/codificação e de edição de fotos entram em conflito
      Como trabalho com imagens de mais de 40 megapixels, quanto maior a resolução possível, melhor, para reduzir zoom in/out. Mas aí outros elementos da UI passam a precisar de ajuste de escala do display
      O Windows geralmente lida bem com isso, mas, quando não lida, o problema costuma estar nos programas que uso. Depois de pesquisar bastante, parece que o melhor é escolher um tamanho físico que permita usar a resolução desejada sem escala exagerada, por exemplo 300%
      Estou de olho no Dell Ultrasharp 32" 6K. O dpi é um pouco alto, 223, mas ele consegue exibir cerca de 75% de uma foto sem corte. Acho que também vou comprar um LG DualUp junto
      O ponto negativo dos dois é que, especialmente considerando o preço do Dell, decepciona serem painéis 8bit+FRC. Não quero descobrir tarde demais se sou sensível a cintilação ou se o painel não dura. Ainda assim, o Dell tem garantia de 3 anos, e o LG também pode ser comprado na versão comercial com garantia de 3 anos
  • O ideal, é claro, é um monitor girando no ângulo mágico de cerca de 54,74 graus, para remover os efeitos de interações anisotrópicas
    https://en.m.wikipedia.org/wiki/Magic_angle
    • Esse artigo da Wikipedia parece uma piada. Muito engraçado
  • A rotação “ideal” real para o maior comprimento de linha não é mais próxima de 23° do que de 22°? Afinal, Atan(9/21) = 23,20°
    E será que não dá para ir ainda mais longe? Se considerarmos o conteúdo da tela como um plano arbitrário, que tal inclinar o conteúdo para longe do usuário, como no Mode 7 do SNES ou nos créditos de abertura de Star Wars? Altura de tela infinita!
    • A altura das letras não afeta esse cálculo? A linha mais longa possível não poderia ser renderizada nas duas extremidades, então talvez uma linha mais curta em outro ângulo consiga mostrar mais texto?
    • Se o monitor for curvo, talvez fique mais perto de 24°
  • Para meu código Go, 90 graus é o melhor. Nessa orientação dá para encaixar muito mais blocos “if err != nil”
    • Assim também dá para usar layout em 2 colunas. De qualquer forma, ninguém deveria escrever mais de 80 caracteres
  • Em uma linha parecida, eu gostaria que houvesse mais displays 3:2 e que as pessoas os conhecessem melhor. A visão central humana, não a periférica, tem uma proporção muito próxima de 3:2, mas, por economia de escala, 16:9 é um pouco mais barato e muito mais comum
    E, para quem tiver curiosidade: girar um 16:9 na vertical para ganhar espaço vertical não ajuda. Ele fica estreito demais. Para mim, uma tela quadrada provavelmente seria o melhor
    Como efeitos colaterais, também há problemas de renderização de subpixels e de ângulo de visão em painéis TN, mas isso é relativamente pequeno

LG DualUp é um monitor 16:18 quase quadrado, tem resolução maior que o Eizo e custa quase a metade

  • O fato de a proporção do campo visual central humano ser próxima de 3:2 não é muito relevante quando o tamanho do monitor é muito maior que o campo visual central
    O importante é a tensão no pescoço. Na prática, você acaba querendo manter a cabeça na horizontal e movê-la para os lados. O movimento lateral não luta contra a gravidade, mas o movimento para cima e para baixo, sim
    Por isso, em termos de tamanho de monitor, é melhor ele ser mais largo na horizontal do que mais alto na vertical
  • A Huawei fabrica um monitor 3:2 de 28 polegadas: https://consumer.huawei.com/uk/monitors/mateview/specs/
    A resolução é 3840*2560
  • Exato. Só depois de encontrar um IBM Thinkpad antigo no porão e usá-lo é que percebi o quanto os displays widescreen são fora de propósito
    Além disso, coisas como barras de ferramentas frequentemente corroem o espaço vertical e espremem a área de trabalho para uma proporção ainda mais larga. Ao ler ou escrever texto, as extremidades esquerda e direita da tela ficam apenas como áreas vazias
    Com a mesma área, um display mais alto parece muito mais espaçoso. Mas colocar duas janelas/painéis/buffers lado a lado talvez não seja tão conveniente quanto antes
    Se você está usando uma tela 3:2, fico curioso para saber qual produto é
  • Por isso eu gostava tanto do SurfaceBook. A proporção da tela era quase perfeita. Agora voltei para o MBP, e ele é a segunda melhor opção
  • Na solução de 22°, falta uma implementação de janelas triangulares ou uma opção de visualização de janelas com “divisão diagonal”
    • A tela ideal provavelmente seria algo próximo de um triângulo ou semicírculo. Uma tela retangular girada é apenas uma aproximação muito grosseira
  • Comprei um monitor de 48 polegadas como monitor principal. Não preciso me preocupar com rotação ou coisas assim; simplesmente há uma tela gigantesca diante dos meus olhos
    Algumas pessoas parecem se sentir intimidadas por ter um monitor grande à frente, mas depois que você usa um, percebe que organizar monitores pequenos de 27 ou 32 polegadas em configuração única/dupla/tripla é desnecessariamente complicado
    Um único monitor grande é muito melhor. Monitores grandes são o futuro; as pessoas é que, por algum motivo, ainda não se sentem confortáveis em comprá-los
    • Pode ser uma questão de suporte de software. Simplesmente ter dois monitores “parece” mais fácil do que usar um monitor como se fossem dois
      A propósito, fico curioso para saber como você configurou o gerenciamento de janelas
    • Se for um monitor 4K de 48 polegadas, no fim das contas é algo assim
      • quatro monitores 1080P de 24 polegadas sem bordas
      • quatro monitores 1080P de 24 polegadas presos a uma grade fixa, sem flexibilidade
        Cada pessoa tem suas preferências, e tudo bem
    • Eu também tenho um monitor de 48 polegadas. Dos dois lados, tenho também um monitor de 27 polegadas em modo retrato
      Mas não entendo muito bem por que alguém acha múltiplos monitores complicados. É só conectar, arrastar a janela para o lado quando precisar e trabalhar
    • O motivo de eu hesitar em comprar um monitor grande é que acho desconfortável trabalhar diante de um monitor enorme sobre a mesa, e não vejo benefício pessoal no espaço extra para programação
      Mesmo em um notebook de 16 polegadas há espaço suficiente para três painéis de terminal verticais: um para edição, um para documentação e um para comandos de shell. Se eu precisar procurar algo na web, mudo de space com cmd-H e volto ao terminal com cmd-L
      Meu fluxo de trabalho funciona no notebook, então funciona igual onde quer que eu vá. Claro que não é um método para todo mundo, mas sou bastante cético quanto à ideia de que monitores grandes sejam o futuro para a maioria, e tenho quase certeza de que, pelo menos para mim, não são o futuro
    • Como nem sempre quero usar a tela inteira de qualquer monitor, prefiro vários monitores pequenos, que posso desligar quando necessário
      Isso tem suas próprias dificuldades, mas para coisas como navegar na web eu quero usar a tela inteira, e isso não funciona muito bem em uma tela gigantesca