Mac和Linux上类似于Windows的shell扩展

我正在开发一个应用程序(最初是针对Windows,但是尽可能扩展到Mac和Linux),而且我将需要在两个平台上扩展shell,以实现最佳的可用性。 那么我怎样才能在C#中为Mac OS X以及Linux(基于GNOME)制作shell扩展?

在Windows上有一个名为SharpShell的库,可以为你处理所有这些,所以这很好。 但是,没有这样的运气为Mac或Linux(据我所知)。

我正在寻找与壳集成的主要方面,是右键单击文件,并显示一个上下文菜单与我的应用程序不同的选项的选项。 (就像Windows上的7-Zip一样)

当我使用术语壳牌,我从Windows中得到它。 所以,当我说我正在寻找与壳牌集成,我的意思是创build上下文菜单右键单击和类似的function。 所有基于UI的。

您正试图在完全不同的* NIX环境中应用Windows环境(上下文菜单)中特定的概念。 是一个艰巨的任务,非常困难,因为* NIX不提供友好的API来修改环境,因为桌面/壳碎片(侏儒,KDE等)。 Windows Shell是explorer.exe,提供shell和桌面体验,explorer.exe向你显示桌面,开始按钮栏和资源管理器窗口(浏览文件,设备和目录),所以在Windows中我们只有一个程序来做到这一点,Linux或OSX遵循另一种设计,在Linux中,我们有一个桌面管理器(Gnome,KDE,LXDE),它显示给你的桌面,但对于文件交互,我们有一个不同的程序称为文件管理器(Nautilus,海豚等)。 但是,我需要说的是很难但不可能。

为了完成,你需要编写一个抽象层(AL)。 你的程序只需要调用这个层,你需要把AL移植到你所有的平台/桌面管理器上。

例:

假设我们在AL中有一个名为AddContextualItem(…)的函数,为了向Shell上下文菜单添加一个新的项目,你的代码需要调用这个函数,但是对于Windows环境,这个函数肯定会调用一些WIN32 API来完成目标,但是在OSX Environment或Linux中,这个函数AddContextualItem应该被另一个与unix桌面环境兼容的实现(比如Gnome,KDE等)或者特定的文件管理器(Nautilus,Dolphin等)替代。

最终,C#似乎并不是像这样完成任务的更好的语言,Xamarin在Mono Framework上做得很好,但是还不够。 C或C ++是更强大的语言来做到这一点。

如何将右键菜单添加到Nautilus(Gnome)文件管理器

鹦鹉螺动作的源代码

如何将右键菜单添加到Dolphin(KDE)文件管理器

Apple OS正式文档在OS X中构建服务(如右键单击项目菜单)

“Linux”没有“外壳”。

它有许多不同的应用程序提供“外壳”式的功能, 还有更多提供类似文件管理器功能的应用程序。

有几个规范(下面链接),可能与你的目标有关,这可能会帮助你以通用的方式做一些这样的事情,但最终我不知道你将能够得到多么近似的模拟。


  • 桌面菜单规范
  • 共享MIME-信息规格
  • MIME应用程序关联
  • 文件管理器界面