Spotify에서 음악을 재생하는 동안 Mint가 일시 중지되지 않도록 방지

Spotify에서 음악을 재생하는 동안 Mint가 일시 중지되지 않도록 방지

Linux Mint 17에서는 시간을 10분으로 Suspend when inactive for설정 했습니다.Power Management

문제는 음악을 듣고 있는데도 시스템이 멈춘다는 것입니다.스포티 파이.

이런 일이 발생하지 않도록 하는 방법이 있나요?

답변1

내가 찾은이 기사이는 화면 보호기가 활성화되는 것을 방지하는 여러 가지 방법을 제안합니다. 아직 테스트하지는 않았지만 활성화를 중지하기 위해 이벤트를 생성할 수 있으므로(적어도 두 번째 이벤트는 수행함) 비활성 모니터에 대한 활동으로도 계산되어야 합니다. 테스트를 해봐야 알겠지만 제대로 작동하는지 모르겠습니다.

  1. 설치하다 caffeine. ppa시스템에 를 추가한 다음 다른 패키지처럼 설치 하면 됩니다 . 일반 민트를 사용하는 한 이것도 효과가 있을 것입니다.

    sudo add-apt-repository ppa:caffeine-developers/ppa
    sudo apt-get update
    sudo apt-get install caffeine
    

    그러면 시작 caffeine및 해당 아이콘이 시스템 트레이에 나타납니다. 일시 중지를 해제해야 하는 프로그램을 선택할 수 있습니다.

    노트:현재2.7 카페인 방출, 프로그램에는 더 이상 GUI가 없으며 데몬으로만 실행됩니다. 실행 시 활성 창이 전체 화면인 동안 화면 보호기가 활성화되지 않습니다.

  2. 이것불을 켜스크립트. 기본적으로 Spotify는 확인하지 않지만 그렇게 하도록 수정하는 것은 쉽습니다. 스크립트 시작 부분의 배열에 추가하기만 하면 됩니다 spotify.delay_progs

    delay_progs=("spotify")
    

    그런 다음 실행 프로그램에 스크립트를 추가하여 백그라운드에서 실행되도록 하세요. Spotify가 실행 중이면 일시 중지되지 않습니다. 이는 음악이 재생되고 있는지 확인하는 것이 아니라 프로그램이 실행 중인지 확인하는 것입니다.

정지가 작동하지 않는 경우 알려주시면 xdotool유사한 프로그램을 사용하여 함께 구성해 보겠습니다.

답변2

방금 비슷한 질문에 대한 답변을 게시했습니다. Linux Mint: 음악 재생 중 정지를 방지하는 방법

나는 pactl이 실행 중인 오디오 소스를 감지할 때 일시 중지 시간 제한을 "never"로 설정하고, 오디오 소스가 감지되지 않으면 설정을 복원하는 스크립트를 작성했습니다.

최신 답변과 스크립트의 사본은 다음과 같습니다.

위의 스크립트에 대해 좀 더 작업을 수행했으며 이제 Gnome을 실행하는 Cinnamon, Mate 및 Ubuntu에서 작동할 것입니다. 저는 Linux Mint 19 Cinnamon과 Live USB 버전의 Mate는 물론 Ubuntu 18.04 - Gnome에서도 사용해 보았습니다.

#!/bin/sh

# Audiocaffeine

# Works in Linux Mint 19 - Cinnamon, Linux Mint 19 - Mate, Ubuntu 18.04 - Gnome

# Script to temporarily set suspend timout for AC and battery to "Never"
# while audio is playing.  It then reverts the settings when audio is no longer detected.

# Determine if a valid desktop environment is running and exit if it doesn't.
echo "Reported desktop environment: ""$XDG_CURRENT_DESKTOP"
if [ "$XDG_CURRENT_DESKTOP" = "X-Cinnamon" ]; then
    actimeoutid="org.cinnamon.settings-daemon.plugins.power sleep-inactive-ac-timeout"
    batttimeoutid="org.cinnamon.settings-daemon.plugins.power sleep-inactive-battery-timeout"
    disablevalue=0
elif [ "$XDG_CURRENT_DESKTOP" = "MATE" ]; then
    actimeoutid="org.mate.power-manager sleep-computer-ac"
    batttimeoutid="org.mate.power-manager sleep-computer-battery"
    disablevalue=0
elif [ "$XDG_CURRENT_DESKTOP" = "ubuntu:GNOME" ]; then
    actimeoutid="org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type"
    batttimeoutid="org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type"
    disablevalue="nothing"
else
    echo "No valid desktop environment is running"
    exit 1
fi

# Create .config directory to store settings if it doesn't exist.
if [ ! -d ~/.config ]; then
    echo ".config directory not found!"
    echo "Creating ~/.config"
    mkdir ~/.config
fi

# Create audiocaffeine directory to store settings if it doesn't exist.
if [ ! -d ~/.config/audiocaffeine ]; then
    echo "Configuration directory not found!"
    echo "Creating ~/.config/audiocaffeine"
    mkdir ~/.config/audiocaffeine
