Ho provato per un certo numero di mesi, usando molti metodi, per eseguire un'applicazione Nuiteq chiamata Snowflake sul nostro 10 Mac Minis collegato ai touch-screen in modalità Kiosk pura. Sto usando Yosemite. Queste macchine devono essere in grado di:
- Esegui schermate senza finestre complete
- Disabilita il Dock e la barra dei menu
- Accesso al finder rimosso
- Non mostra il cursore predefinito e utilizza la funzionalità multitouch solo in Snowflake
Purtroppo, non ho accesso all'applicazione e non posso aggiungere cose come NSApplicationPresentationHideMenuBar
a Snowflake in quanto è un software proprietario.
Inizialmente ho iniziato aggiungendo LUSIPresentationMode
al file info.plist dell'app, con un certo successo. Il dock e la barra dei menu apparivano ancora. Poi ho creato un plist in ~/Library/LaunchAgents/
che ha sostituito finder con l'app. Sembrava questo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>POSIXSpawnType</key>
<string>App</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<true/>
<key>AfterInitialDemand</key>
<false/>
</dict>
<key>Label</key>
<string>com.apple.FindertoSnowflake</string>
<key>Program</key>
<string>/Applications/snowflake/run.sh</string>
<key>CFBundleIdentifier</key>
<string>com.apple.finder</string>
<key>ThrottleInterval</key>
<integer>0</integer>
</dict>
</plist>
e ho scritto 2 brevi script che hanno caricato e scaricato il plist per fermare / avviare l'app. (Il seguente è per avviarlo)
PASSWORD=password
echo $PASSWORD | sudo -S killall Finder
launchctl unload -w /System/Library/LaunchAgents/com.apple.Finder.plist
launchctl load -w /Users/snowbloke/Library/LaunchAgents/com.apple.FindertoSnowflake.plist
E questo per smettere:
PASSWORD=password
echo $PASSWORD | sudo -S killall -vu snowflake
E quindi, il software non nasconde il cursore principale, quindi ho dovuto scrivere in una emulazione di tastiera di Fn + F3 per avviare lo script. Altrimenti ci sarebbero stati 2 set di interazione tra i driver touch usati da Snowflake e dal sistema operativo. Questo è stato molto fastidioso.
osascript -e "tell application \"System Events\" to key code 99"
exit 0
Ogni mac si collega direttamente nell'app dall'inizio.
Dopo aver eseguito tutto questo ed eseguito test nel tempo, gli utenti sono ancora in grado di accedere al desktop OS e il finder inizia a funzionare. Per qualche motivo, la barra dei menu o il dock vengono visualizzati sullo schermo. Esiste una soluzione più robusta? Cosa sto sbagliando?