Видалити записи з контекстного меню пошуку?


14

Хтось знає, як я можу видалити елементи, які я ніколи не використовую, з контекстного меню?

наприклад: Записати "yadda yadda" на диск ...

введіть тут опис зображення


/System/Library/CoreServices/Finder/Contents/Resources/English.lproj/Menubar.nib має всі записи, але я не знаю, як видалити рядки

Відповіді:


5

Ви можете фактично видалити нативні елементи MacOS з контекстного меню .... але, на жаль, це не відображається, ви можете видалити ті, які ви вказали вище. Незалежно від того, якщо ви хочете поглянути, зверніться до

Налаштування системи> Клавіатура> Комбінації клавіш> Послуги

а потім зніміть прапорець у меню пунктів, які вам не потрібні.

введіть тут опис зображення

Прикро, що ви не можете їх усіх видалити. Але це, принаймні, може допомогти вам позбутися деяких затруднень.


Перевірте моє рішення - воно дозволяє видалити пункт контекстного меню Finder за замовчуванням саме так, як вимагає ОП.
синтезаторпател

5
  • Я розробив для цього рішення, яке (до цих пір) працює для елементів контекстного меню «Пошук Finder» за замовчуванням, таких як Burn to diskі Burn "^1" to disc. Це саме мета запиту ОП.

  • Існує ще одна різновид розширення контекстного меню, що надходить від встановлення Сервісів у вигляді Applescript або виконуваних плагінів.

    Це просто позбутися. Як би вони не назвали, просто шукайте на диску цей рядок. тобто Inject Potatos!сервіс в кінцевому рахунку буде знайдений у файлі з ім’ям Inject Potatos!.<something>. Можливо, є деякі інші форми та розміри, але їх легко вирішити та вийти за рамки посади ОП.

  • Для користувачів, які не є англійськими: це рішення є мовним. Ми використовуємо функції локалізації, які перетворюють рядки + аргументи за замовчуванням у локалізовані рядки з розширеними змінними.

Як це працює, пояснюється серією диких здогадок

Я не впевнений у внутрішніх цілях Objective-C, але я підозрюю, що щось подібне до цього відбувається.

snprintf(str, 0, "", var1, var2, ..);

Немає рядка формату (тобто ""), тому ви завжди strдорівнює нулю.

Якщо строка нульової довжини, розділовідтворювач локалізації піде назад до дерева, щоб знайти шаблон формату пращура, який працює. Поки ви скасуєте всіх предків цього класу повідомлень - з часом він вичерпає шаблони та поверне рядок нульової довжини запитувачу локалізації.

Відображувач контекстного меню визнає, що він має нульову довжину, і відміняє його з пунктів списку контекстного меню, і ви отримуєте стрункіше контекстне меню.

ВАЖЛИВО

  • Якщо ви не знаєте, що робите - ви можете зіпсувати Finder. Скористайтеся цим контрольним списком, щоб переконатися, що у вас є кунг-фу.
  • Будьте зручні, використовуючи оболонку
  • Знайте, як користуватися редактором простого тексту, наприклад, vim, nano, emacs тощо.
  • Завжди створюйте резервні копії будь-яких файлів, які ви редагуєте, перш ніж ви їх редагуєте.
  • Зробіть ОДНУ зміну за один раз, вбийте Finder, переконайтесь, що все виглядає добре, перейдіть на 10. Якщо ви внесете купу змін, і це спрацює, вам доведеться все одно повернути всі зміни.
  • Я знаю, що форматування NSString відрізняється від C, але якщо ви не хлопець Objective-C, і вам потрібно думати про це з точки зору printf, наступні приклади в основному однакові для цілей цієї вправи.

    • Шаблон Obj-C: "Throw ^1 into the ^2"
    • Printf шаблону: "Throw %s into the %s", arg1, arg2.

    Якщо ви внесете зміни та після перезавантаження Finder це не впливає - можливо, ви зміните рядок локалізації в іншій області, ніж контекстне меню правою кнопкою миші. Скасуйте зміни, перезапустіть Finder і повторіть спробу. Якщо пропустити цей крок, ви можете змінити щось інше, ніж контекстне меню, і не реалізувати його до днів пізніше.

  • Зрозумійте, що це в основному хак, він може працювати не так, як ви хочете, або очікуєте. Оскільки це варто, я працюю з цими змінами (і більше) щонайменше пару тижнів і не зазнав жодних негативних наслідків.


Приклад контекстного меню Finder Stock

