我正在使用带有 mint linux 的笔记本电脑,并使用多显示器设置。我将在问题末尾显示我当前的 xrandr 输出以供参考。
我每天多次更改我的物理显示器设置。我拔下一个或两个外接显示器,然后再插入。
我当前的窗口管理器 - xfce - 不太擅长响应这些变化。目前,当物理设置发生变化时,我必须手动执行一些准备好的 xrandr 命令,以便 xfce 能够适应新的监视器设置。这是几个准备好的 xrandr 命令之一:
xrandr --output DP1-1 --primary --right-of eDP1 --output DP1-2 --right-of DP1-1
我不想再手动执行此操作了。我有几个想法可以自动对物理监视器设置的变化做出反应。这是基本思想:
- 在后台使用脚本监视 xrandr。
- 将我的显示器设置的当前状态保存到文件中(或保存在内存中)
- 如果之前的状态有变化,执行相应的 xrandr 命令来响应变化。
我看到几个选项可以做到这一点:
- 每秒 Crob 工作:这可能不是一个好主意,因为 cron 似乎并非旨在每秒执行命令 - 根据我的研究。
- 准备一个 bash 脚本,该脚本处于无限循环中,并在无限循环结束时休眠一秒钟。
- 在启动时启动一个 python 脚本,在这个 python 脚本中处理监视器设置的逻辑,将 python 脚本放入一个无限循环并在无限循环结束时使用 time.sleep(1)。我使用 python 的想法很简单:我是一个公平的 pyhton 开发人员,但在 bash 方面我很穷。因此,我对使用 python 比使用 bash 更有信心。
- 如果监视器设置发生变化,linux内核会发出一个信号,并在发出这个信号时执行一个脚本。
我有几个问题:
- 如果我使用选项 3:执行的 python 脚本是否会在其自己的系统进程中使用 python 解释器?含义:如果这些其他脚本共享相同的解释器实例,这个脚本会用它的睡眠指令阻止其他 python 脚本吗?我想使用这个监视器检查脚本在后台和自己的进程中运行,这样其他python脚本不受影响。
- 如果我使用选项 4:这些信号是否存在?我如何使用它们以及如何让它们触发脚本,无论是 bash 脚本还是 python 脚本?
非常感谢你的支持!
祝你今天过得愉快。
xrandr 输出供参考:
Screen 0: minimum 8 x 8, current 5520 x 1080, maximum 32767 x 32767
eDP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 280mm x 160mm
1920x1080 60.03*+ 59.93
1680x1050 59.88
1600x1024 60.17
1400x1050 59.98
1600x900 60.00 59.95 59.82
1280x1024 60.02
1440x900 59.89
1400x900 59.96 59.88
1280x960 60.00
1368x768 60.00 59.88 59.85
1360x768 59.80 59.96
1280x800 59.81 59.91
1152x864 60.00
1280x720 59.86 60.00 59.74
1024x768 60.00
1024x576 60.00 59.90 59.82
960x540 60.00 59.63 59.82
800x600 60.32 56.25
864x486 60.00 59.92 59.57
640x480 59.94
720x405 59.51 60.00 58.99
640x360 59.84 59.32 60.00
DP1 disconnected (normal left inverted right x axis y axis)
DP1-1 connected primary 1680x1050+1920+0 (normal left inverted right x axis y axis) 470mm x 300mm
1680x1050 59.95*+
1280x1024 75.02 60.02
1152x864 75.00
1024x768 75.03 60.00
800x600 75.00 60.32
640x480 75.00 59.94
720x400 70.08
DP1-2 connected 1920x1080+3600+0 (normal left inverted right x axis y axis) 530mm x 300mm
1920x1080 60.00*+ 50.00 59.94
1680x1050 59.88
1280x1024 75.02 60.02
1440x900 59.90
1280x960 60.00
1280x720 60.00 50.00 59.94
1024x768 75.03 70.07 60.00
832x624 74.55
800x600 72.19 75.00 60.32 56.25
720x576 50.00
720x480 60.00 59.94
640x480 75.00 72.81 66.67 60.00 59.94
720x400 70.08
DP1-3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)