Safari Kiosk mode

Tråden skapades och har fått 8 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Göteborg
  • 2014-08-25 13:38

Hej!
Är på jakt efter ett effektivt sätt att köra Safari i Kiosk mode.
Tyvärr har tillägget Saft slutat att uppdateras så det blir nog mer handpåläggning här...

Kör just nu ett kontot med föräldrarkontroller så att bara Safari tillåts och det funkar fint. Kör det även i helskärmsläge och visar inga verktygsfält. Det är, en lösning men den är inte optimal.

Problemet är att jag vill ha funktionen att Safari ska återgå till startsidan om datorn varit inaktiv mer än typ 5 minuter.
Jag hittar ingen klockrent tillägg som ger mig detta, inte heller har jag lyckats göra ett AppleScript som löser det åt mig..

Behöver tips och idéer här känner jag.. Någon som vet bra tillägg eller som kan komma på hur man använder AppleScript /Automator för detta?

Tack!

Du skulle kunna kolla på om ControlPlane kanske kan hjälpa dig?
Annars kan denna appen det, men den kostar en liten slant: PowerManager

Sedan Saft slutade fungera kör vi denna, helt ok o en hel del inställningsmöjligheter för att dela upp skärmen i paneler osv..

http://ecrisper.com

  • Medlem
  • Göteborg
  • 2014-08-25 16:48

Tack Båda för era tips!
Johan, har kikat på den mjukvaran också, tycker ni den är värd pengarna?

  • Medlem
  • Göteborg
  • 2014-08-25 19:45

Hittade detta script som jag håller på att testa.. Hittills fungerar det som tänkt, nästan!

Jag får inte scriptet att fatta att den gått ur sin idle, utan den öppnar om google.se vid varje check, i detta fallet var 5e sekund.
jag har försökt med keystroke "r" using command down men det fungerar inte.
@suddgummi , du brukar ju va kung konung på denna typen av problem, tips?

Citat:

global quit_after, check_every

set quit_after to 300
set check_every to 5
set minute to quit_after / 60

display dialog "Kontroll sker var " & check_every & " sekund. Starstidan kommer att laddas om efter " & minute & " minuter av inaktivitet."

on reopen
display dialog "Kontroll sker var " & check_every & " sekund. Starstidan kommer att laddas om efter " & minute & " minuter av inaktivitet."
end reopen

on idle
set idletime to do shell script "echo $((`ioreg -c IOHIDSystem | sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'` / 1000000000))"
if (idletime as integer) > quit_after then

tell application "Safari"
activate
try
repeat
close tab 1 of window 1
end repeat
end try


tell application "Safari"
open location "www.google.se"
end tell


end tell
end if
return check_every
end idle

Senast redigerat 2014-08-26 10:02
Ursprungligen av kladda:

Hittade detta script som jag håller på att testa.. Hittills fungerar det som tänkt, nästan!

Jag får inte scriptet att fatta att den gått ur sin idle, utan den öppnar om google.se vid varje check, i detta fallet var 5e sekund.
jag har försökt med keystroke "r" using command down men det fungerar inte.
@suddgummi , du brukar ju va kung konung på denna typen av problem, tips?

Ojdå, jag som tycker jag fulhackar mest.
Nu har jag inte min Mac med mig (är på tjänsteresa), men spontant ser det väldigt krångligt ut med allt Awk:ande Jag hade nog gjort som Neil Smithline

Ursprungligen av Neil:

# Get MacOSX idletime. Shamelessly stolen from http://bit.ly/yVhc5H
/usr/sbin/ioreg -c IOHIDSystem | /usr/bin/awk '/HIDIdleTime/ {print int($NF/1000000000); exit}'

Notera användandet av int($NF........)...

Testa att köra lite i Terminalen först och laborera med Awk så du får ut rätt fält och resultat. Om du gör ett enkelt skript som pausar i några sekunder kan du se att du får förväntat resultat från kommandot.
Nåt sånt här kanske (heelt otestat, så det kanske inte funkar)?

#!/bin/bash

SLEEP=10

echo "Sover ${SLEEP} sekunder..."
sleep ${SLEEP}

