Программно получить время до сна (и другие настройки энергосбережения) в Mac OS X - PullRequest
4 голосов
/ 16 марта 2012

Я бы хотел получить программно настройки энергосбережения в Системных настройках Mac OS X, в частности, настройки «Режим сна» или «Режим компьютера» для небольшого приложения, которое я пишу.

enter image description here

Я знаю, что вы можете получить настройки сна, например, используя командную строку из этого ответа SO

 pmset -g | grep "^[ ]*sleep" | awk '{ print $2 }'

, который печатает 60 (мое правильное время сна), но я бы предпочел использовать собственный API для получения этих настроек, если это возможно.К сожалению, мой поиск в Google до сих пор не принес ничего полезного.NSUserDefaults был самым близким, что я получил, но я не мог понять, как это можно использовать для получения настроек, которые мне нужны.

Кто-нибудь может помочь?

1 Ответ

1 голос
/ 25 ноября 2016

Да, прошло более 4 лет с тех пор, как был задан этот вопрос ... Непонятно, на каком языке был код. Использование Objective-C.

Настройки энергосбережения находятся в:

/Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist

Из приложения Mac теперь можно использовать:

NSString *powerMgt = @"/Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist";
NSDictionary *power = [NSDictionary dictionaryWithContentsOfFile:powerMgt];
// for example the sleep time on AC power
NSNumber *sleepyTime = [[[power objectForKey:@"Custom Profile"] objectForKey:@"AC Power"] objectForKey:@"System Sleep Timer"];

со словарем, похожим на:

{
    ActivePowerProfiles =     {
        "AC Power" = "-1";
        "Battery Power" = "-1";
    };
    "Custom Profile" =     {
        "AC Power" =         {
            "Disk Sleep Timer" = 10;
            "Display Sleep Timer" = 10;
            "Display Sleep Uses Dim" = 1;
            GPUSwitch = 2;
            "Hibernate File" = "/var/vm/sleepimage";
            "Hibernate Mode" = 3;
            "Mobile Motion Module" = 1;
            PrioritizeNetworkReachabilityOverSleep = 0;
            "Standby Delay" = 4200;
            "Standby Enabled" = 0;
            "System Sleep Timer" = 0;
            TTYSPreventSleep = 1;
            "Wake On AC Change" = 0;
            "Wake On Clamshell Open" = 1;
            "Wake On LAN" = 1;
        };
        "Battery Power" =         {
            "Disk Sleep Timer" = 10;
            "Display Sleep Timer" = 10;
            "Display Sleep Uses Dim" = 1;
            GPUSwitch = 2;
            "Hibernate File" = "/var/vm/sleepimage";
            "Hibernate Mode" = 3;
            "Mobile Motion Module" = 1;
            ReduceBrightness = 1;
            "Standby Delay" = 4200;
            "Standby Enabled" = 0;
            "System Sleep Timer" = 15;
            TTYSPreventSleep = 1;
            "Wake On AC Change" = 0;
            "Wake On Clamshell Open" = 1;
        };
    };
}
...