Files
nixos-config/scripts/screen-mirror.sh
T
2026-03-31 16:53:11 +02:00

44 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
if pkill -x wl-mirror; then
notify-send "wl-mirror" "Mirroring stopped" -i video-display
exit 0
fi
if command -v niri >/dev/null && niri msg outputs >/dev/null 2>&1; then
ACTIVE_OUTPUTS=$(niri msg outputs | awk -F'[()]' '/^Output/ {print $2}')
SOURCE_TOOL="Niri"
elif command -v wlr-randr >/dev/null; then
ACTIVE_OUTPUTS=$(wlr-randr | awk '/^[^ ]/ {name=$1} /Enabled: yes/ {print name}')
SOURCE_TOOL="wlr-randr"
else
notify-send "Mirror Error" "Neither 'niri' nor 'wlr-randr' found." -u critical
exit 1
fi
INTERNAL=""
EXTERNAL=""
for out in $ACTIVE_OUTPUTS; do
if [[ $out == eDP* ]]; then
INTERNAL="$out"
else
EXTERNAL="$out"
fi
done
if [[ -z "$INTERNAL" ]]; then
notify-send "Mirror Error" "Internal screen (eDP) not found." -u critical
exit 1
fi
if [[ -z "$EXTERNAL" ]]; then
notify-send "Mirror Status" "No external monitor detected." -u low
exit 1
fi
notify-send "wl-mirror ($SOURCE_TOOL)" "Mirroring $INTERNAL$EXTERNAL" -i video-display
wl-mirror --fullscreen-output "$EXTERNAL" --scaling fit "$INTERNAL" || \
notify-send "Mirror Error" "Failed to start wl-mirror" -u critical