Eu escrevi o script a seguir para poder alterar meu fator de escala dinamicamente usando atalhos de teclado no meu netbook Dell Mini 10v:
#!/bin/bash
#/usr/local/bin/xrandr-scale-tool
#first, we read the config files
if [ -r ~/.config/xrandr-scale-tool/xscale ]
then
xscale=$(~/.config/xrandr-scale-tool/xscale
fi
if [ ! -e ~/.config/xrandr-scale-tool/output ]
then
output=LVDS1
echo $output>~/.config/xrandr-scale-tool/output
fi
if [ ! -e ~/.config/xrandr-scale-tool/baseresx ]
then
baseresx=1024
echo $baseresx>~/.config/xrandr-scale-tool/baseresx
fi
if [ ! -e ~/.config/xrandr-scale-tool/baseresy ]
then
baseresy=600
echo $baseresy>~/.config/xrandr-scale-tool/baseresy
fi
#if they aren't readable, exit with status 1
if [ ! -r ~/.config/xrandr-scale-tool/xscale ] || [ ! -r ~/.config/xrandr-scale-tool/baseresx ] || [ ! -r ~/.config/xrandr-scale-tool/baseresy ] || [ ! -r ~/.config/xrandr-scale-tool/output ]
then
echo A config file could not be read
exit 1
fi
#now, we check the first argument to see what to do
if [ -z "$1" ]
then
#restore from settings
xrandr --output $output --scale ${xscale}x${xscale} --panning 0x0+0+0
xrandr --output $output --scale ${xscale}x${xscale} --panning 'xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}''
fi
if [ "$1" == "+" ]
then
#increment and apply
amt=$2
xscale='echo $xscale+$amt|bc'
xrandr --output $output --scale ${xscale}x${xscale} --panning 0x0+0+0
xrandr --output $output --scale ${xscale}x${xscale} --panning 'xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}''
sleep 2
notify-send "Scale Factor: $xscale" --icon=display
fi
if [ "$1" == "-" ]
then
#decrement and apply
amt=$2
xscale='echo $xscale-$amt|bc'
xrandr --output $output --scale ${xscale}x${xscale} --panning 0x0+0+0
xrandr --output $output --scale ${xscale}x${xscale} --panning 'xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}''
sleep 2
notify-send "Scale Factor: $xscale" --icon=display
fi
if [ "$1" == "reset" ]
then
#reset
xscale=1
xrandr --output $output --scale ${xscale}x${xscale} --panning 'echo $xscale*$baseresx|bc'x'echo $xscale*$baseresy|bc'
sleep 2
notify-send "Scale Factor: $xscale" --icon=display
fi
#record changes in scale to file before exiting
echo $xscale>~/.config/xrandr-scale-tool/xscale
exit 0
Esse script presume que sua resolução padrão é 1024x600 e você está usando a exibição em LVDS1. Se esse não for o caso, edite os arquivos em ~/.config/xrandr-scale-tool para refletir isso (os arquivos de configuração são gerados após a primeira execução).
Esse script pode ser executado de quatro maneiras:
xrandr-scale-tool restaura as configurações de escala do arquivo de configuração, que é salvo em cada execução.% xrandr-scale-tool + 0.1 incrementa a escala em 0,1. Você pode usar qualquer número aqui e xrandr-scale-tool - 0.1 diminui a escala em 0,1. Novamente, qualquer número funciona e xrandr-scale-tool reset redefine a escala para 1.
Cada vez que a escala é alterada, notify-send é executado para mostrar o fator de escala atual por meio de uma notificação.
A maneira como eu configurei o meu é que xrandr-scale-tool + 0.125 é mapeado para Ctrl Alt + , xrandr-scale-tool - 0.125 é mapeado para Ctrl Alt - , e xrandr-scale-tool reset é mapeado para Ctrl Alt 0 . xrandr-scale-tool é executado, sem argumentos, no login, de modo que qualquer escala que eu estivesse usando antes está em uso no próximo login.