Lock Screen Command One-Liner

52

Sto cercando di scoprire se esiste una sorta di one-liner a riga di comando equivalente che replica la stessa identica funzionalità dell'opzione di menu 'Lock Screen' disponibile tramite l'app Keychain in OS X 10.6

Sono a conoscenza di tutte le "solite" soluzioni (preferenze di sleep / screensaver per richiedere una password al momento della riattivazione) ma queste non sono adatte a me.

Sono anche a conoscenza di questa opzione:

/System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend

che non è adatto a me.

La funzionalità perfetta è l'opzione "Blocca schermo", ma non ho ancora trovato un modo elegante per chiamarlo.

Al momento, sto chiamando tramite Automator, che non è elegante!

Ho letto molto su questo problema e la mia comprensione è che nessuno ha ancora trovato il "Santo Graal", ma mi chiedevo se sarebbe potuto essere cambiato.

    
posta user40433 26.01.2013 - 14:21
fonte

18 risposte

40

Nota: questa soluzione è unica in quanto utilizza la funzionalità di stato della barra dei menu Accesso Portachiavi, ma non richiede di attivare l'opzione Show keychain status in menu bar come Metodi AppleScript.

Stavo anche cercando una soluzione per questo. Oggi ho avuto un po 'di tempo per giocare e ho trovato un modo per chiamare in modo programmatico la funzionalità dal plugin del menu portachiavi. Questa soluzione funziona perfettamente fino a quando Apple non cambia le parti rilevanti nel plugin del menu portachiavi. Puoi creare un piccolo binario per bloccare lo schermo incollandolo nel tuo terminale ...

# Do our work in the temporary directory that gets cleaned on boot
cd /tmp

# Create the source file
cat > main.m <<END_OF_FILE

#import <objc/runtime.h>
#import <Foundation/Foundation.h>

int main () {
    NSBundle *bundle = [NSBundle bundleWithPath:@"/Applications/Utilities/Keychain Access.app/Contents/Resources/Keychain.menu"];

    Class principalClass = [bundle principalClass];

    id instance = [[principalClass alloc] init];

    [instance performSelector:@selector(_lockScreenMenuHit:) withObject:nil];

    return 0;
}

END_OF_FILE

# Compile the source file
clang -framework Foundation main.m -o lockscreen

Esegui il programma digitando:

./lockscreen
    
risposta data 09.03.2014 - 23:11
fonte
39

In OS X 10.9 e versioni successive:

pmset displaysleepnow

Di per sé, questo comando fa sì che la visualizzazione si interrompa, risultando in una schermata nera. Configurando il tuo computer in modo che richieda una password subito dopo il sonno, questo one-liner funziona come un comando "lock computer". La preferenza è disponibile in Preferenze di sistema > Sicurezza e amp; Privacy > Generale .

Fonte: Come bloccare lo schermo su MacBook Air?

    
risposta data 04.12.2014 - 21:06
fonte
14

Uso Alfred →

Il tasto di scelta rapida universale mi consente di attivarlo utilizzando una tastiera.

    
risposta data 07.02.2013 - 21:22
fonte
11

AGGIORNAMENTO: 2019.

La schermata di blocco per portachiavi non è più disponibile nella versione corrente di MacOS Mojave & Alta Sierra.

Apple ha ora aggiunto una voce di menu Blocca schermo nel menu Apple. Questo ha la scorciatoia da tastiera predefinita di crtl + cmd + Q

-------------VecchiarispostaperOSprecedentediseguito--------------

@BartLarispostadiArondsoniniziausandoalcunicodicichiavepernavigarenelmenudellaschermatadibloccodellatastiera.

TuttiicodicichiavepossonoessereignoratiusandolaGUIScriptingpercolpiredirettamentelevocidelmenudirettamente.

Utilizzareicodicichiavepernavigareneimenupuòesserecasuale.EperquantononmipiaccialoscriptingdellaGUI,perchépuòanchemancarediimho,mainquestocasoèmenoazzeccato.

QuestocodiceAppleScript:(aggiornatoil18/05/2016,trattoda Uso di AppleScript per schermata di blocco , ha confermato il funzionamento in El Capitan)

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

Può essere utilizzato in un'azione "Esegui Applescript" di Automator in un flusso di lavoro del servizio di automazione.

Quindidaialserviziounascorciatoiadatastiera.NelsolitomodoinScorciatoiedatastiera.

Il servizio:

    
risposta data 14.06.2013 - 21:28
fonte
7

