Script para gerenciar cabos virtuais em interface gráfica

Na tradição do meu tópico de BD_PROCHOT, venho aqui fazer mais um script inspirado em um tópico random do site.

Requisitos de sistema

  • Comando gawk
  • Comando zenity
  • Áudio via Pulseaudio (se você não sabe do que estou falando, você tem)

Instalação

Como se usa

Ao abrir o programa pela primeira vez, tem-se uma tela com 3 opções:

  • Criar nova: Cria uma nova saída virtual. Pede um nome interno para o sistema identificar, uma(s) saída(s) para a qual a saída virtual se conecta (pode ser inclusive outra saída virtual), e uma “descrição” (o nome com o qual ela vai aparecer nas interfaces de usuário, como o KDE Plasma, pavucontrol etc.)
  • Deletar todas: Acho que se explica sozinha.
  • Gerar arquivo de configuração: Reescreve o arquivo ./config/pulse/default.pa para que a configuração de cabos virtuais seja reproduzida no próximo reboot.

Depois de criar uma sink, ela aparece como opção no programa:

Clicar nela e dar OK dá duas opções que se explicam sozinhas:
image

Depois de criadas as saídas, os próprios programas, ou o aplicativo pavucontrol vão permitir que você direcione os aplicativos para cada saída:


Aqui: Ajuste com o Pavucontrol

No OBS Studio, para diferenciar a saída virtual, basta adicionar um dispositivo de saída PulseAudio na lista de entradas e escolher sua sink:
image

Enfim, é isso, espero que vos seja útil.

12 curtidas

Cara, você é um gênio!!!

Vou passar a fazer minhas lives do linux graças à você!
Muito obrigado mesmo!

Interessante demais!

Não consegui usar.
Apareceu uma mensagem no terminal:

image

Quando tento criar uma skin aparece isso:

image

Me esqueci que o Ubuntu vem com um AWK (analisador de dados) diferenciado que não tem algumas funções que esse programa precisa.

Primeiro, o Awk com funções a mais:
sudo apt install gawk

E para fazer o programa usá-lo, no arquivo ./awklets/pacmd.sh, procure a seção

sink_data_get() (
    cd awklets
    pacmd list-sinks | awk '
    @include "sink-data-get.awk"
    function data_get() {
        '"$1"'
    }'
)

Troque awk por gawk.

Se isso resolver, vou embutir a correção no código.

1 curtida

Funcionou.
Muito obrigado!

1 curtida