Отключить звук с определенного виртуального дисплея

Вы можете использовать xsltproc для обработки файлов XML с помощью сценариев xslt , также известных как таблицы стилей. Это будет включать как скрипт xslt, так и управляющий скрипт bash. Например:

drompem.xslt

 <xsl:stylesheet version="1.0"
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="ServiceArea">
    <xsl:if test="count(*)>0">
      <ServiceArea>
        <xsl:copy-of select="node()"/>
      </ServiceArea>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

dropem.sh

#!/bin/bash
cat <<EOF | xsltproc dropem.xslt - | tail -n +2
<ALL>
$(cat)
</ALL>
EOF

Фактическая команда тогда будет

./dropem.sh < infile > outfile

Примечания: сценарий xslt включает один элемент «шаблона», который соответствует вашей ServiceArea узлов и условно (если у него есть дочерние элементы) копирует его в результат.

Входные данные должны быть заключены в пару закрывающих тегов, поскольку xsltproc обрабатывает только одно дерево XML. Обертка превращает ваш файл данных в единое дерево. Обертка не сохраняется для вывода, который снова является списком поддеревьев ServiceArea.

Однако вывод обрезается, чтобы избежать преамбулы и пустой строки, которую xsltproc не может избежать.

Преимущество этого подхода в том, что он менее чувствителен к формату строки входного файла. Недостатком является то, что он использует xslt , который является менее распространенным языком.

1
04.07.2013, 02:29
1 ответ

Звук не связан с дисплеем, поэтому нет, вы не можете отключить звук с помощью дисплея. Но вы можете отключить звук по приложению. Простой способ - запустить графический интерфейс pavucontrol : он показывает регуляторы громкости для воспроизведения и записи для каждого приложения, в котором открыто соединение PulseAudio.

В качестве альтернативы, если вы контролируете способ запуска приложения, скажите ему не связываться с существующим сервером PulseAudio.

PULSE_SERVER=none vlc /path/to/sound.ogg
1
29.04.2021, 00:48

Теги

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