KDE_monitor_audio-swap.md
· 1.3 KiB · Markdown
Raw
A small script to swap between main monitor+audio source to secondary monitor+audio. Either just swap which is set as primary, or also disable the secondary.
Add "Command or Script" shortcut to trigger it from the keyboard.
```sh
#!/usr/bin/env bash
# Enable/Activate both monitors and get info from `kscreen-doctor -o | grep -A3 Output`
# Get audio sinks from `pactl list sinks short`
monitorMain="DP-2"
audioMain="alsa_output.pci-0000_0a_00.3.analog-stereo"
monitorTV="HDMI-0"
audioTV="alsa_output.pci-0000_08_00.1.hdmi-stereo"
fullSwap="false" # when set to false we'll only swap primary - not disable the secondary
currentPrimary=$(kscreen-doctor -o | grep -B 4 "priority 1" | awk '/Output/{ print $3 }')
if [[ "$currentPrimary" == "$monitorMain" ]]; then
if [[ "$fullSwap" == "true" ]]; then
kscreen-doctor output.${monitorTV}.enable output.${monitorTV}.primary output.${monitorMain}.disable
else
kscreen-doctor output.${monitorTV}.primary
fi
sleep 1
pactl set-default-sink "${audioTV}"
else
if [[ "$fullSwap" == "true" ]]; then
kscreen-doctor output.${monitorMain}.enable output.${monitorMain}.primary output.${monitorTV}.disable
else
kscreen-doctor output.${monitorMain}.primary
fi
sleep 1
pactl set-default-sink "${audioMain}"
fi
```
A small script to swap between main monitor+audio source to secondary monitor+audio. Either just swap which is set as primary, or also disable the secondary. Add "Command or Script" shortcut to trigger it from the keyboard.
#!/usr/bin/env bash
# Enable/Activate both monitors and get info from `kscreen-doctor -o | grep -A3 Output`
# Get audio sinks from `pactl list sinks short`
monitorMain="DP-2"
audioMain="alsa_output.pci-0000_0a_00.3.analog-stereo"
monitorTV="HDMI-0"
audioTV="alsa_output.pci-0000_08_00.1.hdmi-stereo"
fullSwap="false" # when set to false we'll only swap primary - not disable the secondary
currentPrimary=$(kscreen-doctor -o | grep -B 4 "priority 1" | awk '/Output/{ print $3 }')
if [[ "$currentPrimary" == "$monitorMain" ]]; then
if [[ "$fullSwap" == "true" ]]; then
kscreen-doctor output.${monitorTV}.enable output.${monitorTV}.primary output.${monitorMain}.disable
else
kscreen-doctor output.${monitorTV}.primary
fi
sleep 1
pactl set-default-sink "${audioTV}"
else
if [[ "$fullSwap" == "true" ]]; then
kscreen-doctor output.${monitorMain}.enable output.${monitorMain}.primary output.${monitorTV}.disable
else
kscreen-doctor output.${monitorMain}.primary
fi
sleep 1
pactl set-default-sink "${audioMain}"
fi