入门
Denial 为以下系统发布官方 x86-64 软件包:
- Arch Linux、CachyOS 和 Omarchy 4.0;
- Debian 13(trixie);
- Ubuntu 24.04 LTS(noble);
- Fedora 44。
Alpine Linux 3.24 也已受支持,其签名 APK 文件附在每个 GitHub Release 中。NixOS 26.05
和 Void Linux 已通过运行时验证,但目前尚无官方软件包。Debian Forky/Sid 可尽力使用
Debian 13 的 trixie 仓库;该滚动版本尚未完成完整验证矩阵。
| 架构 | 可正常运行 | 提供二进制软件包 |
|---|---|---|
| x86-64 | ✅ | ✅ |
| ARM64(AArch64) | ✅ | ❌ |
ARM64 已得到完整支持,但尚未发布官方 ARM64 二进制软件包。ARM64 用户应从源代码构建 Denial,而不是使用下方的软件仓库配置流程。
原生软件包会安装合成器、匹配的 Flutter 引擎、嵌入式桌面外壳、独立 Settings 应用、 Xwayland 支持、会话集成以及桌面 Portal。
要求
会话需要兼容 logind 的 seat/会话服务和用户 D-Bus。图形路径需要原子 KMS、GBM/EGL、
硬件 OpenGL ES 3.0 或更高版本,以及渲染器和每个活动主平面都能共享的 XRGB8888
格式/modifier。较旧 GPU 和简单虚拟机显示设备可能无法满足这些要求。注销前运行
denial-session --check 可查看可用设备与各项前置条件。
安装
对于 Arch、CachyOS、Omarchy、Debian、Ubuntu 和 Fedora,引导式安装程序会检测发行版、
验证 Denial 签名密钥的完整指纹、显示所有计划执行的更改,并在使用 sudo 前征求确认:
sh -c 'if ! command -v curl >/dev/null 2>&1; then echo "Error: curl is not available." >&2; exit 1; fi; curl -fsSL https://install.denialwm.org | sh'提示
安装程序会核对完整的 Denial 发布密钥指纹:
AE4108FA5E91E26BE0EE331E0F5B3AD16E023091。它只配置软件仓库,不会安装任何软件包。
配置完成后,用当前发行版的原生软件包管理器显式安装 Denial:
sudo pacman -Syu denial安装 denial 时会自动选择兼容的 denial-flutter-engine 软件包。
Alpine Linux 3.24
Alpine 目前使用签名的直接下载文件,而不是软件仓库。将 X.Y.Z 替换为发布版本,使用
同一个固定的发布密钥验证两个 APK,然后安装已验证的本地文件:
version=X.Y.Z
release="https://github.com/denialwm/denial/releases/download/v$version"
doas apk add gnupg
curl -fLO https://denialwm.github.io/denial/denial-repo-key.asc
curl -fLO "$release/denial-flutter-engine-$version-r1.apk"
curl -fLO "$release/denial-flutter-engine-$version-r1.apk.sig"
curl -fLO "$release/denial-$version-r1.apk"
curl -fLO "$release/denial-$version-r1.apk.sig"
fingerprint="$(
gpg --show-keys --with-colons denial-repo-key.asc \
| awk -F: '$1 == "fpr" { print $10; exit }'
)"
test "$fingerprint" = AE4108FA5E91E26BE0EE331E0F5B3AD16E023091
gpg --import denial-repo-key.asc
gpg --verify "denial-flutter-engine-$version-r1.apk.sig" \
"denial-flutter-engine-$version-r1.apk"
gpg --verify "denial-$version-r1.apk.sig" \
"denial-$version-r1.apk"
doas apk add --allow-untrusted \
"./denial-flutter-engine-$version-r1.apk" \
"./denial-$version-r1.apk"这里的 --allow-untrusted 只跳过 APK 原生的 RSA 仓库格式;前面的 OpenPGP 检查已经验证
了实际下载的文件。
手动配置软件仓库
如果不想使用安装程序,请自行下载并检查公钥。修改软件包管理器前,必须核对完整指纹, 不能只核对短密钥 ID:
key_fingerprint='AE4108FA5E91E26BE0EE331E0F5B3AD16E023091'
key_tmp="$(mktemp -d)"
trap 'rm -rf -- "$key_tmp"' EXIT
curl \
--proto '=https' \
--tlsv1.2 \
--fail \
--silent \
--show-error \
--location \
--output "$key_tmp/denial-repo-key.asc" \
https://denialwm.github.io/denial/denial-repo-key.asc
downloaded_fingerprint="$(
gpg --batch --show-keys --with-colons --fingerprint \
"$key_tmp/denial-repo-key.asc" \
| awk -F: '$1 == "fpr" { print toupper($10); exit }'
)"
test "$downloaded_fingerprint" = "$key_fingerprint"
gpg --show-keys --with-fingerprint "$key_tmp/denial-repo-key.asc"Arch Linux、CachyOS 和 Omarchy
只有指纹检查通过后,才导入密钥并在本地信任它:
sudo pacman-key --add "$key_tmp/denial-repo-key.asc"
sudo pacman-key --lsign-key "$key_fingerprint"在 /etc/pacman.conf 的官方软件仓库之后添加以下部分:
[denial]
SigLevel = Required TrustedOnly
Server = https://denialwm.github.io/denial/$archRequired TrustedOnly 会要求 Pacman 验证软件仓库数据库和每个软件包的可信签名。
Debian 13
将已验证的密钥安装为仅供此软件仓库使用的 APT 密钥环:
sudo install -d -m 0755 /etc/apt/keyrings
sudo install -m 0644 \
"$key_tmp/denial-repo-key.asc" \
/etc/apt/keyrings/denial.asc创建 /etc/apt/sources.list.d/denial.sources:
Types: deb
URIs: https://denialwm.github.io/denial/apt
Suites: trixie
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/denial.ascUbuntu 24.04 LTS
按上面的方式将密钥安装到 /etc/apt/keyrings/denial.asc,然后创建
/etc/apt/sources.list.d/denial.sources:
Types: deb
URIs: https://denialwm.github.io/denial/apt
Suites: noble
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/denial.ascSigned-By 将该密钥的信任范围限制在 Denial 软件仓库。APT 会先验证已签名的
InRelease 元数据,再接受其中的软件包校验和。
Fedora 44
安装并导入已验证的密钥:
sudo install -D -m 0644 \
"$key_tmp/denial-repo-key.asc" \
/etc/pki/rpm-gpg/RPM-GPG-KEY-denial
sudo rpmkeys --import /etc/pki/rpm-gpg/RPM-GPG-KEY-denial创建 /etc/yum.repos.d/denial.repo:
[denial]
name=Denial public beta
baseurl=https://denialwm.github.io/denial/rpm/fedora/$releasever/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-denial
skip_if_unavailable=0repo_gpgcheck=1 会验证软件仓库元数据,gpgcheck=1 会验证每个 RPM 内嵌的签名。
检查安装
退出当前桌面前,请运行:
denial-session --check它会检查已安装的会话、Bundle、输出配置、DRM 与渲染设备选择、Qt Portal 主题以及 Xwayland,但不会启动另一个合成器。
启动 Denial
退出登录,在显示管理器中选择 Denial,然后登录。Denial 支持 SDDM;任何能显示已安装 Wayland 会话条目的显示管理器也都可以启动它。
默认情况下,桌面使用 Denial 与合成器集成的 Impeller GLES 后端渲染。Skia/Ganesh 仍可 作为驱动兼容性后备;如果首次启动时画面损坏或无法显示,请参阅 渲染器后备。
标准显示管理器会话启动时不会锁定。这是有意为之:显示管理器已经验证了你的身份, 因此立刻显示 Denial 锁屏通常只会要求重复输入一次密码。
自动登录与直接启动
如果会话管理器在未先验证用户身份的情况下启动 Denial,请启用启动锁定:
/usr/bin/denial-session --start-locked--start-locked 会在 Flutter 启动前关闭 Denial 的原生安全门,因此第一个可见状态就是
由 PAM 支持的锁屏。这适用于自动登录或其他直接启动路径。例如,greetd 可以使用:
[initial_session]
command = "/usr/bin/denial-session --start-locked"
user = "alice"除非确实希望再次输入密码,否则不要将它添加到普通、已经验证身份的显示管理器条目中。
支持的会话启动模式如下:
| 调用方式 | 结果 |
|---|---|
denial-session | 在显示管理器完成身份验证后启动打包的桌面 |
denial-session --check | 检查安装和图形环境要求,但不启动合成器 |
denial-session --start-locked | 启动时原生安全门和 Flutter 锁屏已经锁定 |
其他 deniald 命令行开关面向受控开发和诊断,而不是持久用户配置。运行
deniald --help 可查看已安装版本提供的选项。
在 Denial 中打开终端,并验证原生控制连接:
denialctl status
denialctl outputs第一条命令报告合成器和 Flutter 桌面外壳的状态;第二条列出已连接输出的模式、位置、 缩放、电源状态和配置序列号。
更新或卸载
使用当前发行版的常规更新流程:
# Arch Linux、CachyOS 或 Omarchy
sudo pacman -Syu
# Debian 13 或 Ubuntu 24.04
sudo apt update && sudo apt upgrade
# Fedora 44
sudo dnf upgrade
# Alpine Linux 3.24:重复上面的签名直接下载流程使用对应的软件包管理器卸载 Denial:
# Arch Linux、CachyOS 或 Omarchy
sudo pacman -Rns denial
# Debian 13 或 Ubuntu 24.04
sudo apt remove denial
# Fedora 44
sudo dnf remove denial
# Alpine Linux 3.24
doas apk del denial可选的 denial-ui-development 软件包目前只面向 Arch 系发行版。卸载 Denial 不会删除
软件仓库配置、用户配置或可编辑的 ~/DenialUI 检出目录。