首页 > 其他分享 >Xfce漫游(1) - Xfce与相关概念

Xfce漫游(1) - Xfce与相关概念

时间:2024-08-19 13:26:13浏览次数:9  
标签:Glib 管理器 Qt GTK 桌面环境 概念 Xfce 漫游

用了好几年Xfce桌面了,但是从来没有仔细研究过Xfce底下相关的运行逻辑,最近才对相关的底层概念感兴趣并去尝试了解了一下,但是它的体系架构以及复杂的依赖关系令初来乍到者望而却步。没办法,写点什么方便理解吧。

这一系列文章主要是探讨Xfce底层实现的,不会过多聚焦于美化之类的话题。我的环境是Arch Linux+Xfce,不同发行版的命令可能不同。

XFCE桌面环境

Xfce是桌面环境,用于Unix与Unix-like操作系统,如Linux与FreeBSD。Xfce建基在GTK+之上,它同时为程序设计者提供开发框架。Xfce使用Xfwm作为默认的视窗管理器,亦可搭配Openbox等其他视窗管理器协作。Xfce由许多彼此独立的组件所构成,除了本身,还有第三方的程序使用Xfce的程序库,如文本编辑器Mousepad、多媒体播放程序Parole与终端模拟器。(摘自xfce-维基百科

为了将讨论最简化,下面列出Xfce桌面最为核心的部件(按Xfce默认会话,已按加载顺序排序):

  • xfce4-session: Xfce的会话(session)管理器,同时也负责与D-Bus交流
  • xfwm4: Xfce的窗口管理器,负责与显示混成器(compositor)进行交流以管理其中显示的窗口
  • xfsettingsd: Xfce的设置管理器守护进程(用于Xfconf)
  • xfce4-panel: Xfce的面板
  • thunar --daemon: Xfce的文件管理器。这里只是启动守护进程
  • xfdesktop: Xfce桌面本身,负责显示墙纸和桌面内容;借助thunar在桌面显示~/Desktop文件夹内的文件

这些应该是组成桌面环境至少需要的部分。此外还有一些自启动程序如xfce4-notifyd等,由于不在最小化session的范围内,暂时不做讨论。

上面出现的不少程序都与Dbus连接或者作为一个用户级别的systemd单元;同时也有负责与Compositor交流的程序。此外,Xfce是基于GTK3(目前如此)开发的,为了理解xfce的实现必须先对GTK有一定了解。还有一点需要补充的是,Xfce遵循着XDG标准,这个又是由freedesktop.org组织提出和维护的。总而言之,为了了解Xfce的运行……一步步来吧。

GTK+

一个GUI工具包,在功能上可以认为是对标Qt,负责处理底层渲染以及为上层应用程序提供接口。和Qt不同的是,GTK+中不同的组件都单独分出了不同的库文件,主要有:

  • Glib: G家最基本的库,提供了各种数据结构、容器、事件循环机制等等…… 这个库是通用化的,除了GTK之外的程序也可使用它(其实Qt也在使用这个库)
  • GObject: Glib的一部分。提供面向对象功能(毕竟都是用C语言实现的)
  • Gio: Glib的一部分。提供IO相关功能(文件流、VFS交互、网络、与D-bus交互等等)
  • GDK: 绘图工具箱。负责基本图形绘制,与底下的渲染器(cairo、pango等)、Compositor以及Glib进行交流,并向上层的GTK提供服务。
  • GTK: 应用程序程序员直接交互的图形库。虽然其实程序员也需要直接和Glib打交道。

真是复杂啊,下图或许能说明GTK中各个组件的关系。话说我直接去调查基于Qt的桌面环境不就不需要掌握一整个全新的图形工具包了吗。

摘自维基百科

标签:Glib,管理器,Qt,GTK,桌面环境,概念,Xfce,漫游
From: https://www.cnblogs.com/notify-ctrl/p/18367133

相关文章

  • Kubernetes 的架构和核心概念
    Kurbernetes是Google旗下的容器跨主机编排工具。Kurbernetes可以自动化应用容器的部署、扩展和操作,提供以容器为中心的基础架构。一、Kurbernetes集群架构与组件Kubernetes采用主从分布式架构,节点在角色上分为Maste和Node。KubernetesMaster是控制节点,负责k8s集群的调......
  • 【微服务】微服务服务注册中心概念
    一、定义与功能定义:微服务服务注册中心是一个用于存储服务实例信息、实现服务注册与发现、支持负载均衡和配置管理等功能的系统组件。在微服务架构中,系统被拆分成多个独立的服务,这些服务之间需要进行通信和协作,注册中心正是实现这一目的的关键。主要功能:服务注册与注销:服务......
  • java基础概念笔记
    java基础概念1.注释分类单行注释://注释信息多行注释:/*注释信息*/文档注释:/**注释信息*/但是一般不用2.关键字2.1关键字的特点关键字的字母全部小写常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观。注意:关键字很多,不用刻意去记。abstracta......
  • 读软件开发安全之道:概念、设计与实施02经典原则
    1. CIA原则1.1. 软件安全都构建在信息安全的三大基本原则之上,即机密性(confidentiality)、完整性(integrity)和可用性(availability)1.2. 双方交换的数据1.2.1. 从技术上看,端点之间的数据交换本身就会削弱交互的机密性1.2.2. 隐藏通信数据量的一种方法是让端点始终......
  • Stable Diffusion概念
    stablediffusionmodels:是一类神经网络模型的统称,主要是使用扩散过程来生成高质量图片controlNet:automatic1111:checkpoint:一般也称model,是必须的主模型,文件体积GB级别,文件后缀通常是ckpt或者safetensorslora:是一种stablediffusionmodel,是通过保存的少量的训练参数来微调......
  • Redis的基本概念和使用
    目录一、Redis简介1、NOSQL2、NOSQL和关系型数据库比较3、主流的NOSQL产品4、什么是Redis5、启动Redis二、Redis基本操作1、大概操作三、 Redis数据类型(5种常用)1、redis数据存储格式2、String3、hash4、list5、Set6、sorted_set四、Jedis1、导入对应的依......
  • 快速掌握 LaTeX:实战示例与基础概念【文末送书】
    文章目录快速掌握LaTeX:实战示例与基础概念LaTeX文档结构LaTeX实战示例LaTeX入门实战【文末送书】快速掌握LaTeX:实战示例与基础概念LaTeX是一种广泛使用的排版系统,特别适用于数学和科学文档。它提供了强大的格式控制功能,使用户能够创建高质量的文档。本文将介......
  • 误闯机器学习(第一关-概念和流程)
    以下内容,皆为原创,实属不易,请各位帅锅,镁铝点点赞赞和关注吧!好戏开场了。一.什么是机器学习        机器学习就是从数据中自动分析获取模型(总结出的数据),并训练模型,去预测数据。    内心独白:就好比我们人从日常生活中,归纳总结得出经验。利用总结的经验去得出......
  • 【嵌入式开发之网络编程】互联网的基本概念
    计算机网络的定义计算机网络的精确定义并未统一:以功能完善的网络软件及通信协议实现资源共享和信息传递的系统。以传输信息为基本目的,用通信线路和通信设备将多个计算机连接起来的计算机系统的集合。计算机网络的分类 按照网络的作用范围进行分类类别作用范围或距离广域......
  • 读软件开发安全之道:概念、设计与实施01基础
    1. 基础1.1. 实现软件安全既需要运用逻辑,又是一项艺术1.1.1. 一项仰赖直觉来做出判断的艺术1.1.2. 需要践行者对当代数字系统有所掌1.1.3. 需要他们对人与系统之间的交互有所体悟1.2. 需要准确地思考一下何谓安全1.2.1. 安全定义的主观性颇强,因此厘清安全......