У меня есть настольный компьютер с Radeon R7 360 и драйверами FOS. Мой основной дисплей, который я использую всегда, подключен к порту DVI, и мое ТВ подключено к HDMI, в случае, если я хочу поставить любые видео или фильмы или просто нуждаться в дополнительном дисплее.
Однако, когда я включаю свое ТВ, и оно распознано Ubuntu, дополнительное пространство всегда добавляется к неправильной стороне. Я обычно принимаю решение "развернуть рабочий стол до правой стороны", но что на самом деле происходит, мой основной рабочий стол, затем отображен по телевизору, и мой обычный монитор "добавляется" к своему пространству. Я затем всегда должен входить в настройки и перетаскивать дисплеи в правильном порядке, эта установка также не сохраняется, так как я должен восстановить эту процедуру каждый раз, когда я включаю свое ТВ для расширения моего рабочего стола.
Есть ли какое-либо решение для этого, или у кого-то есть идея о том, где настроить фиксированную конфигурацию для моих двух дисплеев?
Я в настоящее время использую Ubuntu Studio 15.10 с Xfce.
Править: Это - вывод xrandr:
Screen 0: minimum 320 x 200, current 4480 x 1080, maximum 16384 x 16384
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1080+2560+0 (normal left inverted right x axis y axis) 160mm x 90mm
1920x1080 60.00*+ 50.00 59.94 30.00 25.00 24.00 29.97 23.98
1920x1080i 60.00 50.00 59.94
1280x1024 60.02
1360x768 60.02
1152x864 59.97
1280x720 60.00 50.00 59.94
1024x768 60.00
800x600 60.32
720x576 50.00
720x576i 50.00
720x480 60.00 59.94
640x480 60.00 59.94
720x400 70.08
DVI-0 connected primary 2560x1080+0+0 (normal left inverted right x axis y axis) 673mm x 284mm
2560x1080 60.00*+
1920x1080 60.00
1680x1050 59.88
1280x1024 75.02 60.02
1280x800 59.91
1152x864 75.00
1024x768 75.08 60.00
800x600 75.00 60.32
640x480 75.00 60.00
720x400 70.08
Кажется, что Ваше ТВ физически разъединяется при выключении его еще это возможно не проиграет сет. Ниже двух опций решить проблему, которая наиболее вероятна результат ошибки:
[1.]
должен автоматически переместить экран телевизора (в Вашем случае: HDMI-0
) направо от Вашего основного экрана, если это было соединено, будучи разъединенным.Сценарий записан таким способом, которым он берет экран, Вы хотите появиться справа (тот, который разъединяется время от времени) как аргумент (см. объяснение ниже). Поэтому это работает с любой комбинацией экранов, только необходимо ввести имя правильного экрана в команду. Сценарий найдет разрешение левого экрана для корректного расположения.
#!/usr/bin/env python3
import subprocess
import time
import sys
"""
This script is a fix for what is presumably a bug, causing the secundary screen
to appear on the left side instead of the right side of the "main" screen.
Run it in the background.
"""
#--- set your secundary (right) screen below
sec = sys.argv[1]
#---
scr_id = sec+" connected"
def get_xrandr():
return subprocess.check_output("xrandr").decode("utf-8")
def get_setup():
# returns output of xrandr if secundary monitor was connected (else None)
get_xr = subprocess.check_output("xrandr").decode("utf-8")
if scr_id in get_xr:
return get_xr
def get_xshift(xr):
# find connected screens (lines)
mons = [l for l in xr.splitlines() if " connected" in l]
# get name and x-size of main screen
left = [l.split() for l in mons if not l.startswith(scr_id)][0]
return [(left[0], s.split("x")[0]) for s in left if s.count("+") == 2][0]
check1 = []
while True:
time.sleep(4)
check2 = get_setup()
if check1 != check2:
# on change in monitor setup:
if check2 != None:
# if secundary monitor was just connected
print("run setup")
x_shiftdata = get_xshift(check2)
cmd1 = ["xrandr", "--output", x_shiftdata[0], "--pos", "0x0"]
cmd2 = ["xrandr", "--output", sec, "--pos", x_shiftdata[1]+"x0"]
for cmd in [cmd1, cmd2]:
subprocess.call(cmd)
check1 = check2
screen_set.py
Тестовый прогон это со вторичным экраном как спор с командой:
python3 /path/to/screen_set.py HDMI-0
(так как HDMI-0
Ваш вторичный экран), Разъединение (выключает) ТВ и соединяет его снова, это должно появиться на правой стороне.
Если все хорошо работает, добавьте его для Запущения Приложений с небольшим повреждением: Тире> Приложения Запуска> Добавляет. Добавьте команду:
/bin/bash -c "sleep 15 && python3 /path/to/screen_set.py HDMI-0"
Теперь это должно быть решено.
Фоновый сценарий практически ничего не добавляет к загрузке процессора и не будет замечен что. Если Вы однако предпочли бы сочетание клавиш (автоматически работающий) фоновый сценарий, добавьте команду:
/bin/bash -c "xrandr --output DVI-0 --pos 0x0 && xrandr --output HDMI-0 --pos 2560x0"
который сделает то же, но вручную: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:
/bin/bash -c "xrandr --output DVI-0 --pos 0x0 && xrandr --output HDMI-0 --pos 2560x0"
HDMI-0 connected
находится в выводе команды xrandr
.(Только), если существует изменение в состоянии: False -> True
, сценарий выполняет команду (в Вашем случае):
xrandr --output DVI-0 --pos 0x0 && xrandr --output HDMI-0 --pos 2560x0
который располагает Ваши экраны слева направо, как объяснено здесь. Если Ваши разрешения экранов отличаются однако, сценарий ищет корректные числа и название основного экрана. Пока Вы используете вторичный экран в качестве аргумента, он хорошо работает.
У меня есть карта ATI R5, которая никогда не сохраняет мое графическое расположение для моих трех мониторов с помощью xfce4-display-settings
. ARandR должен решить Вашу проблему. Установка путем ввода следующего в терминале:
sudo apt-get install arandr
Использование ARandR для конфигурирования экранов сохраните его к сценарию (Расположение> Сохраняют как), и установите его для выполнения как Сессия и Запуск> объект Автоматического запуска Приложения. (Вы, возможно, должны установить его для сна 5 сначала прежде, чем запустить скрипт расположения.)
, Если у Вас есть две различных разметки, которые Вы используете, можно настроить каждого из тех, которые имеют ARandR. Затем можно запустить один скрипт или другой, в зависимости от которого расположения Вы хотите. Или еще лучше Вы могли присвоить каждого их собственному сочетанию клавиш, раз так желаемому.