采用拟物化设计的 Linux Wayland 桌面环境

Hacker News Top 工具

摘要

DEsk 是一个为 Linux 打造的 Wayland 桌面环境,采用 iOS 6 式的写实拟物化设计:窗口是书桌上的纸张,Dock 是抽屉,应用收纳在书架上的活页夹里,整个房间经过光线追踪渲染。目前为 v0.1.2 beta 版,支持 Debian、Ubuntu、Arch 和 Fedora 一键安装。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/10/15 16:12

fyzugx/DEsk

来源:https://github.com/fyzugx/DEsk

English | 日本語

DEsk

v0.1.2 (BETA) —— v0.1 是首个公开版本,包含修复以及一个适用于 Fedora 的安装脚本。详见 RELEASE-NOTES.md。

我建立了一个 Discord 服务器! 你也可以在这里报告 Bug 和提出新功能建议! 链接:https://discord.gg/xR5f7Xs49

DEsk 是 Desktop Environment 与 desk 合为一词 —— 这个名字来自 Reddit 社区。它以前叫 DeskWM:命令现在是 desk、desk-session、desk-settings 等,而为 DeskWM 设置过的内容(其配置、数据、DESKWM_* 变量)会自动沿用。

一个写实拟物化的 Linux Wayland 桌面 —— 就像 iOS 6 那样,屏幕上的一切都绘制得如同真实之物。在这里,桌面就是一张书桌。

窗口是胡桃木书桌上的纸张。Dock 是一个抽屉,你的应用归档在书桌后面的书架上的活页夹里,通知投递到信箱中,系统控制面板则是嵌入书桌背面的一块控制板。房间采用光线追踪渲染,由一盏台灯照亮一切。

状态:Beta 版。 DEsk 已在作者的机器上日常使用,并经过了仔细的检查(见 docs/ARCHITECTURE.md 第 9 节),但这是它的首次发布:请预期会有一些粗糙之处,也请预期会有变化。你的设置和数据将被保留并沿用。

安装

