Compare commits

...

2 Commits

Author SHA1 Message Date
0064170430 feat: add mpv with ModernZ OSC as default video player
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 3s
- mpv-modernz-git + mpv-thumbfast-git in aur.txt
- /etc/mpv/mpv.conf disables stock OSC + title bar
- /etc/mpv/script-opts/modernz.conf overrides colors to Catppuccin Mocha (lavender accent)
- moonarch-doctor checks deployed mpv configs
2026-04-24 17:32:05 +02:00
39094ee026 fix(stasis): flip ignore_remote_media so browser video inhibits idle
Browsers only raise org.freedesktop.ScreenSaver.Inhibit during fullscreen
playback; a windowed YouTube tab sent no inhibit, so stasis ran the full
idle plan to suspend despite active video. Letting browser MPRIS count
as a media player closes the gap without the wake-lock hacks.

See DECISIONS.md (2026-04-24).
2026-04-24 14:40:30 +02:00
7 changed files with 62 additions and 2 deletions

View File

@ -39,6 +39,15 @@ Waybar wird über `moonarch-waybar` gestartet (nicht direkt). Der Wrapper merged
- Benötigt `jq` (in PKGBUILD als Dependency) - Benötigt `jq` (in PKGBUILD als Dependency)
- System-Config muss valides JSON sein (kein JSONC) - System-Config muss valides JSON sein (kein JSONC)
## mpv + ModernZ OSC
Videoplayer ist `mpv` mit [ModernZ](https://github.com/Samillion/ModernZ) als OSC, Thumbnails via thumbfast:
- `mpv-modernz-git` liefert `modernz.lua` + Font + Default-Config nach `/etc/mpv/`
- `mpv-thumbfast-git` liefert `thumbfast.lua` nach `/etc/mpv/scripts/` (wird von ModernZ automatisch erkannt)
- `defaults/etc/mpv/mpv.conf` deaktiviert Stock-OSC (`osc=no`) und Titelleiste (`title-bar=no`)
- `defaults/etc/mpv/script-opts/modernz.conf` überschreibt die Farben auf Catppuccin Mocha (Lavender als Accent, matcht waybar/swaync)
- Deploy via moonarch-git: staging nach `/usr/share/moonarch/mpv/`, `post_install` kopiert nach `/etc/mpv/` (modernz.conf wird dabei gegenüber dem AUR-Default überschrieben — gleiches Pattern wie foot.ini/waybar style.css)
## System Health Check (moonarch-doctor / moondoc) ## System Health Check (moonarch-doctor / moondoc)
Diagnose-Script das den Systemzustand gegen moonarch-Defaults prüft: Diagnose-Script das den Systemzustand gegen moonarch-Defaults prüft:

View File

@ -1,5 +1,11 @@
# Decisions # Decisions
## 2026-04-24 Stasis: flip `ignore_remote_media` to false for browser video
- **Who**: Dominik, ClaudeCode
- **Why**: Idle was firing on a second machine even while a video was playing in the browser. Original config carried the comment "browser uses D-Bus inhibit" and set `ignore_remote_media true`, deliberately excluding browser MPRIS on the assumption that Firefox/Chromium would keep the session alive via `org.freedesktop.ScreenSaver.Inhibit`. Verified against browser behavior: both browsers only raise that inhibit during **fullscreen** video playback (Firefox also requires `dom.screenwakelock.enabled`, default off on Linux). Windowed playback — the common case, YouTube in a tab — sends no inhibit, so stasis saw zero inhibitors and zero media players and ran the full idle plan to suspend. Upstream example config lists `r"firefox.*"` in `inhibit_apps` for exactly this reason; Moonarch removed it without a working substitute.
- **Tradeoffs**: Three options. (A) Put `firefox`/`chromium` back into `inhibit_apps` — works but inhibits whenever the browser *process* is running, even with zero tabs playing; wrong shape. (B) Tell users to flip `dom.screenwakelock.enabled` per browser — pushes per-user config, fragile across browsers. (C) Let browser MPRIS count as a media player by setting `ignore_remote_media false` — stasis already tracks playback state, so it only inhibits during actual playback. Picked C. Cost: any MPRIS source stasis classifies as "remote" (e.g. a Chromecast bridge) now also inhibits; acceptable — that is usually what a user wants anyway, and the inhibit releases the moment playback stops.
- **How**: `defaults/xdg/stasis/stasis.rune``ignore_remote_media true``false`, comment rewritten to document the fullscreen-only D-Bus behavior. PKGBUILD deploys to `/etc/xdg/stasis/stasis.rune`; existing users still need the 2026-04-22 seed mechanism (or a manual merge) to pick it up in `~/.config/stasis/stasis.rune`.
## 2026-04-22 moonarch-doctor housekeeping: drop stale check, add missing services ## 2026-04-22 moonarch-doctor housekeeping: drop stale check, add missing services
- **Who**: Dominik, ClaudeCode - **Who**: Dominik, ClaudeCode
- **Why**: Noticed while running `moondoc` on a healthy system that it reported `Paru [moonarch-pkgbuilds] repo missing from /etc/paru.conf` — a false failure. The paru PKGBUILD-repo mechanism was retired on 2026-04-20 in favor of the registry-only flow, and the `moonarch-git` install hook strips the legacy paru.conf section on upgrade; the doctor script was not updated in lockstep. Audit of the rest of the script surfaced two related gaps: the user-services loop skipped `walker.service` and `nautilus.service`, even though the PKGBUILD ships both in `/etc/systemd/user/` and enables them via `graphical-session.target.wants` symlinks. A silently missing walker or nautilus would not show up in diagnostics. - **Why**: Noticed while running `moondoc` on a healthy system that it reported `Paru [moonarch-pkgbuilds] repo missing from /etc/paru.conf` — a false failure. The paru PKGBUILD-repo mechanism was retired on 2026-04-20 in favor of the registry-only flow, and the `moonarch-git` install hook strips the legacy paru.conf section on upgrade; the doctor script was not updated in lockstep. Audit of the rest of the script surfaced two related gaps: the user-services loop skipped `walker.service` and `nautilus.service`, even though the PKGBUILD ships both in `/etc/systemd/user/` and enables them via `graphical-session.target.wants` symlinks. A silently missing walker or nautilus would not show up in diagnostics.

View File

@ -0,0 +1,5 @@
# Disable stock OSC — ModernZ replaces it.
osc=no
# Hide native title bar for a cleaner borderless look (ModernZ draws its own).
title-bar=no

View File

@ -0,0 +1,32 @@
# ABOUTME: ModernZ OSC overrides for moonarch — Catppuccin Mocha palette.
# ABOUTME: Only keys that diverge from upstream defaults; Lua defaults fill the rest.
# --- Background ---
osc_color=#181825
thumbnail_box_color=#11111b
thumbnail_box_outline=#45475a
# --- Text ---
window_title_color=#cdd6f4
window_controls_color=#cdd6f4
title_color=#cdd6f4
cache_info_color=#a6adc8
time_color=#cdd6f4
chapter_title_color=#cdd6f4
# --- Buttons ---
side_buttons_color=#cdd6f4
middle_buttons_color=#cdd6f4
playpause_color=#cdd6f4
held_element_color=#6c7086
# --- Accent (Lavender, matches waybar glow / swaync border) ---
seekbarfg_color=#b4befe
seekbarbg_color=#45475a
seekbar_cache_color=#585b70
seek_handle_color=#b4befe
seek_handle_border_color=#cba6f7
hover_effect_color=#b4befe
nibble_color=#b4befe
nibble_current_color=#cdd6f4
nibbles_style=gap

View File

@ -5,9 +5,11 @@
@description "Idle management for Moonarch (Niri + moonlock)" @description "Idle management for Moonarch (Niri + moonlock)"
default: default:
# Media playback inhibits idle (non-browser only, browser uses D-Bus inhibit) # Media playback inhibits idle. Browsers expose MPRIS during video playback
# and only send D-Bus idle-inhibit in fullscreen, so we include remote media
# to catch windowed browser videos.
monitor_media true monitor_media true
ignore_remote_media true ignore_remote_media false
# App/process inhibit patterns (apps that don't use D-Bus idle-inhibit) # App/process inhibit patterns (apps that don't use D-Bus idle-inhibit)
inhibit_apps [ inhibit_apps [

View File

@ -30,6 +30,10 @@ wl-color-picker
blueberry blueberry
waterfox-bin waterfox-bin
# Media
mpv-modernz-git
mpv-thumbfast-git
# System & Tools # System & Tools
auto-cpufreq auto-cpufreq
stasis stasis

View File

@ -199,6 +199,8 @@ check_config_match "/etc/xdg/swaync/style.css" "$SRC/swaync/style.css"
check_config_match "/etc/greetd/config.toml" "$SRC/greetd/config.toml" check_config_match "/etc/greetd/config.toml" "$SRC/greetd/config.toml"
check_config_match "/etc/greetd/niri-greeter.kdl" "$SRC/greetd/niri-greeter.kdl" check_config_match "/etc/greetd/niri-greeter.kdl" "$SRC/greetd/niri-greeter.kdl"
check_config_match "/etc/moongreet/moongreet.toml" "$SRC/moongreet/moongreet.toml" check_config_match "/etc/moongreet/moongreet.toml" "$SRC/moongreet/moongreet.toml"
check_config_match "/etc/mpv/mpv.conf" "$SRC/mpv/mpv.conf"
check_config_match "/etc/mpv/script-opts/modernz.conf" "$SRC/mpv/modernz.conf"
if [[ -f /etc/zsh/zshrc.moonarch ]]; then if [[ -f /etc/zsh/zshrc.moonarch ]]; then
pass "/etc/zsh/zshrc.moonarch" pass "/etc/zsh/zshrc.moonarch"