컴퓨터가 일시 중지 상태에서 다시 시작될 때마다(저는 자주 수행합니다) 오디오가 약간 깨집니다. 내 컴퓨터에서 EasyEffects EQ를 사용하고 있으며 시작 시 이퀄라이저를 적용하기 위해 실행됩니다. 그러나 컴퓨터가 절전 모드에서 다시 시작되면 기본 오디오 장치가 약간 복잡해집니다. 기본값은 EasyEffects EQ이지만 오디오가 사라집니다오직EasyEffects는 기본 오디오 싱크이므로
일반적으로 기본값으로 설정된 장치는 일반 아날로그 수신기입니다. 이 문제를 해결하기 위해 pavucontrol을 사용할 때 아날로그 수신기를 기본값으로 설정하면 오디오만 통과하게 되는데,감성지능이 없네,하지만 기본값을 EasyEffects EQ로 설정하면,좋은 결과. 이전에는 기본 설정이었지만 아날로그 수신기를 기본 설정으로 설정한 다음 EQ를 기본 설정으로 설정한 후에만 작동했습니다.
이 문제를 해결하기 위해 systemd를 사용하여 스크립트를 만들려고 합니다. pactl을 사용하여 아날로그 수신기를 기본값으로 설정한 다음 EQ 수신기를 기본값으로 설정합니다. 문제는 절전 모드에서 다시 시작한 후 서비스를 실행한다는 목표가 "--user" 시스템 서비스가 아닌 일반 시스템 서비스에서만 작동한다는 것입니다. 어떻게 해결할 수 있나요? "사용자" 시스템 서비스로 실행하려고 하면 작동하지만 절전 모드에서 다시 시작한 후 자동으로 시작되지 않습니다. 일반 systemd 서비스로 실행하면 systemd 서비스에서 "user", "environment"를 지정해도 "sudo pactl"이 동작하지 않아서 동작하지 않습니다.
정지 후 실행되게 하는 다른 방법이 있나요? 아니면 일반(루트) 시스템 서비스에서 해당 특정 명령을 실행하도록 할 수도 있습니다.내 사용자루트 액세스 권한이 없습니까?
일시 중지에서 다시 시작한 후 실행할 스크립트:
#! /usr/bin/sh
pactl set-default-sink alsa_output.pci-0000_09_00.3.analog-stereo
pactl set-default-source alsa_input.pci-0000_09_00.3.analog-stereo
sleep 20
pactl set-default-sink easyeffects_sink
pactl set-default-source easyeffects_source
답변1
/usr/lib/systemd/system-sleep
아래에 스크립트 이름을 만드는 것은 중요하지 않지만 루트가 소유하고 실행 권한이 있어야 합니다.- Systemd는 동일한 스크립트를 호출합니다앞으로그리고뒤쪽에일시 중지하고 첫 번째 인수를 "pre" 또는 "post"로 전달하여 어느 것을 나타냅니다.
- 루트로 실행될 스크립트 내에서 다음을 사용하여 다른 사용자로 두 번째 스크립트를 시작할 수 있습니다
sudo
(또는su
선호에 따라).
예를 들어
sudo touch /usr/lib/systemd/system-sleep/custom-suspend.sh;
sudo chmod 744 /usr/lib/systemd/system-sleep/custom-suspend.sh;
예시 스크립트:
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
if [[ "${1}" == "post" ]]; then
#AFTER resume
# version 1
sudo -u someuser -i /path/to/script2.sh
# alternative version
# su - someuser -c /path/to/script2.sh
fi
시스템 정보 출처: https://blog.christophersmart.com/2016/05/11/running-scripts-before-and-after-suspens-with-systemd/
답변2
위의 답변의 도움으로 나는 그것을 작동시킬 수 있었습니다! 이 기사를 읽은 후 /lib/systemd/system-sleep/easy효과에 스크립트를 만들었습니다.https://github.com/wwmm/easy효과/issues/1304거기에 언급된 스크립트를 사용하세요. 작동하지 않아서 이 주제에 제공된 정보를 사용하여 수정했고 작동했습니다! 아래는 스크립트입니다. 첫 번째는 GitHub 문제에서 나온 것이고 마지막 것은 나를 위해 일했습니다.
# easyeffects - systemd suspend/resume hook
case $1 in
pre) pkill easyeffects ;;
post) easyeffects --gapplication-service ;;
esac
#!/bin/sh
# easyeffects - systemd suspend/resume hook
case $1 in
pre) pkill easyeffects ;;
post) sudo -u USER-NAME DISPLAY=:0 XDG_RUNTIME_DIR=/run/user/1000 easyeffects --gapplication-service ;;
esac