从Finder的上下文菜单中删除条目?


14

有谁知道如何从上下文菜单中删除从未使用过的项目?

例如:将 “ yadda yadda”刻录到磁盘...

在此处输入图片说明


/System/Library/CoreServices/Finder/Contents/Resources/English.lproj/Menubar.nib包含所有条目,但我不知道如何删除字符串

Answers:


5

您实际上可以从上下文菜单中删除本机MacOS项。...但是很遗憾,它似乎没有出现,您可以删除上面指示的项。无论如何,如果您想看一看,请前往

系统偏好>键盘>键盘快捷键>服务

然后取消选中菜单上不需要的项目。

在此处输入图片说明

不幸的是,您无法删除所有这些文件。但这至少可以帮助您摆脱一些混乱。


检查我的解决方案-它允许您完全按照OP请求删除Finder默认上下文菜单项。
synthesizerpatel

5
  • 我已经为此解决了一个问题,(到目前为止)适用于默认的 Finder右键菜单上下文项(例如Burn to disk和)Burn "^1" to disc。这正是OP请求的目标。

  • 通过以Applescript或可执行插件的形式安装服务还有一种上下文菜单膨胀。

    这些很容易摆脱。无论它们的名字是什么,只要在磁盘上搜索该字符串即可。即Inject Potatos!服务最终将在名为的文件中找到Inject Potatos!.<something>。它们可能还有其他形状和尺寸,但是它们是易于解决的问题,超出了OP的范围。

  • 对于非英语用户:此解决方案与语言无关。我们利用了将默认字符串+ args转换为带有扩展变量的本地化字符串的本地化功能。

一系列疯狂的猜测解释了它的工作方式

我不确定它的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,然后重试。如果跳过此步骤,您可能最终会修改上下文菜单以外的内容,直到几天后才意识到。

  • 了解这基本上是一种hack,它可能无法按照您希望或期望的方式工作。值得一试的是,我至少在过去的几个星期中一直在进行这些更改(以及更多更改),并且没有遇到不良影响。


Stock Finder上下文菜单示例

首先,让我们看一下来自OP帖子的“之前”图像,该图像向我们展示了一个充满膨胀的典型默认Finder上下文菜单。

膨胀的Finder上下文菜单

可怕!

大多数Apple设备甚至不再附带DVD刻录机,但Burn "^1" to disc占用了宝贵的空间。

且不说同样没用Quick LookDuplicateMake AliasCopy ^1,等。


新热点上下文菜单

新热点

尽我所能剥离下来。请记住,如果我们选择一个文件,我们将拥有默认OpenOpen 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个参数。如果您感觉特别浮躁,可以将其修改Burn "^1" to DiscArchive "^1" forever utilizing an optical disk!
  • 将修改保存到磁盘
  • killall -HUP Finder 重新启动Finder
  • open .在当前工作目录中打开Finder窗口。右键单击以打开上下文菜单,确认一切看起来都不错。
  • 全做完了!将Localization.strings文件保持为文本plist格式似乎没有任何惩罚,因此您在进行更改时无需担心要转换为二进制或文本格式。

只需在El Capitan中注意,您就必须关闭系统完整性模式才能更改所需的文件。stackoverflow.com/questions/32590053/…–
macycron

我所有修改甚至备份的尝试都以:不允许进行操作。无论我使用sudo,su还是我的用户。
Carles Alcolea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.