web-dev-qa-db-fra.com

Comment passer des arguments de ligne de commande aux éléments du Dock?

J'essaie de suivre les instructions pour épingler des onglets de démarrage dans Chrome . Sous OS X, comment ajouter des arguments de ligne de commande aux éléments persistants dans mon dock?

71
sudoer

Vous avez essentiellement deux options:

Option 1 : Utilisez Automator pour créer une application qui lance Chrome avec des arguments de ligne de commande.

Démarrez Automator et choisissez de créer un Application . Double-cliquez sur Exécuter un script shell dans le dossier Bibliothèque/Utilitaires et remplacez le contenu textuel - cat - par ce qui suit:

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

Économisez où vous voulez.

Pour remplacer l'icône de cette application, Obtenir des informations sur votre vrai Google Chrome, cliquez sur l'icône en haut à gauche, appuyez sur Cmd-C, Obtenir des informations sur votre application Chrome Automator, cliquez sur l'icône, et appuyez sur Cmd-V.

Dans la mesure où il s’agit d’une application différente, le Dock affiche deux applications Chrome lorsqu’il est en cours d’exécution: Chrome et votre lanceur Chrome.


Option 2 : Modifiez votre lot d'applications pour lancer un script à la place. Ce script va démarrer l'application réelle, en ajoutant l'argument de ligne de commande.

Cliquez avec le bouton droit sur Google Chrome.app et sélectionnez Afficher le contenu du paquet . Accédez à Contents/ et ouvrez Info.plist dans Editeur de liste de propriétés/Xcode (outils de développement Apple) ou à un éditeur plist tiers.

Recherchez l'entrée CFBundleExecutable ou Executable File. N'oubliez pas sa valeur (par exemple, firefox-bin pour Firefox). Remplacez-le par parameterized-app.sh.

Ouvrez Terminal et entrez les informations suivantes:

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

Un éditeur pour le fichier .sh s'ouvre. Définissez le contenu du fichier sur:

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

(en utilisant le nom de l'exécutable que vous avez supprimé de Info.plist, en ajoutant les arguments de ligne de commande souhaités)

Sauver et fermer. Dans Terminal, entrez les informations suivantes:

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

Maintenant, fermez Terminal et déplacez votre application (qui ne doit pas être en cours d’exécution) dans un autre dossier et inversement. Ceci mettra à jour Launch Services , sinon vos modifications seront ignorées et vous irriteront énormément.

Désormais, lorsque vous ouvrez votre application, elle exécutera le fichier .sh, qui lancera à son tour le fichier exécutable réel et enverra les arguments de la ligne de commande.

Il se présentera et se comportera comme vous le souhaitiez, mais vous devrez le répéter chaque fois que vous mettrez à jour votre application, car cela remplacera généralement l'ensemble d'applications et toutes les modifications que vous avez apportées.

94
Daniel Beck

Vous pouvez écrire un script qui lance Chrome, mais ce ne serait pas l'icône de l'application dans le dock et cela ferait apparaître une icône Chrome distincte. Vous devrez donc créer un package d'application.

Commencez par créer une copie de votre application Chrome. Ensuite, il y a deux approches possibles. Je ne sais pas ce qui fonctionnera le mieux avec la mise à jour automatique de Mac OS X et/ou de Chrome.

  1. Créez un "lanceur" qui appelle simplement Chrome avec les arguments.

    • Ouvrez le package de l'application (clic droit → Afficher le contenu du package dans le Finder) et jetez tout sauf Info.plist, PkgInfo et MacOS.
    • Dans le dossier MacOS, supprimez l'exécutable «Google Chrome» et remplacez-le par un script Shell qui appelle le véritable Chrome:

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

      N'oubliez pas de chmod +x le script.

  2. Modifiez le package Chrome que vous exécutez réellement.

    • Dans le dossier MacOS, renommez «Google Chrome» et écrivez un script Shell qui appelle la vraie avec les arguments supplémentaires:

      #!/bin/sh
      exec '/Applications/My Modified Google Chrome.app/Contents/MacOS/Google Chrome-real' -pinned-tab-count=4
      
    • Je vois que le package Chrome a quelque chose à propos de la signature de code; vous devrez peut-être supprimer la CodeResources et/ou _CodeSignature pour l'exécuter avec ces modifications.

Tout est basé sur ma compréhension des packages d'applications Mac; Je n'ai pas testé ces modifications sur Chrome en particulier. Il est même possible que l'exécutable de Chrome sur Mac ne prenne pas cette option en charge, car les applications Mac ne doivent généralement pas être exécutées avec des options de ligne de commande contrôlables (contrairement à Windows, par exemple, où les applications sont normalement lancées via des raccourcis pouvant avoir des options intégrées).

10
Kevin Reid