80 votes

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

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

105voto

Daniel Beck Points 105590

Vous avez essentiellement deux options :

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

Lancez Automator et sélectionnez la création d'un Application . Double-cliquez sur Exécuter Shell Shell dans le Bibliothèque/Utilitaires et remplacer le contenu du texte - cat - avec les éléments suivants :

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

Sauvegardez 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 .

Comme il s'agit d'une application différente, le Dock affichera deux applications Chrome lorsqu'elle est en cours d'exécution : Chrome, et votre lanceur Chrome.


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

Cliquez à droite sur Google Chrome.app et sélectionnez Contenu de l'emballage du spectacle . Aller à Contents/ et ouvrir Info.plist en Éditeur de liste de propriétés/Xcode (les outils de développement d'Apple), ou un tiers plist éditeur.

Cherchez l'entrée CFBundleExecutable o Executable File . Rappelez-vous sa valeur (par exemple firefox-bin pour Firefox). Remplacez-le par parameterized-app.sh .

Ouvrez le Terminal et entrez ce qui suit :

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

Un rédacteur pour le .sh s'ouvrira. Définissez le contenu du fichier :

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

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

Sauvegarder et fermer. Dans le Terminal, entrez ce qui suit :

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

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

Maintenant, lorsque vous ouvrirez votre application, elle exécutera effectivement le fichier .sh qui lancera à son tour le fichier exécutable réel, en envoyant les arguments de la ligne de commande.

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

10voto

Console Points 608

Vous pourriez é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 paquet d'applications.

Tout d'abord, faites une copie de votre application Chrome. Ensuite, il y a deux approches qui peuvent fonctionner ; je ne suis pas sûr de celle qui sera la plus adaptée à Mac OS X et/ou à l'auto-mise à jour de Chrome.

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

    • Ouvrez le paquetage de l'application (cliquez avec le bouton droit de la souris sur Show Package Contents 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 Shell Shell qui appelle le vrai 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 paquet Chrome que vous exécutez réellement.

    • Dans le dossier MacOS, renommez "Google Chrome" et écrivez un Shell Shell qui invoque le vrai truc 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 paquet Chrome a quelque chose à propos de la signature du code ; vous devrez peut-être supprimer le fichier CodeResources または _CodeSignature pour qu'il fonctionne avec ces changements.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X