Skip to content

Commit

Permalink
build w better permissions, NSAlert, gitignore
Browse files Browse the repository at this point in the history
  • Loading branch information
insanj committed Mar 12, 2021
1 parent d29ed20 commit ccdc3f1
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 76 deletions.
Binary file removed .DS_Store
Binary file not shown.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.DS_Store
xcuserdata/

2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
# whilom
🪄 keep big sur awake when the lid is closed

![](https://user-images.githubusercontent.com/951011/91617807-d6e4ce80-e956-11ea-84f8-cbe9896925ad.png)

## Authors

```
Expand Down
4 changes: 2 additions & 2 deletions whilom.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MARKETING_VERSION = 0.1.0;
MARKETING_VERSION = 0.1.2;
PRODUCT_BUNDLE_IDENTIFIER = com.insanj.whilom;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -301,7 +301,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MARKETING_VERSION = 0.1.0;
MARKETING_VERSION = 0.1.2;
PRODUCT_BUNDLE_IDENTIFIER = com.insanj.whilom;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down
Binary file not shown.

This file was deleted.

This file was deleted.

118 changes: 78 additions & 40 deletions whilom/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//
// AppDelegate.swift
// keysmith
// whilom
//
// Created by Julian Weiss on 8/28/20.
// Copyright © 2020 Julian Weiss. All rights reserved.
Expand All @@ -10,39 +10,82 @@ import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

var keysmithStatusItem: NSStatusItem?
var menu: NSMenu?
var hasEnabled: Bool = false
// MARK: - properties
// MARK: menu, list items
let menu: NSMenu = {
return NSMenu()
}()

let whilomStatusItem: NSStatusItem = {
var statusItem = NSStatusItem()
statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
statusItem.button?.title = "🪄"
return statusItem
}()

let titleMenuItem: NSMenuItem = {
let versionString = Bundle.main.infoDictionary!["CFBundleShortVersionString"]!
return NSMenuItem(title: "🪄 whilom \(versionString)", action: nil, keyEquivalent: "")
}()

let openMenuItem: NSMenuItem = {
let item = NSMenuItem()
item.title = "🎩 Turn Sleep Off"
return item
}()

let quitMenuItem: NSMenuItem = {
let quitMenuItem = NSMenuItem()
quitMenuItem.title = "Quit"
return quitMenuItem
}()

// MARK: scripts
let enableSleepScript: NSAppleScript? = {
let myAppleScript = """
do shell script "sudo pmset -a disablesleep 1" with administrator privileges
"""

let openMenuItem = NSMenuItem()

func applicationDidFinishLaunching(_ aNotification: Notification) {
keysmithStatusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
keysmithStatusItem?.button?.title = "🪄"
var error: NSDictionary?
guard let scriptObject = NSAppleScript(source: myAppleScript) else {
return nil
}

return scriptObject
}()

let disableSleepScript: NSAppleScript? = {
let myAppleScript = """
do shell script "sudo pmset -a disablesleep 1" with administrator privileges
"""

var error: NSDictionary?
guard let scriptObject = NSAppleScript(source: myAppleScript) else {
return nil
}

menu = NSMenu()
menu?.delegate = self
keysmithStatusItem?.menu = menu
return scriptObject
}()

// MARK: - runtime
func applicationDidFinishLaunching(_ aNotification: Notification) {
menu.delegate = self
whilomStatusItem.menu = menu

let titleMenuItem = NSMenuItem(title: "🪄 whilom 0.1.0", action: nil, keyEquivalent: "")
titleMenuItem.isEnabled = false
menu?.addItem(titleMenuItem)
menu.addItem(titleMenuItem)

menu?.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem.separator())

openMenuItem.title = "🎩 Turn Sleep Off"
openMenuItem.action = #selector(disableSleep)
openMenuItem.target = self
menu?.addItem(openMenuItem)
menu.addItem(openMenuItem)

menu?.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem.separator())

let quitMenuItem = NSMenuItem()
quitMenuItem.title = "Quit"
quitMenuItem.action = #selector(quitWhilom(_:))
quitMenuItem.target = self
menu?.addItem(quitMenuItem)
menu.addItem(quitMenuItem)
}

func applicationWillTerminate(_ aNotification: Notification) {
Expand All @@ -54,35 +97,30 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}

@objc func disableSleep() -> Bool {
let myAppleScript = """
do shell script "sudo pmset -a disablesleep 1" with administrator privileges
"""

var error: NSDictionary?
guard let scriptObject = NSAppleScript(source: myAppleScript) else {
return false
disableSleepScript?.executeAndReturnError(&error)

if let error = error {
let alert = NSAlert(error: NSError(domain: "com.insanj.whilom", code: 0, userInfo: [NSLocalizedDescriptionKey: error["NSAppleScriptErrorMessage"]!]))
alert.runModal()
return false
}

let _: NSAppleEventDescriptor = scriptObject.executeAndReturnError(&error)


openMenuItem.title = "😴 Turn Sleep On"
openMenuItem.action = #selector(enableSleep)
return true
}

@objc func enableSleep() -> Bool {
let myAppleScript = """
do shell script "sudo pmset -a disablesleep 0" with administrator privileges
"""

var error: NSDictionary?
guard let scriptObject = NSAppleScript(source: myAppleScript) else {
return false
enableSleepScript?.executeAndReturnError(&error)

if let error = error {
let alert = NSAlert(error: NSError(domain: "com.insanj.whilom", code: 0, userInfo: [NSLocalizedDescriptionKey: error["NSAppleScriptErrorMessage"]!]))
alert.runModal()
return false
}

let _: NSAppleEventDescriptor = scriptObject.executeAndReturnError(&error)


openMenuItem.title = "🎩 Turn Sleep Off"
openMenuItem.action = #selector(disableSleep)
return true
Expand Down
8 changes: 4 additions & 4 deletions whilom/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>LSUIElement</key>
<true/>
<key>NSSystemAdministrationUsageDescription</key>
<string>Enable or disable your Mac from sleeping.</string>
<key>NSAppleEventsUsageDescription</key>
<string>Turning on or off the ability for your Mac to go to Sleep.</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2021 Snowcode, LLC. All rights reserved.</string>
<key>NSMainStoryboardFile</key>
Expand All @@ -36,9 +36,9 @@
<string>NSApplication</string>
<key>NSSupportsAutomaticTermination</key>
<true/>
<key>NSAppleEventsUsageDescription</key>
<string>Turning on or off the ability for your Mac to go to Sleep.</string>
<key>NSSupportsSuddenTermination</key>
<true/>
<key>NSSystemAdministrationUsageDescription</key>
<string>Enable or disable your Mac from sleeping.</string>
</dict>
</plist>

0 comments on commit ccdc3f1

Please sign in to comment.