سؤال كيف يمكنني تمرير وسائط سطر الأوامر إلى عناصر Dock؟


أحاول اتباع الإرشادات الخاصة بـ تثبيت علامات تبويب بدء التشغيل في Chrome. على OS X كيف أقوم بإضافة وسيطات سطر الأوامر إلى العناصر الموجودة في قفص الاتهام الخاص بي؟


69
2018-04-16 16:43


الأصل




الأجوبة:


لديك في الأساس خياران:

الخيار 1: استخدم Automator لإنشاء تطبيق يعمل فعليًا على تشغيل Chrome باستخدام وسيطات سطر الأوامر.

بدء الأوتوماتيكي واختر لإنشاء الوضعية. نقرتين متتاليتين قم بتشغيل Script Shell في ال مكتبة / المرافق مجلد واستبدال محتوى النص - 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 Autator ، انقر على الرمز ، ثم اضغط على Cmd-V.

نظرًا لأنه تطبيق مختلف ، سيعرض Dock تطبيقين من Chrome عند تشغيلهما: Chrome ومُشغّل Chrome.


الخيار 2: تحرير حزمة التطبيق الخاصة بك لتشغيل برنامج نصي بدلا من ذلك. سيبدأ هذا البرنامج النصي التطبيق الفعلي ، إضافة وسيطة سطر الأوامر.

انقر بزر الماوس الأيمن Google Chrome.app وحدد عرض حزمة المحتويات. اذهب إلى Contents/ وفتح Info.plist في محرر قائمة الملكية / Xcode (أدوات مطوري Apple) أو طرف ثالث plist محرر.

ابحث عن الإدخال CFBundleExecutable أو Executable File. تذكر قيمتها (على سبيل المثال firefox-bin لفايرفوكس). استبدلها 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

الآن ، أغلق المحطة الطرفية وقم بتحريك التطبيق (الذي لا يجب أن يكون قيد التشغيل الآن) إلى مجلد مختلف والعودة مرة أخرى. هذا سوف التحديث إطلاق الخدمات، وإلا سيتم تجاهل التغييرات الخاصة بك وتثير غضبك بشكل كبير.

الآن ، عند فتح التطبيق الخاص بك ، فإنه سيتم تنفيذ بالفعل .sh الملف ، والذي بدوره إطلاق الملف القابل للتنفيذ الفعلي ، وإرسال سطر الأوامر args جنبا إلى جنب.

سيبدو ويتصرف كما تتوقع ، ولكنك ستحتاج إلى تكرار هذا كلما قمت بتحديث التطبيق الخاص بك ، لأن ذلك سيحل محل حزمة التطبيق وجميع التغييرات التي قمت بها.


92
2018-04-16 18:08



لسبب ما ، يتجاهل Chrome 10 وسيطة سطر الأوامر ويقرع تلقائيًا علامات التبويب التي تم تثبيتها في الجلسة السابقة. لا تعرف الخطأ هنا ، لأنني لست مستخدم Chrome ولا أعرف كيف يفترض أن يتصرف. - Daniel Beck♦
"نقل التطبيق الخاص بك إلى مجلد آخر والعودة مرة أخرى" يجب أن تكون جريئة - فاته تماما على أول قراءة :) - stephanos
هل هناك طريقة لتحديث / إعادة تشغيل / إعادة تشغيل خدمات التشغيل من خلال أمر shell بحيث لا تضطر إلى نقل التطبيق للخارج والعودة مرة أخرى؟ بمعنى أن هذه الخطوة قابلة للنصوص بسهولة؟ - Jordan Brough
Jordan Brough يمكنك استخدام الأداة المساعدة lsregister لفرض تحديث LaunchServices: /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/Hello\ World.app - Will Ross
بالطبع ، يعمل الخيار 2 فقط على تطبيقات غير CodeSign. إذا كان يأتي من Apple أو من متجر التطبيقات ، فسيتم التوقيع عليه مقابل التغييرات. حتى التغيير إلى Info.plist سيوقفها. في هذه الحالة ، سيساعدك تطبيق بسيط للعقد / المجمّع. - cde


يمكنك كتابة نص برمجي يطلق Chrome ، ولكن ذلك لن يكون رمز التطبيق في المرسى ، ومن شأنه أن يؤدي إلى ظهور رمز Chrome منفصل. لذلك سيكون عليك إنشاء حزمة تطبيق.

أولاً ، أنشئ نسخة من تطبيق Chrome. ثم ، هناك طريقتان قد تعملان. لست متأكدًا من أي منها سيعمل بشكل أفضل مع نظام التشغيل Mac OS X و / أو التحديث الذاتي من Chrome.

  1. أنشئ "launcher" الذي يستدعي Chrome فقط باستخدام الوسيطات.

    • افتح حزمة التطبيق (انقر بزر الماوس الأيمن → إظهار محتويات الحزمة في Finder) ، وقم بالتخلص من كل شيء ما عدا Info.plist و PkgInfo و MacOS.
    • في مجلد MacOS ، احذف الملف القابل للتنفيذ "Google Chrome" واستبدله بنص برمجي يحتوي على shell يستدعي 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 ، حيث تكون التطبيقات بشكل طبيعي عن طريق الاختصارات التي يمكن أن تحتوي على خيارات مضمنة).


10
2018-04-16 17:54



معلمات دعم Chrome ، أنا الآلي فقط الألغام باتباع التعليمات الخاصة بك # 2. تحتاج بالفعل إلى تحديد المسار الكامل للثنائي ، ولا تنس أن chmod 755 Google\ Chrome (النص البرمجي) بعد الانتهاء. لقد قمت بالفعل بتسمية البرنامج النصي launch.sh الخاص بي ورمزه إلى Google \ Chrome لسهولة التحديثات. - Orwellophile