概述
在Linux操作系统中,桌面环境是用户与计算机交互的界面,它包括窗口管理器、文件管理器、控制面板等组件。
在Linux中,桌面环境的实现依赖于两个主要的显示服务器协议:X协议和Wayland。
由于协议的不同,这要求一些软件也需要不同适配,比如向日葵和todesk远程软件只能在X环境下运行,不然就远程不上或者黑屏。
对于Linux来说,桌面环境的完整实现需要协议-协议实现-具体的桌面环境这三者,比如X11-Xorg-GNOME。
X协议
X11是X协议的第11个版本,也是目前最广泛使用的版本。它提供了一套完整的图形界面编程接口,支持窗口的创建、移动、缩放等功能。
它采用客户端-服务器模型,其中客户端负责应用程序的逻辑和图形界面的绘制,而服务器(X服务器)负责管理显示器、键盘和鼠标等硬件设备,以及实际的图形渲染。
截止2024年,X11仍然是最新的X协议。
Xorg
X11是一个协议和API的集合,而Xorg是这个协议的一个具体实现。
Xorg是一个开源的X11服务器实现,它是Linux和类Unix操作系统中最常用的X服务器。Xorg提供了硬件驱动程序,使得X11能够运行在不同的硬件平台上。
XFree86是Xorg的前身之一。它曾经是最流行的开源X服务器,但随着时间的推移,Xorg项目从XFree86派生出来,并最终取代了它。Xorg的早期版本实际上是从XFree86代码库分离出来的。
Wayland协议
Wayland是一个较新的显示协议,旨在替代X11。它设计得更加简单、现代和直接。在Wayland模型中,每个应用程序直接与显示服务器通信,没有传统的客户端-服务器架构。
Wayland通过使用 EGL 和 OpenGL ES 提供了更好的硬件加速支持,这对于现代图形密集型应用程序和游戏来说是一个重要的特性。
与X11一样,Wayland协议需要具体的实现,即Wayland compositor,来处理实际的图形渲染和输入事件。
Wayland协议的主要实现是 Weston,它是Wayland项目的参考compositor。Weston提供了一个基本的桌面环境,包括窗口管理、输入处理和多屏支持等功能。它通常被用作其他Wayland compositor的基础,或者作为开发Wayland应用程序的测试平台。
常见桌面环境
GNOME
GNOME是一个自由和开源的桌面环境,它为Linux和其他类Unix操作系统提供了一套完整的用户界面和应用程序基础设施。GNOME是基于多种技术实现的,主要包括:
GTK (GIMP Toolkit): GNOME使用GTK作为其主要的图形用户界面工具包。GTK是GNOME项目的核心部分,用于创建GNOME应用程序的图形界面。GTK最初是为GIMP(GNU Image Manipulation Program)开发的,但后来发展成为一个独立的、功能丰富的工具包,支持多种编程语言。
GLib: GLib是一个跨平台的、用C语言编写的库,它提供了一套核心的实用功能,如数据类型、字符串处理、时间处理、文件操作等。GLib是GTK和其他GNOME技术的基础。
GObject: GObject是GLib的一部分,它提供了一个面向对象的框架,允许开发者创建和使用对象类型和接口。GTK和其他GNOME库广泛使用GObject来提供可扩展的API。
GIO: GIO是GLib的一部分,它提供了对文件、目录、数据流、进程、网络和数据库的访问。GIO取代了旧的GNOME VFS(Virtual File System),用于文件和数据的访问和操作。
Clutter: Clutter是一个用C语言编写的图形用户界面库,它使用OpenGL/EGL来提供硬件加速的动画和视觉效果。Clutter被用于GNOME Shell和一些GNOME应用程序中,以提供现代和动态的用户界面。
GNOME Shell: GNOME Shell是GNOME 3的核心组件,它提供了一个新的用户界面来替代传统的桌面环境。GNOME Shell使用Clutter和其他GNOME技术来提供流畅的动画、窗口管理和其他桌面功能。
Wayland: 从GNOME 3.10开始,GNOME开始支持Wayland作为显示服务器协议。Wayland是一个现代化的显示服务器,旨在替代老旧的X Window System。GNOME Shell可以直接在Wayland上运行,提供更好的性能和安全性。
X.org: 尽管GNOME正在向Wayland过渡,但它仍然支持在X.org显示服务器上运行。X.org是X Window System的一个开源实现,它允许GNOME在传统的X11环境中运行。
GNOME项目还开发了许多其他库和工具,如用于网络同步的GNOME Online Accounts、用于系统设置的GNOME Control Center等,这些都是在上述技术基础上构建的。GNOME的这些技术和组件共同构成了一个功能丰富、用户友好的桌面环境。
GNOME支持Xorg和Wayland,可以在登录界面时,右下角进行不同实现的选择。
KDE PLASMA
KDE Plasma 桌面环境是基于多个技术和组件实现的,其中最主要的是:
Qt: KDE Plasma 主要使用 Qt 应用程序框架来创建其用户界面和应用程序。Qt 是一个跨平台的 C++ 图形用户界面应用程序框架,它被广泛用于开发GUI应用程序,并提供了一套丰富的类库用于图形界面设计、访问硬件接口、数据库交互等。
Plasma: Plasma 是 KDE 的核心组件之一,它是一个桌面工作空间环境,提供了一套完整的桌面和应用程序功能。Plasma 提供了桌面壳(Plasma Shell)、各种面板、桌面部件(Plasmoids)、活动(Activities)等,这些都是使用 Qt 和 KDE Frameworks(一组基于 Qt 的库和模块)构建的。
KDE Frameworks: KDE Frameworks 是一组用于简化应用程序开发的库和模块,它们是基于 Qt 并为 KDE 应用程序提供附加功能的。这些框架提供了各种工具和抽象,使得开发者可以更轻松地创建和维护 KDE Plasma 桌面环境中的应用程序。
X11 和/或 Wayland: KDE Plasma 支持多种显示服务器协议。长期以来,它一直是基于 X11 协议的,使用 Xorg 作为显示服务器。然而,随着 Wayland 的发展,KDE Plasma 也增加了对 Wayland 的支持。Wayland 是一个现代化的显示服务器协议,它提供了更好的性能和安全特性。KDE Plasma 可以在 X11 和 Wayland 上运行,具体取决于用户的配置和系统支持。
综上所述,KDE Plasma 桌面环境是基于 Qt、Plasma、KDE Frameworks 等技术构建的,并且可以在 X11 和 Wayland 上运行。随着时间的推移,KDE 社区一直在改进对 Wayland 的支持,以提供更现代和更高效的桌面体验。
KDE PLASMA支持Xorg和Wayland,可以在登录界面时,右下角进行不同实现的选择。
XFCE
XFCE 是一个轻量级的、基于 GTK+ 的开源桌面环境。它旨在为用户提供一个快速、响应性强且资源高效的桌面环境。XFCE 的实现基于以下技术和组件:
GTK+ (GIMP Toolkit): GTK+ 是一个用于创建图形用户界面的跨平台工具包。XFCE 使用 GTK+ 来构建其用户界面元素,如窗口、按钮、工具栏等。GTK+ 是 GNOME 项目的一部分,但它被许多其他桌面环境和应用程序独立使用。
Xfce Libraries: XFCE 拥有一套自己的库,这些库为 XFCE 组件提供核心功能和工具。这些库包括 Xfconf(配置系统)、Thunar-VFS(文件系统抽象层,已被淘汰)、LibXFCE4(核心库)等。
X.org: XFCE 传统上运行在 X.org 显示服务器上,这是一个开源的实现,它提供了 X Window System 的功能。X.org 允许 XFCE 与底层硬件交互,并处理图形渲染和用户输入。
D-Bus: D-Bus 是一个消息总线系统,它允许不同的应用程序在Linux操作系统中进行通信。XFCE 使用 D-Bus 来支持系统服务和应用程序之间的通信。
HAL (Hardware Abstraction Layer): 虽然HAL已经被更现代的硬件处理机制如UDisks和UPower取代,但一些较旧的XFCE版本可能仍然依赖于HAL来探测和管理硬件设备。
Other GNOME Technologies: 除了GTK+,XFCE 还使用了其他一些 GNOME 技术和组件,例如 GStreamer 用于多媒体处理,GNOME Keyring 用于密码管理。
XFCE 设计为轻量级和模块化,使得它非常适合资源有限的系统,同时也能够提供现代桌面环境的舒适和便利。随着时间的推移,XFCE 也在不断更新和改进,以适应新的技术和发展趋势。
扩展
查看当前环境是X11还是Wayland?
查看显示服务器进程:
如果您看到Xorg或X进程正在运行,那么您的系统正在使用X11。
如果您看到wayland或wl_display进程正在运行,那么您的系统正在使用Wayland。
使用命令行工具:
在终端中,您可以运行以下命令来检查显示服务器:
echo $XDG_SESSION_TYPE
如果输出是x11,则表示使用的是X11。
如果输出是wayland,则表示使用的是Wayland。
Xrdp进行远程的正确操作方式?
参考下面链接对服务器进行Xrdp服务器安装:
https://blog.csdn.net/u010674101/article/details/118019971
需要注意:
如果说xrdp进行远程登录时,使用的账号,物理机已经登录了,那么就远程不上的。
要么在物理机注销该账号,要么创建一个专门用来远程的账号。
Java的Javafx支持Wayland吗?
截至我的知识更新日期(2023年),JavaFX对Wayland的支持是有限的。JavaFX是一个用于创建富客户端应用程序的图形用户界面工具包,它是Java SE的一部分。JavaFX提供了Scene Builder和FXML等工具,用于设计和实现跨平台的GUI应用程序。
在早期版本中,JavaFX主要支持X11和Windows上的DirectX,以及macOS上的OpenGL。对于Wayland的支持,由于各种原因,包括优先级和资源分配,Oracle并没有提供官方的Wayland支持。然而,有一些社区努力使得JavaFX能够在Wayland上运行。
一个值得注意的项目是OpenJFX,它是JavaFX的开源版本。OpenJFX社区可能有一些工作在进行中,以实现对Wayland的支持。此外,其他社区项目如Gluon也可能会提供对Wayland的支持或者补丁。
如果您需要在Wayland上运行JavaFX应用程序,您可能需要查找最新的社区信息,看看是否有可用的解决方案或者更新。由于JavaFX和Wayland的社区都是活跃的,情况可能会随着时间的推移而发生变化。因此,建议您查看最新的文档和社区论坛,以获取最新的支持情况。