Làm cách nào để truyền đối số dòng lệnh cho các mục Dock?


Câu trả lời:


96

Về cơ bản, bạn có hai tùy chọn:

Tùy chọn 1 : Sử dụng Automator để tạo một ứng dụng có hiệu lực khởi chạy Chrome với các đối số dòng lệnh.

Khởi động Automator và chọn để tạo một Ứng dụng . Bấm đúp vào Run Shell Script trong thư mục Thư viện / Tiện ích và thay thế nội dung văn bản - cat- bằng cách sau:

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

Lưu bất cứ nơi nào bạn thích.

Để thay thế biểu tượng của ứng dụng này, Nhận thông tin trên Google Chrome thực của bạn, nhấp vào biểu tượng ở trên cùng bên trái, nhấn Cmd-C, Nhận thông tin trên ứng dụng Chrome Automator của bạn, nhấp vào biểu tượng và nhấn Cmd-V.

Vì là một ứng dụng khác nhau, Dock sẽ hiển thị hai ứng dụng Chrome khi nó chạy: Chrome và trình khởi chạy Chrome của bạn.


Tùy chọn 2 : Chỉnh sửa gói ứng dụng của bạn để khởi chạy một tập lệnh thay thế. Kịch bản lệnh này sẽ bắt đầu ứng dụng thực tế, thêm đối số dòng lệnh.

Nhấp chuột phải Google Chrome.appvà chọn Hiển thị nội dung gói . Truy cập Contents/và mở Info.plisttrong Trình chỉnh sửa danh sách tài sản / Xcode (công cụ dành cho nhà phát triển của Apple) hoặc plisttrình chỉnh sửa của bên thứ ba .

Tìm kiếm các mục CFBundleExecutablehoặc Executable File. Hãy nhớ giá trị của nó (ví dụ firefox-binđối với Firefox). Thay thế nó bằng parameterized-app.sh.

Mở Terminal và nhập thông tin sau:

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

Một trình soạn thảo cho .shtập tin sẽ mở ra. Đặt nội dung của tệp thành:

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

(sử dụng tên thực thi thực tế mà bạn đã xóa khỏi Info.plist, thêm các đối số dòng lệnh mong muốn)

Lưu và đóng. Trong Terminal, nhập thông tin sau:

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

Bây giờ, hãy đóng Terminal và di chuyển ứng dụng của bạn (không phải đang chạy ngay bây giờ) sang một thư mục khác và quay lại. Điều này sẽ cập nhật Dịch vụ khởi chạy , nếu không các thay đổi của bạn sẽ bị bỏ qua và gây khó chịu cho bạn vô cùng.

Bây giờ, khi bạn mở ứng dụng của mình, nó sẽ thực sự thực thi .shtệp, nó sẽ lần lượt khởi chạy tệp thực thi thực tế, gửi dòng lệnh tranh luận.

Nó sẽ trông và hoạt động như bạn mong đợi, nhưng bạn sẽ cần lặp lại điều này bất cứ khi nào bạn cập nhật ứng dụng của mình, vì điều này thường sẽ thay thế gói ứng dụng và tất cả các thay đổi bạn đã thực hiện.


Vì một số lý do, Chrome 10 của tôi bỏ qua đối số dòng lệnh và tự động ghim các tab đã được ghim trong phiên trước đó. Không biết có gì sai ở đây, vì tôi không phải là người dùng Chrome và không biết cách cư xử của nó.
Daniel Beck

6
"di chuyển ứng dụng của bạn sang một thư mục khác và quay lại" nên được in đậm - hoàn toàn bỏ lỡ nó trong lần đọc đầu tiên :)
stephanos

1
Có cách nào để cập nhật / thiết lập lại / khởi động lại Dịch vụ khởi chạy thông qua lệnh shell để bạn không phải di chuyển ứng dụng ra và quay lại không? tức là để bước đó dễ dàng được script?
Jordan Brough

1
@Jordan Brough Bạn có thể sử dụng tiện ích lsregister để buộc cập nhật LaunchService:/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/Hello\ World.app
Will Ross

1
Tất nhiên, Tùy chọn 2 chỉ hoạt động trên các ứng dụng không phải CodeSign. Nếu nó đến từ apple hoặc cửa hàng ứng dụng, nó đã được ký chống lại những thay đổi. Ngay cả một thay đổi đối với Info.plist cũng sẽ ngăn chặn nó. Trong trường hợp đó, một ứng dụng sơ khai / trình bao bọc đơn giản sẽ giúp ích.
cde

10

Bạn có thể viết một tập lệnh khởi chạy Chrome, nhưng đó không phải là biểu tượng ứng dụng trong thanh công cụ và nó sẽ khiến biểu tượng Chrome riêng xuất hiện. Vì vậy, bạn sẽ phải tạo một gói ứng dụng.

Đầu tiên, tạo một bản sao của ứng dụng Chrome của bạn. Sau đó, có hai cách tiếp cận có thể hoạt động; Tôi không chắc cái nào sẽ chơi tốt hơn với Mac OS X và / hoặc tự cập nhật của Chrome.

  1. Tạo một 'trình khởi chạy' chỉ gọi Chrome bằng các đối số.

    • Mở gói ứng dụng (nhấp chuột phải → Hiển thị Nội dung gói trong Finder) và loại bỏ mọi thứ trừ Info.plist, PkgInfo và MacOS.
    • Trong thư mục MacOS, hãy xóa tệp thực thi của Google Chrome Chrome và thay thế nó bằng tập lệnh shell gọi Chrome thực:

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

      Đừng quên chmod +xkịch bản.
       

  2. Sửa đổi gói Chrome bạn thực sự chạy.

    • Trong thư mục MacOS, đổi tên thành Google Chrome Chrome và viết một tập lệnh shell để gọi thực tế với các đối số bổ sung:

      #!/bin/sh
      exec '/Applications/My Modified Google Chrome.app/Contents/MacOS/Google Chrome-real' -pinned-tab-count=4
      
    • Tôi thấy gói Chrome có gì đó về ký mã; bạn có thể cần phải xóa CodeResourcesvà / hoặc _CodeSignatuređể nó chạy với những thay đổi này.

Tất cả điều này dựa trên sự hiểu biết của tôi về các gói ứng dụng Mac; Tôi thực sự chưa thử nghiệm những thay đổi này trên Chrome. Thậm chí có thể thấy rằng Chrome thực thi trên Mac không hỗ trợ tùy chọn này, vì các ứng dụng Mac thường không được chạy với các tùy chọn dòng lệnh có thể kiểm soát (ví dụ, không giống như Windows, nơi các ứng dụng thường được khởi chạy thông qua các phím tắt có thể có các tùy chọn nhúng).


Các tham số hỗ trợ của Chrome, tôi chỉ tự động khai thác theo hướng dẫn số 2 của bạn. Bạn thực sự cần phải xác định đường dẫn đầy đủ cho nhị phân và đừng quên chmod 755 Google\ Chrome(tập lệnh của bạn) sau khi bạn hoàn thành. Tôi thực sự đã đặt tên cho tập lệnh launch.sh của mình và liên kết nó với Google \ Chrome để dễ cập nhật.
Orwellophile

Lưu ý rằng sửa đổi nội dung gói gây ra sự cố khi ký mã, dẫn đến các sự cố kỳ lạ như https không hoạt động đúng: Bridge.grumpy-troll.org/2011/01/ Kẻ
drevicko
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.