Problema durante l'impostazione dei limiti della finestra del terminale con AppleScript


3

Problema cercando di risolvere

Uso più finestre di terminale per sviluppare applicazioni web. Avrò un terminale aperto per vim, un terminale aperto per gite un terminale aperto per i comandi di base file / directory. L'applicazione del terminale non ricorda le impostazioni della finestra, quindi ogni volta che esco dal terminale o devo riavviare, devo ridimensionare e posizionare manualmente le finestre del mio terminale. Vorrei automatizzare questo processo usando AppleScript.

  • 1 finestra, grande, riempie la metà sinistra dello schermo ( vim)
  • 2 finestre, più piccole, sovrapposte l'una all'altra, riempiono l'altra metà dello schermo

La mia tentata soluzione

tell application "Terminal"

    activate
    set the bounds of the front window to {5, 0, 1000, 950}
    do script "clear" -- opens up the second window
    set the bounds of the front window to {1105, 0, 400, 500}
    -- haven't gotten to third window yet   

end tell

Il problema

La seconda finestra, quella creata da do script "clear", viene posizionata in modo strano. A sinistra, in alto e in altezza si comportano tutti come previsto. Tuttavia, la finestra è impostata sulla larghezza minima, indipendentemente dal valore passato nel parametro width. Potrebbe essere 1000 ed è ancora impostato al minimo. Ho cercato in alto e in basso su Google, SO, Super User e Ask Different senza fortuna.

Qualche consiglio su cosa sto facendo di sbagliato o cosa potrebbe causare questo problema con la strana larghezza della finestra creata da do script "clear"?

Clausola di esclusione della responsabilità

Sono un principiante di AppleScript. La sintassi è diversa da qualsiasi altra cosa con cui abbia mai lavorato (PHP, VBA, JavaScript) e sono quasi sicuro che questo non sia il modo migliore, o addirittura corretto, di fare ciò che voglio fare. Tuttavia, non conosco AppleScript abbastanza da dirlo davvero, a parte la sensazione di intestino.

Risposte:


5

I limiti della finestra sono un elenco di coordinate {sinistra, in alto, a destra, in basso}. Probabilmente hai inteso "400" come larghezza, ma è la posizione del bordo destro della finestra e 400 è a sinistra di 1105, quindi ottieni una finestra di larghezza minima. Modificare da 400 a 1105 più la larghezza desiderata, ad esempio 1505.

Ma prima di proseguire ulteriormente, Terminal ha una soluzione migliore per questo: Window Group. Se imposti un gruppo di finestre e le salvi come un gruppo di finestre, ogni volta che apri quel gruppo creerà finestre con lo stesso layout e aspetto.

Finestra> Salva Windows come gruppo ...

Puoi anche dire a Terminal di aprire un gruppo di finestre selezionato all'avvio:

Terminale> Preferenze> Avvio> All'avvio, apri:> Gruppo di finestre:

(Come scorciatoia, quando si crea un gruppo di finestre è presente una casella di controllo per renderlo il gruppo di avvio.)

Per eseguire automaticamente determinati comandi in quelle finestre, è possibile creare profili di impostazioni personalizzati e specificare il comando con

Terminale> Preferenze> Impostazioni> [profilo]> Shell> Avvio> Esegui comando:

quindi creare ogni finestra con il profilo appropriato.

Andando oltre, in Mac OS X Lion 10.7 puoi avere gruppi di finestre che ripristinano automaticamente i comandi senza creare profili personalizzati, creando i terminali usando

Shell> Nuovo comando

invece di eseguire il comando all'interno della shell del terminale. Quando si crea il gruppo di finestre, è possibile selezionare "Ripristina tutti i comandi". (Per impostazione predefinita, ripristinerà un piccolo set di comandi "sicuri", ma è necessario indicare esplicitamente se si desidera che esegua nuovamente tutti i comandi quando si apre il gruppo.)

Inoltre, Lion Terminal supporta Riprendi e ripristinerà automaticamente tutte le finestre ogni volta che apri Terminal. Ripristinerà anche i comandi "sicuri" per i terminali creati con Nuovo comando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.