SLEEPTIME=$(/usr/sbin/ioreg -c IOHIDSystem | /usr/bin/awk '/HIDIdleTime/ {print int($NF/1000000000); exit}') 
echo "Sov i $(SLEEPTIME) sekunder..."

Sen när man får det att lira tar man och lägger in det i Applescriptet. Testa med/utan int.
Finns säkert bättre sätt, men så brukar jag göra när jag ska lyfta in "terminalkommandon" i AS.

Jag blir lite nyfiken på vad som händer när du loopar igenom och stänger alla tabbar i Safari, stängs inte fönstret till slut? Varför stänger du inte av tabbarna i inställningarna för Safari (fanns inställning där tidigare iaf)?
Eller bara kör "open http://dinwebbadress.här" som ett shell skript?
Om man bara vill ha en snabb avstängning av Safari (utan att man bryr sig så mycket om vad den gör) så kan man döda den i Terminalen med, typ killall -9 Safari i en loop som kollar efter Safaris PID och kör dödandet i intervaller om 1 sekund t.ex. tills man tagit livet av appen. Kan vara käckt om Safari krashar av någon anledning också. Men det är inte så vackert som sagt eftersom ditt skrivbord kommer visas när Safari stängs.

  • Medlem
  • Göteborg
  • 2014-08-26 10:04

Tack! Jag ska gräva ned mig i detta direkt jag kommer hem i ef.mid

Anledningen att jag dödar flik för flik (och ja, tillslut hela fönstret) är att det eg. inte finns någon anledning.
Jag hade kunnat döda appen rakt av och sedan bara startat upp den igen.
Spelar ingen roll hur man gör det, det är resultatet av att safari ska återgå till google.se efter 5 minuters inaktivitet jag vill åt. Alla sidor som lämnats öppna ska stängas.

Just nu lyckas jag som sagt inte få

Citat:

tell application "Safari"
open location "www.google.se"
end tell

att ligga utanför idle och därför stängs och öppnas fönstret vid varje check_every 5

  • Medlem
  • Göteborg
  • 2014-08-26 20:43

Det har löst sig!
Fick denna hjälpen via apples https://discussions.apple.com.

Ursprungligen av Frank:

You need to set a flag in your code that indicates if the browser has been reopened and the system has remained idle since the last time the routine was called.

There are a few ways to do this here is one, a bit quick and dirty but it solves the issue.

(everything after the try is the same as your code).

I added the variable quitTime and these statements on lines 3, 18, 20-22 and 24, 25

set quitTime to 0
set idletime to idletime as integer

if quitTime is 1 and (idletime < quit_after) then
set quitTime to 0
end if

if quitTime is 0 and (idletime > quit_after) then
set quitTime to 1

Den färdiga koden ser nu ut så här:

Citat:

global quit_after, check_every, quitTime

set quitTime to 0
set quit_after to 60
set check_every to 5
set minute to quit_after / 60

display dialog "Start " & check_every & " sec. Starstidan kommer att laddas om efter " & minute & " minuter av inaktivitet."

on reopen
display dialog "reopen Kontroll sker var " & check_every & " sekund. Starstidan kommer att laddas om efter " & minute & " minuter av inaktivitet."
end reopen

on idle

set idletime to do shell script "echo $((`ioreg -c IOHIDSystem | sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'` / 1000000000))"

set idletime to idletime as integer

if quitTime is 1 and (idletime < quit_after) then
set quitTime to 0
end if

if quitTime is 0 and (idletime > quit_after) then
set quitTime to 1

tell application "Safari"
activate
try
repeat
close tab 1 of window 1
end repeat
end try



tell application "Safari"
open location "http://www.google.se"
end tell



end tell
end if
return check_every
end idle

Vill du ha en app som lyssnar efter inaktivitet och därefter gör något (i detta fallet stänger och öppnar om Safari med Google.se) så har du scriptet ovan.

Ursprungligen av kladda:

Tack Båda för era tips!
Johan, har kikat på den mjukvaran också, tycker ni den är värd pengarna?

Med tanke på alla inbyggda funktioner som gör att man kan skapa menyer osv för de sidor man vill att besökarna skall kunna använda så tycker jag den är värd pengarna. Sen att det inte är mina privata pengar kan ju ha nåt med saken o göra också

1
Bevaka tråden