Ubuntu 23.x环境下关闭电视时保持显示设备激活或恢复窗口布局的方案咨询
Ubuntu 23.x环境下关闭电视时保持显示设备激活或恢复窗口布局的方案咨询
你好,针对你遇到的Ubuntu 23.04下TV关机后显示设备被系统移除、重启后Firefox窗口全部堆叠的问题,我整理了两种可行的解决方案,分别从保持显示设备持续激活和自动恢复窗口布局两个方向入手:
方案一:强制系统保留显示设备配置(适用于Xorg环境)
首先先确认你的系统用的是Xorg还是Wayland,运行命令:
echo $XDG_SESSION_TYPE
如果输出是x11,可以尝试以下操作强制系统保留显示设备:
- 先用
xrandr命令获取当前四个显示器的输出名称(比如HDMI-1、HDMI-2等)和分辨率,记下来备用。 - 创建Xorg配置文件,强制系统保留显示设置:
编辑/etc/X11/xorg.conf.d/10-monitor.conf文件(如果目录不存在就先创建),添加以下内容(根据你的实际设备参数调整):Section "Monitor" Identifier "HDMI-1" Option "PreferredMode" "1920x1080" # 替换成你的TV分辨率 Option "Position" "0 0" Option "DPMS" "false" # 禁用电源管理,避免系统主动关闭显示 EndSection Section "Monitor" Identifier "HDMI-2" Option "PreferredMode" "1920x1080" Option "Position" "1920 0" Option "DPMS" "false" EndSection Section "Monitor" Identifier "HDMI-3" Option "PreferredMode" "1920x1080" Option "Position" "0 1080" Option "DPMS" "false" EndSection Section "Monitor" Identifier "HDMI-4" Option "PreferredMode" "1920x1080" Option "Position" "1920 1080" Option "DPMS" "false" EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "HDMI-1" SubSection "Display" Modes "1920x1080" EndSubSection EndSection - 重启系统后,即使TV关机切断HDMI信号,系统也会保留这些显示设备的配置,不会将其移除,窗口位置自然也不会乱。
方案二:自动恢复窗口布局(Xorg/Wayland通用)
如果方案一因为TV硬件限制无法生效(比如部分TV关机后完全切断HDMI握手信号),可以通过脚本或工具自动恢复窗口位置:
方法1:用wmctrl脚本(Xorg环境)
- 安装窗口控制工具
wmctrl:sudo apt update && sudo apt install wmctrl - 创建窗口恢复脚本
restore_window_layout.sh:#!/bin/bash # 等待TV开机完成、显示器被系统识别,时间可根据实际调整 sleep 15 # 获取所有Firefox窗口的ID(按打开顺序排序) FIREFOX_WINDOWS=$(wmctrl -l | grep -i firefox | awk '{print $1}') # 检查窗口数量是否为4,避免误操作 if [ $(echo $FIREFOX_WINDOWS | wc -w) -ne 4 ]; then echo "未检测到4个Firefox窗口,跳过布局恢复" exit 1 fi # 逐个设置窗口位置和大小,对应四个显示器 wmctrl -i -r $(echo $FIREFOX_WINDOWS | cut -d' ' -f1) -e 0,0,0,1920,1080 wmctrl -i -r $(echo $FIREFOX_WINDOWS | cut -d' ' -f2) -e 0,1920,0,1920,1080 wmctrl -i -r $(echo $FIREFOX_WINDOWS | cut -d' ' -f3) -e 0,0,1080,1920,1080 wmctrl -i -r $(echo $FIREFOX_WINDOWS | cut -d' ' -f4) -e 0,1920,1080,1920,1080 # 最大化所有窗口 for win in $FIREFOX_WINDOWS; do wmctrl -i -r $win -b add,maximized_vert,maximized_horz done - 给脚本添加执行权限:
chmod +x restore_window_layout.sh - 修改你的TV开机脚本,在打开TV的命令后调用这个恢复脚本即可。
方法2:用GNOME扩展(Wayland/Xorg通用,适用于GNOME桌面)
如果你的Ubuntu用的是默认GNOME桌面,可以通过扩展实现自动窗口管理:
- 安装Auto Move Windows扩展:可以为Firefox窗口设置规则,比如根据窗口标题区分,让每个窗口打开时自动移动到指定显示器。
- 安装Window Layout Manager扩展:可以手动保存当前的窗口布局,设置在显示器连接恢复后自动加载布局,完全实现自动化。
备注:内容来源于stack exchange,提问作者GRX




