Usando AppleScript para bloquear a tela

11

Eu preciso de um AppleScript que bloqueie meu Mac da mesma maneira que pressionar shift+ ctrl+ ejectfaria. Eu tentei duas abordagens diferentes, mas ambas falharam. O primeiro foi procurar um script na Internet, que falhou. Existem apenas soluções com protetor de tela ou outros aplicativos que eu não quero. Eu só quero usar o que descrevi. O segundo era dizer ao maçom para pressionar as três teclas que não funcionavam. Se alguém pudesse me dizer como bloquear meu Mac ou como dizer ao AppleScript para pressionar três teclas, eu ficaria muito feliz, porque estou ficando meio frustrado.

Lavaking
fonte

Respostas:

13

Obtendo informações desta resposta e desta resposta:

  1. Pressione o botão Spotlight no canto superior direito da tela ( Cmd+ Space)
  2. Pesquisar Keychain Access. Abra isto
  3. Abrir Preferências ( Cmd+ ,(vírgula))
  4. Verifica Show Status in Menu Bar
  5. Pressione o botão Spotlight no canto superior direito da tela ( Cmd+ Space)
  6. Pesquisar Automator. Selecione este
  7. Crie um novo Service
  8. Pesquise Run Applescriptpróximo aos botões Actionse Variables. Clique duas vezes neste
  9. Verifique se as caixas de seleção estão Service receives no input in any application
  10. Cole este Applescript:

tell application "System Events" to tell process "SystemUIServer"
    tell (menu bar item 1 of menu bar 1 where description is "Keychain menu extra")
        click
        click menu item "Lock Screen" of menu 1
    end tell
end tell

Salve este Automator como algo semelhante Lock screen(nota: o código no GIF é diferente!)

insira a descrição da imagem aqui


Para criar um atalho:

  1. Pressione o botão Apple no canto superior esquerdo da tela
  2. Clique System Preferences
  3. Clique Keyboard
  4. Clique na Keyboard Shortcutsguia
  5. Clique Services
  6. Encontre o nome do serviço que você acabou de criar
  7. Clique no espaço em branco à direita
  8. Digite seu atalho em

Use seu atalho em qualquer aplicativo!

insira a descrição da imagem aqui


OU...:

  1. Você poderia comprar Alfred
  2. Você poderia usar Cmd+ Shift+Eject
ᔕᖺᘎᕊ
fonte
3
Apenas observe: alfred e o cmd + shift + eject matam a rede quando suspendem a máquina. Isso é super útil, pois apenas bloqueia a tela.
BeepDog
3
Quando executo o script, ele abre o menu de chaves e fica preso. Quando fecho o menu, recebo este erro:System Events got an error: Can’t get menu 1 of menu bar item 2 of menu bar 1 of application process "SystemUIServer". Invalid index.
Macil 28/04
@AgentME tem certeza de que executou as etapas 1 a 4? Eu também atualizou o código de modo a tentar que depois de fazer passos 1-4 :)
ᔕᖺᘎᕊ
@ ᔕᖺᘎᕊ Eu recebo o mesmo erro acima, "Índice Inválido"
7

Encontrei isso em outra resposta, mas um AppleScript que simplesmente contém os seguintes trabalhos para mim.

 tell application "Finder" to sleep
Alistair McMillan
fonte
11
Combinei esta resposta com a resposta aceita e funcionou muito bem. Talvez a resposta aceita possa incorporar isso.
David Cullen
Ao contrário do código na resposta aceita, o código desta resposta não requer privilégios de configuração para todos os aplicativos em que você deseja usar seu atalho e também não exige que o status do chaveiro seja visível na barra de menus.
Valyron
Depende das preferências do tempo em que o sono realmente bloqueia. Infelizmente para mim isso não funciona porque os nossos organização forças a definição para bloquear um minuto depois de dormir
quuxman
3

O macOS 10.11, El Capitan, parece ter quebrado a resposta de using usando AppleScripts, mas descobri que se eu instalava o Lock Screen e fiz meu Automator Service abrir seu "Lock Screen Bundle", o restante do processo funcionou conforme o esperado (desde que eu chamei o serviço "tela de bloqueio", não "Tela de bloqueio": aparentemente os espaços no nome do arquivo quebram o atalho do teclado para muitos usuários do macOS).

Consulte Atalho da tela de bloqueio no Mac OS X para obter um guia passo a passo ilustrado.

Alice Purcell
fonte
3

Eu tenho um forro simples para isso. Ele usa Eventos do sistema para enviar a combinação de teclas padrão para o comando Bloquear tela e funciona em todas as versões do OSX a partir de High Sierra (10.13). Até Mojave! Embora solicite permissões de segurança adicionais para o aplicativo, nas versões mais recentes do OSX

tell application "System Events" to keystroke "q" using {control down, command down}
user1270949
fonte
11
Esta pergunta foi feita em 21 de junho de 14 e sua resposta não é aplicável às versões do OS X em execução naquele momento. Edite sua resposta para incluir o contexto relevante de quais versões do macOS funcionam.
user3439894
11
Funciona em todas as versões do OSX. incluindo Mojave
user1270949
Não é um atalho de teclado padrão em todas as versões do OS X e, na verdade, não funciona em nenhuma versão do OS X e foi introduzido apenas em uma das versões do macOS.
user3439894
11
Olha, eu só estou tentando ajudar e fornecer uma resposta que funcionou para mim. Não gosta disso? Delete isso. Eu não poderia me importar menos #
1212949
2
Funciona como um encanto (pelo menos para mim no Mojave). Não sei por que esse outro comentarista está dizendo que não funciona. É uma solução simples e limpa. Obrigado por compartilhar.
GDP2 23/01
2

Eu uso uma macro para aceitar o atalho Command-L. Tendo mudado recentemente do Windows para o Mac, uma maneira fácil de bloquear minha tela era importante. No Windows, basta pressionar a tecla Windows e L, e pronto, bloqueado.

Usando o Keyboard Maestro , criei uma macro para o atalho Command-L, sendo essencialmente o mesmo (comparando a tecla Command com a tecla Windows). O atalho aciona a função "Janela de login", que bloqueia a tela. Fácil, pelo menos para mim.

(No Keyboard Maestro, a função "Janela de login" está em Ações> Controle do sistema.)

bifjamod
fonte
1

Para High Sierra (10.13), a resposta aceita não funciona, pois o Acesso às Chaves não tem Check Show Status in Menu Baropção. Mas, com base em saquear descaradamente a fonte do aplicativo Lockscreen (como mencionado por @Alice Purcell), eu descobri essa solução alternativa bacana para scripts de GUI:

activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer" to keystroke "q" using {command down, control down}
end tell
ijoseph
fonte