Сайт | Скачать | Видео | Wiki

Автор Тема: xrdr - настройка нескольких мониторов  (Прочитано 8649 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Взял из AUR. Это bash скрипт для управления xrandr. Заменил dzen на xpupsay, написал gui на yad
Проверил в jwm openbox с 2мя мониторами
lxrandr, zarfy и т.п. настраивают только 1 монитор. grandr тяжеловат и не работает с 2мя мониторами в jwm
Внутри дока , примеры и ссылки
xrdr будет работать в любом линукс
xrdr.sh использует ntf и wt из PRA. Переносимо

Еще 1 аналогичный скрипт
« Последнее редактирование: 08 Февраль 2016, 14:07:52 от sfs »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:xrdr - настройка нескольких мониторов
« Ответ #1 : 17 Февраль 2014, 19:20:10 »
 В Richy работает.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:xrdr - настройка нескольких мониторов
« Ответ #2 : 17 Февраль 2014, 19:27:39 »
Да, без ntf и wt не будет всплывающих сообщений по итогу работы (не критично)
без yad не будет gui
без xpupsay не будет определения номера монитора
По итогу - это все навороты над xrandr. Тот же результат можно получить из коммандной строки
« Последнее редактирование: 17 Февраль 2014, 19:29:30 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:xrdr - настройка нескольких мониторов
« Ответ #3 : 23 Сентябрь 2014, 17:03:05 »
xrnd - можете описать ситуацию с которой он не справился и какие ключи в ней Вам помогли?
Могу. Если речь идет о скрипте xrdr.sh
Основных мешающих моментов было всего два:

1. Он ставил слева тот монитор который сам выбрал и не позволял их менять местами.
Возможное решение - надо два пункта в меню.
- либо, чтобы первый пункт ставил мониторы 1-2, а второй 2-1;
- либо, чтобы в одном пункте он ставил "как ему лучше", а второй пункт меню назвать - "Поменять мониторы местами".

2. Он не позволял сохранить результат настроек.
Нужен пункт сохранить настройки, причем сразу в виде скрипта и по-умолчанию в папку Startup.

3. И где-то - лучше на самом окне xrdr указать, что можно перемещать панель ее настройками на любой монитор.

Я думаю, что размещение мониторов по вертикали менее востребовано. Но если да, то может и про такой вариант подумать.
Ну а привязка конфигурации мониторов к кнопкам (допустим F11 и F12) - это наверное ручками.

Настройку разрешения экрана удобно менял lxrandr, тот который вызывался первым пунктом меню xrdr.sh
Но он не менял расположение мониторов.

Да, и может в меню ограничиться 2-мя мониторами?
1 посмотрю
У меня сейчас нет в простом доступе 2х моников
Т.е. делаем автоностроить, проверяем что моника 2 и спрашиваем не поменять ли их местами?
Выложите вывод xrandr после "автонастроить" и раз у вас еще свежи ключи - сразу строку изменения мест :)

2 в гуе есть пункт сохранения, в startup есть xrdr
3 неужели не понятно, что любое окно можно перемещать... или я Вас не понял?
Больше 2х мониторов - в скрипте xrdr. Я там почти ничего не трогал. Я писал только гуй xrdr.sh
« Последнее редактирование: 23 Сентябрь 2014, 17:11:06 от sfs »

Оффлайн Александр Д.

  • Постоялец
  • ***
  • Сообщений: 142
  • Репутация: +16/-0
Re:xrdr - настройка нескольких мониторов
« Ответ #4 : 23 Сентябрь 2014, 21:14:39 »
1 посмотрю
Т.е. делаем автоностроить, проверяем что моника 2 и спрашиваем не поменять ли их местами?
Выложите вывод xrandr после "автонастроить" и раз у вас еще свежи ключи - сразу строку изменения мест :)

1. Во 2-м пункте меню xrdr.sh - выполняется автонастройка сразу двух мониторов.

Вывод xrandr после этого:
Сейчас выдает такой.
Здесь монитор DVI слева (+0+0), а монитор VGA справа (+1920+0). А реально у меня мониторы стоят наоборот.
Код
VGA-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis)
   1280x1024     60.0*+   76.0     75.0     72.0
   1152x864      75.0
   1024x768      75.1     70.1     60.0
   832x624       74.6
   800x600       72.2     75.0
   640x480       75.0     72.8
   720x400       70.1
   640x350       70.1
