虽然linux桌面一言难尽,但是这不影响linux作为自己的主操作系统,
因为linux中运行windows或者mac的虚拟机性能损耗极低,但是windows或者mac中运行linux虚拟机性能损耗极大。
概念:
- opengl/vulkan: 定义如何绘制三角形、纹理、光照等,但不关心图像如何显示到屏幕。
- 开源实现: dioxus->wgpu->[vulkan/opengl前端,例如ash和glow和mesa3d前端api]->[vulkan/opengl后端,例如mesa3d后端api]->mesa3d驱动->gpu硬件
- mesa3d驱动:硬件驱动模块(如 Intel i965、AMD RadeonSI)
- mesa3d-api:OpenGL/Vulkan API 的底层实现,包括前端实现,和后端实现。
- X11/Wayland: 决定窗口如何排列、输入如何传递,以及最终图像如何呈现给用户。
- X11已进入维护状态,不再接受新功能,Wayland作为linux图形显示的未来已经不可逆转。
- GNOME 50将在2026年3月完全移除X11代码。
- cosmic桌面更彻底,完全基于Wayland开发,跨平台gui框架使用的是iced,不依赖gtk和qt这类c或c++写的gui框架。
- X11采用客户端-服务器模型,应用程序(客户端)需通过X服务器中转图形渲染和输入事件,导致额外的通信开销。
- Wayland采用的是本地高性能渲染,没有网络开销。
将im软件和会议软件分离是有意义的:
- 开会的人是未知的,如果把im软件和会议软件合并在一起,会导致开个会还需要加个好友或者加入组织。
- 会议软件支持屏幕远程控制功能是有意义,im软件支持屏幕远程控制是没有意义的。
ubuntu
Fedora 有出口管制策略,不建议国内使用。
Canonical宣布从Ubuntu 25.10版本开始逐步淘汰GNU组件,转向Rust实现的核心工具。
yum使用python写的,dnf使用c++和python写的,apt使用c++写的,未来apt会使用rust重构。
- 使用命令行对snap-store“切换频道”
$ sudo snap refresh snap-store --channel=<channel-name>
# 其中,<channel-name>可以是以下常用频道之一:
# * stable : 稳定版(推荐日常使用)
# * beta : 测试版(包含新功能预览)
# * edge : 开发版(每日构建,最不稳定)
# * candidate : 候选版(接近稳定版)
可以通过以下命令验证当前使用的频道:
snap info snap-store
在输出信息中查看"tracking"字段,即可确认当前使用的频道。
- 设置光标大小
设置/无障碍/视觉/指针大小
- 设置Dock
设置/Ubuntu桌面/Dock/Position On Screen
gnome
gnome只支持linux操作系统,为何使用 gtk这种跨平台的gui库呢?直接调用wayland不是更好么
- gnome shell
GNOME 3 的插件(扩展)主要基于 JavaScript 和 GJS(GNOME JavaScript 引擎),通过修改 GNOME Shell 的运行时对象(如 MetaWindow、St 等)来实现功能。
GNOME 3 早期版本的官方扩展 API 功能有限,许多高级定制(如修改工作区行为、调整窗口动画)只能通过直接操作内部对象实现。
不通过插件API接口,而是通过对象的属性来编写的插件,导致只要 Gnome3 的核心代码一改变,或者属性链中的任一一个变量发生了变化,Gnome3插件就失效了。
- GNOME Display Manager
简称gdm,配置文件位置 /etc/gdm3/
当你启动一台安装了 GNOME的 Linux 电脑时,你看到的那个让你输入用户名和密码的界面,通常就是 GDM。
它负责启动 X Server 或 Wayland Compositor,验证用户身份,并加载该用户的桌面环境 GNOME。
- gnome-shell-extension-manager
安装命令: sudo apt install gnome-shell-extension-manager
之后就可以点击“扩展管理器”桌面图标,打开“扩展管理器”。
在它的“浏览”界面,可以搜索各种插件,并安装选中的插件。
必装插件:
- kimpanel:提供更好的输入法状态显示
- gnome-remote-desktop
同时支持vnc和rdp协议,但是只能作为服务端,客户端的话需要使用如下技术:
- vnc: 使用浏览器来访问
- rdp: 使用freerdp命令行工具来访问。
wfreerdp.exe /v:ip地址 /u:用户名/p:"密码" +dynamic-resolution | findstr "^"- /drive:是 FreeRDP 中用于设置本地文件夹重定向的参数,它允许你将本地文件夹映射为远程系统中的网络驱动器。
# 将本地 /home/user/Documents 映射为远程驱动器的 "MyDocs" wfreerdp /drive:MyDocs,/home/user/Documents /v:server.example.com # 在 Windows 客户端上 wfreerdp /drive:MyDocs,C:\Projects /v:server.example.com- 连接后,在远程系统中:
- Windows:在"此电脑"中看到网络位置,如 \tsclient\MyDocs
- Linux:通常挂载在 /mnt/tsclient/MyDocs或类似路径
- 连接后,在远程系统中:
- windows: wfreerdp, linux-x11: xfreerdp, linux-wayland: wlfreerdp
- /drive:是 FreeRDP 中用于设置本地文件夹重定向的参数,它允许你将本地文件夹映射为远程系统中的网络驱动器。
输入法
- fcitx5设置
安装依赖:sudo apt install fcitx5-chinese-addons libime-bin
fcitx配置/附加组件/输入法/拼音
- 管理词库/导入/来自搜狗细胞词库文件
- 搜狗词库文件下载地址: https://pinyin.sogou.com/dict/
- 快速输入的触发键:设置为空
- libinput,evdev,fcitx5,dbus 的关系
-
evdev是Linux内核的输入事件驱动,负责将物理设备的原始输入信号转换为标准事件流;
- 位于/dev/input/event*设备节点
-
libinput是用户空间的输入处理库,对evdev事件进行高级处理(如手势识别、触摸板优化);
- 在Wayland环境下,libinput直接与合成器交互;
- 在X.Org环境下,通过xf86-input-libinput驱动与X服务器通信。
-
fcitx5是输入法框架,最终将经libinput处理后的输入事件转换为文字输出。
- 支持多种输入法引擎(如拼音、五笔、Rime等),提供词库管理、云输入、智能联想等功能
- fcitx5通过输入法模块(fcitx5-qt、fcitx5-gtk)与应用程序交互
-
DBus是通信桥梁:evdev、libinput、fcitx5都是独立组件,DBus使它们能在不同进程间协作
-
fcitx5 和 fcitx4 的区别:
- fcitx4和fcitx5不能共存,需要先卸载fcitx4再安装fcitx5
- fcitx5可模拟IBus框架,兼容性更强
- fcitx5原生支持Wayland,fcitx4对Wayland的支持有限
- fcitx5支持各种插件,fcitx4的插件比较有限
- gnome 46的默认输入法,如何从ibus改为fcitx5呢?
# 安装fcitx5框架、配置工具和中文输入法引擎
sudo apt install fcitx5 fcitx5-configtool fcitx5-chinese-addons
# 安装前端界面支持(确保GTK/Qt程序正常使用)
sudo apt install fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 fcitx5-frontend-qt5
# 添加fcitx5的环境变量
sudo cat >> /etc/environment << EOF
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
EOF
# 针对GNOME Wayland的额外配置(可选)
# 如何确认GNOME 46使用Wayland: echo $XDG_SESSION_TYPE
gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"
修改系统默认输入法框架:
- 方法1: 设置/系统/区域和语言/管理已安装的语言/在"键盘输入法系统"下拉菜单中,选择"fcitx5"
- 方法2:
im-config -n fcitx5
GNOME通常会自动启动Fcitx5,若未启动可手动添加:
- 打开"启动应用程序"(gnome-session-properties)
- 添加新条目:名称填"Fcitx5",命令填fcitx5 -d
- 保存后重启验证
fcitx5的错误信息,可以使用fcitx5-diagnose命令查看
附录A 华为笔记本
- 如何解决没有声音的问题
# 解除耳机静音控制
amixer -c 0 set Headphone unmute
# 将音量设置为30%
amixer -c $CARD_NUMBER -M set Headphone 30%
或者,命令行执行alsamixer,在弹出的界面按F6,在弹出的界面选项中选择default:0 sof-hda-dsp,切到Headphone,然后按M键。
- 开机功能键
F2 BIOS/UEFI 设置
F12 启动菜单(Boot Menu)
Esc 总控菜单
附录B windows桌面
- 安装msys2
github: https://github.com/msys2/msys2-installer
镜像地址: https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/
安装位置: D:\software\msys64
在终端内启动msys2: D:\software\msys64\msys2_shell.cmd -ucrt64 -defterm -no-start -here
- 配置pacman镜像
pacman是arclinux中的软件管理工具,也是widows上msys2默认的软件管理工具。
镜像地址:https://mirrors.tuna.tsinghua.edu.cn/help/msys2/
启动msys2,并执行如下命令:
|
|
执行 pacman -Sy 刷新软件包数据
解决错误:clangarm64: 密钥 "5F944B027F7FE2091985AA2EFA11531AA0AA7F57" 未知问题:
- pacman常用命令
pacman -Sy: 从服务器下载新的软件包数据库(实际上就是下载远程仓库最新软件列表到本地)。
pacman -Syu: 升级系统及所有已经安装的软件。
pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。
pacman -Rs 软件名: 删除软件,同时删除本机上只有该软件依赖的软件。
pacman -Ru 软件名: 删除软件,同时删除不再被任何软件所需要的依赖。
pacman -Ssq 关键字: 在仓库中搜索含关键字的软件包,并用简洁方式显示。
pacman -Qs 关键字: 搜索已安装的软件包。
pacman -Qi 软件名: 查看某个软件包信息,显示软件简介,构架,依赖,大小等详细信息。
pacman -Sg: 列出软件仓库上所有的软件包组。
pacman -Sg 软件包组: 查看某软件包组所包含的所有软件包。
pacman -Sc:清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。
pacman -Scc:清理所有的缓存文件
附录C 安卓的HAL层 和 鸿蒙的HDF层
安卓的硬件抽象层(HAL)是连接 Android 操作系统与底层硬件设备的核心桥梁。它的主要意义在于屏蔽不同硬件的具体实现细节,为上层框架和应用提供统一、稳定的硬件访问接口
因为 Android 通过将硬件支持的复杂性从内核空间转移到用户空间的 HAL,所以,安卓的内核是linux,是宏内核,但是其驱动接口依然稳定。
Android HAL 并非一成不变,其主要经历了三个阶段:
- 传统 HAL(Android 8.0 之前):以 .so动态库形式存在,通过 hw_get_module()加载
- HIDL(Android 8.0 及以后):引入 HAL 接口定义语言(HIDL),支持 Binder IPC 进程间通信,HAL 可运行于独立进程,进一步增强了稳定性和安全性
- AIDL HAL(Android 11 及以后):逐步采用 AIDL(Android Interface Definition Language)来定义接口,旨在简化开发流程
微内核将系统核心功能(如文件系统、设备驱动、网络协议栈等)作为独立的服务运行在用户态,与最核心的内隔离开,安卓的HAL实际上借鉴了微内核的思想,但是又保留了宏内核的性能优势。
OpenHarmony 的 HDF(Hardware Driver Foundation)驱动框架的目标是让驱动开发者能专注于硬件操作本身,而不必过多纠结于驱动与系统其他模块的交互。它通过几种核心设计来实现这一点:
- 驱动模型抽象与组件化:HDF 为常见类型的设备(如 Audio、Camera、Sensor 等)提供了标准化的驱动模型。开发者更多地是进行“适配”而非“从零创造”,这提升了开发效率,也使得驱动更容易在不同硬件平台间迁移。
- 配置与代码分离:驱动通过 .hcs(HDF Configuration Source) 配置文件来定义硬件资源、设备属性、加载策略等。
- 统一的驱动接口(HDI):HDF 通过 Hardware Driver Interface (HDI) 为上层系统服务提供标准化的硬件操作接口。
- 灵活的加载与部署:HDF 支持驱动按需动态加载和静态加载,并允许驱动根据需要部署在内核态 (KHDF) 或用户态 (UHDF)。用户态部署可以增强系统稳定性(驱动崩溃不会导致内核恐慌),而内核态部署则利于追求极致性能。
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 极客油画 」找到我。

