denial

denialwm活跃维护

用 Rust 和 Flutter 写的 Wayland 合成器,带毛玻璃特效、三种窗口布局和可视化设置界面,适合想要好看又能自己调的 Linux 桌面。

A smooth, customizable Wayland compositor with glass effects, three window layouts, and settings you can actually click. We got a little carried away.

v0.6.3发布于 2026-11-10 16:48 UTC1,437star +15 / 7 天50fork同步于 2026-11-10 23:49 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://install.denialwm.org | sh
sudo pacman -Syu denial
硬件要求按 README 说明

README 未说明具体显存或 GPU 型号要求,仅说明运行于 Linux,官方二进制支持 x86-64 和 ARM64。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

带玻璃特效和三种窗口布局的 Wayland 合成器,设置全都能用鼠标点

用 Rust 和 Flutter 写的 Wayland 合成器,带毛玻璃特效、三种窗口布局和可视化设置界面,适合想要好看又能自己调的 Linux 桌面。

核心能力

  • 提供堆叠、平铺、滚动平铺三种窗口布局
  • 用模糊和可定制玻璃效果渲染窗口与面板
  • 内置图形化设置界面,可调布局、显示、输入、快捷键和外观
  • 支持工作区与触控板手势,动画过渡平滑
  • shell 界面是 Flutter 代码,可保存即热重载

容易踩的坑

