Как передать аргументы командной строки для элементов Dock?
Я пытаюсь следовать инструкциям по прикреплению вкладок запуска в Chrome . В OS X как добавить аргументы командной строки в объекты, которые сохраняются в моей доке?
- Импорт фотографий в Mac OS X
- Прямое удаление с помощью клавиатуры Apple
- Несколько одновременных пользователей на MacBook Pro
- Пакетное преобразование папки .mkv-файлов в файлы .m4v с использованием ffmpeg в MAC OS X
- Жесткая ссылка не работает в Mac OS X в режиме графического интерфейса пользователя
- Как автоматически поворачивать изображения на основе данных EXIF?
- Java 1.6 на Mac OS X 10.5?
- Интеграция CFNetwork и Bonjour для интеграции iPhone и Mac
У вас есть в основном два варианта:
Вариант 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.
-
Создайте «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
скрипт.
-
Измените фактически запущенный пакет 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, где приложения обычно запускаются с помощью ярлыков, которые могут Имеют встроенные опции).