Imposta le preferenze per bloccare lo schermo quando lo screen saver è attivo.

Quindi puoi usare questo comando del terminale per avviare lo screen saver.

/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

Per quanto posso dire questo è esattamente ciò che fa la voce del menu Portachiavi.

    
risposta data 26.01.2013 - 15:08
fonte
3

Penso che la risposta alla tua domanda sia "No, non esiste un modo di fare da riga di comando per farlo".

Poiché si tratta di un elemento della barra dei menu, non è qualcosa a cui puoi accedere facilmente utilizzando Keyboard Maestro o un altro strumento simile.

Tuttavia, se non sei contrario a una soluzione che utilizza un'app di terze parti, QuickLock ti consentirà di farlo.

È un'app gratuita (le donazioni accettate) che ti consente di assegnare una scorciatoia da tastiera per bloccare lo schermo. C'è anche una voce della barra dei menu che puoi cliccare per bloccare lo schermo.

L'app ti consente di impostare una password (separata dalla password del tuo account).

Non richiede l'uso della password con lo screensaver, è tutto completamente separato.

Puoi vedere un video in azione al link

P.S. quando lo schermo è bloccato, digita la password per sbloccarla. Ero confuso perché mi aspettavo di vedere un campo password. Non c'è nessuno. Devi solo digitare la password.

p.p.s. L'ho usato solo per alcuni minuti, quindi potrebbero esserci altri problemi di cui non sono a conoscenza, ma sembra adattarsi al problema.

    
risposta data 29.01.2013 - 20:53
fonte
3

Il Mac non è progettato per offrire questa opzione. Tuttavia, questo articolo spiega una soluzione alternativa che utilizza QuickSilver. Mentre non riesco a capire perché non ti piace la soluzione che Apple fornisce in modo nativo, ti auguro buona fortuna nel trovare una soluzione.

    
risposta data 02.03.2013 - 19:09
fonte
2

Ho usato il codice postato sopra da jnk. Poi ho usato appify per trasformarlo in un'app OS X, mathiasbynens.be/notes/shell-script-mac-apps . Quindi ho usato Quicksilver per assegnare la mia scorciatoia da tastiera (ho scelto cmd + L). Il terminale non si apre / rimane aperto (come alcuni erano interessati) con come l'ho impostato perché sto lanciando invece un'applicazione OS X.

  1. Segui la risposta sopra di jnk, Blocca schermo Command One-Liner
  2. Utilizza appify per trasformarlo in un'app di OS X seguendo il link sopra riportato nel mio riepilogo.
  3. Installa Quicksilver.
  4. Usa Quicksilver per assegnare una scorciatoia da tastiera per avviare la nuova applicazione. È sotto "Trigger". Mi piace Quicksilver perché mi piace avere scorciatoie da tastiera / tasti di scelta rapida per avviare applicazioni e siti Web su OS X.
risposta data 06.02.2015 - 00:24
fonte
2

Un modo rapido per addormentare la macchina tramite la riga di comando con l'aiuto di AppleScript è

osascript -e 'tell application "Finder" to sleep'

Questo non blocca lo schermo a meno che non sia impostato per richiedere immediatamente una password che non mi piace fare. Lo sto solo notando per i posteri.

    
risposta data 01.03.2017 - 20:49
fonte
1

Ho anche incontrato questo problema. /System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend fa sì che il sistema sospenda tutte le attività, invece di bloccare lo schermo.

JordanBtucker era sulla strada giusta, ecco la funzione completa che utilizzo:

lockscr() {
  if [ "$(defaults read com.apple.screensaver askForPasswordDelay 2>/dev/null)" ]; then
    local Olddelay="$(defaults read com.apple.screensaver askForPasswordDelay)"
    defaults write com.apple.screensaver askForPasswordDelay -int 0 && \
        pmset displaysleepnow
    defaults write com.apple.screensaver askForPasswordDelay -int "${Olddelay}"
  else
    defaults write com.apple.screensaver askForPasswordDelay -int 0 && \
        pmset displaysleepnow
    defaults delete com.apple.screensaver askForPasswordDelay
  fi;
}

Ciò mantiene le impostazioni dell'utente stesso ma blocca in modo sicuro lo schermo:)

    
risposta data 27.06.2017 - 15:32
fonte
1

Alias facile. Aggiungi questo alla tua bascrc

alias afk="osascript -e 'tell application \"System Events\" to keystroke \"q\" using {command down,control down}'"

digita afk nel tuo terminale da eseguire.

    
risposta data 24.11.2018 - 16:57
fonte
0

