nevaforget 496a7a4c72 fix: address audit findings — security, performance, and correctness
- Use absolute paths for all binaries in power.rs to prevent PATH hijacking
- Implement POWER_TIMEOUT via try_wait() polling (was declared but unused)
- Fix potential panic in load_background_texture when GResource path
  fails to_str() — now falls back to known wallpaper resource path
- Compress wallpaper.jpg in GResource bundle (saves ~374 KB in binary)
- Merge double idle_add_local_once into single cycle for faster focus
- Centralize GRESOURCE_PREFIX as pub(crate) const in main.rs
- Fix fallback user UID from 0 (root) to u32::MAX
- Fix CSS comment: "square card" → "circular card" (border-radius: 50%)
2026-03-28 10:13:18 +01:00

Moonset

Wayland Session Power Menu for the Moonarch ecosystem.

A fullscreen overlay triggered by keybind with 5 actions: Lock · Logout · Hibernate · Reboot · Shutdown

Features

  • Rust + gtk4-rs + gtk4-layer-shell (OVERLAY layer — above Waybar)
  • Catppuccin Mocha theme
  • Multi-monitor support (wallpaper on secondary monitors)
  • Inline confirmation for destructive actions
  • Escape or background click to dismiss
  • DE/EN localization
  • Configurable wallpaper (TOML)

Installation

cargo build --release
install -Dm755 target/release/moonset /usr/bin/moonset

Or via PKGBUILD:

cd pkg && makepkg -si

Usage

# Launch directly
moonset

# Via Niri keybind (in ~/.config/niri/config.kdl)
# binds {
#     Mod+Escape { spawn "moonset"; }
# }

Configuration

Config file: ~/.config/moonset/moonset.toml or /etc/moonset/moonset.toml

# Path to background image (optional)
background_path = "/usr/share/moonarch/wallpaper.jpg"

Wallpaper fallback: config → /usr/share/moonarch/wallpaper.jpg → bundled package wallpaper

Development

# Tests
cargo test

# Release build
cargo build --release

Part of the Moonarch ecosystem

  • moonarch — Reproducible Arch Linux setup
  • moongreet — greetd greeter for Wayland
  • moonlock — Wayland lockscreen
  • moonset — Session power menu
Description
No description provided
Readme 845 KiB
Languages
Rust 95%
CSS 3.6%
Shell 1.4%