NoSignal-OS/os updates/notif-clear-fix/install-notif-clear-fix.sh
28allday 19fd794b6b NoSignal — fully-offline Arch → Hyprland desktop installer
Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a
fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop:
matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU
detection, and a curated "os updates" layer (keybind cheatsheet, settings
panels, system polish, on-box management skill). See README.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 11:03:10 +01:00

38 lines
1.5 KiB
Bash
Executable file

#!/bin/sh
# install-notif-clear-fix.sh — idempotent. REQUIRES ROOT (writes the package-owned
# shell file under /etc/xdg).
#
# Fixes the NoSignal notifications popout "Clear" button, which did nothing
# (called n.notification?.dismiss() instead of n.close(); see README).
#
# NsNotifications.qml is shipped by the `nosignal-shell` package (baked into the
# fork). The REAL fix is in the fork source — this fallback patch is for already-
# installed boxes and is reverted by the next nosignal-shell upgrade (which will
# carry the fixed file). The builder bakes the fix into the fork and sets
# NOSIGNAL_SKIP_SHELL_PATCH so this step is skipped there.
set -eu
SELF_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
TARGET=/etc/xdg/quickshell/caelestia/modules/nsbar/panels/NsNotifications.qml
if [ -n "${NOSIGNAL_SKIP_SHELL_PATCH:-}" ]; then
echo ":: skipping fallback shell patch (NOSIGNAL_SKIP_SHELL_PATCH — fork bakes the fix)"
exit 0
fi
[ "$(id -u)" -eq 0 ] || { echo "must run as root (writes $TARGET)" >&2; exit 1; }
if [ ! -f "$TARGET" ]; then
echo "WARNING: $TARGET not present — nosignal-shell not installed here; nothing to patch." >&2
exit 0
fi
if grep -q 'Notifs.list.slice()' "$TARGET"; then
echo ":: NsNotifications Clear already fixed — nothing to do."
exit 0
fi
cp -a "$TARGET" "$TARGET.prefix.bak"
install -m 0644 "$SELF_DIR/NsNotifications.qml" "$TARGET"
echo ":: patched $TARGET (backup: $TARGET.prefix.bak)"
echo ":: reload the shell to apply: 'caelestia shell -d' restart, or log out/in."