Linux 的显示系统使用多种技术、协议、扩展、应用程序、服务器(守护进程)、驱动程序和概念来实现窗口系统,例如:
Xorg、Wayland、X11、OpenGL、RandR、XrandR、屏幕分辨率、DPI、显示服务器、等等。
当我们没有完整的画面时,大量的内容可能会让人不知所措或令人困惑。Linux 显示系统的每一面都有多个文档,但在全球范围内它究竟是如何工作的?
我有一台分辨率为 3200x1800 像素的戴尔 XPS 13 9343 2015。
我正在尝试在其上使用 i3 Windows 管理器,但一切都很小而且几乎无法阅读。
我设法使用以下方法扩展每个应用程序(firefox、终端等).Xresources:
! Fonts {{{
Xft.antialias: true
Xft.hinting: true
Xft.rgba: rgb
Xft.hintstyle: hintfull
Xft.dpi: 220
! }}}
Run Code Online (Sandbox Code Playgroud)
但 i3 接口仍然无法扩展...
我知道这xrandr --dpi 220可能会解决问题,但我不知道如何/在哪里使用它。
有人可以在这个问题上启发我吗?
什么是:0.0真正的意思吗?我知道这:0是在本地机器上启动的第一个 X 服务器,:1第二个等等。但是.0后面的那部分是什么:0?是否存在其他组合?(例如:0.0-something)
背景:我正在尝试改进bumblebee的 initscript,它目前假定它:0是活动显示。如果我切换用户,则情况并非如此。所以我想在将$DISPLAY变量传递给vglclient.
我无法使用Ctrl-Alt-F7(或 12 个功能键中的任何一个)返回 GUI 。我有一些未保存的工作,我不想失去它们。是否还有其他组合键可以让我切换回来?
这是我所做的:
Ctrl-Alt-F1它,它像往常一样显示了一个基于文本的登录屏幕Ctrl-Alt-F7,它显示了一个充满文本的屏幕(我不记得它们是什么)Ctrl-Alt-F8它,它显示了类似于/var/log/messages. 一些条目来自automount,一些来自sendmail,没有一个是错误的。Ctrl-Alt-Fn现在按任何组合都没有效果。大写锁定和数字锁定 LED 不再响应其相应的键。我可以使用鼠标突出显示屏幕上的文本,但除此之外别无他法。知道发生了什么吗?
我仍然可以通过 SSH 登录系统。GUI应用程序,我用(例如opera)仍在运行和消费微量的CPU和往常一样,通过报道top。是否可以通过命令行切换回 GUI?如果可能,我不想重新启动 X,因为这样做会杀死所有 GUI 应用程序。
系统信息:
Red Hat Enterprise Linux Client release 5.7
Linux 2.6.18-238.12.1.el5 SMP x86_64
gnome-desktop: 2.16.0-1.fc6
xorg-x11-server-Xorg: 1.1.1-48.76.el5_7.5
Run Code Online (Sandbox Code Playgroud)
多亏了 Shawn,我才能重新使用chvt 9.
进一步的实验表明,如果我转到第 8 个虚拟终端(通过Ctrl-Alt-F8或chvt 8),我将无法使用Ctrl-Alt-Fx按键切换到任何其他终端。现在确定这是否是一个错误。
我的鼠标有一个不幸的功能。在左侧,当我使用它时,我的拇指非常轻柔地坐在右侧,有两个按钮非常敏感,只需刷子就可以使它们点击。
我当然是在谈论讨厌的前进/后退按钮,如果在浏览器中按下这些按钮,就会使观看长达一小时的 YouTube 视频变得更加困难。有没有办法让我禁用它们?这会由 X 处理吗?
我尝试更新我的 nVidia 驱动程序,但在运行驱动程序安装时出现错误。
查看错误:
ERROR: You appear to be running an X server; please exit X before
installing. For further details, please see the section INSTALLING
THE NVIDIA DRIVER in the README available on the Linux driver
download page at www.nvidia.com.
Run Code Online (Sandbox Code Playgroud)
注意:我尝试通过键入来遵循指南,init 3但仍然没有任何变化.. 如何关闭 X 服务器?
所以我可以更新驱动程序
在学习 GUI 编程中的某些事情(例如,为应用程序在屏幕上保留空间)的过程中,我必须更多地了解窗口管理器,通常是 Linux 上的 X11(我不确定是否甚至有发行版的,它使用 X11 以外的任何东西,尽管我听说过Wayland,但尚未在任何地方实现。)
我对编程很陌生,而且不耐烦;所以我只是潜入它。现在我正在阅读ICCCM,希望能学到更多。然而,这份文件针对的是比我更了解(方式)的公众。所以我遇到了一些信息,我很想得到一些澄清。
ICCCM第 2 节引用:
请注意,所有者和请求者之间传输的所有数据通常必须通过 X 版本 11 环境中的服务器。一个客户端不能假设另一个客户端可以打开相同的文件甚至直接通信。另一个客户端可能通过完全不同的网络机制与服务器通信(例如,一个客户端可能是 DECnet 而另一个是 TCP/IP)。因此,只有在两个客户端明确同意的情况下,才允许传递对数据的间接引用(例如文件名、主机名和端口号等)。
据我了解,X Window Manager 是建立在 Top of X Server 之上的(感谢维基百科)。在上面的引用中:它说客户端可以使用 DECnet 或 TCP/IP 与服务器通信。到目前为止,我认为“服务器”是一个比喻,现在我怀疑:X 服务器是否和“网络服务器”一样是服务器?我应该如何理解它的功能/定义?
然后,经常会提到 X11、Xorg、X Server 和/或 X Window Manager。它让人困惑:X11 是一个包含 Xorg 和 X Window Manager 的包吗?如果是这样,此 X11 捆绑包中还有其他内容吗?
X 还需要鼠标或键盘或任何其他类型的输入:这也是 X Server 功能的一部分吗?X Window Manager 是否只严格管理显示?
最后,上面的引用还提到了客户端相互通信或不通信:这让我想起了 D-Bus,我曾使用过一些用于学习目的。使用 D-Bus,您还可以触发窗口事件。这让我对程序应该如何相互通信感到有些困惑: *使用 X Server 或使用 D-Bus 进行交互的程序之间有什么区别?*
遗憾的是,这些信息在某种程度上仍然晦涩难懂,它使学习变得更加困难,但希望您能对此有所了解:) 谢谢。
我能找到的关于 XkbOptions 的所有信息是:
Option "XKbOptions" "grp:alt_shift_toggle"
Run Code Online (Sandbox Code Playgroud)
似乎我只能使用alt+shift组合来切换键盘布局,我可以使用任何其他键吗?
这是我的使用案例:
scp到本地计算机。有没有办法使用诸如xclip允许我远程复制stdin到本地 X 服务器的剪贴板的程序?有以下作用:
cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard
Run Code Online (Sandbox Code Playgroud)
会很棒。有什么东西可以使这成为可能吗?
以下是我认为我需要了解的其他问题:
来自非 X 会话?(意味着 root 没有登录到 X)
如果多人登录 X,我是否可以自动检测谁在哪个屏幕上,从而以编程方式检测我需要在哪个屏幕上启动应用程序?
我可以以用户身份启动应用程序吗?(好吧,我 99.999% 确定这是肯定的)
我可以检测 X 组的用户是否登录到 X 吗?