Noctalia 完全指南:基于 Wayland 与 OpenGL ES 的原生桌面 Shell 架构、构建与配置实战
桌面应用【免费下载链接】noctaliaA sleek, customizable desktop shell crafted for Wayland.项目地址https://gitcode.com/gh_mirrors/no/noctalia点击查看免费下载Noctalia 是一个直接构建在 Wayland 与 OpenGL ES 之上的原生桌面 Shelldesktop shell目标用户是希望在 Wayland 合成器之上获得一体化、可配置桌面体验的 Linux 用户。本文以仓库 README.md 为主线结合 example.toml、BUILDING.md、CONTRIBUTING.md 以及docs/user/文档与src/源码系统讲解它的定位、功能边界、技术栈、从源码构建流程和完整的配置体系读完后你将掌握如何评估、构建并配置这套桌面壳层。什么是 NoctaliaNoctalia 是一个原生的 Wayland 桌面 Shell面向那些想要一个精致、可配置的 Linux 桌面、却不想自己把独立的顶栏bar、启动器launcher、通知守护进程、锁屏、壁纸工具和设置界面拼装起来的用户。它提供的是环绕在合成器compositor周围的 Shell 层包括顶栏、小部件widgets、Dock、启动器、控制中心、通知、壁纸、锁屏、会话动作、剪贴板历史、OSD 浮层、系统托盘集成和桌面小部件。项目没有 Qt 或 GTK 依赖UI、渲染、配置和 IPC 模型被设计为单一内聚的 Shell而不是一堆互不相干的面板和脚本的集合。这与常见的拼接式 Wayland 桌面形成鲜明对比大多数 Wayland 方案需要把一个小工具栈拼在一起——一个顶栏、另一个启动器、再一个通知守护进程、一个锁屏、一个壁纸守护进程加上会话脚本而且每个组件都有自己的配置格式。这种方案灵活但也让完整桌面显得脆弱、难以保持视觉一致。Noctalia 通过一个可配置的 Shell 层统一拥有这些常见的桌面表面与服务同时仍然融入合成器驱动的 Wayland 工作流适合那些想要自定义桌面环境的控制力、又希望减少活动部件并保持 UI 一致的用户。核心功能清单根据 README 的 What It Includes 一节Noctalia 提供以下开箱即用的功能多显示器顶栏可配置小部件、任务栏、工作区、系统托盘、媒体、网络、电池、亮度、天气、剪贴板以及自定义脚本驱动的小部件桌面表面Dock、启动器、控制中心、通知 toast/历史、壁纸选择器、OSD 浮层、锁屏、会话面板和桌面小部件配置体系TOML 配置 热重载hot reload、GUI 托管的覆写overrides、主题/调色板支持、模板应用template application以及用于运行时控制的 IPC直接的 Wayland 集成layer-shell、session lock、idle 行为、剪贴板、foreign toplevels、工作区、分数缩放fractional scaling以及按需的合成器专属工作区后端。这些功能在源码中都有对应模块例如src/shell/bar/是顶栏实现158 个文件的子树src/shell/dock/、src/shell/control_center/、src/shell/launcher/、src/shell/lockscreen/、src/shell/wallpaper/分别对应 Dock、控制中心、启动器、锁屏与壁纸剪贴板历史位于src/shell/clipboard/OSD 位于src/shell/osd/。Wayland 合成器支持Noctalia 支持那些提供 Shell 表面所需的layer-shell 协议的 Wayland 合成器。工作区集成在需要时通过合成器原生的后端实现或者在使用ext-workspace-v1的合成器上通过该通用协议实现。当前已集成的合成器包括Niri、Hyprland、Sway、Scroll、Mango、Labwc、Triad、dwl以及其他兼容的 Wayland 合成器。其他合成器可以运行 Noctalia但根据它们暴露的协议和 IPC工作区、窗口、输出或会话动作集成可能有所缩减。在源码中这一抽象由 src/compositors/ 目录实现compositor_platform.cpp 是统一入口它通过compositors::detect()检测当前合成器并为输出电源控制createOutputPowerBackend、聚焦输出解析createFocusedOutputBackend、工作区元数据createWorkspaceMetadataBackend和键盘布局切换createKeyboardLayoutBackend分别选择后端。从源码结构可以看到每个合成器一个子目录src/compositors/niri/Niri 运行时、输出/键盘/工作区后端src/compositors/hyprland/Hyprland 运行时与hyprland-toplevel-mapping协议辅助src/compositors/sway/、src/compositors/mango/、src/compositors/triad/、src/compositors/umbriel/、src/compositors/labwc/、src/compositors/dwl/各自的运行时与后端src/compositors/kde/KDE KWin 的活跃窗口与虚拟桌面集成通过org_kde_plasma_virtual_desktop协议src/compositors/ext_workspace/通用的ext-workspace-v1工作区与输出后端。例如在createOutputPowerBackend中Hyprland/Niri/Sway/Triad/Mango/Umbriel 各有专属实现而 dwl、Labwc、KDE 与未知合成器则回退到ext-workspace通用实现见 compositor_platform.cpp。用到的 Wayland 协议 XML 全部固化在仓库 protocols/ 目录下包括wlr-layer-shell-unstable-v1.xml、wlr-foreign-toplevel-management-unstable-v1.xml、ext-workspace相关文件、wlr-screencopy-unstable-v1.xml等。边界与范围Shell 而非桌面环境README 明确指出Noctalia 是一个桌面 Shell不是完整的桌面环境DE。它提供的是合成器之上的视觉与服务层顶栏、面板、启动器、通知、Dock、锁屏、idle 行为、OSD、主题、壁纸、桌面小部件和多显示器 Shell 表面。以下内容不属于 Noctalia 的范围而是由合成器、专用桌面应用或系统服务负责窗口管理与平铺tiling合成器配置如显示器排列与位置文件管理、可移动驱动器挂载、打印机管理屏幕镜像/投屏。显示/登录欢迎器greeter支持位于独立的 Noctalia Greeter 项目中Noctalia 会在有用时与这些组件集成但不会替代它们。核心 Noctalia 是非侵入式的它不管理你的合成器设置也不接管你的 dotfiles。合成器专属的控制可以通过可选的插件提供而不是成为核心 Shell 行为。插件系统面向用户安装的扩展。对部分用户有用但并非核心 Shell 必需的功能可以放在插件里额外的顶栏小部件、启动器 provider、桌面小部件、面板、快捷键、后台服务、合成器专属扩展与控制、硬件专属控制以及第三方服务集成。插件以 Luau 脚本编写运行时位于 src/scripting/Luau 运行时是 vendored 的第三方依赖。技术栈与架构实现技术栈一览CONTRIBUTING.md 的 Stack 一节给出了完整的技术栈清单直系依赖传递依赖由系统包负责层库Wayland 核心libwayland-client、wayland-scanner、wayland-protocols表面xdg-shell、zwlr-layer-shell-v1多显示器zxdg-output-unstable-v1活跃窗口元数据zwlr-foreign-toplevel-management-unstable-v1工作区ext-workspace-v1、dwl-ipc-unstable-v2剪贴板ext-data-control-v1、wlr-data-control-unstable-v1激活xdg-activation-v1锁屏ext-session-lock-v1Idleext-idle-notify-v1、idle-inhibit-unstable-v1光标wp-cursor-shape-v1键盘xkbcommon渲染EGL、OpenGL ES 2.0、wayland-egllibepoxy回退文本cairo、cairo-ft、pango、pangocairo、pangoft2、harfbuzz、freetype2、fontconfig图像Wuffsvendored、stb_image_resize2、stb_image_write、libwebp、libjxl、librsvgIPC 与服务运行时sdbus-c、glib-2.0、gobject-2.0、gio-2.0音频libpipewire-0.3、wireplumber-0.5、libsndfile认证PAM、polkit-agent-1、polkit-gobject-1凭据与加密libsecret-1、libsodiumHTTPlibcurlXML / 日历 / 配置 / JSON / Markdownlibxml2、libical、tomlplusplus、nlohmann/json、md4c模糊匹配 / 数学表达式 / 脚本fzyvendored、libqalculate、Luauvendored主题生成Material Color Utilitiesvendored内存分配jemalloc可选设计原则见 CONTRIBUTING.md是只使用直接的 Wayland OpenGL ES无工具包开销采用领域特定的最小场景图minimal scene graph打包需要覆盖主流发行版Arch、NixOS、Fedora、Gentoo、Debian、Void、openSUSE。源码布局仓库以src/为源码根main.cpp是入口。关键目录映射详见 CONTRIBUTING.md 的 Project Layoutsrc/app/应用引导、主循环、poll sourcessrc/compositors/合成器检测、运行时适配器、工作区/输出/键盘后端src/config/配置 schema、校验、热重载、状态存储、覆写其中schema/是类型化配置 schema 引擎src/dbus/会话/系统总线封装与服务集成accounts、bluetooth、logind、mpris、network、notification、polkit、power、tray、upower 等src/render/GLES 渲染后端、着色器程序、场景图、动画、文本渲染src/shell/顶栏、面板、Dock、控制中心、桌面小部件、锁屏、OSD、壁纸等 Shell 表面src/scripting/Luau 插件运行时、manifest、注册表、源码管理、绑定src/system/桌面条目、亮度、天气、位置、系统监控、硬件服务src/theme/调色板生成、模板引擎、主题服务、模板应用src/ipc/IPC 客户端/服务与 CLI 命令解析。测试位于 tests/包含 100 多个单元测试文件配置校验、合成器后端、模板、日历、网络等例如 config_schema_roundtrip_test.cpp、hyprland_workspace_backend_test.cpp、niri_workspace_backend_test.cpp。Nix 打包与模块定义在 nix/含nixos-module.nix、home-module.nix、hjem-module.nix。运行时资产Runtime AssetsNoctalia 运行时必须携带assets/目录树只复制noctalia二进制是不够的。meson install按前缀布局安装/usr/local/bin/noctalia /usr/local/share/noctalia/assets/...也支持两种便携式 bundle 布局bundle/ noctalia assets/bundle/ bin/noctalia share/noctalia/assets/运行时资产查找顺序见 CONTRIBUTING.mdNOCTALIA_ASSETS_DIR环境变量可执行文件旁的assets/可执行文件上一级目录的assets/相对可执行文件的../share/noctalia/assetsMeson 编译时安装路径prefix/datadir/noctalia/assets源码树中的assets/开发回退。只有当资产根目录包含预期的出厂文件如emoji.json、fonts/noctalia-tabler.ttf、templates/builtin.toml、translations/en.json时才会被接受。assets/中确实包含这些文件字体 assets/fonts/noctalia-tabler.ttf、内置模板 assets/templates/builtin.toml、各语言翻译 assets/translations/。从源码构建README 将构建细节指向 BUILDING.md该文档覆盖源码依赖、各发行版的包安装命令、构建模式与安装布局。环境要求源码以C23构建需要GCC 13 或 Clang 16。当前滚动版与较新的稳定发行版Arch、Fedora 38、Debian 13、Ubuntu 24.04默认自带Debian 12 bookworm 需安装g-13并指定CXXg-13 just configure构建工具justmeson打包方式mesonninjajust是命令行封装。系统依赖按发行版Archsudo pacman -S meson gcc just \ wayland wayland-protocols \ libglvnd freetype2 fontconfig \ cairo pango harfbuzz \ libxkbcommon glib2 \ libsecret libsodium \ sdbus-cpp libpipewire wireplumber polkit \ pam curl libwebp libjxl libsndfile librsvg \ libqalculate libxml2 \ md4c tomlplusplus libical \ nlohmann-json stb \ jemallocFedorasudo dnf install meson gcc-c just \ wayland-devel wayland-protocols-devel \ libEGL-devel mesa-libGLES-devel \ freetype-devel fontconfig-devel \ cairo-devel pango-devel harfbuzz-devel \ libxkbcommon-devel glib2-devel \ libsecret-devel libsodium-devel \ sdbus-cpp-devel pipewire-devel wireplumber-devel \ pam-devel polkit-devel libcurl-devel libwebp-devel libjxl-devel libsndfile-devel librsvg2-devel \ libqalculate-devel libxml2-devel \ md4c-devel tomlplusplus-devel libical-devel \ json-devel stb_image_resize2-devel stb_image_write-devel \ jemalloc-develDebian / Ubuntusudo apt install meson g just \ libwayland-dev wayland-protocols \ libegl-dev libgles-dev \ libfreetype-dev libfontconfig-dev \ libcairo2-dev libpango1.0-dev libharfbuzz-dev \ libxkbcommon-dev libglib2.0-dev \ libsecret-1-dev libsodium-dev \ libsdbus-c-dev libpipewire-0.3-dev libwireplumber-0.5-dev \ libpam0g-dev libpolkit-agent-1-dev libpolkit-gobject-1-dev \ libcurl4-openssl-dev libwebp-dev libjxl-dev libsndfile1-dev librsvg2-dev \ libqalculate-dev libxml2-dev \ libmd4c-dev libtomlplusplus-dev libical-dev \ nlohmann-json3-dev libstb-dev \ libjemalloc-devopenSUSE Tumbleweed/Slowroll、Void Linux 与 AerynOS 的完整命令见 BUILDING.md 的 Dependencies 一节。值得注意的依赖语义Vendored 依赖无需系统包Wuffs栅格图像解码、Luau插件脚本运行时、fzy模糊匹配、Material Color UtilitiesMaterial Design 色彩生成libwebp负责 WebP 解码与缩略图编码libjxl负责 JPEG XL 解码libsndfile解码 Shell 音效WAV、FLAC、Ogg/Vorbis、Opus、MP3、AIFFlibqalculate驱动启动器计算器算术、单位与货币换算PipeWire构建需要库/头文件运行还需要 pipewire daemon——连接不上 daemon 时 Noctalia 会中止启动Polkit agent需要提供polkit-agent-1和polkit-gobject-1pkg-config 模块的开发文件upower电池/电源设备集成与ddcutil显示器亮度控制是可选依赖凭据与加密状态持久化需要运行时 Secret Service 提供者如 GNOME Keyring、KWallet 或 KeePassXC没有提供者时 Noctalia 仍可运行但需要持久化机密的功能无法保存。CalDAV 账号可以改为从一个显式配置的普通文件读取密码支持 agenix、sops-nix 等密件供应器Google refresh token 等可写凭据仍要求 Secret Servicejemalloc推荐但可选可减少长会话中的内存碎片glibc 系统上检测到即自动使用可用-Djemallocenabled|disabled显式控制。构建与安装Release 构建默认可移植优化构建在build-release/just configure release just build release # 安装所选构建模式不会重新构建或重新配置 sudo just install release需要本机原生 CPU 优化时在配置后启用meson configure build-release -Dnative_optimizationstrue just build release自定义前缀默认/usr/localjust configure release $HOME/.local just build release just install release卸载使用just uninstall releaseinstall/uninstall都要求显式构建模式避免误装 debug 构建。Debug 构建本地开发与排障just configure just build just run单元测试不会随just build编译它只构建 Noctalia 可执行文件显式运行just test或just test release强制对 release 构建启用直接使用 Meson 的用户可用-Dtestsenabled|disabled|auto控制。生产源码只编译一次进入内部静态库由 Shell 与测试可执行文件共享。ASanAddressSanitizer构建内存错误排查见 CONTRIBUTING.md先停止合成器启动的 Noctalia 实例然后just configure asan just build asan ASAN_OPTIONSlog_path/tmp/noctalia-asan ./build-asan/noctalia 21 | tee noctalia-asan-terminal.log复现崩溃后将终端日志与/tmp/noctalia-asan.*一并附上。配置体系README 指出开箱即用的全默认配置在 example.toml完整配置参考在文档站其源码 MDX 文件位于 docs/user/可用 tools/sync-docs.sh 同步到本地 docs 检出。两层配置手写文件与 GUI 覆写Noctalia 的配置分为两层详见 docs/user/configuration/index.mdx手写配置位于$NOCTALIA_CONFIG_HOME/noctalia/、$XDG_CONFIG_HOME/noctalia/或~/.config/noctalia/。Noctalia 读取该目录下所有*.toml文件按字母序排序后合并成一个配置。单个config.toml是最简单的用法# ~/.config/noctalia/config.toml [theme] mode dark [bar.default] position top也可以拆分维护如bar.toml、theme.toml、widgets.toml。NOCTALIA_CONFIG_HOME与标准 XDG 变量有相同的 home root 形状例如NOCTALIA_CONFIG_HOME/tmp/profile会读取/tmp/profile/noctalia/适合在不想改变启动应用继承的环境时建立独立的 Shell profile。GUI 托管覆写位于$NOCTALIA_STATE_HOME/noctalia/settings.toml、$XDG_STATE_HOME/noctalia/settings.toml或~/.local/state/noctalia/settings.toml。通过设置界面、setup 流程、IPC 控制的控件等运行时操作修改的设置都会写入该文件如果它是符号链接Noctalia 会写入链接目标并保持链接不变。合并顺序谁赢加载顺序为内置默认值配置目录下你的*.toml文件——每个文件先合并其[include]引入的内容再叠加自身设置状态目录settings.toml中的 GUI 托管覆写。由于settings.toml最后加载当它与手写配置含有同一设置时它以胜利者身份生效。当 Settings 写入的值与下层解析值一致时Noctalia 会删除这个冗余键而不是保留为 GUI 覆写。所以排障口诀是如果 GUI 修改后你的文件似乎失效去检查~/.local/state/noctalia/settings.toml。[include]支持引入子目录文件、指定文件或控制加载顺序# ~/.config/noctalia/config.toml [include] files [ widgets/, # 目录加载其中每个 *.toml排序、非递归 bars/top.toml, # 单个文件 ~/.config/shared/base.toml, # ~ 、$VAR 和 ${VAR} 会被展开 ] [theme] mode dark相对路径相对于发起 include 的文件所在目录解析发起 include 的文件自身胜出——被 include 的文件先合并为可复用基础文件自身的设置叠加其上。include 可以嵌套每个文件最多加载一次循环会被检测并跳过。[include]只在你的配置文件中有意义在 app 管理的settings.toml中无效。如果需要多套方案并存如profile_a.toml与profile_b.toml在入口文件设置autoload false则只有设置它的文件及其 include会被加载其余根文件被忽略[include] autoload false files [profiles/work.toml]热重载与自动迁移两层目录都会被监听并热重载config_service.cpp中使用 inotifymask 为IN_MODIFY | IN_CLOSE_WRITE | IN_MOVED_TO | IN_CREATE见 src/config/config_service.cpp。如果两层都不存在则使用内置默认值。当新版本改变某个设置的形状时Noctalia 会在解析前迁移旧值。~/.config/noctalia/下的文件永远不会被改写——需要迁移的值每次加载时在内存中临时归一化Settings 会保持警告可见直到你更新源 TOML。警告和通知会标明源文件、行、列和确切的旧键名settings.toml则会被一次性升级并打上内部config_version标记该标记不导出到用户配置。example.toml全默认配置速览仓库根目录的 example.toml 是所有设置取默认值的完整参考复制为~/.config/noctalia/config.toml后按需修改多数修改通过 inotify 热重载启动期设置会在文件内标注。其核心区块如下Shell 全局[shell]corner_radius_scale0方角、1默认、2更圆、font_family、time_format/date_format默认{:%H:%M}与%A, %x、offline_modetrue 时阻断所有对外 HTTP、telemetry_enabled、polkit_agent、password_styledefault|random、clipboard_enabled、clipboard_history_max_entries10–10000未固定条数上限、clipboard_auto_pasteoff|auto|ctrl_v|ctrl_shift_v|shift_insert、shared_gl_context启动期设置false 为故障驱动隔离 GPU 上下文等。剪贴板有一项值得注意的语义Wayland 选择集由拥有它的应用提供应用退出后数据即失效clipboard_keep_from_closed_apps true让 Shell 代为认领使最后复制的条目在来源应用关闭后仍可粘贴已排除声明x-kde-passwordManagerHint的应用依赖不声明该提示的密码管理器时建议设为 false。Wallpaper[wallpaper]fill_modecenter|crop|fit|stretch|repeat|span、transitionfade/wipe/disc/stripes/zoom/honeycomb、transition_duration毫秒、directory/directory_light/directory_dark空 XDG Pictures 目录、[wallpaper.automation]间隔秒数、random|alphabetical 顺序、是否递归。Theme[theme]modedark|light|auto、sourcebuiltin|wallpaper|community、builtinAyu、Catppuccin、Dracula、Eldritch、Gruvbox、Kanagawa、Noctalia、Nord、Rosé Pine、Tokyo-Night、wallpaper_schemem3-tonal-spot/m3-content/m3-fruit-salad/m3-rainbow/m3-monochrome/vibrant/faithful/dysfunctional/muted、pure_black_darkOLED 纯黑适用于所有调色板来源。模板部分[theme.templates]可启用内置/社区模板用户自定义模板直接在配置中声明# [theme.templates.user.my_app] # input_path templates/my-app.css # output_path ~/.config/my-app/theme.css # post_hook my-app --reload-themeBar[bar.main]positiontop|bottom|left|right、thickness、background_opacity、radius、margin_ends/margin_edge、padding、widget_spacing、scale/font_scale、auto_hide、reserve_space、capsule及胶囊化参数。三个布局槽位定义内容start [launcher, wallpaper, workspaces] center [clock] end [media, tray, notifications, clipboard, network, bluetooth, volume, brightness, battery, control-center, session]还支持死区动作[bar.main.dead_zone.actions]如left panel-toggle launcher与按显示器覆写[bar.main.monitor.dp1]match DP-1仅列出要覆写的字段。Dock[dock]默认enabled false可设位置、图标大小、边距、透明度、圆角、缩放active/inactive/magnification、show_dots、pinned等。Notification / OSD / Lockscreen[notification]支持layertop|overlay、scale、offset_x/y、动作按钮、DND 过滤[notification.filter.*]按应用匹配控制 toast/历史/声音/urgency[osd]支持 8 个位置、水平/垂直方向、[osd.kinds]逐个开关 volume/brightness/wifi/bluetooth/power_profile/caffeine/nightlight/dnd/lock_keys/keyboard_layout/privacy 等 OSD[lockscreen]支持blurred_desktop需 wlr-screencopy、模糊/着色强度、独立壁纸与按显示器显示。服务类[system.monitor]CPU/内存/网络/温度/GPU VRAM/磁盘的轮询周期与 CPU 频率阈值、[calendar]CalDAV/Google默认关闭、[weather]、[audio]enable_overdrive允许音量超过 100% 至 150%、[brightness]enable_ddcutil及按显示器后端auto|none|backlight|ddcutil、[nightlight]色温默认 6500K 白天/4000K 夜晚、[location]单一我在哪里来源同时供 Weather、Night Light 与 Theme auto 模式使用、[idle]lock/screen-off 行为支持pre_action_fade_seconds渐变覆盖层。Keybinds[keybinds]定义 Shell 内的导航键——validate/cancel/left/right/up/down/tab_next/tab_previous/delete默认值如[return, kp_enter, space]、[escape]等。Hooks[hooks]事件驱动自动化支持started、wallpaper_changed、theme_mode_changed环境变量$NOCTALIA_THEME_MODE、session_locked、battery_state_changed$NOCTALIA_BATTERY_STATE、battery_under_threshold${NOCTALIA_BATTERY_PERCENT}%、power_profile_changed等均配置为 shell 命令。这些配置项都有对应的类型化 schema 在源码中如 src/config/schema/config_schema.cpp 中的audioSchema、osdSchema、backdropSchema、lockscreenSchema等校验会给出带文件、行、列的诊断信息。校验与导出配置校验发现潜在问题再让它静默生效noctalia config validate # 校验合并后的配置含 settings.toml noctalia config validate ./my-config-dir # 只校验指定目录的 *.toml noctalia config validate ./config.toml # 只校验单个文件不合并 settings.toml诊断带文件、行、列前缀随后是点分配置路径WARN /home/you/.config/noctalia/bar.toml:14:10: bar.main.foo: unknown setting ERROR /home/you/.config/noctalia/widgets.toml:22:12: widget.clock.timezone: unknown timezone Europe/Berln错误TOML 语法、解析失败的值、非法跨字段组合、include 指向不存在的路径等退出码为 1警告未知/过时设置、有规范替代的值、越界被钳制的值、非法枚举只是提示不导致失败。只有警告时仍输出✓ Config is valid并退出 0因此未知键不会破坏 pre-commit 钩子或 CI。Shell 日志带同样的前缀屏幕上的配置错误通知会把位置放在标题里如config.toml:22:12。导出合并后的用户配置stdout 输出noctalia config export noctalia-config.toml # 合并用户配置 noctalia config export full noctalia-full-config.toml # 完整有效配置含内置默认导出在任一配置解析失败或 include 指向不存在的文件时以错误终止且不写任何内容保证损坏的配置不会产生误导性的部分导出。因为输出是 TOML可管道给yq等 TOML 感知工具noctalia config export full | yq -p toml -r .theme.mode noctalia config export full | yq -p toml -r .shell.offline_mode noctalia config export full | yq -p toml .bar.defaultSettings 的 actions 菜单也提供 Export Config...Merged User Config推荐用于 dotfiles合并显式配置与 GUI 覆写隐含默认值与Full Effective Config导出含默认值的当前快照适合检查或分享精确状态但不适合长期维护因为它会钉住本可演进的默认值。文件位置速查用途位置你的配置~/.config/noctalia/config.toml基础层GUI 覆写~/.local/state/noctalia/settings.toml由 Settings 写入优先于你的配置内部 UI 状态~/.local/state/noctalia/state.toml日历凭据Desktop Secret Service 或显式 CalDAV 密码文件加密存储密钥Desktop Secret Service 或显式密钥文件加密剪贴板历史与日历事件的主密钥日历事件缓存$XDG_CACHE_HOME/noctalia/calendar/events.enc自定义调色板~/.config/noctalia/palettes/本地插件~/.local/share/noctalia/plugins/插件源码仓库~/.local/state/noctalia/plugins/sources/git 源缓存可重新拉取导出插件文件~/.local/state/noctalia/plugins/materialized/社区调色板/模板~/.local/state/noctalia/community-*/下载目录可重新拉取可以归纳为三个存储所有者你的~/.config/noctalia/与~/.local/share/noctalia/、Noctalia 的~/.local/state/noctalia/与凭据提供者的Secret Service 或外部供应器管理的凭据/密钥文件——删除 Noctalia 的状态目录不会移除它们。IPC 与自动化Noctalia 通过noctalia msg提供运行时 IPC 命令供快捷键、脚本、自动化与 hooks 使用CLI 解析在 src/ipc/cli.cpp 的runCli实现要求noctalia msg command形式支持noctalia msg --help与每个子命令的--help。example.toml 中给出了多个内联示例例如noctalia msg clipboard-clear noctalia msg notification-invoke-latest noctalia msg notification-clear-active noctalia msg notification-clear-history noctalia msg session lockhooks 中的[hooks]键值对即通过这些命令与 shell 命令组合实现事件驱动自动化tools/下还有通知相关的集成测试脚本如 tools/notifications-test.sh、tools/notifications-inline-reply-test.sh可以验证通知管线。从 README 继续深入安装发行版包选项与手动安装步骤见 docs/user/getting-started/installation.mdx运行从合成器启动 Shell、配置快捷键见 docs/user/getting-started/running-the-shell.mdx配置合并顺序、热重载与 GUI 覆写详见 docs/user/configuration/index.mdxShell 细节全局 UI 缩放、字体、动画、阴影、OSD、锁屏、快捷键见 docs/user/configuration/shell.mdx自动化事件驱动 hooks 见 docs/user/automation/栏与部件docs/user/bar/ 与 docs/user/bar/ 下的 widgets 文档覆盖顶栏及内部小部件插件Luau 插件安装与配置见 docs/user/plugins/开发者架构概览、代码风格、项目布局与调试命令见 CONTRIBUTING.md含dev.noctalia.DebugD-Bus 服务的SetVerboseLogs等调试命令打包发行版打包说明描述、依赖、安装布局、Meson 选项见 PACKAGING.mdNixnix/ 提供 NixOS/home-manager/hjem 模块与 devshell根目录 flake.nix 可直接使用。简而言之Noctalia 用一个内聚的原生 Shell 层替代了顶栏 启动器 通知 锁屏 壁纸的碎片化拼接把配置统一进 TOML、把扩展交给 Luau 插件、把边界明确在Shell 而非桌面环境。对想要可控、可配置且视觉一致的 Wayland 桌面的用户来说从 example.toml 起步、按 BUILDING.md 构建、以 docs/user/ 为参考是完整的上手路径。赞分享桌面应用【免费下载链接】noctaliaA sleek, customizable desktop shell crafted for Wayland.项目地址https://gitcode.com/gh_mirrors/no/noctalia点击查看免费下载相关推荐Noctalia 发行版打包指南面向 Wayland 桌面外壳的 Meson 构建与发布规范Noctalia 发行版打包指南面向 Wayland 桌面外壳的 Meson 构建与发布规范 本指南面向发行版打包者distribution package桌面应用MediaPipe GPU 支持指南OpenGL ES / Metal 与 TensorFlow CUDA 的构建与运行实战MediaPipe GPU 支持指南OpenGL ES / Metal 与 TensorFlow CUDA 的构建与运行实战 导读 GPU 加速是 Media人工智能机器学习计算机视觉多模态本地部署Notesnook 桌面端基于 Electron TypeScript 的构建、开发与打包完全指南Notesnook 桌面端基于 Electron TypeScript 的构建、开发与打包完全指南 Notesnook Desktop 是 Notesno前端移动开发桌面应用应用安全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考