Como criar um script de alternância de saída xrandr?

3

Eu tenho duas saídas (lado a lado) e estou usando o i3-wm. Gostaria de criar um script de script de shell, que é executado:

# if output <BBB> is connected, but off
xrandr --output <BBB> --right-of <AAA> --mode 1920x1080

# if output <BBB> is connected, and on
xrandr --output <BBB> --off

Estou alternando a configuração do monitor para obter um melhor desempenho nos jogos (cerca de 5-15% a mais de FPS)

    
por kravemir 11.10.2016 / 19:50

3 respostas

1

Isso deve funcionar:

xrandr --listactivemonitors | grep <BBB> >/dev/null && xrandr --output <BBB> --off || xrandr --output <BBB> --right-of <AAA> --mode 1920x1080

Explicação:

  • xrandr --listactivemonitors imprime somente os monitores que estão atualmente ativados.
  • grep <BBB> >/dev/null Pesquisa a saída anterior para o nome do monitor que queremos alternar. Se for encontrado, o grep retornará um código de saída que o shell interpreta como true. Se não for encontrado, retornará um código de saída que o shell interpreta como falso. A saída é enviada para / dev / null para evitar a confusão na tela.
  • && xrandr --output <BBB> --off Se o grep encontrou o monitor na lista de monitores ativos, ele será executado, desligando o monitor. Mas se grep sair com um código de saída falsey, então isso não será executado porque não importa o que ele avalie, a lógica e a cláusula como um todo já são conhecidas como falsas.
  • || xrandr --output <BBB> --right-of <AAA> --mode 1920x1080 Se o grep não o encontrou, esta cláusula será executada, ligando o monitor. Ele é executado porque a cláusula anterior ( grep ... && xrandr ... ) foi avaliada como falsa. Para saber se essa lógica ou cláusula é verdadeira, o shell deve avaliar o lado direito. Por outro lado, se o canhoto esquerdo já foi avaliado como verdadeiro, não há necessidade de avaliar o lado direito e, portanto, isso não será executado.

Aqui está um resumo sucinto sobre fluxo de controle mediado por condicionais lógicos.

    
por 31.08.2017 / 21:22
0

Por favor, verifique este link:

link

O script é escrito no bash e também fornece um atalho de chave no arquivo de configuração do i3.

    
por 05.11.2016 / 17:46
0

Se você quiser evitar um tmpfile quando não for absolutamente necessário, tente isto ( LVDS-1 : laptop display, VGA-1 : external monitor):

#!/bin/sh

switchDisplay() {
  /usr/bin/xrandr --auto && /usr/bin/xrandr --output "$1" --off
}

case "$0" in
*-off)
  switchDisplay "VGA-1";
;;
*-on)
  switchDisplay "LVDS-1";
;;
*-toggle)
  ### Debian Buster xrandr man page is missing critical information.
  ### xrandr --listactivemonitors
  ### Monitors: 1
  ###  0: +VGA-1 1920/509x1080/286+0+0  VGA-1
  /usr/bin/xrandr --listactivemonitors | /bin/grep -q "VGA-1" 1>/dev/null 2>&1
  if test "$?" -eq 0; then
    switchDisplay "VGA-1"; ### VGA active, turn it off.
  else
    switchDisplay "LVDS-1"; ### VGA inactive, turn it on.
  fi;
;;
esac;

O script é chamado ext-on em $PATH (por exemplo, ~/.local/bin ) e ext-off , ext-toggle são links simbólicos para ext-on. Adapte-se às suas necessidades.

Conveniência para usuários do i3wm com uma combinação de Fn+ -key, adicione a ~/.config/i3/config :

bindsym XF86Display             exec --no-startup-id ~/.local/bin/ext-toggle

Funciona como um encanto. Nunca me decepcione;)

felicidades

    
por 26.11.2018 / 20:55