ฉันจะส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งไปยังรายการ Dock ได้อย่างไร


73

ฉันพยายามที่จะทำตามคำแนะนำสำหรับการตรึงแท็บเริ่มต้นใน Chrome บน OS X ฉันจะเพิ่มอาร์กิวเมนต์บรรทัดคำสั่งให้กับรายการที่ยังคงอยู่ใน Dock ของฉันได้อย่างไร

คำตอบ:


96

คุณมีสองตัวเลือกโดยทั่วไป:

ตัวเลือกที่ 1 : ใช้ Automator เพื่อสร้างแอปพลิเคชันที่มีผลบังคับใช้เปิดตัว Chrome พร้อมอาร์กิวเมนต์บรรทัดคำสั่ง

เริ่มอัตโนมัติและเลือกที่จะสร้างแอพลิเคชัน ดับเบิลคลิกRun Shell Scriptในโฟลเดอร์Library / Utilitiesและแทนที่เนื้อหาข้อความ - cat- ด้วยสิ่งต่อไปนี้:

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

บันทึกได้ทุกที่ที่คุณต้องการ

เพื่อแทนที่ไอคอนของโปรแกรมนี้รับข้อมูลบน Google Chrome จริงคลิกที่ไอคอนด้านบนซ้ายกดCmd-C, รับข้อมูลในแอป Chrome Cmd-Vอัตโนมัติให้คลิกที่ไอคอนและกด

เนื่องจากเป็นแอปพลิเคชันที่แตกต่างกัน Dock จะแสดงสองแอปพลิเคชัน Chrome เมื่อทำงาน: Chrome และตัวเรียกใช้งาน Chrome ของคุณ


ตัวเลือก 2 : แก้ไขชุดแอปพลิเคชันของคุณเพื่อเรียกใช้สคริปต์แทน สคริปต์นี้จะเริ่มต้นแอปพลิเคชันจริงโดยเพิ่มอาร์กิวเมนต์บรรทัดคำสั่ง

คลิกขวาGoogle Chrome.appและเลือกShow Package Contents ไปที่Contents/และเปิดInfo.plistในตัวแก้ไขรายการ / Xcode (เครื่องมือสำหรับนักพัฒนาของ Apple) หรือตัวplistแก้ไขบุคคลที่สาม

มองหารายการหรือCFBundleExecutable Executable Fileจำค่าของมัน (เช่นfirefox-binสำหรับ Firefox) parameterized-app.shแทนที่ด้วย

เปิด Terminal แล้วป้อนข้อมูลต่อไปนี้:

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นั้นเพิ่มอาร์กิวเมนต์บรรทัดคำสั่งที่ต้องการ)

บันทึกและปิด ใน Terminal ให้ป้อนข้อมูลต่อไปนี้:

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

ตอนนี้ปิด Terminal แล้วย้ายแอปพลิเคชั่นของคุณ (ซึ่งจะต้องไม่ทำงานในขณะนี้) ไปยังโฟลเดอร์อื่นแล้วกลับมาอีกครั้ง นี่จะอัปเดตบริการเปิดใช้งานมิฉะนั้นการเปลี่ยนแปลงของคุณจะถูกละเว้นและทำให้คุณรำคาญอย่างมาก

ตอนนี้เมื่อคุณเปิดแอปพลิเคชันของคุณมันจะเรียกใช้งาน.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 เท่านั้น หากมาจากแอปเปิ้ลหรือที่ App Store ก็จะมีการเซ็นรับการเปลี่ยนแปลง แม้กระทั่งการเปลี่ยนแปลง Info.plist ก็จะหยุดมัน ในกรณีนั้นแอปสตับ / แรปเปอร์ที่เรียบง่ายจะช่วยได้
CDE

10

คุณสามารถเขียนสคริปต์ที่เปิดใช้งาน Chrome แต่นั่นไม่ใช่ไอคอนแอปพลิเคชันใน Dock และจะทำให้ไอคอน 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 เป็นพิเศษ มันเป็น posible แม้กระทั่งว่าปฏิบัติการ Chrome บน Mac ไม่สนับสนุนตัวเลือกนี้เป็นโปรแกรมประยุกต์ Mac มักจะไม่ได้คาดหวังที่จะทำงานกับตัวเลือกบรรทัดคำสั่งควบคุม (ไม่เหมือน, ตัวอย่างเช่น Windows ที่โปรแกรมจะปกติเปิดตัวผ่านทางลัดที่สามารถ มีตัวเลือกในตัว)


พารามิเตอร์การสนับสนุนของ Chrome ฉันเป็นเพียงเหมืองอัตโนมัติตามคำสั่งของคุณ # 2 แน่นอนคุณต้องระบุเส้นทางแบบเต็มสำหรับไบนารีและอย่าลืมchmod 755 Google\ Chrome(สคริปต์ของคุณ) หลังจากเสร็จสิ้น ฉันตั้งชื่อสคริปต์การเปิดตัวของฉันจริง ๆ แล้วเชื่อมโยงกับ Google \ Chrome เพื่อความสะดวกในการอัปเดต
Orwellophile

โปรดทราบว่าการแก้ไขเนื้อหาแพคเกจทำให้เกิดปัญหากับการลงรหัสทำให้เกิดปัญหาแปลก ๆ เช่น https ไม่ทำงานอย่างถูกต้อง: bridge.grumpy-troll.org/2011/01/…
drevicko
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.