70

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

2 ответа2

93

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

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

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

open -a "Google Chrome.app" --args -pinned-tag-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 , который, в свою очередь, запустит фактический исполняемый файл, отправив аргументы командной строки.

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

10

Вы можете написать скрипт, который запускает 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, где приложения обычно запускаются с помощью ярлыков, которые могут есть встроенные опции).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .