Lock Screen Command One-Liner

59

Saya mencoba mencari tahu apakah ada jenis baris perintah setara satu-baris yang mereplikasi fungsi identik yang tepat dari opsi menu 'Layar Kunci' yang tersedia melalui aplikasi Keychain di OS X 10.6

Saya mengetahui semua solusi 'biasa' (preferensi sleep / screensaver memerlukan kata sandi pengaktifan kembali) tetapi ini tidak cocok untuk saya.

Saya juga mengetahui opsi ini:

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

yang juga tidak cocok untukku.

Fungsionalitas yang sempurna adalah opsi 'Kunci Layar' namun saya belum menemukan cara yang elegan untuk menyebutnya.

Saat ini, saya menelepon melalui Automator, yang tidak elegan!

Saya telah membaca banyak tentang masalah ini dan pemahaman saya adalah bahwa belum ada yang menemukan 'cawan suci' tetapi saya bertanya-tanya apakah itu mungkin telah berubah.

pengguna40433
sumber
Apa yang Anda panggil dengan Automator?
Matthieu Riegler
3
Apa yang salah dengan mengatur preferensi Keamanan untuk meminta kata sandi ketika screen saver aktif dan kemudian menggunakan sudut panas untuk mengaktifkan screen saver? Itu cepat dan elegan, tetapi Anda mengatakan Anda tidak menyukai solusi itu.
Bahtera Ƭ
3
Ini adalah saran pragmatis dan saya sudah mencoba dan mematikan selama bertahun-tahun penggunaan tetapi sifat pola kerja saya berarti ini menghalangi> 80% dari waktu. Saya membutuhkan kemampuan untuk menanggapi (secara fisik) permintaan teknik dan keadaan darurat dan segera mengunci layar tetapi juga memiliki akses jarak jauh ke kotak sementara itu juga mempertahankan semua koneksi yang ada dan tugas latar belakang.
user40433
1
Re: "di mana menu Lock Screen di Keychain" Buka Keychain ... preferensi ... tampilkan di menu bar! Re: "apa fungsinya?" Mengunci layar! Di luar itu, saya pikir saya telah menjelaskan persyaratan saya (dan keengganan saya untuk 'solusi' yang menurut sebagian orang memenuhi persyaratan saya, tetapi tidak) dengan cukup teliti.
user40433
1
Lihat juga stackoverflow.com/questions/1976520/…
rogerdpack

Jawaban:

48

Di OS X 10.9 dan yang lebih baru:

pmset displaysleepnow

Dengan sendirinya, perintah ini hanya menyebabkan tampilan tidur, menghasilkan layar hitam. Dengan mengkonfigurasi komputer Anda untuk meminta kata sandi segera setelah tidur, one-liner ini berfungsi sebagai perintah "kunci komputer". Preferensi tersedia di System Preferences> Security & Privacy> General .

Sumber: Bagaimana cara mengunci layar di MacBook Air?

jordanbtucker
sumber
7
hanya untuk kelengkapan, ini hanya berfungsi jika "Minta kembali kata sandi setelah tidur atau screen saver mulai" opsi keamanan diaktifkan dalam preferensi sistem
Hofi
1
Ini tampaknya paling setara dengan CTRL + SHIFT + Eject.
Jan Kyu Peblik
Ini tidak setara dengan item bilah menu Keychain. Itu tidak mengunci layar; itu hanya membuat komputer tidur.
Radon Rosborough
1
@RadonRosborough Tidak, itu tidak membuat komputer tidur. Itu membuat tampilan menjadi tidur, Jika Anda mengakses Mac yang terkunci dari jarak jauh semuanya berfungsi. Ini mungkin jawaban terpendek dan tercepat karena tidak melewati semua Keychain lambat GUI atau Finder lambat GUI.
dan
Ini adalah solusi yang jauh lebih baik daripada entri menu Keychain lama dan tidak terpasang 👏🏻.
dan
40

Catatan: Solusi ini unik karena menggunakan fungsi status bar menu Keychain Access, tetapi tidak mengharuskan Anda untuk mengaktifkan Show keychain status in menu baropsi seperti metode AppleScript lakukan.

Saya juga mencari solusi untuk ini. Hari ini saya hanya punya waktu untuk bermain-main dan menemukan cara untuk secara terprogram memanggil fungsi dari plugin menu keychain. Solusi ini berfungsi dengan baik selama Apple tidak mengubah bagian yang relevan di plugin menu gantungan kunci. Anda dapat membuat biner kecil untuk mengunci layar Anda dengan menempelkan ini ke terminal Anda ...

