Remover entradas do menu de contexto do localizador?

14

Alguém sabe como posso remover itens que nunca uso do menu de contexto?

por exemplo: Grave "yadda yadda" no disco ...

insira a descrição da imagem aqui

philberndt
fonte
/System/Library/CoreServices/Finder/Contents/Resources/English.lproj/Menubar.nib tem toda a entrada, mas eu não sei como excluir cordas

Respostas:

5

Na verdade, você pode remover itens nativos do MacOS do menu de contexto .... mas, infelizmente, não parece que você possa remover os itens indicados acima. Independentemente disso, se você quiser dar uma olhada, vá para

Prefs do sistema> Teclado> Atalhos de teclado> Serviços

e desmarque os itens que você não deseja no menu.

insira a descrição da imagem aqui

É uma pena que você não possa remover todos eles. Mas pode pelo menos ajudá-lo a se livrar de um pouco da confusão.

LloydDobbler
fonte
Verifique minha solução - ele permite remover o item de menu de contexto padrão do Finder exatamente como solicitações de OP.
synthesizerpatel
5
  • Eu elaborei uma solução para isso que (até agora) funciona para itens de contexto padrão do menu direito do Finder, como Burn to diske Burn "^1" to disc. Esse é exatamente o objetivo da solicitação de OPs.

  • outro tipo de inchaço no menu de contexto que vem da instalação dos Serviços na forma de Applescript ou plugins executáveis.

    Esses são simples de se livrar. Qualquer que seja o nome, basta procurar no seu disco por essa sequência. ie Inject Potatos!serviço acabará por ser encontrada em um arquivo chamado Inject Potatos!.<something>. Pode haver outras formas e tamanhos deles, mas eles são o problema fácil de resolver e fora do escopo do post dos OPs.

  • Para usuários que não são ingleses: esta solução é independente de idioma. Aproveitamos as funções de localização que convertem seqüências padrão + args em sequências localizadas com variáveis ​​expandidas.

Como funciona explicado com uma série de palpites

Não tenho certeza sobre os objetivos do Objective-C, mas suspeito que algo semelhante a isso está acontecendo.

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

Não existe uma string de formato (ou seja, ""), então você sempre termina com strtamanho zero.

Se o str tiver comprimento zero, o resolvedor de localização retornará a árvore para encontrar um modelo de formato ancestral que funcione. Contanto que você zere todos os ancestrais dessa classe de mensagem - ele acabará esgotando os modelos e retornará uma cadeia de comprimento zero ao solicitante da localização.

O representante do menu de contexto reconhece seu comprimento zero e o omite nos itens da lista de menus de contexto e você obtém um menu de contexto mais fino.

IMPORTANTE

  • Se você não sabe o que está fazendo, pode estragar o Finder. Use esta lista de verificação para verificar se você tem o kung-fu.
  • Sinta-se confortável usando a concha
  • Saiba como usar um editor de texto sem formatação, como vim, nano, emacs, etc.
  • Sempre faça backup de todos os arquivos que você editar ANTES de editá-los.
  • Faça UMA alteração de cada vez, mate o Finder, verifique se tudo parece bom, vá para 10. Se você fizer várias alterações e isso estragar tudo, você terá que reverter todas as alterações de qualquer maneira.
  • Sei que a formatação do NSString é diferente de C, mas se você não é do tipo Objective-C e precisa pensar nisso em termos de printf, os seguintes exemplos também são basicamente os mesmos para os propósitos deste exercício.

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

    Se você fizer uma modificação e depois de reiniciar o Finder, isso não parecerá afetado - você poderá modificar uma sequência de localização em outra área que não seja o menu de contexto do botão direito do mouse. Reverta a alteração, reinicie o Finder e tente novamente. Se você pular esta etapa, poderá acabar modificando algo diferente do menu de contexto e não perceber isso até dias depois.

  • Entenda que isso é basicamente um hack, pode não funcionar da maneira que você deseja ou espera. Pelo que vale a pena, estive acompanhando essas mudanças (e mais) há pelo menos algumas semanas e não tive efeitos negativos.


