目录
一、问题描述
使用英伟达的 NVIDIA App
更新显卡驱动后,VMware Workstation虚拟机的 Ubuntu22.04 打开 Flameshot
会先全屏截图,然后点击Share
才能出现自定义区域截屏界面,如下图:(不知道这个锅要不要英伟达来背)
二、问题搜索
注:这一节是我解决问题的过程,可以跳过直接到下一节 (三、问题解决)
第一时间去了 Flameshot
的 GitHub,毕竟是个开源软件,Issues 可能会有人提问题。
不出所料,果然有,Flameshot not work in ubuntu 22.04
翻了一下,有人说在登录界面,修改显示服务器协议,但我的登录界面没有这个选项。
我的登录界面干干净净,没有切换显示服务器协议的选项。
但看他的意思,这个问题是因为Ubuntu使用了 Wayland,以前Ubuntu使用的是 Xorg。
使用以下命令检查目前使用的协议:
echo $XDG_SESSION_TYPE
果然用的是Wayland
:
继续往下翻 Issues,发现认同最多的一条:
按照他的方法修改后,再查看目前使用的协议,变成了 X11
,也就是 Xorg
。
再使用 Flameshot
,发现正常了,哈哈,thank him later 😃
另外有趣的是,这个问题不是 Flameshot
的,他们的开发人员也在叫苦:
三、问题解决
3.1 修改 /etc/gdm3/custom.conf
如下指令:
sudo vim /etc/gdm3/custom.conf
找到 # WaylandEnable=false
把前面的 #
去掉,保存。
3.2 重启系统
四、拓展 – Wayland 和 Xorg
Wayland和Xorg是两种不同的显示服务器协议,它们各自具有独特的特点和优势:
4.1 基本概念
-
Wayland
-
Wayland是一种现代、轻量级的显示服务器协议,旨在为Linux和其他类Unix操作系统提供一个高效、可扩展的图形显示系统。
-
它被设计为X Window System(即Xorg)的替代品,以解决Xorg的一些历史遗留问题和性能瓶颈。
-
-
Xorg
-
Xorg(也称为X11或X Window System)是Unix和类Unix操作系统上广泛使用的一种显示服务器。
-
它负责管理计算机显示设备和用户输入设备(如键盘和鼠标),在用户与图形界面应用程序之间充当桥梁。
-
4.2 架构与设计
- Wayland
- Wayland采用了C/S(客户端/服务器)架构,每个应用程序都是Wayland协议的客户端,直接连接到Wayland显示服务器。
- Wayland的设计更加简化,消除了Xorg中的许多中间层和抽象,从而提高了效率和性能。
- Wayland使用更加严格的通信协议,确保不同应用程序之间的隔离,增强了安全性。
- Xorg
- Xorg也使用客户端-服务器架构,但所有的应用程序都连接到X服务器上。
- Xorg的架构相对复杂,依赖许多子组件和配置文件。
- Xorg使用共享内存和其他机制来实现不同应用程序之间的通信,这可能导致安全漏洞。
4.3 性能与安全性
- Wayland
- Wayland可以更好地利用现代GPU的硬件加速功能,减少了内存拷贝和上下文切换的开销,从而提高了图形性能。
- Wayland的每个应用程序都在自己的隔离环境中运行,无法影响其他应用程序,增强了安全性。
- Xorg
- 由于Xorg的架构和设计,它在处理图形加速和3D渲染时可能会遇到性能瓶颈。
- Xorg使用共享内存和其他机制来实现不同应用程序之间的通信,这可能导致安全漏洞,尽管可以通过配置和更新来减轻这些风险。
4.4 兼容性与应用
- Wayland
- Wayland更加现代化,但可能无法运行一些旧的应用程序。不过,随着越来越多的Linux发行版开始支持Wayland,越来越多的应用程序也开始兼容Wayland。
- Wayland支持通过扩展协议来添加新的功能和特性,提供了很好的扩展性。
- Xorg
- Xorg可以运行许多旧的应用程序,这些应用程序可能无法利用现代图形硬件和技术。但这也意味着Xorg在兼容性方面具有优势。
- Xorg通过加载驱动来支持不同的显卡、显示器和输入设备,提供了广泛的硬件支持。
4.5 切换与配置
在Linux系统中,通常可以通过修改登录管理器的配置文件来切换Wayland和Xorg。
以GDM(GNOME Display Manager)为例,可以通过编辑 /etc/gdm3/custom.conf
文件来切换显示服务器。找到 WaylandEnable
选项并将其值设置为 false
,然后重启系统即可切换到Xorg。不同的Linux发行版和登录管理器可能有不同的配置文件和路径,因此需要根据具体系统进行调整。