S-video disconnected (normal left inverted right x axis y axis)
DVI-0 connected primary 1280x1024+0+0 (normal left inverted right x axis y axis)
   1920x1200     60.0*+
   1920x1080     60.0
   1600x1200     60/0
   1680x1050     59.9
   1280x1024     60.0
   1280x960      60.0
   1024x768      60.0
   800x600       60.3
   640x480       60.0
   720x400       70.1
А мне надо - вот такой.
Здесь монитор VGA слева (+0+0), а монитор DVI справа (+1280+0)
Код
VGA-0 connected 1280x1024[b]+0+0[/b] (normal left inverted right x axis y axis)
   1280x1024     60.0*+   76.0     75.0     72.0
   1152x864      75.0
   1024x768      75.1     70.1     60.0
   832x624       74.6
   800x600       72.2     75.0
   640x480       75.0     72.8
   720x400       70.1
   640x350       70.1
S-video disconnected (normal left inverted right x axis y axis)
DVI-0 connected primary 1280x1024[b]+1280+0[/b] (normal left inverted right x axis y axis)
   1920x1200     60.0*+
   1920x1080     60.0
   1600x1200     60/0
   1680x1050     59.9
   1280x1024     60.0
   1280x960      60.0
   1024x768      60.0
   800x600       60.3
   640x480       60.0
   720x400       70.1

Чтобы просто поменять местами мониторы - таких ключей для xrandr нет.
Я выразился так образно, чтобы объяснить что должно получиться в итоге.
Есть для xrandr ключ left-of (разместить монитор слева от - и указывается от какого).
И аналогичная "зеркальная" команда right-of.

В моем случае размещения мониторов - мне нужна команда для xrandr:
Код

xrandr --output DVI-0--auto --output VGA-0 --auto --left-of DVI-0


2 в гуе есть пункт сохранения, в startup есть xrdr
2. Да, есть. Но я пока еще не разобрался с этим.

3 неужели не понятно, что любое окно можно перемещать... или я Вас не понял?
Больше 2х мониторов - в скрипте xrdr. Я там почти ничего не трогал. Я писал только гуй xrdr.sh
3. Возможно я плохо объяснил. Я имел в виду, что надо сделать строку-напоминалку о том, что панель задач в настройках имеет пункт, позволяющий ее переключать между мониторами. Я этого не знал и потратил много времени зря. Поэтому и предложил написать эту информацию там, где она как раз и нужна - в окне настроек 2-х мониторов.
А про то, что достаточно 2 монитора - это я просто подумал, что все было написано вами и предлагал уменьшить объем работы при переделывании программы.
« Последнее редактирование: 25 Сентябрь 2014, 11:04:07 от Александр Д. »
LupuRus Bit-final - с 2012г. (xfce, nosave, grub4dos, "frugal" на HDD ext, на флешках fat32)
Wary-5.5 RU.

Оффлайн Александр Д.

  • Постоялец
  • ***
  • Сообщений: 142
  • Репутация: +16/-0
Re:xrdr - настройка нескольких мониторов
« Ответ #5 : 25 Сентябрь 2014, 17:45:32 »
Вопрос по настройке 2-х мониторов с помощью xrdr решил (ЧАСТИЧНО).

Поправил файлы: xrdr, xrdr.sh, ну и заодно с ними еще xrdr.txt
Добавил пункт настройки: "Поменять два экрана местами 2-1".
Предыдущие пункты делают настройку с расположением мониторов 1-2.
Собрал pfs-модуль с изменениями. Могу выложить для тестирования.
Описание выложу по-позже.

Сейчас тестирую сохранение настроек.
« Последнее редактирование: 25 Сентябрь 2014, 19:21:40 от Александр Д. »
LupuRus Bit-final - с 2012г. (xfce, nosave, grub4dos, "frugal" на HDD ext, на флешках fat32)
Wary-5.5 RU.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:xrdr - настройка нескольких мониторов
« Ответ #6 : 25 Сентябрь 2014, 17:59:03 »
При сохранении в сообщении есть путь : /home/live/.config/xrdr/layout.conf
Переделал диалог save - чтобы он вызывался редактором
В Startup/xdr этот конфиг вызывается : xrdr /home/live/.config/xrdr/layout.conf . Можно и в ручную перезапустить
Это не срабатывает?
Хорошо бы help перевести. Что-то из Вашего мануала добавить... Примеров
Свой модуль выкладывайте, только мне тестировать не на чем...