Exemplo do menu de contexto do Stock Finder

Primeiro, vamos olhar para uma imagem 'antes' tirada da postagem do OP que mostra um menu de contexto típico do Finder padrão cheio de inchaço.

Menu de contexto do Finder inchado

Terrível!

A maioria dos dispositivos da Apple nem sequer é mais vendida com gravadores de DVD, mas existem Burn "^1" to discimóveis valiosos.

Sem mencionar o igualmente inútil Quick Look, Duplicate, Make Alias, Copy ^1, etc.


Novo menu de contexto de gostosura

New Hotness

Despojado até onde eu pude entender. Tenha em mente que, se estivéssemos selecionando um arquivo, teríamos os itens padrão Opene de Open with..menu.

Você não perde nada a menos que o omita.

As coisas podem ser feitas bastante escassas, se você desejar.


Instruções

  • Encontre o arquivo $ LANGUAGE.lproj no qual você está interessado. No meu caso, eu falo inglês.
  • cd /System/Library/CoreServices/Finder.app/Contents/Resources/English.lproj
  • executar plutil -convert xml1 Localizable.strings, para converter Localizable.strings em um arquivo XML simples de texto simples
  • FAÇA UM BACKUP DE Localizable.strings . Se você estragar alguma coisa, poderá reverter suas alterações.
  • Abra Localizable.strings em um editor de texto / código (vi, pico, emacs, jed, etc - O TextEdit.app não pode salvar arquivos * .txt e deve ser evitado)

    Encontre o valor que deseja ocultar. No meu caso, era 'Burn "^ 1" to disk', que é a chave BC50_V2.

    <key>BN50_V1</key>
    <string>Burn to Disc…</string>
    <key>BN50_V2</key>
    <string>Burn “^1” to Disc…</string>
  • Minha primeira tentativa foi remover completamente o par de valores-chave, mas isso resultou na exibição da string do BC50_V1 no meu menu.

    Algumas seqüências de formato voltarão a modelos mais genéricos, se existirem. Nesse caso, você precisará zerar vários valores.

    Você pode ver esse comportamento com BC50_V2, que volta a BC50_V1.

    Como eu queria concluir a eliminação de todas Burn...as entradas do menu, tive que zerar o BC50_V1 também.

    Existem outros pares de valores-chave que tiveram vários fallbacks, mas geralmente são fáceis de identificar, pois terão o mesmo prefixo BC50_e sufixos numericamente incrementados_V1, _V2, _V..

  • Você pode anotar suas alterações mantendo uma cópia do fragmento XML do par de chave / valor original dentro de um comentário XML.

    Faço uma cópia do fragmento para alterar, comento o fragmento antigo com uma descrição e faço minhas modificações na cópia. Dessa forma, eu posso reverter facilmente e não preciso usar o controle de versão ou ter várias cópias do arquivo.

<!-- 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>
  • Se você deseja alterar uma string em vez de removê-la completamente - você também pode fazer isso. As variáveis ​​parecem acessíveis através do formulário ^<number>. Então number representa o enésimo argumento. Se você estava se sentindo especialmente cafetão, poderia modificar Burn "^1" to Discpara Archive "^1" forever utilizing an optical disk!.
  • Salve suas modificações no disco
  • killall -HUP Finder reiniciar o Finder
  • open .para abrir uma janela do Finder no seu diretório de trabalho atual. Clique com o botão direito do mouse para abrir o menu de contexto e verifique se tudo está bem.
  • Tudo feito! Parece não haver nenhuma penalidade em manter o arquivo Localization.strings no formato de texto, para que você não precise se preocupar em converter dentro e fora de formatos binários ou de texto sempre que fizer alterações.
synthesizerpatel
fonte
Apenas uma observação no El Capitan, você deve desativar o modo de integridade do sistema para alterar os arquivos necessários. stackoverflow.com/questions/32590053/…
macycron
Todas as minhas tentativas de modificar ou mesmo fazer backups terminam com: Operação não permitida. Não importa se eu uso sudo, su ou meu usuário.
Carles Alcolea