как xmonad присваивает номера экранам и экранам (двум) мониторам

Я использую xmonad (с минимальной конфигурацией, main = xmonad gnomeConfig{ modMask = mod4Mask, terminal = "gnome-terminal" }), на моем компьютере два монитора, и я использую xinerama.

Это работает, но слишком часто меня удивляет сопоставление экранов xmonad с мониторами при нажатии окна на экран (shift-mod-N) или перемещении фокуса на экран (mod-N).

Кроме того, mate-panel показывает символы окон на символах виртуальных экранов, но что-то здесь не так (эти виртуальные экраны, кажется, имеют двойную ширину, я думаю, потому что это один экран X)

Какова правильная ментальная модель для этого?

(Есть ли волшебная клавиша, которая показывает номер экрана текущего (в фокусе) окна?)

ПРИМЕЧАНИЕ (предложено ответами ниже): в жаргоне xmonad окно находится в рабочей области, а рабочая область отображается на (физическом) экране.


person d8d0d65b3f7cf42    schedule 24.04.2014    source источник
comment
Попробуйте установить xmobar. По умолчанию он покажет вам, на какой рабочей области вы сосредоточены, и какая рабочая область отображается на другом мониторе. Чтобы уточнить, то, что вы называете экраном, является рабочим пространством.   -  person Squidly    schedule 24.04.2014


Ответы (2)


В документации XMonad.Actions.PhysicalScreens говорится, что следующий:

Этот модуль позволяет вам называть экраны Xinerama из XMonad, используя их физическое расположение относительно друг друга (как сообщает Xinerama), а не их ScreenID, которые произвольно определяются вашим X-сервером и графическим оборудованием.

Экраны упорядочены по самому верхнему левому углу, сверху вниз и затем слева направо.

Я считаю, что «физическое расположение относительно друг друга» относится к макету, указанному в разделе ServerLayout Файл конфигурации Xinerama. Здесь я делаю небольшие догадки, так как я не очень хорошо знаком с Xinerama, но кажется, что модуль может помочь с проблемой непредсказуемых номеров экранов.

person duplode    schedule 24.04.2014

Вот копия моего ответа с здесь. Я предварю его пояснением терминологии: то, что вы называете «экраном», называется «рабочей областью» на языке xmonad, а то, что вы называете «монитором», называется «экраном».

По умолчанию происходит вот что:

  1. Имеется 10 различных рабочих областей, пронумерованных от 1 до 10.
  2. Каждому экрану назначается одна из десяти рабочих областей.
  3. Существует два способа навигации: вы можете сфокусироваться на определенном экране (с помощью mod+w,e,r) или сфокусироваться на определенном рабочем пространстве (mod+1,2,...,0).
  4. Если вы фокусируете определенный экран, назначение экранов рабочим областям не меняется, но выбранный экран получает фокус ввода.
  5. Если вы фокусируетесь на определенной рабочей области, и эта рабочая область в данный момент не видна на одном из экранов, то текущий сфокусированный экран изменяет свое сопоставление с этой рабочей областью.
  6. Если вы фокусируетесь на определенной рабочей области, и эта рабочая область в настоящее время отображается на одном из экранов, то экран, сфокусированный в данный момент, и экран, показывающий эту рабочую область, меняются местами.

Есть два распространенных способа настройки этого поведения. Один из способов — изменить регистр (6), чтобы сохранить сопоставление как есть, но изменить фокус ввода на экран, отображающий выбранную вами рабочую область. См. представление. Другой способ состоит в том, чтобы изменить (1) и (3) в тандеме: создать (10 * количество экранов) рабочие пространства и настроить сочетания клавиш mod+1,2,...,0, чтобы выбрать, к какому рабочему пространству перейти на основе на оба, какую клавишу вы нажали, и какой экран в данный момент находится в фокусе. Результатом этой модификации является создание иллюзии того, что каждый экран имеет независимый набор рабочих пространств, которые никогда не мешают друг другу — случай рендеринга (6), запутанный случай, невозможен. См. независимые экраны.

person Daniel Wagner    schedule 24.04.2014
comment
IndependentScreens звучит идеально. Но исходный код в xmonad.org/xmonad-docs/xmonad -contrib/ не работает как есть (где greedyView, shift, modm?) (с xmonad-(contrib-)0.12, построенным из darcs, как в code.google.com/p/xmonad/issues/detail?id=563) - person d8d0d65b3f7cf42; 24.04.2014
comment
@ d8d0d65b3f7cf42 Возможно, вы могли бы открыть отдельный вопрос с подробностями о том, что означает «не работает». Что именно вы делали/какие команды выполняли? Какую ошибку вы получили? - person Daniel Wagner; 25.04.2014