Оффлайн Александр Д.

  • Постоялец
  • ***
  • Сообщений: 142
  • Репутация: +16/-0
Re:xrdr - настройка нескольких мониторов
« Ответ #7 : 25 Сентябрь 2014, 20:05:59 »
Вопрос по настройке 2-х мониторов с помощью xrdr решил (ЧАСТИЧНО).

1. Файл xrdr из /usr/local/bin/
Разбираемся что и где нужно изменить, чтобы "xrdr" мог изменять положение мониторов.
К сведению - "xrdr" расчитан на работу с одним, двумя или тремя мониторами.
Кусок кода из xrdr ("как есть"), расположенный между строк 300 и 315.
Код
extend() {
    disconnect
    case ${#SCREENS[@]} in
        2)
            xrandr --output $PRIMARY_SCREEN --primary --auto \
                   --output $SECONDARY_SCREEN --auto --right-of $PRIMARY_SCREEN
            ;;
        3)
            xrandr --output $PRIMARY_SCREEN --primary --auto \
                   --output $SECONDARY_SCREEN --auto --left-of $PRIMARY_SCREEN \
                   --output $TERTIARY_SCREEN --auto --right-of $PRIMARY_SCREEN
            ;;
    esac
}
В нем часть кода 2) работает, когда подключено два монитора (смотри Пример-1 в пункте 4),
а часть кода 3) работает, когда подключено 3 монитора (смотри Пример-3 в пункте 4).

Мне же нужен другой вариант - (смотри Пример-2 в пункте 4).
Значит нам нужно изменить часть кода - 2) с командой --right-of.
Если эту команду поменять на --left-of, то все будет так как надо.
Но кому-то нужен существующий вариант и его ломать нельзя.
Попробуем дополнить код.

Поясняю где и как я изменил код: Ссылка на файл
---строка 315 кода---
Код
extend-left() {
    disconnect
    xrandr --output $PRIMARY_SCREEN --primary --auto \
           --output $SECONDARY_SCREEN --auto --left-of $PRIMARY_SCREEN
}
и еще:
---строка 419 кода---
Код
    extend-left|el)
        extend-left
        exit 0
        ;;

2. Файл xrdr.sh из /usr/local/bin/
Немного поменял текст меню xrdr.sh - Ссылка на файл

3. Файл xrdr.txt
Еще поменял текст этого файла, вызываемого пунктом меню: "Документация" - Ссылка на файл

4. Графические примеры:
Цитата
Пример-1. Расширить экран на 1-2 мониторы:

(+0+0)---------------+(+1920+0)-----+
|                            ||                    |
|     1920 x 1200       ||   1024 x 768   |
|            1              ||          2         |
|                            |+---------------+
+---------------------+

Пример-2. Расширить экран на 2-1 мониторы:

(+0+0)--------+(+1024+0)-------------+
|                   ||                              |
|  1024 x 768   ||       1920 x 1200       |
|         2        ||              1               |
+--------------+|                              |
                     +-----------------------+

Пример-3.Расширить экран на 2-1-3 мониторы:

(+0+0)--------+(+1024+0)-------------+(+2944+0)-----+
|                   ||                              ||                    |
|  1024 x 768   ||       1920 x 1200        ||  1024 x 768   |
|         2        ||              1               ||         3         |
+--------------+|                              |+---------------+
                     +-----------------------+


5. Заключение.
Задача решена только ЧАСТИЧНО.

Пункты меню 2 и 3 дают результат как в Примере-1.
Пункт меню 4 дает результат как в Примере-2.
Далее пункт меню 11 - "Сохранить настройки".
Затем делаю pfs-сохраненку.
Перегружаюсь:
- результат с Примером-1 - экраны (1-2) - все работает.
- результат с Примером-2 - экраны (2-1) - попытка загрузки, мелькнули оба Рабочих стола, а затем - оба экрана черные и все.

Вывод: значит я где-то в правке кода (в пункте 1) - нахомутал.
С учетом отсутствия присутствия знаний на данную тему - я завис...   Может кто-то что-то подскажет?
Модуль - для тестирования
« Последнее редактирование: 25 Сентябрь 2014, 21:46:11 от Александр Д. »
LupuRus Bit-final - с 2012г. (xfce, nosave, grub4dos, "frugal" на HDD ext, на флешках fat32)
Wary-5.5 RU.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:xrdr - настройка нескольких мониторов
« Ответ #8 : 25 Сентябрь 2014, 21:46:37 »
Ваш модуль буду смотреть уже завтра
Код
live@pra:~$ echo "1 | 2" >~/.config/xrdr/layout.conf && xrdr ~/.config/xrdr/layout.conf
live@pra:~$ echo "2 | 1" >~/.config/xrdr/layout.conf && xrdr ~/.config/xrdr/layout.conf
Вот так у меня мониторы меняются местами при растянутом на 2  моника экране
Дрова - проприетар nvidia340, openbox (может это критично... проблема только в xfce...)


Оффлайн Александр Д.

  • Постоялец
  • ***
  • Сообщений: 142
  • Репутация: +16/-0
Re:xrdr - настройка нескольких мониторов
« Ответ #9 : 25 Сентябрь 2014, 22:20:30 »
Код
live@pra:~$ echo "1 | 2" >~/.config/xrdr/layout.conf && xrdr ~/.config/xrdr/layout.conf
live@pra:~$ echo "2 | 1" >~/.config/xrdr/layout.conf && xrdr ~/.config/xrdr/layout.conf
Вот так у меня мониторы меняются местами при растянутом на 2  моника экране
Дрова - проприетар nvidia340, openbox (может это критично... проблема только в xfce...)
Ну не знаю. Я думаю дело в чем-то другом.
Сейчас попробовал в Терминале вот так:
Код
live@pra:~$ echo "1 | 2" >~/.config/xrdr/layout.conf && 
live@pra:~$ xrdr ~/.config/xrdr/layout.conf
live@pra:~$ echo "2 | 1" >~/.config/xrdr/layout.conf
live@pra:~$ xrdr ~/.config/xrdr/layout.conf
Аналогично вашему варианту, но чтобы сначала проверить что именно записалось в файл layout.conf
Все отлично работает! Вот же... Ну почему тогда при загрузке - нет. Я уже кидал модуль с файлом layout.conf и в /pra/base и в /pra/modules - никакой разницы.
Но что смешно - вся эта ерунда только если в pfs-модуле в файле layout.conf записано 2 | 1 . Ну а если 1 | 2 - то все нормально грузится.
« Последнее редактирование: 25 Сентябрь 2014, 22:25:20 от Александр Д. »
LupuRus Bit-final - с 2012г. (xfce, nosave, grub4dos, "frugal" на HDD ext, на флешках fat32)
Wary-5.5 RU.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:xrdr - настройка нескольких мониторов
« Ответ #10 : 26 Сентябрь 2014, 09:40:54 »
Что можно проверять после echo "1 | 2" >~/.config/xrdr/layout.conf
Там гарантированно не может быть ничего кроме 1 | 2
В итоге 2 | 1 в консоле работает, а в Startup нет?
Измените Startup/xrdr на
Код
wt "xrdr ~/.config/xrdr/layout.conf" 
чтобы убедиться что он выполнился

Оффлайн Александр Д.

  • Постоялец
  • ***
  • Сообщений: 142
  • Репутация: +16/-0
Re:xrdr - настройка нескольких мониторов
« Ответ #11 : 26 Сентябрь 2014, 15:32:53 »
В итоге 2 | 1 в консоле работает, а в Startup нет?
В консоли работают оба варианта и 1 | 2 и 2 | 1

Измените Startup/xrdr на
Код
wt "xrdr ~/.config/xrdr/layout.conf" 
чтобы убедиться что он выполнился
Попробовал:

1. Собрал pfs-модуль:
- в файле /Startup/xrdr изменил запись на:
Код
#!/bin/ash
wt "xrdr ~/.config/xrdr/layout.conf"
- в файле layout.conf запись:
Код
1 | 2
- в файле xrdr.conf запись:
Код
PRIMARY_SCREEN="VGA-0"
SECONDARY_SCREEN="DVI-0"
TERTIARY_SCREEN=""

Загружаюсь с этим модулем и имею сообщение:
Цитата
Выполнение "xrdr ~/.config/xrdr/layout.conf" закончилось неудачей
/usr/locale/bin/xrdr: line 289 /home/live/.config/xrdr/xrdr.conf Отказано в доступе
/usr/locale/bin/xrdr: line 290 /home/live/.config/xrdr/xrdr.conf Отказано в доступе
/usr/locale/bin/xrdr: line 291 /home/live/.config/xrdr/xrdr.conf Отказано в доступе
File not readable (Файл не читается)

