Dock 항목에 명령 행 인수를 어떻게 전달합니까?


답변:


96

기본적으로 두 가지 옵션이 있습니다.

옵션 1 : Automator를 사용하여 실제로 명령 줄 인수로 Chrome을 실행하는 응용 프로그램을 만듭니다.

Automator를 시작하고 Application 생성을 선택합니다 . Library / Utilities 폴더 에서 Run Shell Script 를 두 번 클릭 하고 텍스트 내용을 다음과 같이 바꿉니다.cat

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

원하는 곳에 저장하십시오.

이 응용 프로그램의 아이콘을 교체하려면, 정보 입수 , 왼쪽 상단에있는 아이콘을 눌러 클릭, 당신의 진짜 구글 크롬에 Cmd-C, 정보 입수 , 당신의 크롬 자동화 응용 프로그램의 아이콘을 누릅니다을 클릭하십시오 Cmd-V.

Dock은 다른 응용 프로그램이므로 실행시 Chrome과 Chrome 실행기의 두 가지 Chrome 응용 프로그램을 표시합니다.


옵션 2 : 대신 응용 프로그램 번들을 편집하여 스크립트를 시작하십시오. 이 스크립트는 실제 응용 프로그램을 시작하고 명령 줄 인수를 추가합니다.

마우스 오른쪽 단추를 클릭 Google Chrome.app하고 패키지 내용 표시를 선택하십시오 . 이동 Contents/및 열 Info.plist에서 재산 목록 편집기 / 엑스 코드 (애플의 개발자 도구), 또는 제 3 자 plist편집기.

항목을 찾아 CFBundleExecutableExecutable File. 값을 기억하십시오 (예 : firefox-binFirefox). 로 교체하십시오 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 10은 명령 줄 인수를 무시하고 이전 세션에서 고정 된 탭을 자동으로 고정합니다. Chrome 사용자가 아니고 어떻게 작동해야하는지 모르므로 여기에서 무엇이 잘못되었는지 모르십시오.
Daniel Beck

6
"응용 프로그램을 다른 폴더로 이동했다가 다시 다시 가져옵니다"는 굵게 표시되어야합니다. 처음 읽을 때는 완전히 놓치십시오.)
stephanos

1
쉘 명령을 통해 Launch Services를 업데이트 / 재설정 / 재시작 할 수있는 방법이 있습니까? 즉, 해당 단계를 쉽게 스크립팅 할 수 있습니까?
Jordan Brough

1
@Jordan Brough lsregister 유틸리티를 사용하여 LaunchServices 업데이트를 강제 실행할 수 있습니다./System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/Hello\ World.app
Will Ross

1
물론 옵션 2는 CodeSign 이외의 앱에서만 작동합니다. Apple 또는 App Store에서 온 경우 변경 사항에 서명합니다. Info.plist를 변경해도 중지됩니다. 이 경우 간단한 스텁 / 래퍼 앱이 도움이 될 것입니다.
cde

10

Chrome을 시작하는 스크립트를 작성할 수 있지만 도크의 응용 프로그램 아이콘이 아니므로 별도의 Chrome 아이콘이 나타납니다. 따라서 응용 프로그램 패키지를 만들어야합니다.

먼저 Chrome 앱을 복사하십시오. 그런 다음 작동 할 수있는 두 가지 방법이 있습니다. Mac OS X 및 / 또는 Chrome의 자체 업데이트에서 어느 것이 더 잘 재생되는지 잘 모르겠습니다.

  1. 인수로 Chrome을 호출하는 '실행기'를 만드십시오.

    • 앱 패키지를 열고 (파인더에서 오른쪽 클릭 → 패키지 내용보기) 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에서 이러한 변경 사항을 실제로 테스트하지 않았습니다. Mac 응용 프로그램은 일반적으로 달리 제어 명령 줄 옵션 (실행 될 것으로 예상되지 않는 한 Mac에서 크롬 실행 예를 들어,이 옵션을 지원하지 않는 경우에도 추적 할 수없는 가망입니다, 응용 프로그램이 있습니다 윈도우, 일반적으로 어떤 수의 바로 가기를 통해 시작 포함 된 옵션이 있음).


Chrome 지원 매개 변수, 나는 지시 # 2에 따라 광산을 자동화했습니다. 실제로 바이너리의 전체 경로를 지정해야하며 chmod 755 Google\ Chrome완료 한 후에 (스크립트)를 잊지 마십시오 . 실제로 스크립트 이름을 launch.sh로 지정하고 쉽게 업데이트 할 수 있도록 Google \ Chrome에 심볼릭 링크했습니다.
Orwellophile

패키지 내용을 수정하면 코드 서명에 문제가 생겨 https와 같은 이상한 문제가 발생합니다. bridge.grumpy-troll.org/2011/01/…
drevicko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.