# 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

Jalankan program dengan mengetik:

./lockscreen
mrArkwright
sumber
Bisakah Anda menguraikan cara menggunakan ini? Apakah saya menyalin-menempelkan ini ke dalam alur kerja Automator? Atau membuat Applescript dari itu? Seperti berdiri sekarang sulit untuk melakukan sesuatu dengan jawaban Anda.
Saaru Lindestøkke
1
Ini adalah Program Objective-C yang sederhana. Salin ke file yang disebut main.m. Kemudian jalankan 'clang -framework Foundation main.m -o lockscreen' untuk mengkompilasi program. './lockscreen' menjalankan program dan mengunci layar Anda.
mrArkwright
Mencobanya, bekerja seperti yang dijelaskan. Kompilasi menghasilkan satu peringatan instance method '-_lockScreenMenuHit:' not found, tetapi aplikasi lockscreen tetap bekerja. Namun, ketika diklik ganda itu membuka jendela Terminal sebelum mengunci layar. Setelah membuka kunci Anda harus menutup jendela secara manual. Apakah ada cara untuk menutup jendela itu secara otomatis?
Saaru Lindestøkke
5
Saya mengumpulkan Aplikasi OS X: Lock Screen.app berdasarkan jawaban ini dan karya seseorang seperti yang dijelaskan dalam tautan, itu hanya membungkus kode ini dan menambahkan ikon yang indah, sehingga kami dapat menjalankannya langsung, terima kasih.
Mengdi Gao
1
Ini tidak berfungsi lagi pada 10.13 karena MenuExtra telah dihapus. Ini bekerja sebagai gantinya: stackoverflow.com/a/26492632/368409
Lloeki
15

Saya menggunakan Alfred →

masukkan deskripsi gambar di sini

Tombol pintas universal memungkinkan saya untuk mengaktifkannya menggunakan keyboard.

Vaibhav Bajpai
sumber
Luar biasa! Apakah hotkey universal ada di dalam atau bagian dari powerpack?
Dan Rosenstark
1
Ini built-in ...
Vaibhav Bajpai
2
Sayangnya ini bukan - itu juga mematikan koneksi internet, saat menggunakan kunci menu Keychain tidak.
Marcin Bobowski
Ada yang setara di Launchbar juga: "Lock Screen"
William Turrell
Ini tidak setara dengan item menu Keychain. Itu tidak membuat komputer tidur, dan juga memainkan animasi yang menjengkelkan.
Radon Rosborough
14

PEMBARUAN: 2019.

Layar Kunci untuk gantungan kunci tidak lagi tersedia dalam versi saat ini dari MacOS Mojave & High Sierra.

Apple sekarang telah menambahkan item Menu Layar Kunci di menu Apple. Ini memiliki pintasan keyboard default crtl + cmd + Q

masukkan deskripsi gambar di sini


------------- Jawaban lama untuk OS sebelumnya di bawah --------------

@Bart jawaban Arondson menggunakan beberapa kode kunci untuk menavigasi menu Keychain Lock Screen.

Semua kode kunci dapat dilewati menggunakan GUI Scripting untuk benar-benar menekan item menu secara langsung.

Menggunakan kode kunci untuk menavigasi menu dapat dipukul dan dilewatkan. Dan sebanyak yang saya tidak suka scripting GUI karena itu juga dapat menekan dan miss imho itu kurang hit dan miss dalam hal ini

