最近我一直在開發一個自己的 Linux 桌面環境:
LunaDash
專案目前仍然處於開發階段,但已經可以作為一個實際的 Wayland Desktop Session 啟動,同時希望有更多開發者能來一起開發維護這個專案。
GitHub:
https://github.com/LuYishan-4/LunaDash
網站:
https://luyishan-4.github.io/LunaDash/
這篇文章想簡單介紹 LunaDash 現在在做什麼、使用哪些技術,以及如果你也對 Wayland、wlroots、Qt、Quickshell 或 Linux Desktop 有興趣,要怎麼實際把它跑起來。
LunaDash 的目標不是單純做一個「好看的 Linux Shell」。
我希望它是一個完整的桌面環境。
也就是從使用者登入 Linux 開始,就能直接進入 LunaDash Session,而不是需要先啟動 KDE、GNOME 或其他桌面,再把 LunaDash 疊在上面。
目前主要希望做到兩件事情:
開箱即用,同時保留足夠高的客製化能力。
對一般使用者來說,登入後應該就已經有:
而如果想繼續修改,又可以深入到:
也就是說,預設狀態應該可以直接使用,但不希望因為「預設很好用」就把可修改性拿掉。
先直接看畫面。


外觀設定目前可以調整桌布、強調色等內容。
LunaDash 本身並不希望把所有 UI 樣式直接寫死。
未來會繼續把更多:
做成可以修改的設定。

這也是 LunaDash 和單純 Desktop Shell 最大的不同之一。
目前 LunaDash 自己處理 Wayland compositor 與視窗管理,而不是依賴另一個既有 compositor。
目前正在實作的操作方式包含:
因此你可以使用:
Super + H
Super + L
在左右視窗欄之間移動。
再使用:
Super + K
Super + J
選擇同一欄中的其他視窗。
這部分的設計概念比較接近:
不一定要讓每個視窗永遠固定在一個傳統網格中,而是讓一組視窗可以形成可導航、可捲動的工作空間。