目前处于公开 beta,配置和开发者接口在 1.0 前可能变动;安装脚本会用 sudo,需先审阅 install.sh;插件开发与安装由单独的 denial-plugin-manager 提供,且 denial-ui-development 开发包在当前 Flutter 3.47.5 版本暂停发布

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.6.3
  1. v0.6.3pre-release最新正式版2026-11-10 · 2026-11-10 16:48 UTC

    Denial 0.6.3

    This is a signed x86-64 and AArch64 public-beta release of Denial.

    • Source tag: v0.6.3
    • Source commit: b4155b752619381115cc9d830960483cab4f055a
    • Signing fingerprint: AE4108FA5E91E26BE0EE331E0F5B3AD16E023091
    • Required packages: denial and denial-flutter-engine
    • Optional plugin tools: denial-plugin-manager
    • Direct downloads: Arch, Alpine 3.24, Debian-family (Debian 13 / Ubuntu 24.04), and Fedora
    • Every direct package has an adjacent detached OpenPGP signature
    • APT repository: Debian 13 (trixie) and Ubuntu 24.04 (noble)
    • Pacman repository: x86-64 and AArch64
    • DNF repository: Fedora 44 x86-64 and AArch64

    Added

    • Packages for ARM64 (AArch64). The Pacman, APT and DNF repositories carry denial, denial-flutter-engine and denial-plugin-manager for ARM64 beside x86-64, and each machine downloads only its own architecture. The setup script configures ARM64 machines, Arch Linux ARM included. Alpine packages stay x86-64.
    • A phone running the mobile shell keeps working as a phone when a monitor is plugged in: the monitor runs the desktop shell beside it. Apps open on the screen they were started from. A recents card's monitor button, or opening the app from the monitor's launcher, moves an app to the monitor; dropping a window on the phone's screen, or opening it from the phone, brings it back. With the monitor in use the power button turns off only the phone, each screen dims on its own, and unplugging moves the monitor's windows to the phone until it returns. The monitor has its own roundness (appearance.monitorCornerRadiusScale) and its own wallpaper, placed and zoomed apart from the phone's (outputZooms in the wallpaper file). See docs/PHONE_AND_MONITOR.md.
    • Color management. Output buffers are 10-bit where the display planes allow it, and each display gets the desktop converted from sRGB to its own gamut, read from its EDID. denialctl color correction off and on compare a display with and without it. Screenshots and screen capture stay sRGB.
    • denialctl color lut load FILE.cube grades the whole desktop with a 3D LUT, and denialctl color app APP_ID lut load FILE.cube grades one app's windows. Display color settings are saved and applied again at the next start.
    • HDR on displays whose EDID offers PQ. denialctl color hdr OUTPUT on switches the output to BT.2100 with SDR content at a chosen white (203 cd/m² by default), and HDR windows keep the display's headroom. srgb is for displays that ignore BT.2020 and show PQ with sRGB primaries.
    • Apps can describe their colors through wp_color_management_v1 and wp_color_representation_v1; Denial converts tagged windows into the desktop's colors.
    • A color tuning panel, opened with Super+Alt+P or denialctl color tune, grades the desktop or a tapped app live: lift, gamma and gain wheels and exposure, contrast, saturation, vibrance, warmth and tint sliders, over a base look from ~/.local/share/denial/luts. It has built-in looks (Warm, Cool, Logix, Matte, Film, Night and Mono), shows the target ungraded while Before is held, and saves on release.
    • Mouse & touchpad settings can switch mouse acceleration off, which gives libinput's flat pointer profile.
    • zwp_input_timestamps_v1: clients get libinput's microsecond time for each key, pointer and touch event.
    • denial_keyboard_inset_v1 lets an app follow the on-screen keyboard's height as it opens, closes and is dragged, and lay itself out around the keys instead of being moved above them.
    • Input deck: a touch display can become a full-screen keyboard and touchpad for the desktop shown on another display.
    • Remote desktops, virtual machines and other apps that ask for it through zwp_keyboard_shortcuts_inhibit_v1 can now receive Super and Denial's other shortcuts while they have focus. Denial asks first: Allow once, Always allow, Decline once or Never allow. The poin
  2. v0.6.2pre-release2026-11-04 · 2026-11-04 23:27 UTC
    查看更新说明

    Denial 0.6.2

    This is a signed x86-64 and AArch64 public-beta release of Denial.

    • Source tag: v0.6.2
    • Source commit: 3f08a93ec42b9851ebdd73039def1ff12a639858
    • Signing fingerprint: AE4108FA5E91E26BE0EE331E0F5B3AD16E023091
    • Required packages: denial and denial-flutter-engine
    • Optional plugin tools: denial-plugin-manager
    • Direct downloads: Arch, Alpine 3.24, Debian-family (Debian 13 / Ubuntu 24.04), and Fedora
    • Every direct package has an adjacent detached OpenPGP signature
    • APT repository: Debian 13 (trixie) and Ubuntu 24.04 (noble)
    • Pacman repository: x86-64 and AArch64
    • DNF repository: Fedora 44 x86-64 and AArch64

    Added

    • Packages for ARM64 (AArch64). The Pacman, APT and DNF repositories carry denial, denial-flutter-engine and denial-plugin-manager for ARM64 beside x86-64, and each machine downloads only its own architecture. The setup script configures ARM64 machines, Arch Linux ARM included. Alpine packages stay x86-64.
    • A phone running the mobile shell keeps working as a phone when a monitor is plugged in: the monitor runs the desktop shell beside it. Apps open on the screen they were started from. A recents card's monitor button, or opening the app from the monitor's launcher, moves an app to the monitor; dropping a window on the phone's screen, or opening it from the phone, brings it back. With the monitor in use the power button turns off only the phone, each screen dims on its own, and unplugging moves the monitor's windows to the phone until it returns. The monitor has its own roundness (appearance.monitorCornerRadiusScale) and its own wallpaper, placed and zoomed apart from the phone's (outputZooms in the wallpaper file). See docs/PHONE_AND_MONITOR.md.
    • Color management. Output buffers are 10-bit where the display planes allow it, and each display gets the desktop converted from sRGB to its own gamut, read from its EDID. denialctl color correction off and on compare a display with and without it. Screenshots and screen capture stay sRGB.
    • denialctl color lut load FILE.cube grades the whole desktop with a 3D LUT, and denialctl color app APP_ID lut load FILE.cube grades one app's windows. Display color settings are saved and applied again at the next start.
    • HDR on displays whose EDID offers PQ. denialctl color hdr OUTPUT on switches the output to BT.2100 with SDR content at a chosen white (203 cd/m² by default), and HDR windows keep the display's headroom. srgb is for displays that ignore BT.2020 and show PQ with sRGB primaries.
    • Apps can describe their colors through wp_color_management_v1 and wp_color_representation_v1; Denial converts tagged windows into the desktop's colors.
    • A color tuning panel, opened with Super+Alt+P or denialctl color tune, grades the desktop or a tapped app live: lift, gamma and gain wheels and exposure, contrast, saturation, vibrance, warmth and tint sliders, over a base look from ~/.local/share/denial/luts. It has built-in looks (Warm, Cool, Logix, Matte, Film, Night and Mono), shows the target ungraded while Before is held, and saves on release.
    • Mouse & touchpad settings can switch mouse acceleration off, which gives libinput's flat pointer profile.
    • zwp_input_timestamps_v1: clients get libinput's microsecond time for each key, pointer and touch event.
    • denial_keyboard_inset_v1 lets an app follow the on-screen keyboard's height as it opens, closes and is dragged, and lay itself out around the keys instead of being moved above them.
    • Input deck: a touch display can become a full-screen keyboard and touchpad for the desktop shown on another display.
    • Remote desktops, virtual machines and other apps that ask for it through zwp_keyboard_shortcuts_inhibit_v1 can now receive Super and Denial's other shortcuts while they have focus. Denial asks first: Allow once, Always allow, Decline once or Never allow. The poin
  3. v0.6.1pre-release2026-11-03 · 2026-11-03 21:00 UTC
    查看更新说明

    Denial 0.6.1

    This is a signed x86-64 and AArch64 public-beta release of Denial.

    • Source tag: v0.6.1
    • Source commit: dbdeffa85a9c861ba4c3ad087f0950ecea50414f
    • Signing fingerprint: AE4108FA5E91E26BE0EE331E0F5B3AD16E023091
    • Required packages: denial and denial-flutter-engine
    • Optional plugin tools: denial-plugin-manager
    • Direct downloads: Arch, Alpine 3.24, Debian-family (Debian 13 / Ubuntu 24.04), and Fedora
    • Every direct package has an adjacent detached OpenPGP signature
    • APT repository: Debian 13 (trixie) and Ubuntu 24.04 (noble)
    • Pacman repository: x86-64 and AArch64
    • DNF repository: Fedora 44 x86-64 and AArch64

    Added

    • Packages for ARM64 (AArch64). The Pacman, APT and DNF repositories carry denial, denial-flutter-engine and denial-plugin-manager for ARM64 beside x86-64, and each machine downloads only its own architecture. The setup script configures ARM64 machines, Arch Linux ARM included. Alpine packages stay x86-64.
    • A phone running the mobile shell keeps working as a phone when a monitor is plugged in: the monitor runs the desktop shell beside it. Apps open on the screen they were started from. A recents card's monitor button, or opening the app from the monitor's launcher, moves an app to the monitor; dropping a window on the phone's screen, or opening it from the phone, brings it back. With the monitor in use the power button turns off only the phone, each screen dims on its own, and unplugging moves the monitor's windows to the phone until it returns. The monitor has its own roundness (appearance.monitorCornerRadiusScale) and its own wallpaper, placed and zoomed apart from the phone's (outputZooms in the wallpaper file). See docs/PHONE_AND_MONITOR.md.
    • Color management. Output buffers are 10-bit where the display planes allow it, and each display gets the desktop converted from sRGB to its own gamut, read from its EDID. denialctl color correction off and on compare a display with and without it. Screenshots and screen capture stay sRGB.
    • denialctl color lut load FILE.cube grades the whole desktop with a 3D LUT, and denialctl color app APP_ID lut load FILE.cube grades one app's windows. Display color settings are saved and applied again at the next start.
    • HDR on displays whose EDID offers PQ. denialctl color hdr OUTPUT on switches the output to BT.2100 with SDR content at a chosen white (203 cd/m² by default), and HDR windows keep the display's headroom. srgb is for displays that ignore BT.2020 and show PQ with sRGB primaries.
    • Apps can describe their colors through wp_color_management_v1 and wp_color_representation_v1; Denial converts tagged windows into the desktop's colors.
    • A color tuning panel, opened with Super+Alt+P or denialctl color tune, grades the desktop or a tapped app live: lift, gamma and gain wheels and exposure, contrast, saturation, vibrance, warmth and tint sliders, over a base look from ~/.local/share/denial/luts. It has built-in looks (Warm, Cool, Logix, Matte, Film, Night and Mono), shows the target ungraded while Before is held, and saves on release.
    • Mouse & touchpad settings can switch mouse acceleration off, which gives libinput's flat pointer profile.
    • zwp_input_timestamps_v1: clients get libinput's microsecond time for each key, pointer and touch event.
    • denial_keyboard_inset_v1 lets an app follow the on-screen keyboard's height as it opens, closes and is dragged, and lay itself out around the keys instead of being moved above them.
    • Input deck: a touch display can become a full-screen keyboard and touchpad for the desktop shown on another display.
    • Remote desktops, virtual machines and other apps that ask for it through zwp_keyboard_shortcuts_inhibit_v1 can now receive Super and Denial's other shortcuts while they have focus. Denial asks first: Allow once, Always allow, Decline once or Never allow. The poin
  4. v0.6.0pre-release2026-11-03 · 2026-11-03 13:28 UTC
    查看更新说明

    Denial 0.6.0

    This is a signed x86-64 public-beta release of Denial.

    • Source tag: v0.6.0
    • Source commit: d65792d4309a93f2a4877bfc16bc96df6151506c
    • Signing fingerprint: AE4108FA5E91E26BE0EE331E0F5B3AD16E023091
    • Required packages: denial and denial-flutter-engine
    • Optional plugin tools: denial-plugin-manager
    • Direct downloads: Arch, Alpine 3.24, Debian-family (Debian 13 / Ubuntu 24.04), and Fedora
    • Every direct package has an adjacent detached OpenPGP signature
    • APT repository: Debian 13 (trixie) and Ubuntu 24.04 (noble)
    • DNF repository: Fedora 44 x86-64

    Added

    • A phone running the mobile shell keeps working as a phone when a monitor is plugged in: the monitor runs the desktop shell beside it. Apps open on the screen they were started from. A recents card's monitor button, or opening the app from the monitor's launcher, moves an app to the monitor; dropping a window on the phone's screen, or opening it from the phone, brings it back. With the monitor in use the power button turns off only the phone, each screen dims on its own, and unplugging moves the monitor's windows to the phone until it returns. The monitor has its own roundness (appearance.monitorCornerRadiusScale) and its own wallpaper, placed and zoomed apart from the phone's (outputZooms in the wallpaper file). See docs/PHONE_AND_MONITOR.md.
    • Color management. Output buffers are 10-bit where the display planes allow it, and each display gets the desktop converted from sRGB to its own gamut, read from its EDID. denialctl color correction off and on compare a display with and without it. Screenshots and screen capture stay sRGB.
    • denialctl color lut load FILE.cube grades the whole desktop with a 3D LUT, and denialctl color app APP_ID lut load FILE.cube grades one app's windows. Display color settings are saved and applied again at the next start.
    • HDR on displays whose EDID offers PQ. denialctl color hdr OUTPUT on switches the output to BT.2100 with SDR content at a chosen white (203 cd/m² by default), and HDR windows keep the display's headroom. srgb is for displays that ignore BT.2020 and show PQ with sRGB primaries.
    • Apps can describe their colors through wp_color_management_v1 and wp_color_representation_v1; Denial converts tagged windows into the desktop's colors.
    • A color tuning panel, opened with Super+Alt+P or denialctl color tune, grades the desktop or a tapped app live: lift, gamma and gain wheels and exposure, contrast, saturation, vibrance, warmth and tint sliders, over a base look from ~/.local/share/denial/luts. It has built-in looks (Warm, Cool, Logix, Matte, Film, Night and Mono), shows the target ungraded while Before is held, and saves on release.
    • Mouse & touchpad settings can switch mouse acceleration off, which gives libinput's flat pointer profile.
    • zwp_input_timestamps_v1: clients get libinput's microsecond time for each key, pointer and touch event.
    • denial_keyboard_inset_v1 lets an app follow the on-screen keyboard's height as it opens, closes and is dragged, and lay itself out around the keys instead of being moved above them.
    • Input deck: a touch display can become a full-screen keyboard and touchpad for the desktop shown on another display.
    • Remote desktops, virtual machines and other apps that ask for it through zwp_keyboard_shortcuts_inhibit_v1 can now receive Super and Denial's other shortcuts while they have focus. Denial asks first: Allow once, Always allow, Decline once or Never allow. The pointer release shortcut (Super+Escape by default), VT switching, the emergency exit and the volume and brightness keys stay with Denial, and the release shortcut gives the shortcuts back until the app is focused again.
    • Settings has a Permissions page. It lists the apps that asked for Denial's keyboard shortcuts and sets each to Ask, Always allow or Never allow, effective at
  5. v0.5.1pre-release2026-10-11 · 2026-10-11 19:07 UTC
    查看更新说明

    Denial 0.5.1

    This is a signed x86-64 public-beta release of Denial.

    • Source tag: v0.5.1
    • Source commit: c96375a190a200b6343868afc42d4492b6badb9d
    • Signing fingerprint: AE4108FA5E91E26BE0EE331E0F5B3AD16E023091
    • Required packages: denial and denial-flutter-engine
    • Optional plugin tools: denial-plugin-manager
    • Direct downloads: Arch, Alpine 3.24, Debian-family (Debian 13 / Ubuntu 24.04), and Fedora
    • Every direct package has an adjacent detached OpenPGP signature
    • APT repository: Debian 13 (trixie) and Ubuntu 24.04 (noble)
    • DNF repository: Fedora 44 x86-64

    Added

    • Denial can now compose its Flutter shell from typed built-in and external plugins. The optional denial-plugin-manager package provides the graphical manager, CLI, version-matched compiler kit, validated Apply/recovery flow, and Git-based installation without publishing Denial SDKs on pub.dev.
    • After a Denial update, your plugins now come back on their own. Denial keeps them and their settings, rebuilds them for the new release in the background while its standard desktop runs, and switches back at a quiet moment without a logout. One notification follows the rebuild; if it cannot finish, it explains why and offers Try again, Check for updates, and Open Plugins, and it waits for a network connection when downloads are needed.
    • Plugins now discovers the public denialwm/denial-plugins collection by default. Its first entry is the independently installable Windows-style Taskbar; catalog discovery never installs or enables a plugin automatically.
    • Mouse & touchpad settings can now tune the scrolling layout's continuous three-finger swipe speed independently from two-finger content scrolling.
    • Workspace transitions can now move horizontally or vertically, and four-finger workspace gestures work on either axis.
    • Systemd-managed Denial sessions now launch standard XDG desktop autostart entries after the compositor and its discovered display endpoints are ready.
    • Settings can configure environment variables for applications launched by Denial, globally or for a selected desktop application. Rust validates and atomically persists rules keyed by standard desktop-file IDs; variables can be set, set to an empty string, or removed without changing the compositor or systemd activation environment. Shortcut Application targets preserve the same identity and receive the selected application's rules.
    • End-to-end fractional display scaling now keeps Flutter, native Wayland clients, and Xwayland sharp and consistently sized.
    • Super+Shift+S now opens a compositor-native region screenshot workflow with direct Wayland screencopy support.
    • Shortcuts can now toggle the focused window's always-on-top state in both stacking and managed layouts.
    • Settings now runs as a built-in local Flutter application that can be launched from the desktop and mobile home surfaces.
    • Mobile mode now has a dedicated wallpaper browser with preview, drag positioning, fine alignment controls, and per-display targeting.
    • Simplified Chinese localization and a live language selector are now available throughout the shell and Settings.
    • Appearance settings now include live wallpaper selection and physical cursor-size controls.
    • The desktop system bar now hosts StatusNotifier/AppIndicator items and legacy XEmbed tray icons, including menus and pointer actions.
    • Alpine Linux 3.24 is now a supported x86-64 package target, with native APK packages, OpenRC session integration, installation documentation, and a no-compile release-promotion path.

    Changed

    • The reference desktop, top bar, launcher, and clock are first-party plugins built against the extracted denial_sdk and denial_flutter_sdk contracts. Release validation now builds and verifies the separate Plugin Manager for Pacman, APT, DNF, Alpine direct downloads, and Nix.
    • Denial environment variables now prefer the consistent DENIAL_* prefix while accepting

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    https://github.com/user-attachments/assets/2c7335bb-7363-46b1-8e3a-0d98c36c64b1

    Features

    • Stacking, tiling, and scrolling tiling layouts.
    • Workspaces and touchpad gestures. Plenty of room for projects you'll definitely finish someday.
    • Smooth animations and transitions.
    • Blur and customizable glass. Subtlety is available in Settings.
    • Light and dark themes. Pick an accent color or borrow one from your wallpaper.
    • Settings for layouts, displays, input, shortcuts, and appearance. It's a desktop. You should be able to configure it with a mouse.
    • Live shell editing and hot reload.
    • Wayland apps, optional X11 support through Xwayland, multiple monitors, screenshots, and screen sharing.

    Hyprland and niri users are welcome. We won't tell.

    Glass dashboardAnother mood
    Denial desktop with a translucent dashboard and terminal visualizersDenial desktop with a purple wallpaper, btop, app launcher, and audio visualizer
    Launcher, up closeWuthering Waves, with company
    Glass application launcher over the desktop wallpaperWuthering Waves running with floating lava lamp and audio visualizer terminals

    Support Denial

    There are easier hobbies than writing a compositor. Unfortunately, we like this one.

    If you like where Denial is going, help fund its development.

    Sponsor Denial

    Install

    Denial is in public beta. It runs on Linux. Someone got it running on StarryOS's starry-kernel too. Apparently one kernel wasn't enough. Linux builds support x86-64 and ARM64. Configuration and developer interfaces may change before 1.0.

    First-party Linux binary packages are x86-64 and ARM64. For the distributions below, review the repository setup script, then add the signed repository:

    curl -fsSL https://install.denialwm.org | sh
    

    Setup shows its plan and asks for confirmation before using sudo. Once it finishes, install Denial with the command for your distribution:

    DistributionInstall
    Arch Linux / CachyOS / Omarchy 4.0sudo pacman -Syu denial
    Debian 13 / Ubuntu 24.04 LTSsudo apt update && sudo apt install denial
    Fedora 44sudo dnf install denial

    Alpine Linux 3.24 has signed x86-64 APK downloads. NixOS has a first-party source flake and module. Void Linux has also been tested from source, with no first-party binary yet. openSUSE Tumbleweed has a native local RPM adapter; publication is not connected yet.

    After installing, choose Denial from your display manager's session menu. Plugin development and installation are provided separately by denial-plugin-manager; see the step-by-step plugin guide.

    Installation, updates, and removal · Session setup and renderer options

    Edit the shell

    The shell's UI is editable Flutter code. With the development tools installed, change a widget, save, and watch your desktop update while your Wayland apps keep running. Try to remember what you were supposed to be working on.

    The Flutter 3.47.5 generation ships only the release engine. The optional denial-ui-development package is paused for this generation; its source tooling remains available for an explicitly requested future development engine refresh.

    When a compatible development package is published again, setup remains:

    denialctl ui setup
    

    Open the generated workspace's dart_shell directory in VSCodium for hot reload on save. If an edit goes wrong, denialctl ui restore gets you back to the packaged shell, even when Settings can't open.

    Live development guide · Custom shell framework

    Under the hood

    Rust and Smithay handle Wayland, input, and displays. Flutter draws the shell and application windows together. Yes, that Flutter. It got promoted.

    Explore the architecture · Build from source

    Why Denial

    Denial is an English word. The name contains Denia, followed by one last letter.

    It is a quiet reference to Denia from Wuthering Waves. Her story never gives a simple answer to what she originally was, and that uncertainty is important. What is clear is that others treated her as an asset: something selected, shaped, and assigned a purpose that was not her own. She was meant to remain a vessel. Instead, by observing people and learning to live among them, she grew a heart and gained the ability to choose what she would become.

    Her story reflects Denial's central idea: what something was made to be does not have to determine what it can become.

    Made through dialogue

    Denial was conceived, architected, directed, and tested by Doctor Logix, and developed in continuous collaboration with AI models, mostly Sol 6.1 and Opus 5.5. Its initial implementation was generated through that dialogue.

    Doctor Logix made the design and technical decisions, tested the results on real hardware, and sent the work back when it wasn't right. The models investigated problems, proposed solutions, and wrote the code.

    Authorship is more than typing source code.

    Documentation

    All guides · Control and recovery · Screenshots and screen sharing

    Changelog · Roadmap · Contributing · Security

    License

    Denial's original source code is licensed under GPL-3.0-or-later. Bundled third-party components and media retain their own licenses and attribution notices.