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

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

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

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

Запустите Automator и выберите для создания приложения . Дважды щелкните значок « Запустить сценарий оболочки» в папке « Библиотека / Утилиты » и замените текстовое содержимое – 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 , который, в свою очередь, запустит фактический исполняемый файл, отправив аргументы командной строки.

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

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

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

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

  • Mac Terminal - ошибка «указатель освобождается не была» при открытии терминала
  • Как сделать скриншоты в Mac OS X?
  • Safari не загружает файлы автоматически
  • Android эмулятор замораживания OS X v10.9 (Mavericks) с HAXM
  • Экран печати Windows с клавиатурой Mac
  • Как щелкнуть / выбрать строку таблицы в сценарии apple
  • Проблемы с Bash 4.2.45 на Ubuntu
  • Как отключить индексирование в определенном каталоге на нескольких платформах?
  • В Mac OS X 10.6 есть ли способ отключить триггер, который показывает док-станцию, когда мышь находится на краю экрана?
  • Установка переменных среды в OS X для приложений с графическим интерфейсом
  • Переменные экземпляра с подчеркиванием в Objective-C 2.0 и переименование с помощью @synthetize приводят к предупреждениям об оптимизации с помощью инструмента «Анализ» Xcode 4
  • Давайте будем гением компьютера.