Usunąć wpisy z menu kontekstowego wyszukiwarki?

14

Czy ktoś wie, jak mogę usunąć elementy, których nigdy nie używam z menu kontekstowego?

np .: Nagraj „yadda yadda” na dysk ...

wprowadź opis zdjęcia tutaj

philberndt
źródło
/System/Library/CoreServices/Finder/Contents/Resources/English.lproj/Menubar.nib ma cały wpis, ale nie wiem, jak usunąć ciągi

Odpowiedzi:

5

Państwo może faktycznie usunąć rodzimych elementów MacOS z menu kontekstowego .... ale niestety, nie wydaje się, można usunąć te, które wskazane powyżej. Niezależnie od tego, jeśli chcesz rzucić okiem, idź do

Preferencje systemowe> Klawiatura> Skróty klawiaturowe> Usługi

a następnie odznacz elementy, których nie chcesz w menu.

wprowadź opis zdjęcia tutaj

Szkoda, że ​​nie możesz ich wszystkich usunąć. Ale może przynajmniej pomóc pozbyć niektóre z bałaganu.

LloydDobbler
źródło
Sprawdź moje rozwiązanie - pozwala usunąć domyślną pozycję menu kontekstowego Findera dokładnie tak, jak żąda OP.
synthesizerpatel
5
  • Opracowałem rozwiązanie, które (jak dotąd) działa dla domyślnych elementów kontekstowych menu prawego Findera, takich jak Burn to diski Burn "^1" to disc. To jest dokładnie cel żądania PO.

  • Istnieje inna odmiana wzdęcia w menu kontekstowym, która pochodzi z instalowania Usług w postaci Applescript lub wtyczek wykonywalnych.

    Łatwo się ich pozbyć. Bez względu na ich nazwę, po prostu wyszukaj na dysku ten ciąg. tzn. Inject Potatos!usługa zostanie ostatecznie znaleziona w pliku o nazwie Inject Potatos!.<something>. Mogą istnieć inne kształty i rozmiary, ale są one łatwym problemem do rozwiązania i są poza zakresem ze stanowiska PO.

  • Dla użytkowników nieanglojęzycznych: To rozwiązanie jest niezależne od języka. Korzystamy z funkcji lokalizacji, które konwertują domyślne ciągi + argumenty na zlokalizowane ciągi z rozszerzonymi zmiennymi.

Jak to działa wyjaśniono szeregiem zgadywanek

Nie jestem pewien co do jego wewnętrznych elementów w Objective-C, ale podejrzewam, że dzieje się coś podobnego…

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

Nie ma łańcucha formatu (tj. „”), Więc zawsze kończy się strna zerowej długości.

Jeśli str ma zerową długość, program tłumaczący lokalizacje podejdzie do tyłu drzewa, aby znaleźć szablon formatu przodka, który działa. Tak długo, jak wyzerujesz wszystkich przodków tej klasy wiadomości - ostatecznie wyczerpią szablony i zwrócą ciąg o zerowej długości do requestera lokalizacji.

Moduł renderujący menu kontekstowego rozpoznaje, że ma zerową długość, i pomija go z elementów listy menu kontekstowego, dzięki czemu uzyskuje się cieńsze menu kontekstowe.

WAŻNY

  • Jeśli nie wiesz, co robisz - możesz zepsuć Findera. Skorzystaj z tej listy kontrolnej, aby sprawdzić, czy masz kung-fu.
  • Korzystaj z muszli
  • Wiedzieć, jak korzystać z edytora tekstu jawnego, takiego jak vim, nano, emacs itp.
  • Zawsze wykonuj kopie zapasowe plików, które edytujesz PRZED ich edycją.
  • Dokonuj JEDNEJ zmiany na raz, zabij Findera, sprawdź, czy wszystko wygląda dobrze, goto 10. Jeśli dokonasz wielu zmian i wszystko to zepsuje, będziesz musiał cofnąć wszystkie zmiany.
  • Wiem, że formatowanie NSString różni się od C, ale jeśli nie jesteś facetem z Objective-C i musisz o tym pomyśleć w kategoriach printf, poniższe przykłady są w zasadzie takie same dla celów tego ćwiczenia.

    • Szablon Obj-C: "Throw ^1 into the ^2"
    • printf szablon: "Throw %s into the %s", arg1, arg2.

    Jeśli dokonasz modyfikacji i po ponownym uruchomieniu Findera nie będzie to miało wpływu - możesz modyfikować ciąg lokalizacji w innym obszarze niż menu kontekstowe po kliknięciu prawym przyciskiem myszy. Cofnij zmianę, uruchom ponownie Findera i spróbuj ponownie. Jeśli pominiesz ten krok, może skończyć się modyfikacją czegoś innego niż menu kontekstowe i nie zdasz sobie z tego sprawy przez kilka dni.

  • Zrozum, że jest to w zasadzie hack, może nie działać tak, jak tego chcesz lub się spodziewasz. Dla tego, co warto, korzystałem z tych zmian (i więcej) od co najmniej kilku tygodni i nie doświadczyłem żadnych złych skutków.


