如何创建 xrandr 输出切换脚本?

如何创建 xrandr 输出切换脚本?

我有两个输出(并排)并且我正在使用 i3-wm。我想创建 shell script 脚本,它运行:

# 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

我正在切换显示器配置以实现更好的游戏性能(FPS 提高大约 5-15%)

答案1

这应该有效:

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

解释:

  • xrandr --listactivemonitors仅打印当前打开的监视器。
  • grep <BBB> >/dev/null在先前的输出中搜索我们要切换的监视器的名称。如果找到,grep 将返回 shell 解释为 true 的退出代码。如果没有找到,它将返回 shell 解释为 false 的退出代码。输出被发送到 /dev/null 以避免屏幕混乱。
  • && xrandr --output <BBB> --off如果 grep 在活动监视器列表中找到监视器,那么它将运行,关闭监视器。但是,如果 grep 以错误的退出代码退出,那么这将不会运行,因为无论它的计算结果是什么,逻辑 and 子句作为一个整体已经知道是错误的。
  • || xrandr --output <BBB> --right-of <AAA> --mode 1920x1080如果 grep 没有找到它,那么该子句将运行,打开监视器。它运行是因为前一个子句 ( grep ... && xrandr ...) 的计算结果为 false。为了知道这个逻辑 or 子句是否为真,shell 必须计算右侧。另一方面,如果左侧已经计算为 true,则无需计算右侧,因此不会执行。

这是一篇简洁的文章由逻辑条件介导的控制流。

答案2

如果您想在非绝对必要时避免使用 tmpfile,请尝试以下操作(LVDS-1:笔记本电脑显示器,VGA-1:外部显示器):

#!/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;

脚本在(ie )ext-on中调用,并且,是到 ext-on 的符号链接。适应您的需求。$PATH~/.local/binext-offext-toggle

为了方便 i3wm 用户使用Fn+-key 组合,添加到~/.config/i3/config

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

奇迹般有效。永远不让我失望 ;)

干杯

答案3

请检查此链接:

https://faq.i3wm.org/question/5312/how-to-toggle-onoff-external-and-internal-monitors.1.html

该脚本是用 bash 编写的,并给出了如何在 i3 配置文件上设置快捷键。

相关内容