从 Releases 页面(https://github.com/fyzugx/DEsk/releases)下载最新版本并解压(或克隆此仓库)。然后在该文件夹中,运行适合你系统的命令:

Debian 13

sudo sh scripts/install_debian.sh

Ubuntu 24.04 / 26.04(以及 Linux Mint、Pop!_OS)

sudo sh scripts/install_ubuntu.sh

Arch Linux(以及 EndeavourOS、Manjaro)

sudo sh scripts/install_arch.sh

Fedora 43 / 44(以及 Nobara)

sudo sh scripts/install_fedora.sh

然后注销并在登录界面选择 DEsk。

  • 安装脚本会先显示将要安装的内容并征求你的确认。--yes 采用建议的默认回答;--no-apps 则仅安装 DEsk 本身而不安装推荐程序。
  • 首次登录时会渲染房间一次:在 GPU 上需要几秒钟,没有 GPU 则需要更久。之后每次都能即时启动。
  • 要更新,获取新版本并再次运行相同的命令即可。你的设置会被保留。
  • 出了问题?参见报告问题。

更多选项、手动构建以及在窗口中运行 DEsk,请参见构建和运行。

桌面上有什么

这里没有任何东西是桌面上某样物品的“图标“。正如 iOS 6 的写实拟物化风格,每一样都被绘制得如同真实物品放置在那里 —— 有它的材质、光照、阴影和使用磨损的痕迹。

  • 窗口就是纸。 每个窗口都放置在一张带有真实纸纤维、厚度和折角的米色纸张上。将鼠标悬停在折角上,纸角会翘起露出背面印着的内容:折叠(最小化:像信件一样折好放在桌上,和其他纸张一样压在窗口下面)、展开 / 重新折叠(最大化和还原),以及丢弃(关闭:揉成一团扔掉)。 拖动窗口边缘会从纸张背后抽出更多的纸来。
  • 抽屉就是 Dock。 拉动黄铜把手(或按 Super+D)。里面存放你放入的东西:任何应用,或折叠好的窗口。开箱即用,它装着 DEsk 的标准程序(见下文)和一把打开 Shell 设置的螺丝刀。
  • 书架存放你的应用(Super+A,或 ALL APPS 招牌)。每个分类是一个活页夹,纸页从单个圆环处散开。取出一张纸,它会被带到桌面上,应用的窗口就在上面展开。在这一排的末尾立着一本 ALL APPS 索引册:从 A 到 Z 的所有程序,带有拇指标签和页面顶部的一行输入框(通过 IBus 的输入法可以使用)。
  • 信箱就是通知中心(Super+N)。信件显示发件人和主题,取出的信件会放在桌面上。
  • 控制面板(Super+C)是嵌入书桌背面的一台阀门时代的机器:真正的仪表、音量旋钮、网络和蓝牙拉杆、房间台灯的推子和屏幕自身背光的推子(在笔记本上通过 logind 控制;亮度快捷键也可以用)、一个解锁电源按钮的钥匙,以及作为纸片夹在下方的系统托盘(纸片多得放不下,滚轮可以滑动这一排)。
  • 桌历、便签本和时钟立在搁板上。日历里有一本计划和待办事项的笔记本,便签撕下来贴在对应日期上。便签本同样被取下来书写(那里也能用 IBus);纸页沿着铁丝翻转。时钟在分钟旁边以小字显示秒数,在两个灯罩下面,当摄像头或麦克风在使用时灯才会亮起。
  • 前门在外面的真实世界里。 锁屏上的门映射着当下时刻的光照 —— 根据你所在时区的城市计算的太阳位置,黄昏时门廊灯会亮起 —— 如果你允许它向 open-meteo.com 查询该城市的天气(只会发送经纬度),还会有天气效果:雨水打湿砖墙并从灯前划过,雪花积落在朝上的表面,雾气,闪电。在一年中某些特别的日子,门和时钟还会给你带来别的惊喜 —— 没有相关设置;它是什么,你到那天就会知道(在 Shell 设置中填写你的生日,那就是其中之一)。按 Esc 可以跳过。
  • 光照。 房间(书桌、书架、控制台、信箱)在 GPU 上进行光线追踪(GLES 3),以 CPU 光线追踪器作为回退方案,并按屏幕尺寸缓存结果。叠加在其上的一切都由同一盏灯照亮。登录时房间从黑暗开始,随着房间被构建出来灯光逐渐亮起,时钟以发光的红色数字计数进度。
  • 尺寸以点为单位。 更大的屏幕意味着更大的桌子,而不是更大的物品。
  • 多屏幕。 桌面位于一块屏幕上;其他屏幕显示更多桌面木板的延伸部分,供窗口放置其上。新窗口出现在鼠标指针所在的屏幕上,展开和全屏填满窗口所在的屏幕,而桌面自身屏幕上的操作 —— 抽屉、转向书架 —— 不会移动其他屏幕上的内容或将它们移出可及范围。移除某块屏幕时,其上的窗口会被移到剩余的屏幕上。
  • X11 应用通过 Xwayland 运行,自绘边框的窗口同样放置在纸张上。
  • 屏幕锁就是前门(Super+L 或 logind):夜晚走近它,近到触手可及,以 3D 追踪渲染,有自己的灯光和柔和阴影。你的头像和名字挂在门上的牌子上,密码输入在黄铜面板上,钥匙在旁边;按回车(或点击钥匙)后你会凑近转动钥匙。如果放行,钥匙会转动,门打开,你穿门而入走到桌前坐下;如果拒绝,钥匙不会转。锁定则是同样的动作倒放 —— 离开房间,关上门,转动钥匙 —— 通过 Super+L 或控制面板上的蓝色 LOCK 按钮触发。与登录一样,使用 PAM 验证。
  • 七种语言。 DEsk 自身显示的一切以及程序名称,均有英文、日文、简体中文、韩文、西班牙文、法文或德文:跟随系统 locale,或在 ~/.config/desk/shell.conf(或 Shell 设置应用)中设置 language = en | ja | zh | ko | es | fr | de,并且可以即时切换。日历按照实际销售的样式排版,中文和韩文使用 CJK 字体的专属切分版本。

标准程序

DEsk 旨在作为完整桌面环境安装,类似于 GNOME 或 KDE,因此为桌面上的每一项工作选择一个标准程序:终端、网页浏览器、文件管理器和文本编辑器。抽屉中的物品和 Super+Enter 会打开它们。对于每项工作,按以下优先级选择已安装的:

  1. shell.conf 中的 app.terminal、app.browser、app.files、app.editor(一个 .desktop id),
  2. freedesktop.org 顺序的默认应用程序列表:~/.config/desk-mimeapps.list(仅 DEsk 读取)、~/.config/mimeapps.list(Shell 设置的“默认程序“、xfce4-mime-settings 所写入),以及系统目录中同样位置的两个文件,最后是随 DEsk 安装的 desk-mimeapps.list —— 与 xdg-open 和 GIO 给出的结果一致,
  3. 标准套件,经典 GTK 程序优先:Xfce Terminal、Firefox ESR、Thunar、Mousepad(然后是 MATE Terminal、Caja、Pluma 等),
  4. 归档在正确分类下的任何程序。

导览

窗口翻起的折角,背面写着折叠、展开和丢弃从书桌下拉出的抽屉,五件物品放在绿色毛毡上
每个窗口的折角:折叠、展开、丢弃。抽屉:Dock。
一个窗口折成包裹放在桌面上书架:八本活页夹、ALL APPS 索引册、日历、便签本、时钟和信箱
一个折叠好的窗口,压在其他窗口下面放在桌上。书桌后面的书架。
ALL APPS 索引册翻到 A 至 DALL APPS 索引册搜索 “term”
ALL APPS,从 A 到 Z 的每个程序…………以及一个输入框。
控制面板:仪表、拉杆、音量旋钮和电源按键打开的信箱,里面有信件
控制面板。信箱:通知。
桌历翻到十月,旁边是它的便签活页夹Shell 设置,系统标签页:每一行标明它打开的程序
桌历和它的便签。Shell 设置。

文档

  • docs/ARCHITECTURE.md —— DEsk 的构建方式:程序、合成器、光线追踪房间、线程、文件。
  • docs/MODDING.md —— 修改 DEsk:文字与语言、设置、借用的程序、声音、房间、桌面上的物品。
  • docs/CONFIGURATION.md —— 所有设置项、文件和环境变量。
  • RELEASE-NOTES.md —— v0.1.2 的内容以及已知尚未正常工作的功能。
  • docs/design.md —— 完整的开发日志(日文)。

作为桌面环境

DEsk 绘制桌面;在上面完成的工作由已有的自由软件完成。它通过借用达到完善,并在自己构建的内容与借用的内容之间保持严格的界限:

DEsk 自建双方协作:DEsk 绘制,其他程序负责工作借用
内容绘制为房间并作为其物品处理的内容;只有合成器才能完成的内容程序、系统设置面板、后台辅助程序
示例窗口即纸、抽屉、书架、时钟、控制面板、信箱、前门、日历和便签本;键盘、指针及其按键(含音量和媒体键)、屏幕及其电源管理、记忆屏幕排列、空闲状态、锁定;Shell 设置音量旋钮和静音(PipeWire/PulseAudio)、亮度(logind)、Wi-Fi 和蓝牙拉杆、信箱(桌面本身是通知守护进程)、托盘的纸片(小程序自身的项目)、时钟的 MEDIA 页面(MPRIS)、截图(grim)、输入法(到 IBus 的桥接)网络连接、蓝牙设备、音频设备、显示排列、打印机、其他程序的外观、默认程序、磁盘、polkit 代理、密钥环、门户 —— 以及程序本身

新场景的规则:只构建那些被绘制为房间的一部分或只能在合成器内部完成的内容;否则寻找一个在 wlroot 合成器下无需修改即可工作的现有程序,实在找不到时才自己构建。KDE 的系统设置和 kcmshell(在 Plasma 之外无法工作)、Xfce 和 MATE 的仅限 X11 的对话框、以及 Xfce 的显示和外观对话框(需要 xfsettingsd,而 xfsettingsd 启动时会用 Xfce 默认值覆盖 GSettings)均不予使用。

sudo sh scripts/install_debian.sh     # DEsk 及全部组件(install_ubuntu.sh、install_arch.sh、install_fedora.sh 同理)
sh scripts/install-desktop.sh         # 仅安装程序(先列出,然后请求 sudo)
sh scripts/install-desktop.sh --extras   # 加上办公套件、邮件等

install-desktop.sh 支持 apt、dnf、pacman 和 zypper。在 Debian 和 Ubuntu 上,同一组件集合也可以打包为一个包:equivs-build packaging/debian/desk-desktop.equivs。

用途包含的程序
终端、文件、文本Xfce Terminal、Thunar(含 tumbler 和 thunar-volman)、Mousepad
网页浏览Firefox(Debian 上为 Firefox ESR,Ubuntu 上为 snap 版)
图片、文档、音乐和视频Ristretto、Atril、Parole
工具Engrampa、GNOME Disks
网络、蓝牙、音频NetworkManager 及其托盘小程序和编辑器、Blueman、PipeWire、pavucontrol
显示器、外观、默认程序wdisplays、nwg-look(Ubuntu 24.04 和 Fedora 上为 GNOME Tweaks)、Xfce 的 MIME 设置
打印system-config-printer、CUPS
通知udiskie(U 盘挂载,附带通知)、poweralertd(低电量;Arch 上为 batsignal;Fedora 上无)、package-update-indicator(更新提醒;Debian 和 Ubuntu)
系统维护QDirStat(磁盘使用情况)、LXQt 的日期时间及用户管理、Mugshot(姓名和头像)、Seahorse(密码和密钥)、gnome-packagekit(安装和卸载程序)、Back In Time(备份)、Xfce Task Manager、hardinfo2(关于本计算机);Arch 上另有 baobab 和 Deja Dup;Fedora 上无 Mugshot
密码MATE 的 polkit 代理、GNOME Keyring
底层组件xdg-desktop-portal(wlr、gtk)、Xwayland、xdg-user-dirs、xdg-utils、wl-clipboard、grim、curl
外观Qt 的 GTK 平台主题,使 Qt 程序与 GTK 程序风格一致
输入和字体IBus(日语用 Mozc)、Noto(CJK、emoji)、URW base 35、Klee One(Arch 和 Fedora 上无此字体)
--extrasLibreOffice(GTK 绘制)、Thunderbird、Galculator、Xfce Task Manager、Simple Scan

Xfce 和 MATE 的经典 GTK 程序排在前面,因为桌面的纸张就是为这种窗口裁剪的 —— 菜单栏、简洁工具栏和文档内容 —— 而且它们轻量、启动迅速、原生运行在 Wayland 上。GTK 3 通过 KDE 的 server-decoration 协议向合成器请求边框,因此它们带着 DEsk 纸张上印刷的标题栏躺着,没有 GTK 的标题栏。带有 header bar 的窗口(GNOME 程序、Firefox)则保留自己的边框,被纸张边距包围。

Shell 设置(desk-settings)在 Shell 标签页中管理 DEsk 自身的设置 —— 窗口、物品大小、绘制细节、语言、时钟、你的生日和天气、屏幕何时熄灭以及届时是否锁定桌面 —— 在 System 标签页中则是打开借用程序的各行(网络、蓝牙、音频、显示器、打印机、其他程序的外观、默认程序、磁盘、磁盘使用情况、色彩配置、输入法、日期和时间、你的姓名和头像、用户、密码和密钥、安装和卸载程序、备份、计算机正在做什么、以及体验指数),经典外观的程序排在最前面,每一行都带有程序自己的图标和名称 —— “Displays (wdisplays)” —— 让你清楚是什么程序负责该设置。如果某行对应的程序未安装,该行会以浅色显示,并注明该发行版名称下需要安装的包。两个标签页像文件夹的索引标签一样放在纸页上,每个口袋里是一本线圈装订的笔记本,表单的每个部分各占一页,每页边缘贴有一张便签;按住便签会沿着铁丝翻页到对应页面,就像桌历一样(Page Up 和 Down 也可用)。切换标签页(点击、Ctrl+Tab 或 Ctrl+Page Up/Down)会从下方将另一本笔记本从文件夹中抽上来,窗口打开时笔记本也以同样的方式升起。

以会话方式启动(desk-session,从登录界面选择),DEsk 会向 D-Bus 和 systemd 报告自己的显示服务器位置,运行 XDG autostart 条目(跳过那些会与它冲突的条目,例如 another

相似文章

@wsl8297: 逛 GitHub 时挖到一个狠角色:niri。它直接绕开传统桌面“窗口一多就被挤变形”的老毛病,把窗口管理方式彻底重做了一遍。 niri 采用可滚动的平铺思路:窗口按列铺在一条“无限延伸”的水平条带上。你开新窗口,不会强行压缩现有窗口;多…

X AI KOLs Timeline

文章介绍了开源项目 niri,这是一款基于 Wayland 的新型桌面合成器,通过可滚动平铺布局避免传统窗口拥挤问题,并支持动态工作区、多显示器独立管理及自定义着色器动画等特性。

KiwiDesk

Product Hunt

KiwiDesk 是一款免费、开源的 macOS 平铺窗口管理器,提供可自定义的布局、键盘快捷键和与原生桌面的集成。