повторно установить XFCE4-Pulseaudio-плагин по умолчанию после режима ожидания монитора HDMI

У меня была такая же проблема на CentOS 6 на VirtualBox с 1 включенным сетевым адаптером. После установки по умолчанию у него был только локальный адаптер обратной петли 127.0.0.1 {{1} } Хотя я мог запустить мостовую сеть вручную, введя команду

dhclient -v eth1

, она не запускалась автоматически при загрузке. Решением для меня было настроить конфигурацию сети следующим образом:

$ cd /etc/sysconfig/network-scripts; 
$ cp ifcfg-eth0 ifcfg-eth1
$ vi ifcfg-eth1

и изменить следующие строки:

DEVICE="eth1"                 # set device name to ether
ONBOOT="yes"
HWADDR="08:00:27:20:9D:71"    # must match to VirtualBox "MAC address" value

остальные строки в ifcfg-eth1 остаются такими же, как в исходном ifcfg-eth0 файле:

BOOTPROTO="dhcp" 
NM_CONTROLLED="yes"
TYPE="Ethernet" 
UUID="7830e5b9-785b-4650-b1ce-caf9f9c257f5"

Теперь сохраните ifcfg-eth1 и перезапустите сетевую службу

$ /etc/init.d/network restart

Проверить $ ifconfig

eth1      Link encap:Ethernet  HWaddr 08:00:27:20:9D:71  
      inet addr:192.168.0.20  Bcast:192.168.0.255  Mask:255.255.255.0
      inet6 addr: fe80::a00:27ff:fe20:9d71/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:958 errors:0 dropped:0 overruns:0 frame:0
      TX packets:452 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:106251 (103.7 KiB)  TX bytes:74948 (73.1 KiB)
      Interrupt:10 Base address:0xd020 

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
1
23.12.2018, 13:52
2 ответа

Хорошо, происходит следующее:

Каждый порт приемника находится в состоянии «доступен», а перевод монитора HDMI в режим ожидания переводит состояние порта в состояние «недоступно».

Приемник по умолчанию также может рассматриваться как резервный приемник:Это приемник, который используется Pulseaudio, не может назначить допустимый приемник приложению, использующему кэш потока (, где он запоминает, какой поток использовался которые тонут ). Таким образом, он не может удерживать приемник по умолчанию, указывающий на что-то, что нельзя использовать для этой цели, поэтому приемник по умолчанию переключается на любой другой доступный приемник.

И когда монитор выходит из режима ожидания, приемник по умолчанию остается и не переключается обратно (нет «предпочтительного» приемника по умолчанию ).

Самый простой способ решить эту проблему — написать простое приложение Pulseaudio, которое подписывается на изменения конфигурации (см. здесь для примера ), и когда ваш приемник HDMI снова становится доступным, устанавливает его по умолчанию.

Другим вариантом может быть использование pactl subscribe, разбор вывода и выполнение того же самого в сценарии оболочки.

2
27.01.2020, 23:31

Вот пример того, как я анализирую вывод 'pactl subscribe'.

В этом примере триггером действия была строка «Изменение события на карте #0» при подключении или отключении наушников.

#!/bin/bash

function MySubscription() {
    if [ "$1" != "Event change on card #0" ]; then
        return 0
    fi

    #detect plug state
    pactl list | grep "analog-output-headphones" | grep "not available" > /dev/null
    STATE=$?

    if [ $STATE -eq 0 ]; then
        echo "headphones unplugged"
        #YOUR COMMAND HERE
    else
        echo "headphones plugged"
        #YOUR COMMAND HERE
    fi

    return 0
}

export -f MySubscription
pactl subscribe | xargs -I {} bash -c 'MySubscription "$@"' _ {}
1
29.03.2020, 14:47

Теги

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