PrivateFrameworks are always a joy.
Today, for a personal project I discovered how to use private Login.framework to lock programmatically via code (Swift or C) the screen of my mac book.
The method is called “SACLockScreenImmediate“.
You can find a more detailed list of Private Headers on this fork: https://github.com/elpsk/macOS_headers/tree/master/macOS/PrivateFrameworks
Swift code:
import Foundation func lock() { let libHandle = dlopen("/System/Library/PrivateFrameworks/login.framework/Versions/Current/login", RTLD_LAZY) let sym = dlsym(libHandle, "SACLockScreenImmediate") typealias myFunction = @convention(c) () -> Void let SACLockScreenImmediate = unsafeBitCast(sym, to: myFunction.self) SACLockScreenImmediate() } lock()
Or if you prefer, this is the C version:
C code:
extern int SACLockScreenImmediate ( void ); int main ( ) { return SACLockScreenImmediate(); }
Remember to compile using the clang command, like this:
$ clang -F /System/Library/PrivateFrameworks -framework login -o lockscreen lockscreen.c
Enjoy temporized lock screens!
Latest posts by Alberto Pasca (see all)
- Swift – Simple full screen loader - 11 August 2022
- macOS – Disable microphone while typing - 11 April 2022
- iOS – Secure app sensitive information - 25 March 2022