0 votes
by (140 points)

Hello Rebex Forum,

After purchasing Rebex Total Pack, I noticed the following "Note: Terminal Control is only supported on Windows" at https://www.rebex.net/terminal-emulation.net/features/gui-terminal-control-winforms.aspx.

And this "Rebex Terminal Emulation component is an SSH shell, Telnet and terminal emulation library for .NET languages (such as C# or VB.NET). It makes it easy to execute commands on Unix/Windows SSH or telnet servers and add terminal emulation capabilities to your applications.".

Given that Apple MacOS and Linux Ubuntu OS is based on UNIX technologies.

Question 1.) Does this mean I cannot create Rebex Total Pack WinForms Applications to be complied, exported and installed on Apple MacOS and Linux Ubuntu OS platforms?

Question 2.) What are my options for building Rebex Total Pack with Visual Studio 2019 Community for three OS platforms; Windows 10/11 OS, Apple MacOS and Linux Ubuntu OS?

Thank you,

Applies to: Total Pack

1 Answer

0 votes
by (134k points)

Unfortunately, .NET Framework and .NET do not support Windows Forms on macOS or Linux. Rebex TerminalControl is a Windows Forms (WinForms) control, so the same limitations apply.

Unlike .NET Framework, its newer iterations (.NET and .NET Core) do support Linux and macOS, but this sadly does not apply to Windows Forms - those are only supported on Windows. From the project's repository:

Windows Forms (WinForms) is a UI framework for building Windows desktop applications. It is a .NET wrapper over Windows user interface libraries, such as User32 and GDI+.

We hope that the new MAUI API will eventually make it possible to implement a new multi-platform .NET terminal control, but this is not in our roadmap yet.

1) .NET and .NET Framework do not support WinForms applications on macOS and Linux. Currently, the only way to run WinForms applications on macOS and Linux is via Mono (see the side note below).

2) Currently, if you need a terminal emulation UI control on all of these platforms, the only option with Rebex Total Pack is to implement custom rendering via IScreen API for two non-Windows platforms. Unfortunately, that would imply additional work.

If you feel that this makes Rebex Total Pack unsuitable for your scenario, consider contacting us for a refund.

Side note on Mono: TerminalControl class actually used to work on Mono, an open-source multi-platform implementation of CLR compatible with .NET Framework that supports Linux and macOS as well.

However, user experience was negatively affected by the heavily unfinished state of Mono’s Windows Forms API. For example, check out the Linux/X11 version of Graphics.CopyFromScreen metod, which we have been using for scrolling the TerminalControl content. Instead of hardware-accelerated “bit blit” operation one would expect there, it simply creates a temporary Bitmap (!), copies data pixel-by-pixel (!) to it by calling Bitmap.SetPixel (!) method, draws the Bitmap, and disposes it. Which is horribly slow.

Due to persisting troubles and lack of interest (unsurprising due to the unfortunate state of Windows Forms in Mono on Linux), we dropped Mono support in TerminalControl several years ago and currently have no plans to reintroduce it.