Mantendo o funcionamento da rede ao fechar a tampa no MacBook Pro

5

Como posso fazer isso? Eu estou usando cafeína, mas isso não faz nada sobre a rede (WiFi, internet) de desligar completamente quando minha tampa se fecha.

    
por Sam 02.02.2013 / 00:40

2 respostas

0

InsomniaX pode impedir que seu computador entre com a tampa fechada, é isso que você quer? Ou você está procurando um método para adormecer o computador e manter a rede conectada?

    
por 02.02.2013 / 01:26
0

Não é ideal, mas aqui está uma solução. Para evitar que o laptop durma quando a tampa estiver fechada e você estiver usando bateria, execute os seguintes comandos:

sudo pmset -b sleep 0; sudo pmset -b disablesleep 1

Para reativar o laptop dormindo quando a tampa estiver fechada e você estiver usando bateria, execute os seguintes comandos:

sudo pmset -b sleep 5; sudo pmset -b disablesleep 0

O "5" no segundo conjunto de comandos representa o número de minutos antes de dormir quando na bateria; ajuste conforme desejado para o seu laptop.

Isso é um pouco perigoso, pois se você esquecer de reativar suas configurações, o laptop nunca irá dormir quando estiver na bateria. Por causa disso, eu escrevi um script de shell para reativar automaticamente as configurações:

#!/bin/bash
#***************************************************************************
#*** noz - prevent laptop from sleeping when lid is closed
#***************************************************************************

#***** set some defaults *****
BATTERY_SLEEP=5 # in minutes
DEF_WAKE_LEN=300 # in seconds

#***** determine timeout value *****
timeout_len=${1:-$DEF_WAKE_LEN}

function prevent_sleep() {
    echo
    echo -n "Preventing sleep for $timeout_len seconds; press <enter> to continue..."

    sudo pmset -b disablesleep 1
    sudo pmset -b sleep 0
}

function enable_sleep() {
    # $1: <enter> = 0, timeout = 1, Ctrl-C = undef

    #----- insert a newline for timeout or Ctrl-C -----
    if [[ ${1:-1} -eq 1 ]]; then    echo; fi
    echo "Restoring previous battery sleep setting: $BATTERY_SLEEP"

    sudo pmset -b disablesleep 0
    sudo pmset -b sleep $BATTERY_SLEEP

    #----- sleep on timeout only -----
    if [[ ${1:--1} -eq 1 ]]; then   sudo pmset sleepnow; fi
    exit
}

#***** prevent it from sleeping *****
prevent_sleep

#***** trap Ctrl-C *****
trap enable_sleep INT

#***** wait for an enter *****
read -t $timeout_len
rc=$?

#***** re-enable normal sleep *****
enable_sleep $rc

O shell script irá desabilitar o sono até você pressionar a tecla Enter , onde irá reativar as configurações de suspensão (alternadamente, você pode pressionar Ctrl - < kbd> C e conseguir a mesma coisa). Ele também definirá um tempo limite (o padrão é 300 segundos / 5 minutos) após o qual as configurações de suspensão serão reativadas automaticamente e o laptop será forçado a entrar no modo de suspensão. Enquanto isso seria uma dor se você estiver usando seu laptop em uma reunião, será um salva-vidas se você esqueceu e colocar seu laptop em sua bolsa para ir para casa.

Os leitores astutos observarão que esses comandos exigem sudo ; Infelizmente, isso é inevitável AFAIK. O que eu fiz no meu sistema é fazer com que eu não precise digitar minha senha para executar pmset como root. Para fazer isso, edite o arquivo sudoers ( sudo visudo ) e adicione esta linha:

joe ALL=(ALL) NOPASSWD: /usr/bin/pmset

substituindo "joe" pelo seu nome de usuário. Você provavelmente poderia obter o mesmo resultado (ou seja, executar o script sem precisar digitar sua senha) executando o script de shell SETUID, mas eu não gosto de fazer isso; abrir esse comando via sudo parece ser menos arriscado para mim.

Para executar o script, coloque-o em um diretório no seu PATH e invoque-o como tal:

$ noz [<timeout in seconds>]

Quando você chegar onde você está indo, simplesmente pressione Enter ou Ctrl - C e você está pronto para ir. E se você esquecer, ele será automaticamente redefinido e suspenso.

Provavelmente, existe uma maneira de obter tudo isso via AppleScript, para que você possa atribuir uma tecla de acesso e o que não; Vou tentar isso se eu ficar cansado de rodar isso na linha de comando.

Nota: esta solução foi desenvolvida especificamente com a rede wifi em mente.

    
por 29.01.2017 / 21:09