Kode apel ini: (diperbarui 05/18/2016, bersumber dari Menggunakan AppleScript untuk mengunci layar , dikonfirmasi bekerja di 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

Dapat digunakan dalam Tindakan 'Jalankan Applescript' Automator dalam Alur Kerja Layanan Automator.

masukkan deskripsi gambar di sini

Anda kemudian memberikan layanan pintasan Keyboard. Dengan cara biasa di The Keyboard Shortcuts.

masukkan deskripsi gambar di sini

Pelayanan:

masukkan deskripsi gambar di sini

markhunte
sumber
Ini bekerja dengan baik untuk apa yang saya butuhkan, terima kasih!
nictrix
Anda juga dapat menjalankan perintah terminal dari automator, jadi saya menggunakannya. itu tampak lebih "elegan" :). solusi yang sangat bagus!
Sorin Buturugeanu
3
Saya menggunakan solusi ini untuk waktu yang lama, tetapi karena osX El Captain tidak lagi berfungsi :(.
Marcin Bobowski
Masih melihat ini. Tapi sepertinya menu tidak melaporkan sendiri item berikutnya yang akan diklik. Menjalankan dua baris ini berfungsi tetapi lambat. tell application "System Events" to tell process "SystemUIServer" to click (first menu bar item of menu bar 1 whose description is "Keychain menu extra") tell application "System Events" to click (menu item "Lock Screen" of menu 1 of menu bar item 1 of menu bar 1 of application process "SystemUIServer")
markhunte
8

Atur preferensi untuk mengunci layar ketika screen saver aktif.

Panel Preferensi Keamanan & Privasi

Kemudian Anda dapat menggunakan perintah terminal ini untuk memulai screen saver.

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

Sejauh yang saya tahu ini persis apa item menu Keychain tidak.

Bahtera Ƭ
sumber
Terima kasih atas komentar Anda, tetapi ini yang saya perjuangkan terlalu lama dan saya sedang mencari alternatif.
user40433
1
Hanya untuk kejelasan dan kelengkapan, saya harus bahwa di atas memang memulai screensaver tetapi tidak melakukan apa yang menawarkan fungsi menu 'Lock Screen'.
user40433
1
Maka Anda harus lebih spesifik tentang apa yang sebenarnya Anda cari.
Ɱark Ƭ
Hmmm ... tidak yakin saya bisa lebih spesifik atau ringkas dari paragraf pembuka di pertanyaan awal saya!
user40433
1
Saya memiliki kesempatan untuk menguji pada 10.6.8. Pada OS itu monitor dimatikan dan sesi dikunci. Saya menemukan cara terprogram untuk melakukan ini, tetapi tidak ada di dalamnya.
Ƭark Ƭ
3

Saya pikir jawaban untuk pertanyaan Anda adalah "Tidak, tidak ada cara baris perintah untuk melakukan ini."

Karena ini adalah item bilah menu, itu bukan sesuatu yang dapat Anda akses dengan mudah menggunakan Keyboard Maestro atau alat serupa lainnya.

Namun, jika Anda tidak menolak solusi menggunakan aplikasi pihak ke-3, QuickLock akan membiarkan Anda melakukan ini.

Ini adalah aplikasi (sumbangan yang diterima) gratis yang akan memungkinkan Anda menetapkan pintasan keyboard untuk mengunci layar. Ada juga item menu bar yang dapat Anda klik untuk mengunci layar.

Aplikasi ini akan memungkinkan Anda menetapkan kata sandi (terpisah dari kata sandi akun Anda).

Itu tidak memerlukan penggunaan kata sandi dengan screensaver, itu semua benar-benar terpisah.

Anda dapat melihat video sedang beraksi di http://www.youtube.com/watch?v=SBHwykPB19o

ps ketika layar terkunci, ketikkan kata sandi Anda untuk membukanya. Saya bingung karena saya berharap melihat bidang kata sandi. Tidak ada. Anda cukup mengetikkan kata sandi.

pps Saya hanya menggunakan ini selama beberapa menit, jadi mungkin ada beberapa masalah lain yang tidak saya sadari, tetapi sepertinya sesuai dengan tagihan.

TJ Luoma
sumber
Terima kasih atas kontribusi Anda ... walaupun bukan yang saya cari (saya suka open source dan metode DIY!) Itu memang terlihat sangat menarik dan tampaknya menawarkan fungsionalitas yang saya butuhkan, meskipun dalam aplikasi pihak ke-3. Saya akan memeriksanya lebih dekat. Terima kasih!
user40433
Saya ingin menemukan cara untuk melakukannya juga, tetapi saya rasa tidak ada satu pun.
TJ Luoma
tampaknya mati ...
rogerdpack
3

Mac tidak dirancang untuk memberi Anda opsi seperti itu. Namun, artikel ini menjelaskan solusi menggunakan QuickSilver. Meskipun saya tidak mengerti mengapa Anda tidak menyukai solusi yang disediakan Apple secara asli, saya berharap Anda beruntung menemukan solusi.

bispymusic
sumber
3

Alias ​​mudah. Tambahkan ini ke bashrc Anda

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

ketik afkterminal Anda untuk mengeksekusi.

Aritro Paul
sumber
2

Saya menggunakan kode yang diposting di atas oleh jnk. Kemudian saya menggunakan appify untuk mengubahnya menjadi aplikasi OS X, mathiasbynens.be/notes/shell-script-mac-apps . Kemudian saya menggunakan Quicksilver untuk menetapkan pintasan keyboard saya sendiri (saya memilih cmd + L). Terminal tidak membuka / tetap terbuka (karena beberapa orang khawatir) dengan bagaimana saya mengaturnya karena saya meluncurkan aplikasi OS X saja.

  1. Ikuti jawaban di atas oleh jnk, Lock Screen Command One-Liner
  2. Gunakan appify untuk mengubahnya menjadi aplikasi OS X dengan mengikuti tautan di atas dalam ringkasan saya.
  3. Instal Quicksilver.
  4. Gunakan Quicksilver untuk menetapkan pintasan keyboard untuk meluncurkan aplikasi baru. Itu di bawah 'Pemicu.' Saya menikmati Quicksilver karena saya suka memiliki pintasan keyboard / hotkey untuk meluncurkan aplikasi dan situs web di OS X.
jbrock
sumber
2

Cara cepat untuk menidurkan mesin Anda melalui baris perintah dengan bantuan AppleScript adalah

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

Itu tidak mengunci layar Anda kecuali Anda mengaturnya untuk meminta kata sandi segera yang tidak saya sukai. Saya hanya mencatatnya untuk anak cucu.

Bruno Bronosky
sumber
1

Saya juga mengalami masalah ini. /System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspendmenyebabkan sistem untuk menunda semua tugas, daripada mengunci layar.

JordanBtucker berada di jalur yang benar, berikut adalah fungsi lengkap yang saya gunakan:

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;
}

