LINUX.ORG.RU

Принудительный запуск приложения на конкретном мониторе

 ,


0

1

Разрабатываю десктопную приложуху с гуем, в процессе требуется производить тестовые запуски из терминала. В гуёвом фреймворке опции указать монитор для показа окна нет, ну или я не нашёл. Есть ли какой-нить способ заставить одно конкретное приложение отображаться на конкретном мониторе? Сейчас оно всегда отображается на том мониторе, где находится терминал из которого его запустили, а это и есть главное неудобство.

Система Linux Mint 20.2 Cinnamon. Сменить DE/WM не предлагать =)


Ответ на: комментарий от STinger

Дисплей же сущность Х сервера

Так и есть, но конкретно часть этой переменной сделана для выбора экрана.

Честно хз, как cinnamon с этим работает, это просто один из возможных вариантов. Если там сделано по уму (может быть?), то есть поддержка xinerama.

Bfgeshka ★★★★★
()

На подобный вопрос слёту отвечали 15 лет назад на ЛОРе :)
$DISPLAY=":0.1" <app_name>
(или host:N.M в общем случае)

Автоматический запуск приложения на втором мониторе
Запуск программ на втором мониторе
Как запустить программу на определённом мониторе?

PeleWin
()
Последнее исправление: PeleWin (всего исправлений: 2)

Есть разные многомониторные конфигурации иксов:

  1. На каждом мониторе свой X.org сервер, соответственно количество дисплеев (это термин иксов) равно количеству мониторов. Перемещать окна между мониторами нельзя. Для открытия окна приложения на конкретном дисплее нужно соответствующим образом выставить переменную окружения DISPLAY.

  2. Запущен один X.org сервер, все мониторы объединяются в один дисплей с единой сеткой координат. Координаты верхнего левого угла самого левого монитора — 0, 0. Ось X идёт вправо, ось Y — вниз. Перемещать окна между мониторами можно. Имхо, такая конфигурация встречается чаще. Если приложение не имеет опций для управления размещении окна, переместить окно можно после запуска приложения с помощью программы wmctrl.

  3. При числе мониторов больше двух возможны комбинации. В любом случае, дисплей определяется переменной окружения DISPLAY, управление окнами — командой wmctrl.

debugger ★★★★★
()

А это не задача WM? Вроде в Kwin были какие то «расширенные возможности» на эту тему, или тайлинги должны уметь прибивать конкретное приложение к конкретному месту.

kirill_rrr ★★★★★
()
Ответ на: комментарий от debugger

Запущен один X.org сервер, все мониторы объединяются в один дисплей с единой сеткой координат.

Это мой случай, перенос в 0,0 с помощью wmctrl работает, но удобоваримый способ объединить такой перенос с командой компиляции и запуска я не нашел.

В итоге я обнаружил, что был не совсем прав в этом:

оно всегда отображается на том мониторе, где находится терминал из которого его запустили

Оно таки отображается на том мониторе, где находится мышка в момент запуска, а поскольку перед запуском я тыкал мышкой в терминал, то и окно появлялось на том же мониторе. Сейчас вроде приучил себя уводить мышку на главный монитор перед нажатием enter’а, и окно появляется на нём, но иногда всё же забываю.

STinger
() автор топика
Ответ на: комментарий от STinger

Это мой случай, перенос в 0,0 с помощью wmctrl работает, но удобоваримый способ объединить такой перенос с командой компиляции и запуска я не нашел.

А в чём проблема-то? Там дело почти тривиальное:

#!/bin/bash
set -e

gcc ...

./a.out &
pid=$!
sleep 1  # Some delay to let the app show the window.

wmctrl -r "$title" -e 0,$x,$y,$w,$h 

wait $pid
debugger ★★★★★
()
Ответ на: комментарий от debugger

Для этого надо помнить, как писать скрипты на баше, а я этим никогда особо не занимался. Я понимал, что для этого надо скрипт писать, но по моим оценкам на вкуривание запросто могло и полдня уйти)

Спасибо)

STinger
() автор топика