Отправка музыки из определенного приложения на определенный звуковой выход через командную строку

Не используйте QT_AUTO_SCREEN_SCALE_FACTOR. Судя по моему опыту, это вызывает какое-то странное масштабирование по умолчанию.

Вместо этого используйте QT_SCALE_FACTOR=1.5.
(или любого другого размера, поддерживает дробное масштабирование.)

Отлично работает на Dell с дисплеем 4K.

Вы также можете добавить это в панель запуска рабочего стола:

Exec=env QT_SCALE_FACTOR=1.5 /path/to/app

Источник:Это работает на моей машине с дисплеем 4k.

1
05.12.2020, 02:55
1 ответ

Следующий сценарий bash решает проблему для моего сценария. Я использую Brave Browser исключительно для воспроизведения музыки (, а другие браузеры использую для чего-то еще ). Мой привет -fi — это какой-то ресивер объемного звучания, подключенный через Bluetooth:

#!/bin/bash
    
# Collect all sinks
sinkList=$(pactl list sinks | tr '\n' '\r' | perl -pe 's/Sink #([0-9]+).+?device\.description = "([^\r]+)"\r.+?(?=Sink #|$)/\1:"\2",/g' | tr '\r' '\n')
IFS="," read -a sinksArray <<< "$sinkList"

# Is our Hi-fi sink available? → Use for loop with indexes to handle spaces in names
for ((i = 0; i < ${#sinksArray[@]}; i++)); do
  sink="${sinksArray[$i]}"
  #echo "sink found: $sink"

  # Search for this output device's name
  [[ "$sink" =~ "Philips HTB" ]] && hifiSinkIndex=$(echo $sink | cut -d':' -f1)
done

if [[ $hifiSinkIndex ]]; then
  echo "Hi-fi sink has index $hifiSinkIndex"

  # Collect all sound streams
  musicSourcesList=$(pactl list sink-inputs | tr '\n' '\r' | perl -pe 's/Sink Input #([0-9]+).+?application\.process\.binary = "([^\r]+)"\r.+?(?=Sink Input #|$)/\1:\2\r/g' | tr '\r' '\n')

  for soundSource in $musicSourcesList; do
    binary=$(echo $soundSource | cut -d':' -f2);
    index=$(echo $soundSource | cut -d':' -f1);
    #echo "index: $index, binary: $binary";

    # Brave browser is our music player, so we only care about that
    if [[ "$binary" == "brave" ]]; then
      echo "moving Brave output to $hifiSinkIndex"
      pactl move-sink-input $index $hifiSinkIndex
    fi
  done
else
  echo "Hi-fi sink was not found"
fi

Сценарий можно легко настроить в зависимости от того, какое имя динамика и какое приложение искать.

Я добавил ярлык этого скрипта на свою панель для запуска одним -кликом только при необходимости.

pactlвходит в комплект поставки pulseaudio-utils. С pacmdкоманды будут аналогичны.

Источники и источники вдохновения:

1
18.03.2021, 22:45

Теги

Похожие вопросы