我运行异步双显示器设置。我的主显示器是 16:9 2560x1440,副显示器是 10:16 1200x1920 设置。我使用主显示器进行编码/游戏/视频,使用副显示器进行浏览和参考资料。我还喜欢将启动器放在副显示器上,因为它位于主显示器的右侧。
问题是,我的一些游戏似乎认为启动器所在的显示器是主显示器。有些游戏提供了启动选项,让我可以强制切换到我喜欢的显示器,但有些游戏则需要在显示设置中切换启动器的位置。
我想编写一个解决方案,让我能够快速切换设置,而不必每次都进入屏幕显示用户界面。我发现~/.config/monitors.xml
并尝试过交换主显示器,然后关闭unity-settings-daemon
并重新启动它,但这似乎并非没有副作用。有人知道更好的方法吗?
答案1
发射装置位置
发射器的位置可以通过两个参数定义:
1. 在所有屏幕上启动器,或仅在一个屏幕上启动器
由以下命令设置:
dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 0
在所有屏幕上显示,或
dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 1
在单个屏幕上显示
2. 启动器可见的屏幕
在后一种情况下(启动器仅在一个屏幕上),启动器仅在基本的屏幕。换句话说,我们需要设置(切换)主屏幕。这可以使用以下命令完成:
xrandr --output <screen_name> --primary
我们需要一个脚本来查找当前设置的主屏幕(从命令的输出中xrandr
),并选择“另一个”,下面的脚本也是如此。
剧本:
#!/usr/bin/env python3
import subprocess
# Look up the currently set primary screen, set it to the other one
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
scrs = [[l.split()[0], "primary" in l] for l in scr_data if " connected" in l]
for screen in scrs:
if not screen[1] == True:
subprocess.Popen(["xrandr", "--output", screen[0], "--primary"])
如果您还需要确保启动器设置为在单个屏幕上显示,请使用:
#!/usr/bin/env python3
import subprocess
# just to make sure the launcher is set to only show on one screen:
subprocess.Popen(["/bin/bash", "-c", "dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 1"])
# Look up the currently set primary screen, set it to the other one
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
scrs = [[l.split()[0], "primary" in l] for l in scr_data if " connected" in l]
for screen in scrs:
if not screen[1] == True:
subprocess.Popen(["xrandr", "--output", screen[0], "--primary"])
如何使用
- 将脚本复制到一个空文件中,另存为
toggle_launcher.py
通过命令测试运行:
python3 /path/to/toggle_launcher.py
如果一切正常,请将其添加到快捷键:选择:系统设置>“键盘”>“快捷键”>“自定义快捷键”。单击“+”并添加命令:
python3 /path/to/toggle_launcher.py
到您选择的快捷键组合。