Tengo un script de Bash que realiza ciertas acciones cuando la Mac entra en modo de suspensión. El script funcionaba bien en mi Mac con un chip Intel, pero no puede detectar si está en modo de suspensión o no con Apple Silicon.
Esta es la parte del script:
commandSleepStatus='echo $(ioreg -n IODisplayWrangler | grep -i IOPowerManagement | perl -pe '\''s/^.*DevicePowerState"=([0-9]+).*$/\1/'\'')/4 | bc'
sleepStatus=$(eval "$commandSleepStatus")
# echo "$sleepStatus"
# Establecer isRunning como falso si el modo de suspensión está activo
if [ "$sleepStatus" -eq 0 ]; then
isSleep=true
fi
El problema está con ioreg -n IODisplayWrangler | grep -i IOPowerManagement
. Parece que Apple ha eliminado IOPowerManagement
de ioreg
en Apple Silicon.
IODisplayWrangler
| | {
| | "IOClass" = "IODisplayWrangler"
| | "CFBundleIdentifier" = "com.apple.iokit.IOGraphicsFamily"
| | "IOProviderClass" = "IOResources"
| | "IOGraphicsIgnoreParameters" = {"aupc"=Sí,"auph"=Sí," bpc"=Sí,"aums"=Sí,"aupp"=Sí}
| | "IOGraphicsPrefsParameters" = {"thue"=Sí,"pscn"=Sí,"vbst"=Sí,"oscn"=Sí,"tbri"=Sí,"cyuv"=268435456,"tsat"=Sí}
| | "IOResourceMatch" = "IOKit"
| | "IOProbeScore" = 0
| | "IOMatchCategory" = "IOGraphics"
| | "IOMatchedAtBoot" = Sí
| | "IOGeneralInterest" = "IOCommand is not serializable"
| | "IOPersonalityPublisher" = "com.apple.iokit.IOGraphicsFamily"
| | "CFBundleIdentifierKernel" = "com.apple.iokit.IOGraphicsFamily"
| | }
Mi pregunta es si hay otra forma de lograr lo mismo.