Ini mempertahankan pengguna pengaturannya sendiri tetapi mengunci layar dengan aman :)

Jorvi
sumber
Di High Sierra nilai-nilai ini tidak ditetapkan oleh UI lagi. Namun, jika Anda mengaturnya secara manual, UI akan menghormatinya. defaults write com.apple.screensaver askForPassword -bool TRUEdan defaults write com.apple.screensaver askForPasswordDelay -int 10 Ini adalah nilai default saya. Sekarang skrip di atas akan berperilaku seperti yang dijelaskan.
Sean Perry
0

Saya menggunakan BetterTouchTool untuk tujuan itu dan menetapkan pintasan keyboard untuk "Beralih ke layar masuk" (yang merupakan layar kunci): tidak memenuhi persyaratan baris perintah tetapi mungkin tetap membantu Anda.

pintasan keyboard di BetterTouchTool untuk mengunci layar

iolsmit
sumber
Terima kasih atas bantuan dan saran Anda. Bersamaan dengan QuickLock yang disebutkan di atas oleh @TJLuoma BetterTouchTool (walaupun bukan metode yang saya tetapkan untuk menemukan) tampaknya sangat dekat dengan tujuan fungsional saya. Saya akan melihat lebih dekat pada ini ... terima kasih.
user40433
0

Saya tidak yakin saya mengerti masalah Anda di sini. Jika Anda memerlukan kata sandi di screensaver, itu tidak akan menghentikan proses dari menjalankan atau memblokir Anda dari jauh mengakses Mac Anda. Saya memiliki opsi ini ditetapkan (menggunakan ControlPlane untuk mengaktifkannya di tempat kerja dan menonaktifkannya di rumah) dan saya tidak pernah sekalipun sistem menolak untuk menanggapi Remote Desktop, VNC, atau koneksi SSH. Dalam semua kasus di mana akses GUI diperlukan, saya hanya perlu memasukkan kata sandi; SSH menggunakan pasangan kunci sehingga tidak ada kata sandi yang diminta. Jika Anda tidak ingin aplikasi tidur, pastikan pengaturan daya sistem sedemikian rupa sehingga tidak akan memasuki sistem tidur sebelum Anda kembali. Atur batas waktu tidur menjadi lama. Jika Anda tidak ingin repot memasukkan kata sandi saat Anda duduk di depan komputer dan bekerja,

Saya menggunakan ctrl-shift-eject untuk mengunci layar. Cepat, sederhana, dan berfungsi. Ini adalah cara bawaan untuk mengunci layar. Tidak ada yang mungkin membuat alternatif hanya karena mereplikasi fungsi-fungsi yang sudah dipanggang ke dalam OS agak terlalu berlebihan bagi siapa pun untuk menghabiskan banyak waktu dalam pengejaran.