fi

# Restore previous value for AC suspend timeout if script
# was interrupted.
if [ -f ~/.config/audiocaffeine/acsuspend ]; then
    echo "Restoring previous AC suspend timeout."
    read acsuspendtime < ~/.config/audiocaffeine/acsuspend
    gsettings set $actimeoutid $acsuspendtime
    echo "Removing temporary file ~/.config/audiocaffeine/acsuspend"
    rm ~/.config/audiocaffeine/acsuspend
fi

# Restore previous value for battery suspend timeout if script
# was interrupted.
if [ -f ~/.config/audiocaffeine/battsuspend ]; then
    echo "Restoring previous battery suspend timeout."
    read battsuspendtime < ~/.config/audiocaffeine/battsuspend
    gsettings set $batttimeoutid $battsuspendtime
    echo "Removing temporary file ~/.config/audiocaffeine/battsuspend"
    rm ~/.config/audiocaffeine/battsuspend
fi

# Start main loop to check if audio is playing

while true; do

    # Use pactl to detect if there are any running audio sources.
    if pactl list | grep -q "State: RUNNING"; then

        echo "Audio detected."

        # If AC timeout was not previously saved, then save it.
        if [ ! -f ~/.config/audiocaffeine/acsuspend ]; then
            echo "Saving current AC suspend timeout."
            gsettings get $actimeoutid > ~/.config/audiocaffeine/acsuspend
        fi

        # If battery timeout was not previously saved, then save it.
        if [ ! -f ~/.config/audiocaffeine/battsuspend ]; then
            echo "Saving current battery suspend timeout."
            gsettings get $batttimeoutid > ~/.config/audiocaffeine/battsuspend
        fi

        # Set the suspend timouts to Never using gsettings.
        echo "Changing suspend timeouts."
        gsettings set $actimeoutid $disablevalue
        gsettings set $batttimeoutid $disablevalue

    else
        echo "No audio detected."

        # Restore previous value for AC suspend timeout and delete the
        # temporary file storing it.
        if [ -f ~/.config/audiocaffeine/acsuspend ]; then
            echo "Restoring previous AC suspend timeout."
            read acsuspendtime < ~/.config/audiocaffeine/acsuspend
            gsettings set $actimeoutid $acsuspendtime
            echo "Removing temporary file ~/.config/audiocaffeine/acsuspend"
            rm ~/.config/audiocaffeine/acsuspend
        fi

        # Restore previous value for battery suspend timeout and delete the
        # temporary file storing it.
        if [ -f ~/.config/audiocaffeine/battsuspend ]; then
            echo "Restoring previous battery suspend timeout."
            read battsuspendtime < ~/.config/audiocaffeine/battsuspend
            gsettings set $batttimeoutid $battsuspendtime
            echo "Removing temporary file ~/.config/audiocaffeine/battsuspend"
            rm ~/.config/audiocaffeine/battsuspend
        fi

    fi

    # Pause the script for 60 seconds before doing the loop again.
    sleep 60s

done

답변3

Jason Gambrel의 스크립트에 GNOME Flashback 지원을 추가했습니다. 이 버전에는 PulseAudio뿐만 아니라 ALSA 제품군에 대한 지원도 포함되어 있습니다. ALSA 지원을 활성화하려면 코드 주석에서 식별된 두 줄의 주석 처리를 수동으로 해제하고 주석 처리해야 합니다. 무엇이 사용되고 있는지 자동으로 감지하도록 할 수도 있지만 대부분의 시스템에서 절대 변경되지 않을 내용에 대해서는 낭비가 될 것이라고 생각합니다. 요즘 대부분의 사람들은 PA 에뮬레이션과 함께 PA 또는 PipeWire를 사용합니다. Jason이 테스트한 것 외에도 Ubuntu 23.04에서 작동하는 것을 확인할 수 있습니다.

게시 제한으로 인해 Jason이 원래 게시한 질문에 이 내용을 추가하거나 그의 스크립트 아래에 댓글로 추가할 수 없으며 Stack Exchange 커뮤니티의 이 코너에 처음 왔습니다. 모드가 이것을 옮기고 자신의 리뷰로 만들고 싶어한다면 저는 전혀 문제가 없습니다.

#!/bin/sh

# Audiocaffeine - Pulseaudio
# Original by Jason Gambrel
# https://unix.stackexchange.com/questions/340651/linux-mint-how-to-avoid-suspending-while-music-is-playing

# Works in Linux Mint 19 - Cinnamon, Linux Mint 19 - Mate, Ubuntu 18.04-23.04 - Gnome
# Gnome Flashback support added by Joseph Lathem (aka Sienile)

# Script to temporarily set suspend timout for AC and battery to "Never"
# while audio is playing.  It then reverts the settings when audio is no longer detected.

