Come passare argomenti della riga di comando agli elementi Dock?


Risposte:


96

Hai sostanzialmente due opzioni:

Opzione 1 : utilizzare Automator per creare un'applicazione che in effetti avvia Chrome con argomenti da riga di comando.

Avviare Automator e selezionare per creare un'applicazione . Fare doppio clic su Esegui script shell nella cartella Libreria / Utilità e sostituire il contenuto del testo - cat- con il seguente:

open -a "Google Chrome.app" --args -pinned-tab-count=4
# keep the .app suffix or will break with Parallels

Salva dove preferisci.

Per sostituire l'icona di questa applicazione, Ottieni informazioni sul tuo vero Google Chrome, fai clic sull'icona in alto a sinistra, premi Cmd-C, Ottieni informazioni sull'app Chrome Automator, fai clic sull'icona e premi Cmd-V.

Poiché è un'applicazione diversa, il Dock mostrerà due applicazioni Chrome quando è in esecuzione: Chrome e il tuo launcher Chrome.


Opzione 2 : modifica il pacchetto dell'applicazione per avviare invece uno script. Questo script avvierà l'applicazione effettiva, aggiungendo l'argomento della riga di comando.

Fare clic con il tasto destro del mouse Google Chrome.appe selezionare Mostra contenuto pacchetto . Vai a Contents/e apri Info.plistin Editor elenco proprietà / Xcode (strumenti per sviluppatori di Apple) o un plisteditor di terze parti .

Cerca la voce CFBundleExecutableo Executable File. Ricorda il suo valore (ad es. firefox-binPer Firefox). Sostituiscilo con parameterized-app.sh.

Apri Terminale e inserisci quanto segue:

touch /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh
open /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh

Si .shaprirà un editor per il file. Imposta il contenuto del file su:

#!/usr/bin/env bash
exec /Applications/Firefox.app/Contents/MacOS/firefox-bin -ProfileManager

(utilizzando il nome dell'eseguibile effettivo da cui è stato rimosso Info.plist, aggiungendo gli argomenti della riga di comando desiderati)

Salva e chiudi. In Terminale, immettere quanto segue:

chmod +x /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh

Ora chiudi Terminal e sposta la tua applicazione (che non deve essere in esecuzione in questo momento) in un'altra cartella e viceversa. Questo aggiornerà i Servizi di lancio , altrimenti le tue modifiche verranno ignorate e ti irriteranno immensamente.

Ora, quando apri l'applicazione, eseguirà effettivamente il .shfile, che a sua volta avvierà il file eseguibile effettivo, inviando la riga di comando args insieme.

Apparirà e si comporterà come previsto, ma dovrai ripetere questo ogni volta che aggiorni l'applicazione, poiché in genere sostituirà il pacchetto dell'applicazione e tutte le modifiche apportate.


Per qualche motivo, il mio Chrome 10 ignora l'argomento della riga di comando e blocca automaticamente le schede bloccate nella sessione precedente. Non so cosa c'è che non va qui, dato che non sono un utente Chrome e non so come dovrebbe comportarsi.
Daniel Beck

6
"sposta la tua applicazione in un'altra cartella e viceversa" dovrebbe essere in grassetto - completamente mancata alla prima lettura :)
stephanos,

1
Esiste un modo per aggiornare / ripristinare / riavviare Launch Services tramite un comando shell in modo da non dover spostare l'applicazione indietro e indietro? cioè in modo che quel passo sia facilmente programmabile?
Jordan Brough,

1
@Jordan Brough Puoi usare l'utility lsregister per forzare un aggiornamento di LaunchServices:/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/Hello\ World.app
Will Ross,

1
Ovviamente, l'opzione 2 funziona solo con app non CodeSign. Se proviene da Apple o dall'App Store, è firmato contro le modifiche. Anche una modifica a Info.plist lo interromperà. In tal caso, sarebbe utile una semplice app stub / wrapper.
cde

10

Potresti scrivere uno script che avvia Chrome, ma che non sarebbe l'icona dell'applicazione nel dock e causerebbe la visualizzazione di un'icona Chrome separata. Quindi dovrai creare un pacchetto applicativo.

Innanzitutto, crea una copia dell'app Chrome. Quindi, ci sono due approcci che potrebbero funzionare; Non sono sicuro che funzionerà meglio con Mac OS X e / o l'aggiornamento automatico di Chrome.

  1. Crea un 'launcher' che chiama semplicemente Chrome con gli argomenti.

    • Apri il pacchetto dell'app (fai clic con il pulsante destro del mouse → Mostra contenuto pacchetto nel Finder) ed elimina tutto tranne Info.plist, PkgInfo e MacOS.
    • Nella cartella MacOS, elimina l'eseguibile "Google Chrome" e sostituiscilo con uno script shell che chiama il vero Chrome:

      #!/bin/sh
      exec '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' -pinned-tab-count=4
      

      Non dimenticare chmod +xla sceneggiatura.
       

  2. Modifica il pacchetto Chrome che effettivamente esegui.

    • Nella cartella MacOS, rinomina "Google Chrome" e scrivi uno script di shell che invochi la cosa reale con gli argomenti extra:

      #!/bin/sh
      exec '/Applications/My Modified Google Chrome.app/Contents/MacOS/Google Chrome-real' -pinned-tab-count=4
      
    • Vedo che il pacchetto Chrome ha qualcosa sulla firma del codice; potrebbe essere necessario eliminare CodeResourcese e / o _CodeSignaturefarlo funzionare con queste modifiche.

Tutto si basa sulla mia comprensione dei pacchetti di app per Mac; In realtà non ho testato queste modifiche su Chrome in particolare. È anche possibile che l'eseguibile di Chrome su Mac non supporti questa opzione, poiché in genere non è previsto che le applicazioni Mac vengano eseguite con opzioni della riga di comando controllabili (a differenza, ad esempio, di Windows, in cui le applicazioni vengono normalmente avviate tramite collegamenti che possono hanno opzioni integrate).


Parametri di supporto di Chrome, ho appena automatizzato i miei seguendo le tue istruzioni # 2. Hai davvero bisogno di specificare il percorso completo per il binario e non dimenticare di chmod 755 Google\ Chrome(il tuo script) dopo aver finito. In realtà ho chiamato il mio script launch.sh e l'ho collegato a Google \ Chrome per facilitare gli aggiornamenti.
Orwellophile,

Notare che la modifica del contenuto del pacchetto causa problemi con la firma del codice, con conseguenti strani problemi come https che non funziona correttamente: bridge.grumpy-troll.org/2011/01/…
drevicko
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.