Удалить записи из контекстного меню поиска?

14

Кто-нибудь знает, как я могу удалить элементы, которые я никогда не использую из контекстного меню?

Например: записать "Ядда Ядда" на диск ...

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

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

Ответы:

5

На самом деле вы можете удалить нативные элементы MacOS из контекстного меню .... но, к сожалению, не получается удалить те, которые вы указали выше. Независимо от того, если вы хотите посмотреть, голова к

Системные настройки> Клавиатура> Сочетания клавиш> Сервисы

а затем снимите флажки с пунктов, которые вы не хотите в меню.

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

К сожалению, вы не можете удалить их все. Но это может по крайней мере помочь вам избавиться от некоторых беспорядков.

LloydDobbler
источник
Проверьте мое решение - оно позволяет вам удалить пункт контекстного меню Finder по умолчанию точно так же, как запросы OP.
синтезаторпатель
5
  • Я разработал решение для этого, которое (пока) работает для стандартных элементов контекстного меню Finder, таких как Burn to diskи Burn "^1" to disc. Это как раз и есть цель запроса ОП.

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

    От них просто избавиться. Как бы они ни назывались, просто поищите на вашем диске эту строку. то есть Inject Potatos!сервис в конечном итоге будет найден в файле с именем Inject Potatos!.<something>. Могут быть и другие формы и размеры, но их легко решить и вывести их из публикации ОП.

  • Для неанглийских пользователей: Это решение не зависит от языка. Мы используем функции локализации, которые преобразуют строки по умолчанию + аргументы в локализованные строки с расширенными переменными.

Как это работает, объясняется серией диких догадок

Я не уверен насчет внутренних объектов Objective-C, но я подозреваю, что происходит нечто подобное ...

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

Там нет строки формата (то есть ""), так что вы всегда будете strиметь нулевую длину.

Если 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 и попробуйте снова. Если вы пропустите этот шаг, вы можете в конечном итоге изменить что-то, кроме контекстного меню, и не осознавать это, пока несколько дней спустя.

  • Поймите, что это по сути взлом, он может работать не так, как вы хотите или ожидаете. Что бы это ни стоило, я бегал с этими изменениями (и больше) по крайней мере пару недель и не испытал никаких побочных эффектов.


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

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

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

Ужасно!

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

Не говоря уже о столь же бесполезно Quick Look, Duplicate, Make Alias, Copy ^1и т.д.


Новое контекстное меню Hotness

Новая Жара

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

Вы ничего не потеряете, если не пропустите это.

Вещи могут быть сделаны довольно разреженными, если вы хотите.


инструкции

  • Найдите файл $ LANGUAGE.lproj, который вас интересует. В моем случае я говорю по-английски.
  • cd /System/Library/CoreServices/Finder.app/Contents/Resources/English.lproj
  • запустить plutil -convert xml1 Localizable.strings, чтобы преобразовать Localizable.strings в обычный XML-файл plist
  • СОЗДАТЬ РЕЗЕРВНОЕ КОПИРОВАНИЕ 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 в формате текстового списка, поэтому вам не нужно заботиться о преобразовании в двоичный или текстовый форматы при внесении изменений.
synthesizerpatel
источник
Просто обратите внимание, в El Capitan вы должны отключить режим целостности системы, чтобы изменить необходимые файлы. stackoverflow.com/questions/32590053/…
macycron
Все мои попытки изменить или даже сделать резервные копии заканчиваются: Операция не разрешена. Неважно, использую ли я sudo, su или моего пользователя.
Карлес Алколея,