Spotifyで音楽を再生しながらMintが一時停止しないようにする

Spotifyで音楽を再生しながらMintが一時停止しないようにする

Linux Mint 17では、時間を10分にSuspend when inactive for設定しました。Power Management

問題は音楽を聴いているのにシステムが止まるということです。スポーティパイ

これが起こらないようにする方法はありますか?

答え1

私が見つけたこの記事これは、スクリーンセーバーがアクティブになるのを防ぐいくつかの方法を提案します。まだテストしていませんが、アクティブ化を停止するためにイベントを生成できるため(少なくとも2番目のイベントは実行されます)、非アクティブモニターのアクティビティとしても計算する必要があります。テストしてみるとわかりますが、正常に動作しているかどうかわかりません。

  1. インストールするcaffeineppaシステムに追加してから、他のパッケージのようにインストールするだけです。一般ミントを使用する限り、これも効果があるでしょう。

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

    これにより、起動と対応するcaffeineアイコンがシステムトレイに表示されます。一時停止を解除する必要があるプログラムを選択できます。

    メモ:現在2.7 カフェイン放出、プログラムにはGUIがなくなり、デーモンとしてのみ実行されます。起動時にアクティブウィンドウがフルスクリーンの間、スクリーンセーバーはアクティブになりません。

  2. これ点灯スクリプト。デフォルトでは、Spotifyは確認しませんが、そうするように変更するのは簡単です。スクリプトの先頭の配列に追加するだけですspotifydelay_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サポートを有効にするには、コードコメントで識別された2行のコメント処理を手動で無効にしてコメントアウトする必要があります。何が使用されているのかを自動的に検出することもできますが、ほとんどのシステムでは絶対に変更されない内容については無駄になると思います。最近、ほとんどの人は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

関連情報