Sejauh yang saya tahu tidak ada opsi "layar kunci" di Keychain di 10.8, jadi solusi pilihan Anda tidak akan ada jika Anda meningkatkan. Sunting: Tidak melihat ini di preferensi Keychain; ya, masih ada di 10.8.

Jika Anda menggunakan Automator untuk ini, bisakah Anda hanya mengemas skrip sebagai aplikasi dan menetapkan kombo hotkey atau membiarkannya di Dock untuk akses cepat?

dr.nixon
sumber
Ctrl-shift-eject benar-benar baru saja memasuki mode "fast user switch". Setidaknya satu solusi VPN (yang perlu saya gunakan untuk tujuan kerja) tidak suka ini, dan memutus VPN ketika saya melakukan itu, mengakhiri sesi mendasar yang mungkin saya sambungkan. Sementara saya dapat dengan mudah menyambung kembali ke sesi VPN saya ketika saya membuka kunci komputer, itu bisa menjadi pengalaman + menit panjang, dan dengan demikian gagal opsi "cepat". Karena itu, ini bukan, IMO, solusi akurat untuk pertanyaan itu.
Jon V
0

Sama seperti penanya pertanyaan saya sedang mencari cara untuk menggunakan Layar Kunci Gantungan Kunci dengan cara cepat.

Menggabungkan pengetahuan dari petunjuk Mac OS X lama dan beberapa Applescripting saya datang dengan yang berikut:

Pertama ikuti langkah-langkah dari petunjuk Mac OS X yang terhubung untuk menambahkan pintasan keyboard untuk fungsionalitas Layar Kunci Keychains.

Bagi saya (pada 10.8.4) ini tidak menyelesaikan masalah karena saya harus menekan ctrl+ F8untuk mengalihkan fokus ke bilah status, tekan downuntuk membuka bilah menu Keychain, dan kemudian tekan ctrl+ F9untuk mengunci layar. Saya telah mengotomatiskan proses ini dengan Applescript berikut:

# 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

Buka Automator, buat Layanan baru, tambahkan Run Applescriptmodul, salin-tempel kode di atas dan simpan Layanan Automator dengan nama yang Anda inginkan. Sekarang, masuklah ke Pintasan Keyboard di Preferensi Sistem dan tambahkan pintasan keyboard untuk Layanan Automator yang baru dibuat. Saya mengatur milik saya ke ctrl+ cmd+ L.

Sekarang tekan pintasan keyboard di aplikasi apa pun dan layar Anda akan langsung terkunci.

Bagi mereka yang bertanya-tanya mengapa tidak pergi dengan metode lain, inilah pendapat saya tentang mereka:

  • Layar pengalihan / kunci pengguna yang cepat
    Dengan metode ini saya keluar dari jaringan WPA2 perusahaan saya. Ini tidak baik karena menghubungkan kembali kadang-kadang membutuhkan waktu lama.

  • Screensaver + kata sandi
    Mereplikasi fungsi tetapi ini berarti bahwa jika laptop saya tidak aktif selama beberapa waktu saat saya membaca makalah di sebelahnya, layar akan terkunci ketika saya ingin menggunakannya lagi. Ini tidak diinginkan. Menggabungkan metode ini dengan sudut panas memiliki efek samping yang pengguna Mac tidak berpengalaman mungkin memicu sudut panas secara tidak sengaja yang mengarah ke kunci layar. Saya juga kadang-kadang menabrak sebuah tikungan panas secara tidak sengaja yang akan sangat menghambat alur kerja saya.

  • Aplikasi pihak ke-3
    Semua ini baik-baik saja, tetapi mengapa menjalankan aplikasi bagian ke-3 jika tersedia secara native di OS?

Saaru Lindestøkke
sumber
-1

Saya menggunakan pengaturan kata sandi Screensaver dengan penekanan tombol (Ctrl + Shift + Eject) pada 10.6.8, dan dari apa yang saya lihat, itu melakukan hal yang sama dengan item Layar Kunci dari ikon bilah tugas Keychain Access.

Saya tahu bahwa ini mirip dengan beberapa jawaban lain, tetapi alih-alih "sudut panas", ia menggunakan penekanan tombol, yang lebih nyaman bagi saya.

Solusi ini dijelaskan secara lebih rinci di sini, di situlah saya mendapatkannya dari: http://osxdaily.com/2011/01/17/lock-screen-mac/

