惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog RSS Feed
宝玉的分享
宝玉的分享
腾讯CDC
博客园_首页
T
Tailwind CSS Blog
月光博客
月光博客
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
SecWiki News
SecWiki News
美团技术团队
P
Privacy International News Feed
H
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
Know Your Adversary
Know Your Adversary
Y
Y Combinator Blog
D
DataBreaches.Net
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
S
Schneier on Security
G
GRAHAM CLULEY
博客园 - 三生石上(FineUI控件)
Cisco Talos Blog
Cisco Talos Blog
小众软件
小众软件
Forbes - Security
Forbes - Security
D
Docker
T
Tenable Blog
S
Secure Thoughts
雷峰网
雷峰网
S
Security @ Cisco Blogs
T
The Exploit Database - CXSecurity.com
The Cloudflare Blog
博客园 - 【当耐特】
Spread Privacy
Spread Privacy
阮一峰的网络日志
阮一峰的网络日志

lznauy的技术小屋

NekoCode 深度解析 用AI开发新主题仅需一天 AIAgent开发杂谈 CodeAgent的开发比我想象的难的多 nix语法初入门 记录一次家里老人受骗 nixos美化shell及常用软件安装 皖南川藏线之旅 nixos配置kitty以及桌面美化 nixos-shell及配置优化 nixos-flake和home-manager nixos折腾之旅 claude源码泄漏事件及简单剖析 春季赏花之旅 曲折的离职过程 年味越来越淡了 城市里没有爱情? 日常碎记(三) 利用DeepSeek分析你的隐藏天赋 SELinux技术介绍 我们的认知可能被裹挟了 日常碎记(二)
nixos安装niri和noctalia
lznauy · 2026-04-10 · via lznauy的技术小屋

目前的桌面环境界面 niri-desktop

niri和noctalia简介 @

什么是niri @

众所周知Linux桌面主要分为 X11Wayland 两套协议,而niri是Wayland生态里的一个窗口管理器(准确说是合成器compositor),用Rust写的,目前在GitHub上有22k+的star。

niri最大的特点是scrollable tiling——窗口像纸带一样水平排列,打开新窗口不会把现有的挤变小。你可以想象成每个显示器是一条无限长的走廊,窗口一个接一个往右堆。这种设计对程序员挺友好的,特别是需要同时开很多窗口的时候。除此之外,niri还支持多显示器、分数缩放、动态工作区、内置截图,以及基本的浮窗功能,官方说已经可以日常使用。

什么是noctalia @

noctalia则是完全另一个层面的东西。它是一个桌面shell,基于Qt/QML开发。你可以把它理解为「桌面环境的视觉层」——状态栏、通知、锁屏、壁纸、启动器、桌面小部件这些都由它负责,而窗口怎么排列、怎么切换,这些则是niri负责。类似的,你也可以使用其他的shell来实现这些UI层,例如Dank Material Shell (DMS)、Wayle等。

niri和noctalia的关系 @

如果只用niri不加其他东西,你会发现登录后屏幕上啥都没有——没有状态栏、没有壁纸、没有通知、没有dock,没有应用启动器,只能看到黑屏和鼠标。这是因为niri只是一个compositor,它只负责把窗口画出来、处理输入事件、管理多显示器和切换工作区,那些「看得见摸得着」的东西它一样都不管。niri官方文档里也写到:准备好你的waybar和fuzzel再来用它。

所以niri和noctalia的关系是分工合作:niri管窗口,noctalia管UI。完整桌面环境通常包含窗口管理器、状态栏、文件管理器、应用启动器、通知系统、锁屏、设置面板和壁纸这些东西。noctalia作为shell,把大部分视觉组件都整合好了:状态栏、通知、锁屏、壁纸、启动器(可配合wofi或fuzzel)、OSD(调音量时屏幕中间那个进度条),还有各种桌面小部件。它基于Quickshell开发,性能不错,主题也能自定义,不过noctalia不管窗口管理,也不包含文件管理器。窗口管理交给niri,文件管理用系统自带的(比如thunar、nautilus)就行。

因此装了niri + noctalia之后,你基本就拥有了一个完整的「准桌面环境」

niri和noctalia安装 @

首先在flake.nix的input中引入noctalia-shell

inputs = {
    noctalia = {
        url = "github:noctalia-dev/noctalia-shell";
        inputs.nixpkgs.follows = "nixpkgs";
    };
}

在output也一样,传入noctalia,然后再sharedModules中导入noctalia的homeModules,便于给所有用户使用。

  outputs = { 
    self, nixpkgs, home-manager, 
    nix4nvchad, claude-code, noctalia, ...  # 这里添加noctaila
  }@inputs:
  {
    nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
      modules = [
        home-manager.nixosModules.home-manager {
          home-manager.useGlobalPkgs = true;
          home-manager.useUserPackages = true;

          home-manager.sharedModules = [
            inputs.nix4nvchad.homeManagerModules.default
            inputs.noctalia.homeModules.default
          ];
          home-manager.users.lznauy = import ./home/default.nix;
        }
      ];
      specialArgs = { inherit inputs; };
    };
  };

然后记得在你的用户配置,例如我的/home/default.nix中开启niri相关选项。

programs.niri.enable = true;
services.xserver.enable = true;
services.displayManager.gdm.enable = true;
services.displayManager.gdm.wayland = true;

然后可以新建一个文件noctalia.nix用来存储noctalia的配置。

{ config, pkgs, ... }:
{
  programs.noctalia-shell = {
    enable = true;
    systemd.enable = true;
    settings = {
      bar = {
        position = "bottom";
      };
    };
  };
}

接着在/home/default.nix中导入noctalia.nix

imports = [
  ./noctalia.nix
];

然后nixos-rebuild switch更新系统就可以生效啦,是不是很简单?但目前桌面环境还是比较初始化,桌面环境配置只能后续再说啦