LINUX.ORG.RU

dwm и multihead

 ,


0

1

Привет!

Есть ноут с gentoo и dwm. Также, есть монитор с hdmi. При подключении монитора хотелось бы получить на нём отдельное рабочее пространство, но с возможностью переключения фокуса с ноута на монитор и обратно. На сайте dwm сказано, что это возможно даже без патчей. Но как я ни пытался сделать это с помощью xrandr и xorg.conf.d, результат один и тот же - изображение растягивается на два экрана.

Так как сделать два отдельных пространства?

Так как сделать два отдельных пространства?

Любые действия с xrandr дадут тебе один большой экран. Тебе нужна конфигурация multiscreen, чтобы был не один большой экран :0, а два независимых - :0.0 и :0.1. Нfстроить это можно только через xorg.conf. Пока сам поищи: «xorg.conf» ":0.0" и ":0.1". Думаю, что сразу выскочит.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

А ведь раньше искаропки было такое поведение.

Это нам из маздайки притащили дичь с одним рабочим пространством на все мониторы!

r3lgar ★★★★★
()

Вырубай USE xinerama, это всё, что я помню со времён, когда у меня был жив второй монитор. Но это не всё, что нужно сделать, имей в виду.

r3lgar ★★★★★
()
Последнее исправление: r3lgar (всего исправлений: 2)
Ответ на: комментарий от r3lgar

А ведь раньше искаропки было такое поведение.

Ну и тогда надо было настраивать. Ничего, в общем-то не поменялось. Все также работает. Главное узнать, как сам dwm с такой конфигурацией дружит. Скорее всего, придется на каждомэкране свой dwm запускать:

DISPLAY=:0.0 dwm
DISPLAY=:0.1 dwm

Далеко не все WM умеют без этого работать с мультискрином. Вот fvwm вроде умеет:

-s     On a multi-screen display, run fvwm only on the screen named  in
       the  $DISPLAY  environment  variable  or rovided	through	the -d
       option. Normally, fvwm attempts to start up on all screens of a
       multi-screen display.
Zubok ★★★★★
()
Ответ на: комментарий от aldaril_kote

xinerama не включал, хотя и подумывал о таком варианте

xinerama тоже дает один большой десктоп. Ее не включать надо, а выключать.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)

Еще один вариант мы импровизировали вот в этом треде

Как запретить перемещение курсора на другие дисплеи? (комментарий)

Идея в том, чтобы воспользоваться виртуальными барьерами для мышки и отрисовать их, где нужно, чтобы большой экран поделить на части. От этого, конечно, он не перестанет быть большим экраном, поэтому WM все равно будет считать его большим и окна открывать соответственно. И вообще я не особо пока видел такие возможности, реализованные в WM.

Еще есть, кстати, возможность ограничить действие absolute pointer (тачпад, например) одним *выходом* (не экраном). Но на relative это не действует. Делается это при помощи xinput:

       --map-to-output device crtc
               Restricts  the  movements  of  the absolute device to the RandR
               crtc. The output name must match a currently  connected  output
               (see  xrandr(1)).  If  the  NVIDIA binary driver is detected or
               RandR 1.2 or later is not available, a Xinerama output  may  be
               specified as "HEAD-N", with N being the Xinerama screen number.
               This option has no effect on relative devices.

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

Да, но Xinerama ты все же включи USE-флагом. Когда ты сконфигурируешь два независимых экрана :0.0 и :0.1, то потом попробуй в xorg.conf включить Xinerama и выключить ее (см. опцию в секции ServerFags). Просто dwm может работать с ней, при этом понимая, что большой дисплей состоит из двух отдельных.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Просто dwm может работать с ней, при этом понимая, что большой дисплей состоит из двух отдельных.

Кстати, такой вариант тоже возможен.

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

У всех реализовано по-разному, так что приводить примеры реализации из других WM вряд ли к месту.

Насколько я помню, сорцы dwm можно прочитать быстрее, чем кончится кружка кофе, так что ТСу рекомендую не полениться, и раскурить сорцы на предмет реализации мультискрина.

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