Uso BetterTouchTool a tale scopo e assegnato una scorciatoia da tastiera a "Passa alla schermata di accesso" (che è schermata di blocco) ): non soddisfa i requisiti della riga di comando ma potrebbe comunque esserti utile.

    
risposta data 31.01.2013 - 18:34
fonte
0

Non sono sicuro di aver compreso il tuo problema qui. Se hai bisogno di una password per lo screensaver, non interromperà l'esecuzione dei processi né ti impedirà di accedere da remoto al tuo Mac. Ho impostato questa opzione (usando ControlPlane per attivarlo al lavoro e disattivarlo a casa) e non ho mai avuto una volta il sistema rifiutare di rispondere a una connessione Desktop remoto, VNC o SSH. In tutti i casi in cui è richiesto l'accesso alla GUI, ho solo bisogno di inserire la password; SSH utilizza la coppia di chiavi quindi non viene richiesta alcuna password. Se non si desidera che le app si interrompano, accertarsi che le impostazioni di alimentazione del sistema siano tali da impedire l'ingresso nel sistema prima di tornare. Basta impostare il timeout del sonno su un lungo ritardo. Se non vuoi essere disturbato a inserire una password quando sei seduto davanti al computer e stai lavorando, aumenta il ritardo del salvaschermo più a lungo prima che si attivi, o aggiungi un ritardo di 1 minuto tra lo screensaver e la password in modo da avere la possibilità di prenderlo prima che ti blocchi.

Uso ctrl-shift-eject per bloccare lo schermo. È veloce, semplice e funziona. Questo è il modo integrato per bloccare lo schermo. Nessuno è in grado di trovare un'alternativa semplicemente perché replicare le funzioni già inserite nel sistema operativo è un po 'troppo ridondante per consentire a chiunque di dedicarsi molto tempo.

Per quanto ne so, non c'è nessuna opzione "lock screen" in Keychain in 10.8 comunque, quindi la soluzione che preferisci non esiste se tu avessi mai effettuato l'upgrade. Modifica: Non ho notato questo nelle preferenze Keychain; sì, è ancora lì in 10.8.

Se stai utilizzando Automator per questo non puoi semplicemente impacchettare lo script come app e assegnare un combo hotkey o lasciarlo nel Dock per un accesso rapido?

    
risposta data 02.03.2013 - 19:01
fonte
0

Proprio come l'interrogante cercavo un modo per usare la schermata di blocco Keychains in modo rapido.

Combinando la conoscenza di un vecchio suggerimento per Mac OS X e alcuni Applescripting mi è venuta in mente la seguente :

Per prima cosa segui i passaggi del suggerimento per Mac OS X per aggiungere una scorciatoia da tastiera per il blocco dei portachiavi Funzionalità dello schermo.

Per me (su 10.8.4) questo non risolveva il problema dato che dovevo premere ctrl + F8 per spostare lo stato attivo sulla barra di stato, quindi premere < kbd> giù per aprire la barra dei menu Portachiavi, quindi premere ctrl + F9 per bloccare lo schermo. Ho automatizzato questo processo con il seguente codice di applicazione:

# Press ^F8
tell application "System Events"
    key code 100 using control down
end tell

# Press "down"
tell application "System Events"
    key code 125
end tell

# Press ^F9
tell application "System Events"
    key code 101 using control down
end tell

Apri Automator, crea un nuovo servizio, aggiungi un modulo Run Applescript , copia-incolla il codice precedente e salva il servizio di automazione con un nome che desideri. Ora vai a Tasti di scelta rapida nelle Preferenze di Sistema e aggiungi una scorciatoia da tastiera per il servizio Automator appena creato. Ho impostato il mio su ctrl + cmd + L .

Ora premi la scorciatoia da tastiera in qualsiasi app e lo schermo verrà bloccato immediatamente.

Per quelli che si chiedono perché non andare solo con altri metodi, ecco la mia opinione su di loro:

  • Cambio rapido utente / schermata di blocco
    Con questo metodo mi disconnetto dalla rete WPA2 aziendale. Questo non va bene in quanto riconnettersi a volte richiede anni.

  • Salvaschermo + password
    Replica la funzionalità ma questo significa che se il mio portatile è inattivo per qualche tempo mentre sto leggendo un foglio accanto ad esso, lo schermo sarà bloccato quando voglio usarlo di nuovo. Questo non è desiderabile. L'accoppiamento di questo metodo con un hot-corner ha l'effetto collaterale che gli utenti inesperti del Mac potrebbero attivare l'hot-corner per errore portando al blocco dello schermo. A volte, inoltre, ho colpito per caso un angolo caldo che avrebbe bloccato notevolmente il mio flusso di lavoro.

  • App di terze parti
    Questi sono tutti bene, ma perché eseguire un'app di terze parti se è nativamente disponibile nel sistema operativo?

