I'm new to swift and tried to follow several different tutorials on the internet to make my App run terminal stuff.
I have a checkbox that should enable (through the terminal command) the charging chime (and of course turn it off when unchecked).
EDIT: Updated code, still quite not working:
@discardableResult func shell(_ command: String) -> String { let task = Process() task.launchPath = "/usr/bin/" task.arguments = ["-c", command] let pipe = Pipe() task.standardOutput = pipe task.launch() let data = pipe.fileHandleForReading.readDataToEndOfFile() let output: String = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String return output } @IBAction func SoundBox(_ sender: NSButton) { if(SoundBox.state == NSControl.StateValue.on){ self.helloLabel.stringValue = "It's On!" shell("say hello") //shell("defaults write com.apple.PowerChime ChimeOnAllHardware -bool true; open /System/Library/CoreServices/PowerChime.app &") } else if(SoundBox.state == NSControl.StateValue.off){ self.helloLabel.stringValue = "It's off!" shell("say hello") //shell("defaults write com.apple.PowerChime ChimeOnAllHardware -bool false; killall PowerChime") } New Console output:
2019-04-12 16:44:54.792282+0200 TerminApp[2985:45592] [General] Couldn't posix_spawn: error 13 2019-04-12 16:44:54.795254+0200 TerminApp[2985:45592] [General] ( 0 CoreFoundation 0x00007fff42444e45 __exceptionPreprocess + 256 1 libobjc.A.dylib 0x00007fff6d07c3c6 objc_exception_throw + 48 2 CoreFoundation 0x00007fff42444c77 +[NSException raise:format:] + 193 3 Foundation 0x00007fff446495e9 -[NSConcreteTask launchWithDictionary:error:] + 4437 4 TerminApp 0x000000010000299b $s9TerminApp14ViewControllerC5shellyS2SF + 635 5 TerminApp 0x000000010000349e $s9TerminApp14ViewControllerC8SoundBoxyySo8NSButtonCF + 1438 6 TerminApp 0x000000010000360c $s9TerminApp14ViewControllerC8SoundBoxyySo8NSButtonCFTo + 60 7 AppKit 0x00007fff3fcf8e80 -[NSApplication(NSResponder) sendAction:to:from:] + 312 8 AppKit 0x00007fff3fd63196 -[NSControl sendAction:to:] + 86 9 AppKit 0x00007fff3fd630c8 __26-[NSCell _sendActionFrom:]_block_invoke + 136 10 AppKit 0x00007fff3fd62fca -[NSCell _sendActionFrom:] + 178 11 AppKit 0x00007fff3fd8fd4f -[NSButtonCell _sendActionFrom:] + 96 12 AppKit 0x00007fff3fd618e5 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2375 13 AppKit 0x00007fff3fd8faa0 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 698 14 AppKit 0x00007fff3fd60322 -[NSControl mouseDown:] + 791 15 AppKit 0x00007fff3fc3c16f -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 5724 16 AppKit 0x00007fff3fb729de -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 2295 17 AppKit 0x00007fff3fb71e9f -[NSWindow(NSEventRouting) sendEvent:] + 478 18 AppKit 0x00007fff3fa116c3 -[NSApplication(NSEvent) sendEvent:] + 331 19 AppKit 0x00007fff3f9ffee8 -[NSApplication run] + 755 20 AppKit 0x00007fff3f9ef3f0 NSApplicationMain + 777 21 TerminApp 0x000000010000475d main + 13 22 libdyld.dylib 0x00007fff6e8a13d5 start + 1 )
open /System/Library/CoreServices/PowerChime.app &as a separate command, and not as part of the arguments ofdefaultsas well ?say helloin Terminal, it works? Did you meantshell("echosay hello")? Also, might want to do["-l", "-c", command]?