Насколько я помню, сорцы dwm можно прочитать быстрее, чем кончится кружка кофе, так что ТСу рекомендую не полениться, и раскурить сорцы на предмет реализации мультискрина.

Или просто попробовать. Вариант с двумя независимыми экранами должен работать, но только ТС должен знать, что экраны действительно независимы (если без Xinerama), поэтому надо приложения запускать с помощью DISPLAY (если запуск с другого экрана, из другой копии оконного менеджера dwm) или же использовать магические тулзы типа devilspie, которые по правилам могут отправить приложение на тот или иной экран.

И также ТС должен знать: чтобы переключить мышку между экранами, надо написать скриптик и повесить на кнопочку (если в WM такого нет). Например, при помощи xdotool можно:

MOUSE COMMANDS

           --screen SCREEN
               Move the mouse to the specified screen to move to. This is only
               useful if you have multiple screens and ARE NOT using Xinerama.

               The default is the current screen. If you specify --window, the
               --screen flag is ignored.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 4)

Раскоменти XINERAMA* в config.mk и ставь соответсвующие либы, да пользуйся на здоровье.
А фокус переключать туда-сюда с монитора на ноут можно с помощью MODKEY+> и MODKEY+<

Ну и монитор подрубай

xrandr --output ЭЙЧДИЭМАЙТВОЙ --left-of LVDS1 --auto
Или --right-of.

paran0id ★★★★★
()
Последнее исправление: paran0id (всего исправлений: 1)
Ответ на: комментарий от aldaril_kote

без xenerama - не запустится, у них даже на сайте написано, что это нужно для multiscreen

If configured to use Xinerama libraries in config.mk, dwm can automatically detect configured screen outputs (monitor, overhead projector, etc.) and their resolutions and draw the windows in the output area accordingly.

Silerus ★★★★
()
Последнее исправление: Silerus (всего исправлений: 1)
Ответ на: комментарий от Zubok

С xinerama всё заработало так, как и хотелось - достаточно дописать Xinerama «on» в ServerLayout. Далее управлять можно при помощи xrandr, как написал paran0id выше. И это очень хорошо, т.к. меня интересует возможность именно «горячего» подключения дополнительного монитора или проектора.

Тему с DISPLAY=:0.0 гуглил, но так и не разобрался.

После этого отправился изучать другой вариант - две секции Device с одним устройством. Действовал как тут и тут. В таком случае я получал одно из двух:

1) ноут видит только свой экран и не видит разъёмов HDMI, VGA, DP

2) система виснет намертво при загрузке slim =)

Также пробовал сочетать это с опцией ZaphodHeads, но она ни на что не повлияла.

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

у меня два разных монитора и пришлось подшаманить в xorg.conf.d/ - чтоб они нормально отображались. Иначе он выдавал действительно нечто странное и мыльное.

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

Так-то да, use-флаг у него есть и в исходниках define соответствующий.

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

не уверен. если верить вики

Расширение Xinerama позволяет представить множество мониторов как один экран. С его помощью можно выводить согласованное изображение на большие экраны, составленные из многих мониторов. Однако многие из существующих на данный момент оконных менеджеров не поддерживают или не полностью поддерживают спецификации

Xinerama и поэтому показывают неадекватное изображение при использовании данного расширения. А так как dwm напрямую работает с X -то без него dwm не должен работать без Xinerama c мультискринномю

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

Что взамен?

Взамен - RandR. Просто, видимо, dwm не работает с ним напрямую, а работает по-прежнему еще с функциями Xinerama. Это можно проверить в исходном коде. Если есть функция XineramaQueryScreens, то вот она.

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

Да, там есть такой вызов. И судя по тому, что для #define XINERAMA нет #else, то альтернативы xinerama в dwm нет.

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

в комментариях gnome kde xfce -а это gtk и Qt - а они не юзают xlib - для отрисовки и парой рисуют минуя X. Так что предполагаю, что они имеют ввиду что Xinerama устарел вместе с X windows System и они готовятся к переходу на wayland.

Silerus ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.