Sudah menggunakan ini selama beberapa tahun sekarang tanpa masalah.

nwinkler
sumber
1
Terima kasih tetapi, sayangnya ini mengharuskan opsi untuk "memerlukan screensaver saat kembali dari mode sleep atau screensaver" dicentang dan, seperti yang disebutkan sebelumnya, ini bukan sesuatu yang ingin saya gunakan.
user40433
-1

Nah, gabungkan saja dua jawaban di atas. Jalankan perintah ini:

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

Setelah mengatur preferensi Keamanan & Privasi untuk segera meminta kata sandi. Buatlah alias untuk shell Anda jika Anda ingin membuat perintah lebih mudah dieksekusi.

Kirk McElhearn
sumber
3
Ya tetapi, seperti yang disebutkan di atas, saya tidak ingin memiliki preferensi Keamanan & Privasi untuk selalu memerlukan kata sandi dengan segera. Inilah sebabnya mengapa fungsi perintah Layar Kunci (khusus) sangat keren - ini memberikan tingkat keamanan yang saya butuhkan berdasarkan sepenuhnya ad hoc.
user40433
-1

FWIW, saya mengerti situasi Anda dan telah mencari solusi yang bagus untuk ini sendiri. Saya berlari melintasi utas ini karena saya telah mencari metode yang agak lebih cepat daripada apa yang akhirnya saya dapatkan. Saya datang dengan sesuatu yang, meskipun tidak persis apa yang saya harapkan, berhasil dan merupakan kompromi yang dapat diterima. Saya menggunakan jenis yang sama dari perintah skrip GUI seperti yang ditunjukkan @markhunte (struktur yang sedikit berbeda, tetapi ide yang sama) tetapi alih-alih hanya menempatkan semuanya dalam alur kerja layanan Automator, saya memisahkannya menjadi bundel .app yang dibuat dengan Platypus. Saya melakukan ini karena dalam perjalanan dan pengujian saya menemukan bahwa layanan Automator berjalan sangat lambat dalam kondisi tertentu. Jika Mac Anda berada di bawah tekanan apa pun, yaitu pemindaian disk yang berjalan, perangkat lunak A / V melakukan sesuatu, Mail menarik email, dll., OS tampaknya mendorong layanan ke bagian belakang telepon. Ini memiliki pengaruh untuk mengambil beberapa detik sebelum alur kerja berjalan (kadang-kadang) dan kadang-kadang bahkan beberapa detik sebelum perintah GUI dalam layanan dijalankan. Cukup menjengkelkan jika Anda mencoba "dengan cepat" mengunci layar Anda dan butuh 10 detik untuk melakukannya!

Memiliki "aplikasi" mandiri juga memiliki keuntungan bahwa Anda dapat menggunakan lusinan aplikasi pihak ke-3 yang berbeda untuk menjalankannya, atau cukup menggunakan Spotlight atau layanan Automator untuk meluncurkan aplikasi. Mereka bekerja. Yang tercepat yang saya temukan adalah utilitas lama bernama Spark, yang secara ajaib masih berfungsi bahkan di 10.8.4. Jangan tanya saya bagaimana sejak terakhir dikembangkan musuh 10.4! Spark dapat ditemukan di sini - Spark

Selain semua ini, saya memerangi masalah perintah GUI yang terkadang berjalan lambat dengan bundling dalam cocoaDialog dan memanggilnya terlebih dahulu ketika aplikasi berjalan untuk menampilkan gelembung mengambang kecil di tengah layar yang menunjukkan Layar Kunci sedang terjadi. Biasanya kunci terjadi tepat setelahnya, tetapi jika ada penundaan, ini setidaknya memberikan beberapa "umpan balik" visual yang Anda tekan tombol kanan. Saya juga membuatnya sembuh sendiri - jika "Aktifkan Akses ke Perangkat Bantu" tidak aktif, ini memberi tahu Anda dengan dialog dan memungkinkan Anda mengaktifkannya segera. Ini juga akan memastikan Menu Akses Keychain ditampilkan di bilah menu karena ini merupakan persyaratan atau gagal total pembuatan skrip GUI.

Mike M
sumber
-2

Ctrl- Shift- ⏏ Eject(pada Mac yang lebih lama),
Ctrl- Shift- ⌽ Power(pada mac yang lebih baru)

Sama-sama.
sumber