通用解决方案

通用解决方案

如何获取当前 X 显示名称的列表?

除了是有用的知识之外,我还希望(希望!)能够xcalib -invert -alter按照建议使用这个问题反转我的计算机上的两个屏幕中的第二个。

答案1

w

是的,就这么简单。这是一个扩展版本,who可以显示谁登录了,以及他们从哪里连接。其中包括图形会话,它将向您显示所有当前 X 显示器以及其他有用的数据。

以下是我所看到的:

oli@bert:~$ w
 01:07:38 up 5 days, 58 min,  4 users,  load average: 0.40, 0.37, 0.41
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
oli      tty7     :0               Sat00    5days  4:22m  0.94s gnome-session --session=gnome-fallback
oli      pts/4    :0               Sat00   47:09m  0.77s  0.77s /bin/bash
oli      pts/6    :0               Wed02    0.00s  0.12s  0.00s w

您可以使用各种标志(尝试)将其归档,然后如果您需要自动化,就-hs可以awk/了。考虑通过管道传输结果列表以获取唯一的显示字符串。像这样:grepsort -u

oli@bert:~$ w -hs | awk '{print $3}' | sort -u
:0

答案2

@Oli 的回答在稳健性方面非常差。这绝对不是该命令的目的,该w命令旨在列出系统中已登录的用户,并且发生尝试检索每个用户会话的显示。

但当监视器是虚拟的时候,这种方法就不起作用,并且在其他情况下可能会失败。

具有虚拟显示的系统示例:

 02:07:22 up  1:01,  1 user,  load average: 1.83, 1.72, 1.21
USER     TTY       LOGIN@   IDLE   JCPU   PCPU  WHAT
user               01:13    1:00m  0.00s  0.02s lightdm

通用解决方案

对于每个设置,唯一绝对可靠的解决方案是查看 X 服务器为每个显示器使用的 unix 套接字,即列出目录/tmp/.X11-unix/

前任:

root@host # ls /tmp/.X11-unix/
total 0
srwxrwxrwx 1 root root 0 Apr  2 01:06 X0

X0Unix 套接字Xorg 使用它与 X 客户端(您的图形程序)传递原始字节流。

这意味着名为 的单个显示器:0连接到机器。(如果文件为 ,则X3意味着显示器名为:3

这样您就可以确切地知道显示服务器正在使用什么显示器。

相关内容