Dias atrás, quebrei a tela do meu laptop por acidente, o lado direito da tela está danificado, mas a maior parte do lado esquerdo é utilizável. Fiz algumas pesquisas tentando encontrar uma maneira de modificar a dimensão da tela para caber na área sem danos e encontrei xrandr.
Encontrei o próximo arquivo .sh, mas não consigo encontrar uma maneira de colocar a tela no lado esquerdo, nem modificando os parâmetros --transform ou o comando --fb.
#!/bin/bash
#change these 4 variables accordingly
ORIG_X=1280
ORIG_Y=800
NEW_X=1160
NEW_Y=800
###
X_DIFF=$(($NEW_X - $ORIG_X))
Y_DIFF=$(($NEW_Y - $ORIG_Y))
ORIG_RES="$ORIG_X"x"$ORIG_Y"
NEW_RES="$NEW_X"x"$NEW_Y"
ACTIVEOUTPUT=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-z0-9]\+\) connected.*/\1/")
MODELINE=$(cvt $NEW_X $NEW_Y | grep Modeline | cut -d' ' -f3-)
xrandr --newmode $NEW_RES $MODELINE
xrandr --addmode $ACTIVEOUTPUT $NEW_RES
xrandr --output $ACTIVEOUTPUT --fb $NEW_RES --panning $NEW_RES --mode $NEW_RES
xrandr --fb $NEW_RES --output $ACTIVEOUTPUT --mode $ORIG_RES --transform 1,0,$X_DIFF,0,1,$Y_DIFF,0,0,1
Eu também tentei fazer isso sem o arquivo .sh executando a próxima linha:
xrandr --output LVDS-1 --fb 800x768 --mode 800x768 --transform 1,0,566,0,1,0,0,0,1
A tela ficou na posição que eu queria mas depois de executar esse comando aparece uma borda preta do lado esquerdo da tela e não consigo removê-la.
Alguma idéia do que está acontecendo de errado aqui?
Basta definir o tamanho da tela com
xrandr --fb
(não--mode
,--transform
, tanto faz).xrandr
reclamará que o tamanho da tela é muito pequeno, mas aplicará as configurações mesmo assim.Exemplo:
Isso provavelmente deveria ser um aviso em vez de um erro; há situações em que faz todo o sentido definir o tamanho da tela para algo menor do que a(s) tela(s) real(is).
Atualizar:
Os gerenciadores de janela habilitados para várias cabeças obtêm as informações sobre a(s) tela(s) por meio das extensões Xrandr(3) e Xinerama(3) e não prendem suas dimensões dentro do retângulo da janela raiz.
Uma solução temporária seria impedi-los de usar as extensões
Xrandr
e por meio de um hack. Isso pode ser melhorado transformando as funções fictícias em wrappers que cortam os retângulos retornados.Xinerama
LD_PRELOAD
Isso funcionou para mim no vanilla debian 9.5 com o
mate
ambiente de desktop e o gerenciador de exibiçãolightdm
ou :gdm3
Então, no menu de sessão de
lightdm
escolha "MATE", e como usuário logado:Ainda não consegui fazê-lo funcionar com
plasma
ougnome3
/gnome-shell
/mutter
.Aqui está minha versão modificada desse script (com as alterações do KDE encontradas em outro lugar)
SDDM: Para que isso tenha efeito na tela de login do sddm, coloque um eco na frente de cada linha xrandr e copie os comandos xrandr resultantes na inicialização do sddm. Se você estiver executando o KDE, você precisará desabilitar o KScreen para transferir as configurações para o KDE Plasma.
Com seu monitor conectado, execute...
... para procurar a exibição em seu /var/log/Xorg.0.log e modificar a linha if grep abaixo de acordo. Não se esqueça de alterar as linhas xrandr conforme mencionado acima. Adicione ao seu /usr/share/sddm/scripts/Xsetup: