View Full Version : Aiuto con comando da terminale
thecursedfly
19-02-2007, 15:37
Salve gente, ho in mente una strullata che magari puo' piacere agli altri (a me serve per stupire gli amici :P).
Ho creato una strullata di file che mi esegue un paio di comandi da terminale, ma nn è perfetto...
Lo scopo è di avviare lo screensaver Lotsawater (freeware, ve lo consiglio!) come sfondo del desktop (usando una immagine "custom") con un doppio clic su un'icona (o mettendola che parte al login).
il comando per avviare lo screensaver è:
/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background
Va scritto tutto su una riga dentro a TextEdit in modalità plain text (Command+Shift+T), bisogna salvarlo ad esempio nella nostra home, rinominare il file con estensione .command e aperto il terminale rendere eseguibile in nostro file con il comando "chmod +x nomefile.command" (senza apici).
Ora, arrivo al mio problema:
una volta avviato lo screensaver voglio chiudere il terminale.
ho capito che basta aggiungere "killall Terminal" nel mio documento, pero' a quel punto lui mi dice che se esce dal terminale verrà chiuso pure lo screensaver...
Come faccio a mantenere lo screensaver sullo sfondo pur chiudendo il terminale?
Grazie :)
ps. sono abbastanza niubbo :p
Hmm fai un applescript e usi:
do shell script "comando-da-eseguire-nel-terminale"
cosa e' una "strullata"???
thecursedfly
19-02-2007, 15:57
cosa e' una "strullata"???
ahah, forse è toscano... :p
cmq è sinonimo di "sciocchezza"
thecursedfly
19-02-2007, 16:00
Hmm fai un applescript e usi:
do shell script "comando-da-eseguire-nel-terminale"
hmmm.. dovro' scoprire allora come si crea un applescript.. :)
cmq, sicuro che a quel punto funziona? e poi "comandodaeseguirenelterminale" cosa sarebbe? il mio file o quello che c'è scritto dentro? immagino le seconda.. :fagiano:
gracias cmq
Per fare un applescript devi usare:
Applicazioni > AppleScript > Script Editor
Poi scrivi:
tell application "System Events"
do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background"
end tell
(il tell blabla lo metto io perché mi piace, ma dovrebbe funzionare anche solo con la riga del do shell script)
Salvi come Script o come Applicazione (non cambia molto a questo livello) e selezioni "esegui soltanto". Ho appena provato sul mio ed è andato. Agendo a livello di sistema operativo non ti va neanche ad aprire il Terminale, gira tutto "sotto".
Poi per fermarlo puoi farne un altro che va a killare il processo ScreenSaverEngine.
Non è difficile.
thecursedfly
19-02-2007, 16:15
danke :D
nn credevo fosse difficile infatti... ormai macosx mi vizia... :D
cmq mi piacciono 'sti script... :cool:
ciao
Ghigogogo
19-02-2007, 16:30
Stupendo Lotsawater
thecursedfly
19-02-2007, 16:56
problemino, mi dice:
"Impossibile leggere il documento perché lo script non è modificabile (è stato registrato come solo eseguibile)."
forse perchè me lo vuole aprire con ScriptEditor... ma allora come dovevo fare? Io l'ho salvato come script e con l'opzione "Esegui soltanto".
Ulteriore prova: salvandolo come applicazione funziona (sia con che senza "esegui soltanto"), inoltre è meglio se nn è spuntata l'opzione "schermo d'avvio".
Ora pero' mi tocca ogni volta aprire il terminale per chiudere la cosa, in quanto ho provato, ma lo script "terminatore" nn ha effetto...
>Ho risolto con un .command che termina il processo da terminale
forse il problema è che usavo nello script un comando del terminale? (killall ScreenSaverEngine)
Lo script di chiusura dovrà essere:
do shell script "killall ScreenSaverEngine"
Eventualmente poi si può fare un sistema di check all'avvio così hai uno script solo che avvia/termina il processo automaticamente.
Ora su due piedi non mi funge e devo uscire, stasera magari riguardo.
Ghigogogo
19-02-2007, 17:07
se faccio: tell application "ScreenSaverEngine" to quit è la stessa cosa??
thecursedfly
19-02-2007, 17:15
Lo script di chiusura dovrà essere:
do shell script "killall ScreenSaverEngine"
Eventualmente poi si può fare un sistema di check all'avvio così hai uno script solo che avvia/termina il processo automaticamente.
Ora su due piedi non mi funge e devo uscire, stasera magari riguardo.
infatti, nemmeno a me fungeva.. :p
cmq a me il .command funge... contenuto
killall ScreenSaverEngine
killall Terminal
(naturalmente la seconda riga chiude il terminale, quindi magari nn usatelo proprio in quel momento... :Prrr: )
Sarebbe meglio uno script unico pero' che controlla all'avvio se è già in funzione lo ssv e se si, lo termina... vediamo se ci si fa.. :)
thecursedfly
19-02-2007, 17:17
se faccio: tell application "ScreenSaverEngine" to quit è la stessa cosa??
questo funziona... :) e quindi lo uso... l'ho creato come applicazione...
manca solo il controllo all'avvio... :)
Ghigogogo
19-02-2007, 18:19
Lo so che manca ma nn so come metterlo
thecursedfly
19-02-2007, 18:37
dicevo in generale che manca, cmq nemmeno io sono capace... ho provato un po', ma se nn sai la sintassi degli applescript è dura pure a fare una selezione :P
consiglio: nn usate il tasto destro mentre è in funzione lo screensaver sullo sfondo, si blocca mezzo finder... :fagiano: (poi vi tocca chiudere il processo da terminale...)
ho provato a farlo partire all'avvio... seppur un po' lento, funziona :D
(magari, a usare qualcosa di semplice come screensaver.. dipo le diapositive...)
ciao
Ghigogogo
19-02-2007, 20:47
Con due script riesco a farlo andare con uno no. Se c'è qualcuno in grado di farlo posti lo script. Grazie
Ghigogogo
20-02-2007, 15:21
Non c'è nessuno in grado di farlo??
tell application "System Events"
set noSaver to not (exists process "ScreenSaverEngine")
end tell
if noSaver then
do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background"
else
tell application "ScreenSaverEngine" to quit
end if
Però avviso subito che a me si blocca nella fase di avvio dello screensaver. Nel senso... parte il salvaschermo come sfondo, ma lo scriptino resta aperto bloccato e devo forzare la chiusura.
Poi aprendolo una seconda volta rileva correttamente il salvaschermo e lo blocca, e poi si chiude lui stesso regolarmente.
Onestamente non ho mica capito perché vada in loop all'apertura, ho provato a girare un po' la sintassi ma qualunque prova mi dava lo stesso risultato. Boh...
Ghigogogo
20-02-2007, 17:30
Anke io avevo provato a farne uno ma mi dava lo stesso problema...:muro:
thecursedfly
20-02-2007, 17:54
cmq sia è quello che cercavo... :cool:
grazie a entrambi :)
ciao
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.