Как передать аргументы командной строки элементам Dock?

Я пытаюсь следовать инструкциям по закреплению вкладок автозагрузки в Chrome. На OS X как я могу добавить аргументы командной строки к элементам, которые сохраняются в моей доке?

2 ответа

У вас есть в основном два варианта:

Вариант 1. Используйте Automator для создания приложения, которое фактически запускает Chrome с аргументами командной строки.

Запустите Automator и выберите, чтобы создать приложение. Дважды щелкните Run Shell Script в папке Library/Utilities и замените текстовое содержимое - cat - со следующим:

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

Сохранить где угодно.

Чтобы заменить значок этого приложения, получить информацию о вашем реальном Google Chrome, нажмите на значок в левом верхнем углу, нажмите Cmd-CПолучите информацию о приложении Chrome Automator, щелкните значок и нажмите Cmd-V,

Поскольку это другое приложение, при запуске Dock будет отображаться два приложения Chrome: Chrome и ваша программа запуска Chrome.


Вариант 2: отредактируйте пакет приложения, чтобы вместо этого запустить скрипт. Этот скрипт запустит реальное приложение, добавив аргумент командной строки.

Щелкните правой кнопкой мыши Google Chrome.app и выберите Показать содержимое пакета. Идти к Contents/ и открыть Info.plist в редакторе списков свойств / Xcode (инструменты разработчика Apple), или третье лицо plist редактор.

Ищите запись CFBundleExecutable или же Executable File, Запомните его значение (например, firefox-bin для Firefox). Замени это parameterized-app.sh,

Откройте Терминал и введите следующее:

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

Редактор для .sh файл откроется. Установите содержимое файла на:

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

(используя фактическое имя исполняемого файла, который вы удалили из Info.plist, добавив нужные аргументы командной строки)

Сохрани и закрой. В Терминале введите следующее:

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

Теперь закройте терминал и переместите ваше приложение (которое сейчас не должно быть запущено) в другую папку и обратно. Это обновит Launch Services, иначе ваши изменения будут проигнорированы и сильно вас раздражают.

Теперь, когда вы откроете ваше приложение, оно фактически выполнит .sh файл, который в свою очередь запустит фактический исполняемый файл, посылая аргументы командной строки.

Он будет выглядеть и вести себя так, как вы ожидаете, но вам придется повторять это всякий раз, когда вы обновляете свое приложение, так как это, как правило, заменяет пакет приложений и все внесенные вами изменения.

Вы можете написать скрипт, который запускает Chrome, но это не будет значок приложения в доке, и это приведет к появлению отдельного значка Chrome. Так что вам придется создать пакет приложения.

Сначала сделайте копию своего приложения Chrome. Тогда есть два подхода, которые могут работать; Я не уверен, что будет лучше играть с Mac OS X и / или самообновлением Chrome.

  1. Сделайте "панель запуска", которая просто вызывает Chrome с аргументами.

    • Откройте пакет приложения (щелкните правой кнопкой мыши → Показать содержимое пакета в Finder) и выбросьте все, кроме Info.plist, PkgInfo и MacOS.
    • В папке MacOS удалите исполняемый файл "Google Chrome" и замените его сценарием оболочки, который вызывает настоящий Chrome:

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

      Не забудь chmod +x сценарий.

  2. Измените пакет Chrome, который вы на самом деле используете.

    • В папке MacOS переименуйте "Google Chrome" и напишите сценарий оболочки, который вызывает реальную вещь с дополнительными аргументами:

      #!/bin/sh
      exec '/Applications/My Modified Google Chrome.app/Contents/MacOS/Google Chrome-real' -pinned-tab-count=4
      
    • Я вижу, что в пакете Chrome есть кое-что о подписи кода; вам может понадобиться удалить CodeResources и / или _CodeSignature чтобы заставить его работать с этими изменениями.

Все это основано на моем понимании пакетов приложений Mac; Я на самом деле не проверял эти изменения в Chrome, в частности. Возможно даже, что исполняемый файл Chrome на Mac не поддерживает эту опцию, поскольку приложения Mac, как правило, не запускаются с управляемыми параметрами командной строки (в отличие, например, от Windows, где приложения обычно запускаются с помощью ярлыков, которые могут есть встроенные опции).

Другие вопросы по тегам