xmonad如何为屏幕分配数字,以及屏幕分配给(两个)监视器

d8d*_*f42 5 haskell xmonad

我正在使用xmonad(配置最少main = xmonad gnomeConfig{ modMask = mod4Mask, terminal = "gnome-terminal" }),我的计算机有两个显示器,我正在使用xinerama.

这很有效,但是当我将窗口推向屏幕(shift-mod-N)或将焦点移动到屏幕(mod-N)时,我常常对xmonad屏幕到监视器的映射感到惊讶.

此外,配合面板在虚拟屏幕符号上显示窗口符号 - 但有些东西不正确(这些虚拟屏幕似乎有双倍宽度,我猜因为它是一个X屏幕)

什么是正确的心理模型?

(是否有一个魔术键显示当前(聚焦)窗口的屏幕号?)

注意(由以下答案建议):在xmonad术语中,窗口位于工作空间,工作空间映射到(物理)屏幕.

dup*_*ode 5

XMonad.Actions.PhysicalScreens文件说以下内容:

此模块允许您使用XMonad相对于彼此的物理位置(由Xinerama报告)来命名Xinerama屏幕,而不是他们的ScreenID,这些屏幕由X服务器和图形硬件任意决定.

屏幕按左上角排列,从上到下,然后从左到右排序.

我相信"相对于彼此的物理位置"是指ServerLayoutXinerama配置文件部分指定的布局.我在这里做了一些猜测,因为我对Xinerama不太熟悉,但似乎该模块可以帮助解决不可预测的屏幕数量问题.


Dan*_*ner 5

这是我在这里的答案的副本.我将通过一个术语澄清来说明这一点:你所谓的"屏幕"在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),令人困惑的情况,是不可能的.请参见IndependentScreens.