Fal*_*til 5 c# linux macos shell
我正在制作一个应用程序(最初用于Windows,但扩展到Mac和Linux asap),我将需要在两个平台上扩展shell,以实现最佳可用性.那么我将如何在C#中为Mac OS X以及Linux(基于GNOME)进行shell扩展?
在Windows上有一个名为SharpShell的库,可以为您处理所有这些,所以这很棒.但对于Mac或Linux没有这样的运气(据我所知).
我想要集成的Shell的主要方面是右键单击文件,并让它显示一个上下文菜单,其中包含我的应用程序的不同选项.(比如Windows上的7-Zip)
当我使用Shell这个术语时,我是从Windows派生出来的.因此,当我说我希望与Shell集成时,我的意思是在右键单击时创建上下文菜单,以及类似的功能.所有基于UI.
您正在尝试在完全不同的 *NIX 环境中应用 Windows 环境中特定的概念(上下文菜单)。这是一项艰巨的任务,而且非常困难,因为 *NIX 不提供友好的 API 来修改环境,因为桌面/Shell 碎片(Gnome、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 环境或 Linux 中,此函数 AddContextualItem 应替换为与 unix 桌面环境(如 Gnome、KDE 等)或特定文件管理器(Nautilus、Dolphin 等)兼容的另一个实现。
最终,C# 似乎并不是完成此类任务的更好语言,Xamarin 在 Mono 框架方面做得很好,但还不够。C 或 C++ 是执行此操作的更强大的语言。
如何向 Nautilus (Gnome) 文件管理器添加右键菜单
Apple 在 OS X 中构建服务(如右键菜单)的官方文档
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |