Eto: [Req] 原生(纯 C#)wayland 后端支持

创建于 2015-11-21  ·  17评论  ·  资料来源: picoe/Eto

Wayland 是一个协议 - https://en.wikipedia.org/wiki/Wayland_ (display_server_protocol)

协议可以在纯 C# 中实现,或者作为 libwayland-client 的绑定
http://www.jlekstrand.net/jason/projects/wayland/language-bindings-guide/
libwayland-server 和 libwayland-client 是在 MIT 许可证下发布的。

最受尊敬的工具包都有 Wayland 支持 - http://wayland.freedesktop.org/toolkits.html

“特别是,这应该为音频提供可行的网络透明度”(???)

help wanted

所有17条评论

谢谢你的建议! 但是,当我们已经使用 GTK(位于 Wayland 之上)时,为什么还要直接绑定到 Wayland? 这不是重新发明轮子吗? 据我了解,我们必须实现所有小部件、窗口功能等。

您认为这种方法有什么好处?

这是个好主意,但对于单声道框架或 .net 核心,不适用于 eto 框架。 优势显而易见。 Eto -> gtk# -> mono/.net core -> gtk+ -> xwindow。 只有 eto -> mono/.net core -> wayland。

我可能是错的,但似乎 Wayland 只是提供了一个合成器。 它似乎没有提供绘制线条、渐变、纹理等的绘图 api。这是像 cairo 这样的东西会提供的,并且做得很好。 我不希望 Eto.Forms 实现自己的绘制 api 来呈现到缓冲区,因为这会重新发明轮子并且可能做得很差。

但是,我经常考虑使用 Eto.Drawing api 为 Eto 的每个控件(例如 Button、TextBox 等)创建自定义绘制处理程序。 这意味着您只需为平台包装 Eto.Drawing 处理程序即可支持它(如果您不关心它的视觉效果)。

Eto.Forms 已经包装了 cairo(它支持 wayland),所以只需为每个控件创建自定义绘制的处理程序,我们至少可以去掉 GTK+。 然而,这仍然有很多工作要做。 如果有人足够敏锐,这将是一个受欢迎的补充,我可以帮助开始这项工作,但将无法完成大部分工作。

现在还有人对这个想法感兴趣吗? 我设法创建了一个到 Wayland 的绑定,使 C# 能够使用 Wayland 轻松创建用户界面。 我计划在为它上传 repo 之前完成设计。 (它本质上是使用 DL 库来动态加载本机 Wayland 库,该库与 Mono 用于导入 DLL 函数并直接与其接口的库相同。不需要中间库来处理 Wayland 和 C# 之间的 P/Invoke。)我也是使用 ImageSharp 而不是 Cairo(Cairo 显然不能直接与共享内存缓冲区交互,鄙视我的努力。)

我真的不明白为什么这个问题甚至是一件事......你会得到什么?

消除对 GTKSharp 和 GTK 依赖项的需求是一个很大的问题。 Wayland 相对快速且足够灵活,我们可以使用 Skia、OpenGL、ImageSharp 或其他尚未列出的库来渲染我们的 Eto.Form,而不是像 GTK 那样坚持使用非常笨拙的库,我们可以选择更小更纤薄的库为用户提供更多选项的用户界面,尤其是在嵌入式环境中(https://www.youtube.com/watch?v=GtXQJ0c5q0k 了解 Wayland 如何在 ARM 设备上使用)。

你到底如何在不使用 gtk/qt 的情况下渲染一个只有 wayland 的按钮,并且仍然让它看起来是原生的?

您可以通过图像来绘制边框或通过代码绘制它。 它比您想象的要容易,并且非常类似于 HTML 网页设计。 ImageSharp 为 C# 提供了许多类似于 Gimp 的功能,使这项任务变得容易,这样我们就已经开始做一件事了。

您可以通过图像来绘制边框或通过代码绘制它。 它比您想象的要容易,并且非常类似于 HTML 网页设计。

Eto Forms 的重点是为平台提供原生用户界面,这个问题所要求的更适合这样的项目: https :

我的观点仍然成立,我们可以在 Eto 下创建一个 C# 平台来提供可以在所有平台上工作的本地用户界面,而不仅仅是 Linux。

我的观点仍然成立,我们可以在 Eto 下创建一个 C# 平台来提供可以在所有平台上工作的本地用户界面,而不仅仅是 Linux。

您将是自定义绘图,UI 看起来不会是原生的。

我想在这种环境中,不会有任何其他 UI 工具包,因此不会有“本机”这样的东西。 我经常想到创建主题处理程序,这些处理程序都归结为 Drawable 控件,这只需要实现一个绘图堆栈。 然而, @cra0zy是正确的,因为

所以你是说 Eto 项目不会对替代方案开放,只会坚持使用像 GTK 这样臃肿的库,鄙视有可能摆脱这些?

@CsharpOnLinuxDev不,我对此态度。 限制 Eto 是没有任何意义的,如果你(或任何人)认为它是一个很好的框架来建立替代平台,那么我完全支持。 我认为肯定有一个用例来支持没有现有 UI 工具包(如用于嵌入式平台的 GTK 或 QT)的平台。 它还可以用于支持带有 .NET Core 的窗口,这似乎是很多人都在为之苦恼。

话虽如此,我没有任何周期来开发或维护这样一个平台,因此这方面的任何进展都必须来自社区。 它也不一定必须是主要 Eto 存储库的一部分,任何人都可以为 Eto 创建一个平台实现,然后以他们喜欢的方式发布它。 (;

我(像往常一样)可以为任何提出要求的人提供帮助和指导。

你好,这方面有进展吗? Wayland 会被整合到 Eto 吗?

好吧,如果您使用的是 Gtk 3 后端,那么您已经在使用 Wayland ...

@cra0zy感谢您的回复!
但我的意思是eto -> mono/.net core -> wayland ,而不是Eto -> gtk# -> mono/.net core -> gtk3 -> wayland

实际上,我正试图找到一个 Wayland C# 经编器。 😃

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Jojatekok picture Jojatekok  ·  33评论

LaraSQP picture LaraSQP  ·  5评论

azunyuuuuuuu picture azunyuuuuuuu  ·  23评论

Serg-Norseman picture Serg-Norseman  ·  5评论

LaraSQP picture LaraSQP  ·  7评论