无需激活全屏模式的 Kiosk 样式 - OS X

Posted

技术标签:

【中文标题】无需激活全屏模式的 Kiosk 样式 - OS X【英文标题】:Kiosk style without activating full-screen mode - OS X 【发布时间】:2016-06-30 18:16:21 【问题描述】:

我正在尝试隐藏屏幕顶部的停靠栏和菜单/聚光灯栏,并且基本上进入我的 Cocoa OS X 应用程序的信息亭模式。但是,我不想激活全屏模式。我希望应用程序正常运行,但只需隐藏桌面上的 Dock 和菜单/聚光灯区域,以阻止用户使用它们。我尝试了多种选择,但似乎无法使其正常工作。

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

似乎这段代码的大多数实现都需要进入全屏模式或在 Objective C 中。有没有办法在 Swift 中做到这一点而无需进入全屏模式?

更新 - 我知道怎么做!我可以使用 NSMenu 隐藏菜单,但我必须通过访问终端来隐藏 Dock。可能有一种更简单、更清洁的方法,但我找不到。我希望这可以帮助其他正在寻找解决方案的人!

 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)!

// Insert code here to initialize your application
 

func applicationWillTerminate(aNotification: NSNotification) 
// Insert code here to tear down your application
  

override func awakeFromNib() 

 NSMenu.setMenuBarVisible(false)


  

【问题讨论】:

菜单可以隐藏在首选项中。也许脚本可以隐藏它。 我可以从 NSMenu 隐藏菜单,但我仍然无法隐藏 Dock。 这些命令将更改停靠设置,但我不确定如何在命令中隐藏它;默认写入 com.apple.dock autohide -bool true 默认写入 com.apple.dock autohide-delay -float 0 默认写入 com.apple.dock autohide-time-modifier -float 0(每个“默认值”之前的换行符) 谢谢约翰!我想出了如何通过访问终端来做到这一点。 不错。核选项! 【参考方案1】:

以下是您要查找的内容吗?

斯威夫特 3:

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

斯威夫特 2:

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


(注释掉您代码中的所有其他内容,或者至少注释您在此处包含的代码)。

【讨论】:

【参考方案2】:

我想出了怎么做!我可以使用 NSMenu 隐藏菜单,但我必须通过访问终端来隐藏 Dock。可能有一种更简单、更清洁的方法,但我找不到。我希望这可以帮助其他寻找解决方案的人。

  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)

 
  
 

【讨论】:

以上是关于无需激活全屏模式的 Kiosk 样式 - OS X的主要内容,如果未能解决你的问题,请参考以下文章

Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式

Android 8.1(API 27) - 重启后键盘未在Kiosk模式应用中显示

js浏览器退出kiosk模式最小化

Flutter 可以在 kiosk 模式下制作 Application 吗? [关闭]

适用于Chrome或Firefox的Kiosk模式

简单实现Windows开机就运行Chrome浏览器并且全屏显示