Desativar o modo de suspensão para um aplicativo específico?

5

Posso desativar o modo de suspensão de um aplicativo específico para que o meu mac não entre em suspensão até que o aplicativo seja fechado?

dierre
fonte

Respostas:

2

Se você tiver algum interesse em executar o shell script, o seguinte funcionará. Basta definir o "Display_Sleep_Time" e "System_Sleep_Time" como você deseja que eles sejam juntamente com o "App" que você está escolhendo para impedir o sono. Ao iniciar o script sempre que você executar o aplicativo, todos os tempos de espera serão reduzidos para 0, impedindo a exibição e o sistema de dormir.

TESTADO EM

  • 10.5.x
  • 10.6.x
  • 10.7.4

NOTA: AVISO ESTE SCRIPT CONTÉM UM LOOP INTERNO. Você pode preferir utilizar o seguinte script dentro de um Daemon, em vez de usar o loop interno que o script fornece. No entanto, o mesmo conceito se aplica.

#!/bin/bash

watch="true"

App="Safari"
System_Sleep_Time="30"
Display_Sleep_Time="10"

System_Sleep=$(pmset -g | grep " sleep" | awk '{print $2}')
Display_Sleep=$(pmset -g | grep " displaysleep" | awk '{print $2}')

while [[ ${watch} == "true" ]]; do

    watch_App=$(ps -A | grep "${App}.app" | grep -v grep | sed "s/.*${App}.*/${App}/")

    if [[ ${watch_App} == ${App} ]]; then

        if [[ ${System_Sleep} != "0" ]]; then
            pmset -a sleep 0
            System_Sleep=$(pmset -g | grep " sleep" | awk '{print $2}')
        fi

        if [[ ${Display_Sleep} != "0" ]]; then
            pmset -a displaysleep 0
            Display_Sleep=$(pmset -g | grep " displaysleep" | awk '{print $2}')
        fi

    elif [[ ${watch_App} != ${App} ]]; then

        if [[ ${System_Sleep} == "0" ]]; then
            pmset -a sleep ${System_Sleep_Time} > /dev/null 2>&1
            System_Sleep=$(pmset -g | grep " sleep" | awk '{print $2}')
        fi

        if [[ ${Display_Sleep} == "0" ]]; then
            pmset -a displaysleep ${Display_Sleep_Time} > /dev/null 2>&1
            Display_Sleep=$(pmset -g | grep " displaysleep" | awk '{print $2}')
        fi

    else

        /usr/bin/logger -i An error has occured with preventsleep.sh

    fi

done
E1Suave
fonte
Você poderia adicionar à resposta como configurar um daemon?
dierre
A maneira mais simples pode ser apenas baixar um aplicativo para ajudá-lo. Se você pesquisar no Google 'download mac daemon tool free', deverá encontrar alguns aplicativos úteis. Eles geralmente são muito pequenos e muito simples de seguir. Não tenha medo de experimentá-los. Lembre-se, porém, não é 100% necessário para fazer isso. Você pode criar um daemon sem a ajuda de um aplicativo ou executar esse script conforme necessário e, se estiver executando-o com privilégios de root, ele funcionará adequadamente.
E1Suave
Desculpe por ser um pouco vago em relação aos downloads, mas não tenho 100% de certeza de qual é a política do Stack Exchange para listar aplicativos específicos para download.
E1Suave
11
O developer.apple.com/library/mac/#documentation/MacOSX/… o encontrou. Tnx. Boa resposta btw.
dierre
0

Você também pode adicionar uma linha como esta a um crontab:

* * * * * pgrep -x TextEdit && caffeinate -t 60

(Use EDITOR=nano crontab -ese você não mudou $EDITORe não sabe como usar o vi.)

cafeína e pgrep foram adicionados no Mountain Lion.

Você pode obter uma lista de asserções de poder com pmset -g assertions. caffeinateou caffeinate -ideve ser definido PreventUserIdleSystemSleepcomo 1.

Lri
fonte