Спочатку давайте подивимось на зображення "до", зроблене з посади ОП, яке показує нам типове контекстне меню Finder за замовчуванням, яке переповнюється.

Контекстне меню роздутого Finder

Страшенно!

Більшість пристроїв Apple навіть не постачають із DVD-дисками, але Burn "^1" to discціна нерухомості.

Не кажучи вже про настільки ж марно Quick Look, Duplicate, Make Alias, Copy ^1і т.д.


Нове контекстне меню гарячості

Нова гарячість

Роздягнувся, наскільки я міг його отримати. Майте на увазі, якби ми вибирали файл, у нас були б елементи за замовчуванням Openта Open with..меню.

Ви нічого не втрачаєте, якщо не опустите це.

За бажанням речі можна зробити досить рідкими.


Інструкції

  • Знайдіть файл $ LANGUAGE.lproj, який вас цікавить. У моєму випадку я розмовляю англійською.
  • cd /System/Library/CoreServices/Finder.app/Contents/Resources/English.lproj
  • запустіть plutil -convert xml1 Localizable.strings, щоб перетворити Localizable.strings у файл простого XML-плісту
  • ЗРОБИТИ РОЗВИТКУ Localizable.strings . Якщо ви щось зіпсуєте, ви захочете відновити зміни.
  • Відкрийте Localizable.strings в редакторі простого тексту / коду (vi, pico, emacs, jed, тощо. - TextEdit.app не може зберегти * .txt файли і цього слід уникати)

    Знайдіть значення, яке хочете приховати. У моєму випадку це було "Записування" ^ 1 "на диск", що є ключем BC50_V2.

    <key>BN50_V1</key>
    <string>Burn to Disc…</string>
    <key>BN50_V2</key>
    <string>Burn “^1” to Disc…</string>
  • Моєю першою спробою було повністю видалити пару ключ-значення, але це призвело до появи рядка BC50_V1 у моєму меню.

    Деякі рядки формату повернуться до більш загальних шаблонів, якщо вони існують. У цьому випадку вам доведеться нульове значення декількох.

    Ви можете бачити таку поведінку з BC50_V2, який повертається до BC50_V1.

    Оскільки я хотів повністю позбутися будь-яких Burn...записів у меню, мені довелося також зняти нуль BC50_V1.

    Є й інші пари ключових значень, які мали декілька резервних копій, але їх зазвичай досить легко ідентифікувати, оскільки вони матимуть однаковий префікс BC50_та суттєво зростаючі суфікси_V1, _V2, _V..

  • Ви можете коментувати свої зміни, зберігаючи копію оригінального фрагмента XML пари ключа / значення всередині коментаря XML.

    Я роблю копію фрагмента для зміни, коментую старий фрагмент з описом і вношу свої зміни в копію. Таким чином я можу легко повернути і не потрібно використовувати контроль версій або мати кілька копій файлу.

<!-- OLD Burn.*to Disc... 

    <key>BN50_V1</key>
    <string>Burn to Disc…</string>
    <key>BN50_V2</key>
    <string>Burn “^1” to Disc…</string>

-->

<!-- NEW Burn.*to Disc -->
<key>BN50_V1</key>
<string></string>
<key>BN50_V2</key>
<string></string>
  • Якщо ви хочете змінити рядок, а не видаляти цілком - ви можете це зробити і. Здається, що змінні можуть бути доступні за допомогою форми ^<number>. Тоді число представляє n-й аргумент. Якщо ви відчуваєте себе особливо pimpy ви могли б змінити Burn "^1" to Discдо Archive "^1" forever utilizing an optical disk!.
  • Збережіть свої зміни на диску
  • killall -HUP Finder перезапустити Finder
  • open .щоб відкрити вікно Finder у вашому поточному робочому каталозі. Клацніть правою кнопкою миші, щоб відкрити контекстне меню, переконайтесь, що все виглядає добре.
  • Готово! Зберігається, що за збереження файлу Localization.strings у форматі текстового списку не передбачено жодного штрафу, тому вам не потрібно турбуватися про перетворення у бінарний або текстовий формати, коли вони вносять зміни.

Просто зауважте в El Capitan, що вам потрібно вимкнути режим цілісності системи, щоб змінити необхідні файли. stackoverflow.com/questions/32590053 / ...
macycron

Усі мої спроби змінити або навіть зробити резервні копії закінчуються такими: Операція заборонена. Незалежно від того, використовую я судо, су чи мого користувача.
Карлес Алколія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.