跳至内容
入门

入门

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/$arch

Required 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.asc

Ubuntu 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.asc

Signed-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=0

repo_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 检出目录。