我想将 HDMI 显示器设置为连接显示器时笔记本电脑的唯一输出。现在每次打开连接显示器的笔记本电脑时我都要手动更改它,但我想自动执行此操作。
我读到过可以使用 xrandr 更改分辨率和显示器,但我无法做到。有了它,我就可以在 bashrc 文件中写入命令来检查显示器是否已连接,如果已连接,则更改输出。关于如何操作有什么建议吗?
答案1
我发现最好的方法是使用 arandr 工具。等效命令是:xrandr --output HDMI-1-3 --off --output HDMI-1-2 --primary --mode 2560x1080 --pos 1920x0 --rotate normal --output HDMI-1-1 --off --output eDP-1-1 --mode 1920x1080 --pos 0x0 --rotate normal --output DP-1-2 --off --output DP-1-1 --off
答案2
我创建了一个脚本,如果还有其他显示器,则关闭第一个显示器(笔记本电脑Screens.sh
)$HOME
#!/bin/bash
xrandr --prop | grep "[^dis]connected" | cut --delimiter=" " -f1> "$HOME/currentScreens.txt"
echo "Number of active screens:" $(< "$HOME/currentScreens.txt" wc -l)
if [ $(< "$HOME/currentScreens.txt" wc -l) -gt 1 ]; then
echo "You have more than one screen active"
xrandr --output $(cat "$HOME/currentScreens.txt" | awk 'NR==2') --primary
echo "$(cat "$HOME/currentScreens.txt" | awk 'NR==2') is active"
echo "I will disable the laptop one $(cat "$HOME/currentScreens.txt" | awk 'NR==1'); that is my job"
xrandr --auto && xrandr --output $(cat "$HOME/currentScreens.txt" | awk 'NR==1') --off
#dont turn off laptop:
#xrandr --auto && xrandr --output $(cat "$HOME/currentScreens.txt" | awk 'NR==2') --right-of $(cat "$HOME/currentScreens.txt" | awk 'NR==1')
else
echo "Nothing to do"
fi
之后我创建了一个screen.desktop
文件:
[Desktop Entry]
Version=1.0
Exec=$HOME/Screens.sh
Name=Screen turn off
GenericName=Screen script
Comment=Turn off if more than 1 screen
Encoding=UTF-8
Terminal=true
Type=Application
Categories=Script;
并将其移动到文件夹:$HOME/.config/autostart
重启笔记本电脑。注意:如果你按照建议在 .bashrc 中写入该内容,则每次打开终端时都会调用它。
为了使其在任何文件夹中工作,请使用以下命令:
sudo ln -s /home/username/Screens.sh /usr/bin/Screens.sh
bash Screens.sh