Przykład menu kontekstowego wyszukiwarki zapasów

Najpierw spójrzmy na zdjęcie „przed” zrobione z posta PO, które pokazuje nam typowe domyślne menu kontekstowe Findera pełne wzdęć.

Nadęte menu kontekstowe Findera

Straszny!

Większość urządzeń Apple nawet nie jest już dostarczana z nagrywarkami DVD, ale Burn "^1" to disczajmują cenne nieruchomości.

Nie wspominając o równie bezużyteczne Quick Look, Duplicate, Make Alias, Copy ^1, itd.


Nowe menu kontekstowe Hotness

Nowa gorliwość

Rozebrałem się tak daleko, jak tylko mogłem. Pamiętaj, że gdybyśmy wybrali plik, mielibyśmy domyślne Openi Open with..pozycje menu.

Niczego nie stracisz, chyba że to pominiesz.

Jeśli chcesz, rzeczy mogą być dość rzadkie.


Instrukcje

  • Znajdź plik $ LANGUAGE.lproj, który Cię interesuje. W moim przypadku mówię po angielsku.
  • cd /System/Library/CoreServices/Finder.app/Contents/Resources/English.lproj
  • uruchom plutil -convert xml1 Localizable.strings, aby przekonwertować plik Localizable.strings na plik plist XML w postaci zwykłego tekstu
  • Zrób kopię zapasową Localizable.strings . Jeśli coś zepsujesz, będziesz mógł cofnąć zmiany.
  • Otwórz Localizable.strings w edytorze zwykłego tekstu / kodu (vi, pico, emacs, jed itp. - TextEdit.app nie może zapisywać plików * .txt i należy tego unikać)

    Znajdź wartość, którą chcesz ukryć. W moim przypadku było to „Burn” ^ 1 ”na dysku, co jest kluczem BC50_V2.

    <key>BN50_V1</key>
    <string>Burn to Disc…</string>
    <key>BN50_V2</key>
    <string>Burn “^1” to Disc…</string>
  • Moja pierwsza próba polegała na całkowitym usunięciu pary klucz-wartość, ale spowodowało to pojawienie się ciągu BC50_V1 w moim menu.

    Niektóre ciągi formatu wrócą do bardziej ogólnych szablonów, jeśli istnieją. W takim przypadku musisz wyzerować wiele wartości.

    Możesz zobaczyć to zachowanie z BC50_V2, które spada do BC50_V1.

    Ponieważ chciałem zakończyć pozbywanie się jakichkolwiek Burn...pozycji menu, musiałem również wyzerować BC50_V1.

    Istnieją inne pary kluczowych wartości, które miały wiele błędów rezerwowych, ale zwykle są dość łatwe do zidentyfikowania, ponieważ będą miały ten sam przedrostek BC50_i przyrostki liczbowe_V1, _V2, _V..

  • Możesz dodawać adnotacje do swoich zmian, przechowując kopię oryginalnego fragmentu XML pary klucz / wartość w komentarzu XML.

    Wykonuję kopię fragmentu, aby go zmienić, komentuję stary fragment z opisem i wprowadzam modyfikacje do kopii. W ten sposób mogę łatwo przywrócić i nie muszę używać kontroli wersji ani mieć wielu kopii pliku.

<!-- 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>
  • Jeśli chcesz zmienić ciąg zamiast całkowicie go usunąć - możesz to zrobić. Zmienne wydają się być dostępne za pomocą formularza ^<number>. Wtedy liczba reprezentuje n-ty argument. Jeśli czuli szczególnie pimpy można modyfikować Burn "^1" to Discdo Archive "^1" forever utilizing an optical disk!.
  • Zapisz zmiany na dysku
  • killall -HUP Finder zrestartować Findera
  • open .aby otworzyć okno Findera w bieżącym katalogu roboczym. Kliknij prawym przyciskiem myszy, aby otworzyć menu kontekstowe, sprawdź, czy wszystko wygląda dobrze.
  • Wszystko gotowe! Wydaje się, że nie ma żadnej kary za utrzymanie pliku Localization.strings w formacie tekstowym, więc nie musisz się martwić o konwersję do formatów binarnych lub tekstowych za każdym razem, gdy wprowadzasz zmiany.
synthesizerpatel
źródło
Tylko uwaga w El Capitan musisz wyłączyć tryb integralności systemu, aby zmienić potrzebne pliki. stackoverflow.com/questions/32590053/…
macycron
Wszystkie moje próby modyfikacji, a nawet tworzenia kopii zapasowych kończą się następująco: Operacja niedozwolona. Bez względu na to, czy korzystam z sudo, su czy mojego użytkownika.
Carles Alcolea