AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1204000
Accepted
Roger Lipscombe
Roger Lipscombe
Asked: 2020-01-19 09:31:17 +0800 CST2020-01-19 09:31:17 +0800 CST 2020-01-19 09:31:17 +0800 CST

Saída de áudio errada após o desbloqueio

  • 772

Não acredito que seja uma duplicata do Ubuntu alterando a saída de áudio padrão após suspender , porque não estou suspendendo o PC.

Eu tenho 3 saídas de áudio (fones de ouvido analógicos, amplificador digital USB, fone de ouvido USB) e 2 entradas de áudio (fone de ouvido, microfone de webcam) no meu PC de mesa.

Quando desbloqueio o PC, ele mudou a saída de áudio padrão para o fone de ouvido USB, embora eu prefira usar os fones de ouvido analógicos.

Estranhamente, no entanto, a música (via Clementine) continua a sair dos meus fones de ouvido; é só que os controles de volume do meu teclado alteram o volume do fone de ouvido USB.

Eu suspeito (mas não sei) que pode ser porque o fone de ouvido USB está conectado através do hub no meu monitor, que desliga quando o PC está bloqueado e, presumivelmente, resulta em um evento de conexão USB quando ligado novamente.

Como posso consertar isso?

(Ubuntu 18.04)

sound
  • 3 3 respostas
  • 1687 Views

3 respostas

  • Voted
  1. Best Answer
    Roger Lipscombe
    2020-01-20T02:09:31+08:002020-01-20T02:09:31+08:00

    tl; dr? Role até o final.

    Monitoramento para bloqueio/desbloqueio de tela

    Adaptado daqui , este monitora para bloqueio/desbloqueio de tela:

    #!/bin/bash
    
    watch="type=signal,interface=org.gnome.ScreenSaver"
    screen_locked_signal="boolean true"
    screen_unlocked_signal="boolean false"
    
    dbus-monitor --session "$watch" | ( \
        while read signal; do
            if [[ "$signal" =~ "$screen_locked_signal" ]]; then
                echo "Screen Locked"
            elif [[ "$signal" =~ "$screen_unlocked_signal" ]]; then
                echo "Screen Unlocked"
            fi
        done)
    

    PulseAudio

    Você pode descobrir qual fonte e coletor estão sendo usados ​​no momento da seguinte maneira:

    $ pactl info | grep -E 'Default (Source|Sink):'
    Default Sink: alsa_output.usb-Logitech_Inc._Logitech_USB_Headset_H340-00.analog-stereo
    Default Source: alsa_input.usb-Logitech_Inc._Logitech_USB_Headset_H340-00.analog-stereo
    

    (Este é o meu fone de ouvido USB)

    Você pode alternar a fonte e o coletor da seguinte maneira:

    $ pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
    $ pactl set-default-source alsa_input.pci-0000_00_1b.0.analog-stereo
    

    (Use saída e entrada analógicas)

    Você pode obter uma lista completa de fontes e coletores com pactl list short sinkse pactl list short sources, mas há entradas extras lá. Provavelmente é melhor alternar usando as ferramentas de interface do usuário e depois usar pactl infopara descobrir as apropriadas.


    Roteiro final

    Isso resulta em um script que se parece com isso:

    #!/bin/bash
    
    # GNOME
    watch="type=signal,interface=org.gnome.ScreenSaver"
    screen_locked_signal="boolean true"
    screen_unlocked_signal="boolean false"
    
    # PulseAudio: use pactl
    _get_default_sink() {
        pactl info | sed -n 's/^Default Sink: \(.*\)/\1/p'
    }
    
    _get_default_source() {
        pactl info | sed -n 's/^Default Source: \(.*\)/\1/p'
    }
    
    _set_default_sink() {
        pactl set-default-sink "$1"
    }
    
    _set_default_source() {
        pactl set-default-source "$1"
    }
    
    last_sink=$(_get_default_sink)
    last_source=$(_get_default_source)
    echo "sink is $last_sink; source is $last_source"
    
    # Watch for screensaver D-Bus signals
    dbus-monitor --session "$watch" | ( \
        while read signal; do
            if [[ "$signal" =~ "$screen_locked_signal" ]]; then
                # Screen locked: remember the current default sink and source
                last_sink=$(_get_default_sink)
                last_source=$(_get_default_source)
                echo "Screen Locked; sink was $last_sink; source was $last_source"
            elif [[ "$signal" =~ "$screen_unlocked_signal" ]]; then
                # Screen unlocked: restore the last default sink and source
                _set_default_sink "$last_sink"
                _set_default_source "$last_source"
                echo "Screen Unlocked; sink is $(_get_default_sink); source is $(_get_default_source)"
            fi
        done)
    

    Iniciar o script automaticamente

    Para garantir que esse script seja executado assim que você efetuar login, você pode usar gnome-session-propertiese adicionar um aplicativo de inicialização (chamei o meu "Monitor Screensaver") apontando para o script. Ele criará um ~/.config/autostart/monitor-screensaver.desktoparquivo contendo o seguinte:

    [Desktop Entry]
    Type=Application
    Exec=/home/roger/bin/monitor-screensaver
    Hidden=false
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    Name[en_GB]=Monitor Screensaver
    Name=Monitor Screensaver
    Comment[en_GB]=
    Comment=
    
    • 2
  2. jarno
    2020-01-20T14:05:20+08:002020-01-20T14:05:20+08:00

    Outra maneira de lidar com isso é através da configuração do PulseAudio.

    Você poderia correr

    pactl unload-module module-switch-on-connect
    

    antes de travar e

    pactl load-module module-switch-on-connect
    

    após o desbloqueio. ( pacmdpode ser usado em vez de pactl.)

    Alternativamente, você pode desabilitar (leia: comente) o carregamento do módulo no default.paarquivo de configuração; veja man 5 default.pa. Então você tem que mudar o dispositivo padrão manualmente.

    • 1
  3. TikTaZ
    2022-01-18T04:33:03+08:002022-01-18T04:33:03+08:00

    Uma solução mais fácil é comentar a linha load-module module-switch-on-port-availablee /etc/pulse/default.pareiniciar o pulso compulseaudio -k

    Fonte: https://askubuntu.com/a/228623/654555

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve