cheesydoritosandkale
cheesydoritosandkale

Reputation: 609

Kiosk style without activating full-screen mode - OS X

I am trying to hide the dock, and menu/spotlight bar at the top of the screen and basically go into kiosk mode for my Cocoa OS X app. However, I don't want to activate full-screen mode. I want the app to run as normal, but simply hide the dock and the menu/spotlight area on the desktop to discourage users from using them. I have tried a variety of options and I can't seem to get it to work.

https://developer.apple.com/library/mac/technotes/KioskMode/Introduction/Introduction.html

It seems like most implementations of this code require going into full-screen or are in Objective C. Is there a way of doing this in Swift without going into Full-screen mode?

Upvotes: 2

Views: 861

Answers (2)

NSGod
NSGod

Reputation: 22958

Is the following what you're looking for?

Swift 3:

func applicationWillFinishLaunching(_ notification: Notification) {
    NSApp.presentationOptions = [.autoHideDock, .autoHideMenuBar]
}

Swift 2:

func applicationWillFinishLaunching(notification: NSNotification) {
    NSApp.presentationOptions = [.AutoHideDock, .AutoHideMenuBar]

}

(Comment everything else out in your code, or at least the code you included here).

Upvotes: 0

cheesydoritosandkale
cheesydoritosandkale

Reputation: 609

I figured out how to do it! I could hide the menu using NSMenu but I had to hide the dock by accessing the terminal. There may be an easier and cleaner way of doing it, but I was unable to find one. I hope this helps anyone else looking for a solution.

  import Cocoa

   @NSApplicationMain
   class AppDelegate: NSObject, NSApplicationDelegate {

  var datastring = NSString()


  func applicationDidFinishLaunching(aNotification: NSNotification) {

  let task = NSTask()
  let pipe = NSPipe()
  task.standardOutput = pipe

  task.launchPath = "/bin/bash/"
  task.arguments = ["defaults write com.apple.dock tilesize -int 1", 
   "killall -Kill Dock"]

 let file:NSFileHandle = pipe.fileHandleForReading

  task.launch()
  task.waitUntilExit()

  let data =  file.readDataToEndOfFile()
  datastring = NSString(data: data, encoding: NSUTF8StringEncoding)!

  }

   func applicationWillTerminate(aNotification: NSNotification) {
  }

 override func awakeFromNib() {

 NSMenu.setMenuBarVisible(false)

 }
  }
 }

Upvotes: 0

Related Questions