Для информации (из файла xrdr):
В этом коде - строки 289, 290, 291 - это три строки, начинающиеся с команды echo:
Код
_save_conf() {
    [[ -n $VERBOSE ]] && echo "Writing config file"
    mkdir -p $(dirname $USER_CONFIG_FILE)
    echo 'PRIMARY_SCREEN="'$PRIMARY_SCREEN'"' > $USER_CONFIG_FILE
    echo 'SECONDARY_SCREEN="'$SECONDARY_SCREEN'"' >> $USER_CONFIG_FILE
    echo 'TERTIARY_SCREEN="'$TERTIARY_SCREEN'"' >> $USER_CONFIG_FILE
    [[ -n $VERBOSE ]] && cat $USER_CONFIG_FILE
}

Проверил доступ ко всем трем файлам: ПКМ > Свойства > Права.
Все поля серые, недоступные для изменения. ?

2. Пробовал пересобирать pfs-модуль: без файла xrdr.conf
Загрузился с ним. Все аналогично, в том числе доступ к двум файлам.
А файл xrdr.conf - не создался вообще.

3. Так как правами файлов я никогда не занимался, то пошел другим путем.
Создал файл как в п.1 (который делал под "root") но под "live".
Загрузился с ним и получил более краткое сообщение:
Цитата
Выполнение "xrdr ~/.config/xrdr/layout.conf" закончилось неудачей
File not readable (Файл не читается)

Все. Я застрял. Как в этом случае правильно вставить файлы?

PS: получается, что при автозагрузке не работают оба варианта (я ведь все это пробовал с 1 | 2).
« Последнее редактирование: 26 Сентябрь 2014, 16:21:50 от Александр Д. »
LupuRus Bit-final - с 2012г. (xfce, nosave, grub4dos, "frugal" на HDD ext, на флешках fat32)
Wary-5.5 RU.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:xrdr - настройка нескольких мониторов
« Ответ #12 : 26 Сентябрь 2014, 16:34:47 »
File not readable - похоже, глюк wt - переделал на ntf. Должен отработать 1|2 и выдать "ок"
/usr/locale/bin/xrdr: line 289 /home/live/.config/xrdr/xrdr.conf Отказано в доступе - это скорее Ваш косяк. Перед упаковкой в папке /home/ модуля надо на всякий случай : chown -R live live
Сделал модуль с  1|2

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:xrdr - настройка нескольких мониторов
« Ответ #13 : 26 Сентябрь 2014, 17:45:27 »
xrdr обновился до 2.7
Ключ вывода конфига теперь print
Начал разбирать ваши файлы. Успел только перевод. Дополняю

Оффлайн Александр Д.

  • Постоялец
  • ***
  • Сообщений: 142
  • Репутация: +16/-0
Re:xrdr - настройка нескольких мониторов
« Ответ #14 : 26 Сентябрь 2014, 18:59:48 »
С правами конечно мой косяк - но все равно не работает.
По порядку. Скачанный файл xrdr12.pfs работает, но он 1 | 2.
А у меня не работал именно 2 | 1.

Описываю подробно:
Файл xrdr12.pfs - лежит на диске sda6. Распаковываю через ПКМ > Распаковать SFS.
Открываю файл layout.conf в редакторе Leafpad, меняю в файле: 1 | 2 на 2 | 1 и сохраняю.
Захожу в Тунаре в папку /home, открываю Терминал и набираю команду: chown -R live live
В меню Разработка > Упаковка pfs-пакета собираю пакет. Кладу собранный пакет в папку /pra/modules/
Перезагружаюсь.
В конце загрузки мелькает Рабочий стол и выключаются оба монитора (на них появляется сообщение что сигнала нет).
Причем результат одинаковый и в xfce и в open - я проверил.

Может я что-то делаю не так? Или я брежу?
sfs - может сделаешь еще модуль с 2 | 1 , и проверишь его на своем компе, а я его проверю на своем компе?
« Последнее редактирование: 26 Сентябрь 2014, 19:30:44 от Александр Д. »
LupuRus Bit-final - с 2012г. (xfce, nosave, grub4dos, "frugal" на HDD ext, на флешках fat32)
Wary-5.5 RU.