Jak automaticky spustit program?

Tato sekce je určena všem začínajícím Apple uživatelům, kteří potřebují pomoc a nejsou si jistí, do které ze sekcí jejich dotaz přesně patří. Pokud se Vám nepodařilo pomocí vyhledávání najít řešení pro Váš problém, tak neváhejte a napište svůj dotaz právě sem. Neexistují hloupé otázky, jen hloupé odpovědi.

Moderátoři: Alisczech, RadimSvidrnoch, emkei, MichalM.Mac, Streeter, Renik, zmiy, dandas

Odpovědět
Faramir

Jak automaticky spustit program?

Příspěvek od Faramir » 01 zář 2012 20:10

Potřeboval bych, aby se mi po aktivaci spořiče obrazovky automaticky spustil program a aby to bylo takhle aktivní vždycky, i po restartu počítače, prostě abych to jednou nastavil a od té doby se to tak dělalo vždycky. Napadlo mě, že by se pro to asi měl použít Automator, ale já s ním ještě neměl tu čest. Poradíte, prosím, přesný postup, co a jak udělat? Děkuji.

Uživatelský avatar
MichalM.Mac
Příspěvky: 3342
Registrován: 30 črc 2012 11:03
Kontaktovat uživatele:

Re: Jak automaticky spustit program?

Příspěvek od MichalM.Mac » 01 zář 2012 23:14

Tohle by bývalo bylo řešení http://www.themcdonalds.net/richard/ind ... StartSaver
Bohužel nefunguje na 10.8

Faramir

Re: Jak automaticky spustit program?

Příspěvek od Faramir » 02 zář 2012 00:03

Fňuk :-( A nevíš o něčem, co na 10.8 funguje? Hrál jsem si totiž s Automatorem a buď jsem to nastavil špatně nebo to nejde tak, jak bych potřeboval...

Uživatelský avatar
MichalM.Mac
Příspěvky: 3342
Registrován: 30 črc 2012 11:03
Kontaktovat uživatele:

Re: Jak automaticky spustit program?

Příspěvek od MichalM.Mac » 02 zář 2012 01:25

Screensaver lze pustil manuálně.
'/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app'

Bude třeba skriptovat. Nenapadá mě, jak to vše udělat v automatoru (např. akce open application neumožňuje spustit ScreenSaverEngine.app(je zašedlá))

------------------
#!/bin/zsh
open '/Applications/TVOJE_APLIKACE.app'
open '/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app'
-----------------
+ bude ho to chtít obohatit o konrolování idle time viz -> http://hintsforums.macworld.com/archive ... 85683.html
potom mu dej právo pro spuštění -> chmod +x "iScript.zsh"

Nakonec je potřeba naplánovat spouštění skriptu. Buď použiješ launchd nebo cron
Pokud se ti to dotho nechce, je tu cool GUI aplikace na MAS - lingon 3

Faramir

Re: Jak automaticky spustit program?

Příspěvek od Faramir » 02 zář 2012 01:39

Že jde screensaver spustit manuálně vím, mám na něj zástupce v docku :-)

Jestli jsem to pochopil správně, tak tento skript mi spustí screensaver a tu aplikaci, ano? To by ale znamenalo, že bych musel v nastavení vypnout spouštění screensaveru a nějak zařídit, aby se třeba po deseti minutách nečinnosti spustil tento skript. To zařídím jak? Nevím totiž, co je launchd nebo cron, nikdy jsem se s tím nesetkal.

Ten Lingon 3 vypadá podle popisu dobře, jsi si jistý, že by dělal to, co potřebuji? $2.99 USD není zase tak moc, ale přesto bych je nerad jen tak vyhodil. Navíc podle hodnocení nic moc. Škoda, že Apple neumožňuje časově omezenou trial verzi...

edit: Tak jsem trochu pátral a zjistil jsem, že mnohem lepší je Lingon 2.2.1, jenže stejně netuším, jak v něm nastavit, aby se ten program spustil po aktivaci screensaveru. V klikací nabídce to není, možná by to šlo přes expertní režim (tam se edituje jakýsi XML soubor nebo co), ale to neumím...

Uživatelský avatar
MichalM.Mac
Příspěvky: 3342
Registrován: 30 črc 2012 11:03
Kontaktovat uživatele:

Re: Jak automaticky spustit program?

Příspěvek od MichalM.Mac » 02 zář 2012 11:06

Pointa je, že nebudeš řešit jak spustit aplikaci po screensaveru, ale že screesaver a aplikaci spustí skript. V tom odkazu se řeší, jak zjistit idle time (čas bez interakce uživatele).

launchd slouží k automatickému spouštění démonů a jiných prográmků na pozadí. Můžeš nastudovat zde:
https://developer.apple.com/library/mac ... ction.html
https://developer.apple.com/library/mac ... dJobs.html
https://developer.apple.com/library/mac ... dJobs.html
Není to v zásadě nic extra komplikovaného. Není vyžadováno programování. Stačí vytvořit XML soubor, kde bude cesta ke skriptu a informace, jak často ho spouštět a to XML pak uložit do ~/Library/LaunchAgents nebo /Library/LaunchDeamons

Lingon je jen pěkná aplikace, která to umožňuje naklikat (ta verze 3 to nejspíš dělá jinak, protož MAS ale fuknce je stejná)

Každých X minut ti lingon nebo launch spustí tvůj script, který se podívá, jaký je idle time. Pokud bude idle time větší než Y, script spustí screensaver a požadovanou aplikaci.

Uživatelský avatar
MichalM.Mac
Příspěvky: 3342
Registrován: 30 črc 2012 11:03
Kontaktovat uživatele:

Re: Jak automaticky spustit program?

Příspěvek od MichalM.Mac » 02 zář 2012 11:47

Teď jsem si to cvičně vyzkoušel, protože se nudim, marodim a vůbec jsem hodný na Mac uživatele :-))

Script v bash např. iScript.bash

Kód: Vybrat vše

#!/bin/bash

idl=$"`ioreg -c IOHIDSystem | awk '/HIDIdleTime/ {print int($NF/1000000000); exit}'`"
let idletime="20"
if [ $idl -gt $idletime ]; then
open '/Applications/iPhoto.app'
open '/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app'
fi
Poznámky:
idletime v sekundách udává čas bez interakce uživatele <- to budeš chtít upravit
do if bloku si můžeš dát libovolné příkazy. Třeba jen nahraď iPhoto.app za jinou libovolnou aplikaci
scriptu MUSÍŠ dát právo pro spuštění -> napíše do terminálu: chmod +x /KOMPLET/CESTA/KE/SCRIPTU/iScript.bash

Launchd položka /Library/LaunchAgents/com.screensaver.iscript.plist

Kód: Vybrat vše

<?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>Label</key>
	<string>com.screensaver.iscript</string>
	<key>ProgramArguments</key>
	<array>
		<string>/KOMPLET/CESTA/KE/SCRIPTU/iScript.bash</string>
	</array>
	<key>StartInterval</key>
	<integer>10</integer>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>
Poznámky:
Nezapomeň upravit cestu ke scriptu ;-)
StartInterval říká, jak často spouštět skript (v sekundách). Též budeš chít změnit.

Odpovědět