Calendar 面板同樣是 Shell 的一部分,也可以使用自訂圖片等方式調整外觀。
上面這些圖片都是 2026/09/20 實際執行 LunaDash 時的桌面截圖,並不是設計稿。
目前主要使用:
C++20
C11
wlroots
Wayland
OpenGL
Qt 6
Quickshell
QML
簡化成架構的話,大概可以看成:
Linux
│
├─ DRM / KMS
├─ libinput
│
▼
wlroots
│
▼
LunaDash Compositor
│
├─ Window Management
├─ Input
├─ Rendering
├─ Workspace
├─ Animation
└─ Wayland Protocol
│
▼
Quickshell / QML
│
├─ Panel
├─ Launcher
├─ Dashboard
├─ Settings
└─ Notification
這也是我在做 LunaDash 時覺得非常有趣的地方。
我們平常看到的 Linux Desktop,其實可以拆成很多不同層。
例如:
鍵盤
↓
libinput
↓
Compositor
↓
Wayland surface
↓
Application
或者畫面:
Application Buffer
↓
Wayland Surface
↓
wlroots Scene
↓
LunaDash Compositor
↓
OpenGL
↓
DRM / KMS
↓
Monitor
當開始自己寫 compositor 後,很多原本看起來像是「桌面理所當然會做的事情」,其實全部都需要自己處理。
像是:
這也是這個專案目前最主要的開發內容。
LunaDash 沒有把所有 UI 都直接寫進 compositor。
Compositor 與桌面 UI 是分開處理的。
底層 compositor 主要使用 C/C++,而桌面 Shell 則大量使用:
Qt 6 + Quickshell + QML
例如:
Panel
Launcher
Dashboard
Notification Center
Settings UI
這些比較適合使用 QML 描述。
這樣做的其中一個好處是:
修改桌面 UI 不需要一直修改 compositor 的 renderer。
例如想調整 Panel:
高度
間距
動畫
按鈕
配色
模組
基本上可以直接從 QML 層處理。
而真正與 Wayland、輸入、視窗和 Render Pipeline 有關的部分,再交給 native compositor。
目前主要開發平台是 Arch Linux。
另外安裝腳本也開始處理:
不過目前整個專案仍然是開發預覽版,所以如果只是想體驗,建議使用測試環境或至少保留其他 Desktop Session。
取得 dev 分支:
git clone --branch dev https://github.com/LuYishan-4/LunaDash.git
cd LunaDash
接著執行:
./scripts/install-session.sh
安裝器會負責:
安裝完成後登出。
接著在登入管理員中選擇:
LunaDash(Wayland)
就可以直接進入 LunaDash Desktop。
如果想先知道安裝腳本會做什麼:
./scripts/install-session.sh --dry-run
這樣可以先檢查安裝流程,而不直接修改系統。
Shell 目前需要:
Quickshell 0.3+
如果目前使用的 Linux 發行版沒有提供需要的套件,安裝程式也會顯示缺少哪些依賴。
LunaDash 目前預設的一些操作如下。
| 快捷鍵 | 功能 |
|---|---|
Super + Return |
開啟 Terminal |
Super + E |
開啟檔案工具 |
Super + D |
開啟 Launcher |
Super + H / L |
聚焦左/右視窗欄 |
Super + K / J |
切換同一欄的視窗 |
Super + Space |
Floating Mode |
Super + Shift + S |
範圍截圖 |
Super + 1 ~ 9 |
切換 Workspace |
這裡的 Super 就是一般鍵盤上的 Windows / Meta 鍵。
快捷鍵也可以從:
設定 → 鍵盤快捷鍵
修改。
Linux 上其實已經有非常成熟的 Desktop Environment:
Compositor 也已經有:
所以 LunaDash 並不是因為「Linux 沒有桌面可以用」。
反而是因為我想知道:
如果從 compositor 開始自己控制整個桌面,能做到什麼?
以前在 KDE 或其他桌面環境開發時,大部分功能都建立在既有架構上。
例如你想做視窗動畫:
Application
↓
Wayland
↓
KWin
↓
Effect Plugin
↓
Render
但自己開始寫 compositor 後,就會變成:
Wayland Client
↓
LunaDash
↓
wlr_surface
↓
wlr_scene
↓
Animation state
↓
OpenGL
↓
Output
連「視窗淡出」這種表面上很簡單的功能,都必須知道:
所以 LunaDash 對我來說不只是 Desktop Environment,也是一個實際研究:
Wayland
Compositor
Rendering
Linux Input
Desktop Shell
如何串在一起的專案。
目前 LunaDash 還不是一個成熟的 Stable Desktop Environment。
GitHub 上目前也明確標示為:
Development Preview
目前還有很多東西持續在調整,例如:
所以現階段比較適合:
一起測試。
LunaDash 是 GPL-3.0-only 的開源專案。
專案:
https://github.com/LuYishan-4/LunaDash
網站:
https://luyishan-4.github.io/LunaDash/
目前歡迎:
Pull Request 目前以:
dev
作為主要開發分支。
之後如果有時間,我也想把 LunaDash 裡比較底層的東西分開寫成文章。
例如:
Wayland 到底怎麼把畫面送到螢幕?
wlroots 的 wlr_scene 在做什麼?
Wayland compositor 怎麼收到鍵盤輸入?
為什麼 compositor 可以控制視窗?
視窗動畫到底是在動畫什麼?
截圖工具 grim 是怎麼和 compositor 溝通?
Quickshell 和 compositor 又是怎麼分工的?
因為實際自己寫了一次之後,會發現 Wayland 並沒有想像中那麼神秘。
它其實就是很多不同層的元件,一層一層把:
Input
Window
Buffer
Scene
Render
Output
串起來。
而 LunaDash 現在做的事情,就是試著把這整條 Desktop Stack 自己接起來。
如果你也對 Linux、Wayland、wlroots 或 Desktop Environment 開發有興趣,歡迎來 GitHub 看看。
LunaDash 還很早期,但也正因為還很早期,現在幾乎每一個部分都還有可以玩的東西,未來預計完善整個桌面環境和開發插件系統。