# Determine if a valid desktop environment is running and exit if it doesn't.
echo "Reported desktop environment: ""$XDG_CURRENT_DESKTOP"
if [ "$XDG_CURRENT_DESKTOP" = "X-Cinnamon" ]; then
    actimeoutid="org.cinnamon.settings-daemon.plugins.power sleep-inactive-ac-timeout"
    batttimeoutid="org.cinnamon.settings-daemon.plugins.power sleep-inactive-battery-timeout"
    disablevalue=0
elif [ "$XDG_CURRENT_DESKTOP" = "MATE" ]; then
    actimeoutid="org.mate.power-manager sleep-computer-ac"
    batttimeoutid="org.mate.power-manager sleep-computer-battery"
    disablevalue=0
elif [ "$XDG_CURRENT_DESKTOP" = "ubuntu:GNOME" ]; then
    actimeoutid="org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type"
    batttimeoutid="org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type"
    disablevalue="nothing"
elif [ "$XDG_CURRENT_DESKTOP" = "GNOME-Flashback:GNOME" ]; then
    actimeoutid="org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type"
    batttimeoutid="org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type"
    disablevalue="nothing"
else
    echo "No valid desktop environment is running"
    exit 1
fi

# Create .config directory to store settings if it doesn't exist.
if [ ! -d ~/.config ]; then
    echo ".config directory not found!"
    echo "Creating ~/.config"
    mkdir ~/.config
fi

# Create audiocaffeine directory to store settings if it doesn't exist.
if [ ! -d ~/.config/audiocaffeine ]; then
    echo "Configuration directory not found!"
    echo "Creating ~/.config/audiocaffeine"
    mkdir ~/.config/audiocaffeine
fi

# Restore previous value for AC suspend timeout if script
# was interrupted.
if [ -f ~/.config/audiocaffeine/acsuspend ]; then
    echo "Restoring previous AC suspend timeout."
    read acsuspendtime < ~/.config/audiocaffeine/acsuspend
    gsettings set $actimeoutid $acsuspendtime
    echo "Removing temporary file ~/.config/audiocaffeine/acsuspend"
    rm ~/.config/audiocaffeine/acsuspend
fi

# Restore previous value for battery suspend timeout if script
# was interrupted.
if [ -f ~/.config/audiocaffeine/battsuspend ]; then
    echo "Restoring previous battery suspend timeout."
    read battsuspendtime < ~/.config/audiocaffeine/battsuspend
    gsettings set $batttimeoutid $battsuspendtime
    echo "Removing temporary file ~/.config/audiocaffeine/battsuspend"
    rm ~/.config/audiocaffeine/battsuspend
fi

# Start main loop to check if audio is playing

while true; do

    # If using ALSA instead of PulseAudio or PipeWire with PA emulation, uncomment the next if statement and comment the one for pactl
    
    # Use ALSA to detect if there are any running audio sources.
    #if grep -q RUNNING /proc/asound/card*/*p/*/status 2>&1; then
    
    # Use pactl to detect if there are any running audio sources.
    if pactl list | grep -q "State: RUNNING"; then

        echo "Audio detected."

        # If AC timeout was not previously saved, then save it.
        if [ ! -f ~/.config/audiocaffeine/acsuspend ]; then
            echo "Saving current AC suspend timeout."
            gsettings get $actimeoutid > ~/.config/audiocaffeine/acsuspend
        fi

        # If battery timeout was not previously saved, then save it.
        if [ ! -f ~/.config/audiocaffeine/battsuspend ]; then
            echo "Saving current battery suspend timeout."
            gsettings get $batttimeoutid > ~/.config/audiocaffeine/battsuspend
        fi

        # Set the suspend timouts to Never using gsettings.
        echo "Changing suspend timeouts."
        gsettings set $actimeoutid $disablevalue
        gsettings set $batttimeoutid $disablevalue

    else
        echo "No audio detected."

        # Restore previous value for AC suspend timeout and delete the
        # temporary file storing it.
        if [ -f ~/.config/audiocaffeine/acsuspend ]; then
            echo "Restoring previous AC suspend timeout."
            read acsuspendtime < ~/.config/audiocaffeine/acsuspend
            gsettings set $actimeoutid $acsuspendtime
            echo "Removing temporary file ~/.config/audiocaffeine/acsuspend"
            rm ~/.config/audiocaffeine/acsuspend
        fi

        # Restore previous value for battery suspend timeout and delete the
        # temporary file storing it.
        if [ -f ~/.config/audiocaffeine/battsuspend ]; then
            echo "Restoring previous battery suspend timeout."
            read battsuspendtime < ~/.config/audiocaffeine/battsuspend
            gsettings set $batttimeoutid $battsuspendtime
            echo "Removing temporary file ~/.config/audiocaffeine/battsuspend"
            rm ~/.config/audiocaffeine/battsuspend
        fi

    fi

    # Pause the script for 60 seconds before doing the loop again.
    sleep 60s

done

관련 정보