risposta data 14.06.2013 - 17:54
fonte
-1

Uso l'impostazione della password Screensaver con una sequenza di tasti (Ctrl + Shift + Eject) su 10.6.8, e da quello che posso vedere, fa la stessa cosa della schermata Blocca dall'icona della barra delle applicazioni Accesso Portachiavi.

So che questo è simile ad alcune delle altre risposte, ma invece di "hot corner", utilizza una sequenza di tasti, che è più conveniente per me.

Questa soluzione è descritta più dettagliatamente qui, è qui che l'ho presa: link

Lo uso da diversi anni senza problemi.

    
risposta data 30.01.2013 - 08:48
fonte
-1

Bene, combina solo due delle risposte sopra. Esegui questo comando:

open -a /System/Library/Frameworks/ScreenSaver.framework//Versions/A/Resources/ScreenSaverEngine.app

Dopo aver impostato la sicurezza & Preferenze di privacy per chiedere una password immediatamente. Crea un alias per la tua shell se vuoi rendere il comando più facile da eseguire.

    
risposta data 01.02.2013 - 14:47
fonte
-1

FWIW, capisco la tua situazione e ho cercato personalmente una buona soluzione. Mi sono imbattuto in questo thread perché stavo cercando un metodo un po 'più veloce di quello che alla fine mi è venuto in mente. Ho trovato qualcosa che, anche se non esattamente quello che speravo, funziona ed è un compromesso accettabile. Sto usando lo stesso tipo di comandi di scripting della GUI come mostra @markhunte (struttura leggermente diversa, ma la stessa idea) ma invece di metterlo tutto in un flusso di lavoro del servizio Automator, l'ho separato in un pacchetto .app creato con Platypus. L'ho fatto perché nei miei viaggi e test ho riscontrato che i servizi di Automator funzionano molto lentamente in determinate condizioni. Se il tuo Mac è sottoposto a qualsiasi tipo di stress, ad esempio una scansione del disco in esecuzione, un software A / V che fa qualcosa, Mail che tira giù la posta elettronica, ecc., Il sistema operativo sembra spingere i servizi sul retro della linea. Questo ha l'effetto di richiedere alcuni secondi prima dell'esecuzione del flusso di lavoro (a volte) e occasionalmente anche diversi secondi prima che i comandi della GUI nel servizio vengano eseguiti. Abbastanza fastidioso se tu; stai provando a "velocemente" bloccare il tuo schermo e ci vogliono 10 secondi per farlo!

Avere una "app" autonoma ha anche il vantaggio che è possibile utilizzare letteralmente dozzine di diverse app di terze parti per eseguirlo, o semplicemente utilizzare Spotlight o un servizio di Automator per avviare l'app. Qualcuno di loro lavora. Il più veloce che ho trovato è una vecchia utility chiamata Spark, che funziona ancora miracolosamente anche in 10.8.4. Non chiedetemi come è stato sviluppato l'ultima volta contro il 10.4! Spark può essere trovato qui - Spark

Oltre a tutto ciò, ho combattuto il problema dei comandi della GUI che a volte rallentano raggruppando in cocoaDialog e chiamandolo prima quando l'app viene eseguita per mostrare una piccola bolla mobile nel mezzo dello schermo che indica che si sta verificando un blocco schermo. Di solito il blocco avviene subito dopo, ma se c'è un ritardo, questo almeno dà un "feedback" visivo che hai premuto i tasti giusti. L'ho anche auto-ripristinato: se "Abilita accesso a dispositivi ausiliari" non è attivo, ti avvisa con una finestra di dialogo e ti consente di attivarla immediatamente. Si accerterà anche che il menu Accesso Portachiavi sia visualizzato nella barra dei menu poiché questo è un requisito o l'esecuzione di script GUI fallisce.

    
risposta data 17.07.2013 - 21:11
fonte
-2

Ctrl - Maiusc - ⏏ Espelli (sui vecchi Mac),
Ctrl - Maiusc - ⌽ Potenza (sui nuovi Mac)

    
risposta data 29.10.2013 - 15:53
fonte

Leggi altre domande sui tag