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


Je tente de suivre les instructions pour épinglant 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?


69
2018-04-16 16:43


origine




Réponses:


Vous avez essentiellement deux options:

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

Démarrez Automator et sélectionnez pour créer un Application. Double-cliquez Exécuter un script shell dans le Bibliothèque / Utilitaires dossier et remplacer le contenu du texte - cat - avec les éléments suivants:

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

Sauvez 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'il est en cours d'exécution: Chrome et votre lanceur Chrome.


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

Clic-droit Google Chrome.app et sélectionnez Afficher le contenu du paquet. Aller à Contents/ et ouvert Info.plist dans Éditeur de liste de propriétés / Xcode (Outils de développement d'Apple), ou une tierce partie plist éditeur.

Cherchez l'entrée CFBundleExecutable ou Executable File. Se souvenir de sa valeur (par ex. firefox-bin pour Firefox). Remplacez 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 .sh le fichier s'ouvrira. 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 réel que vous avez retiré 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 exécutée immédiatement) dans un dossier différent et revenez. Cela mettra à jour Services de lancement, sinon vos changements seront ignorés et vous irriter énormément.

Maintenant, lorsque vous ouvrez votre application, il va réellement exécuter le .sh fichier, qui à son tour lancera le fichier exécutable proprement dit, en envoyant les arguments de la ligne de commande.

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


91
2018-04-16 18:08



Pour une raison quelconque, mon Chrome 10 ignore l'argument de ligne de commande et épingle automatiquement les onglets qui ont été épinglés lors de la session précédente. Je ne sais pas ce qui ne va pas ici, car je ne suis pas un utilisateur de Chrome et je ne sais pas comment il doit se comporter. - Daniel Beck♦
"déplacer votre application dans un autre dossier et revenir" devrait être en gras - complètement raté lors de la première lecture :) - stephanos
Existe-t-il un moyen de mettre à jour / réinitialiser / redémarrer les services de lancement via une commande shell afin de ne pas avoir à déplacer l'application vers l'arrière? c'est-à-dire que cette étape est facilement scriptable? - Jordan Brough
@Jordan Brough Vous pouvez utiliser l'utilitaire lsregister pour forcer une mise à jour LaunchServices: /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/Hello\ World.app - Will Ross
Bien sûr, l'option 2 ne fonctionne que sur les applications non-CodeSign. S'il provient d'Apple ou de l'App Store, il est signé contre les modifications. Même un changement à Info.plist l'arrêtera. Dans ce cas, une simple application stub / wrapper pourrait vous aider. - cde


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

Tout d'abord, faites une copie de votre application Chrome. Ensuite, il existe deux approches qui pourraient fonctionner; Je ne suis pas sûr de savoir qui jouera mieux avec la mise à jour automatique de Mac OS X et / ou de Chrome.

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

    • Ouvrez le package de l'application (cliquez avec le bouton droit de la souris sur → Afficher le contenu du package dans le Finder) et lancez tout sauf Info.plist, PkgInfo et MacOS.
    • Dans le dossier MacOS, supprimez le fichier exécutable "Google Chrome" et remplacez-le par un script 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 package Chrome que vous exécutez actuellement.

    • Dans le dossier MacOS, renommez "Google Chrome" et écrivez un script shell qui invoque le vrai 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 contient quelque chose à propos de la signature de code; vous devrez peut-être supprimer le CodeResources et / ou _CodeSignature pour le faire fonctionner avec ces changements.

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 à Windows, par exemple, où les applications sont normalement lancé via des raccourcis pouvant avoir des options incorporées).


10
2018-04-16 17:54



Paramètres de support Chrome, je viens d’automatiser le mien en suivant vos instructions # 2. Vous devez en effet spécifier le chemin complet du fichier binaire, et n'oubliez pas de chmod 755 Google\ Chrome (votre script) après avoir terminé. J'ai en fait nommé mon script launch.sh et l'ai lié à Google \ Chrome pour faciliter les mises à jour. - Orwellophile