44 lines
1.2 KiB
Bash
Executable File
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
|