DevToys-app / DevToys

A Swiss Army knife for developers.
https://devtoys.app/
MIT License
26.68k stars 1.42k forks source link

Suggestion: Cross-platform UI (Windows, MacOS, Linux) #156

Closed AmiK2001 closed 2 months ago

AmiK2001 commented 2 years ago

Is your feature request related to a problem? Please describe. The application is cool, but so far it only supports Windows OS.

Describe the solution you'd like AvaloniaUI is a cross-platform, open source, XAML-based framework that is close to WPF. It would be nice if a GUI based on AvaloniaUI became optional or even core to make it easier to support a cross-platform user interface.

Describe alternatives you've considered As a cross-platform alternative to AvaloniaUI, I see only Uno Platform.

tobamaestro commented 2 years ago

As a Mac user, would love to contribute in bringing the product to MacOS platform. Regarding desktop development, I'm familiar with ElectronJS, but did some C# (WPF & Windows Forms) and Java (Swing) back in the days.

isaacrlevin commented 2 years ago

.NET MAUI might be a good option as well when it goes GA https://docs.microsoft.com/en-us/dotnet/maui/

AmiK2001 commented 2 years ago

.NET MAUI might be a good option as well when it goes GA https://docs.microsoft.com/en-us/dotnet/maui/

MAUI's biggest problem is the lack of Linux support. Some developers may need this.

isaacrlevin commented 2 years ago

Have you seen this? Maintained by a MSFT employee https://github.com/jsuarezruiz/maui-linux

AmiK2001 commented 2 years ago

Have you seen this? Maintained by a MSFT employee https://github.com/jsuarezruiz/maui-linux

Thanks for the link, I have not heard that anyone is porting MAUI to Linux.

Based on the status of the project, maui-linux is still in very early development and the rest of the offerings look much better and are already being used by both open-source projects and companies.

RodrigoTomeES commented 2 years ago

Hi, it would be great have this app in macOS, I can help testing it 🚀

readthecodes commented 2 years ago

The audience of this product is developers, but most developers are using MacOS or Linux as their development environment, only support Windows is the biggest bug...

veler commented 2 years ago

Hi, Thanks everyone for proposing this change. I read on Twitter, Hacker News, Reddit and here that a lot of people were wondering whether the app could be cross-platform or not.

Lookback on why DevToys is only on Windows today

Here is my very personal (and probably biased) feeling about it:

In August, @btiteux and I discovered DevBox and DevUtils apps for macOS. We've been amazed by how they fit well the macOS environment (look & feel + integration of OS-specific features). We looked at what existed on Windows and found nothing as good. That was one of the big motivations for making DevToys: having an app for which the look & feel fit very well the OS (in particular Win11) and integrates OS-specific features (navigation, tiles...)

Other factors are that @btiteux and I are very comfortable with Windows, we don't own a Mac and never need a Linux for work (it's been years I didn't start a Linux machine). Adding to this the fact that we wanted a sleek native UI, at the end of the day we didn't have much interest in doing an app with a cross-platform UI like Electron or a platform-specific UI (Xamarin/Uno) or a native app on each platform, mostly because we are were only 2 people working on this app.

Quickly looking at the macOS and Linux "developer toolbox" market, we can see there are already plenty of famous and super cool apps like DevBox, DevUtils, Boop, Text Pieces, meanwhile, not much on Windows. We didn't really want to spend energy at "competing" with other apps on a specific OS, even if they're paid app and that we're free. Not that we can't, but it wasn't our goal at that time.

Perspective

I'm personally not against the idea of having a cross-platform app, but that would be under some conditions:

  1. Not regressing the DevToys UI on Windows (at all).
  2. Keep supporting Windows-specific feature. In parallel, we can also of course support macOS and Linux-specific features.
  3. Making sure the UI/UX on macOS and Linux is coherent with the Windows approach, while also being coherent with macOS and Linux ecosystem. What I mean here is that the look & feel would fit the system, while the navigation in the app would be the same (or as close as possible) than the original one on Windows.
  4. I'd need to invest into a Mac (not a big deal).

Please tell me if I'm mistaken here, but with these first 3 conditions above, I feel like Electron should be eliminated from the equation. MUI isn't ready yet. Uno may not allow to keep the exact same UI on Windows due to limitations (please tell me if I'm wrong).

Going forward / TL;DR

With that all said, perhaps the best thing to do from user perspective is to make the app native to each platform. But that requires a ton of resource and energy from us (@btiteux and I). I'm sure we can count on the help of the community, but since every contribution depends on free time and motivation of everyone, I'm hesitant at taking this direction if it has low chances to be completed with the same level of quality that we tried to set for the current Windows app.

isaacrlevin commented 2 years ago

The audience of this product is developers, but most developers are using MacOS or Linux as their development environment, only support Windows is the biggest bug...

Have stats to back that up?

veler commented 2 years ago

The audience of this product is developers, but most developers are using MacOS or Linux as their development environment, only support Windows is the biggest bug...

Have stats to back that up?

Perhaps @readthecodes refers to this: https://insights.stackoverflow.com/survey/2019#technology-_-developers-primary-operating-systems We can see that about 52.5% developers are using either macOS or Linux.

image

tobamaestro commented 2 years ago

With a rising trend towards MacOS:

https://insights.stackoverflow.com/survey/2021#most-popular-technologies-op-sys-prof

I especially believe it's gonna continue in this direction with the recent introduction of Apple ARM.

Aslo @veler, I believe showing "Professional Developers" tab should be more relevant in that infographic.

RodrigoTomeES commented 2 years ago

Anyone tried to execute DevTools it in Mac or Linux using Wine?

veler commented 2 years ago

Anyone tried to execute DevTools it in Mac or Linux using Wine?

I don't expect it would work in Wine. DevToys is a UWP app, not a "classic" Win32 app. It requires a sandbox that I doubt Wine supports.

quicksandznzn commented 2 years ago

As a Mac user, I really need DevToys ~

Yopler commented 2 years ago

Hi 🖐,

I think electron can be a way to have DevToy cross-platform. @veler , I know you fell like electron it is not the good alternative but let me try to convince you. I have memorize that You want (at least) two thinks for DevToys :

  1. To be use on Windows
  2. To fit the Os eco system design. (here win 11)

Windows design system is : Fluent Ui. During the rework for win 11, Microsoft have work also to make their design system compatible in other platform. Microsoft propose more and more applications using electron like Teams, the new Office 365 desktop app, and I think soon microsoft Loop. With one drive, outlook, office 365 the web app from microsoft should fit for the better to the Fluent UI design system.

Now, if DevToys can be cross-platform you can have a project in TypeScript or Javascript call maybe DevToys common block and then have three other project that implement electron and the "design" of the differents OS with a :

I can talk for windows, if we want to make it fit the FluentUI design (Win11) here some link to a Web Component librairy made by microsoft for fluent UI design (React / Angular / Vue / ASP.NET / ...): https://www.microsoft.com/design/fluent/#/ https://docs.microsoft.com/en-us/fluent-ui/web-components/ https://github.com/microsoft/fluentui

I don't really search for other Os but i am sure the community know some web component librairies to make DevToys fit MacOs and Linux.

I think Devtoys is a must have for developer and we need to spread the world.

Hope it can help ! 😊

KuraiAndras commented 2 years ago

Wouldn't Blazor over webview2(or electron) with Fluent UI work great for this? You could even release a web-based version for people who have no permission to install this on their work computer

Willam2348 commented 2 years ago

It looks like someone in Japan is working on a native mac version of DevToys. https://github.com/ObuchiYuki/DevToysMac It seems to be missing a few features, but seems to be able to reproduce most of them.

veler commented 2 years ago

It looks like someone in Japan is working on a native mac version of DevToys. https://github.com/ObuchiYuki/DevToysMac It seems to be missing a few features, but seems to be able to reproduce most of them.

Thanks for sharing this @Willam2348 ! We weren't aware of it and believe it may cause some confusion considering the approach this person took in this portage is different than ours on some core values. We reached out to the developer here: https://github.com/ObuchiYuki/DevToysMac/issues/12

0x0c commented 2 years ago

Hi, I'm currently developing iOS and macOS version of DevToys. I can contribute to DevToys if it is needed. https://github.com/0x0c/AppleDevToys

AmiK2001 commented 2 years ago

Hi, I'm currently developing iOS and macOS version of DevToys. I can contribute to DevToys if it is needed. https://github.com/0x0c/AppleDevToys

Maybe you can join forces with https://github.com/ObuchiYuki/DevToysMac?

0x0c commented 2 years ago

@AmiK2001 Yes, both projects are using Swift so we can use same logic with same code. However, codes for composing user interface are not compatible because of different framework we use (AppKit and UIKit).

escobar5 commented 2 years ago

@veler I have experience in C#, maybe I could help with this, I agree on sharing the most codebase we can, but also having native feeling UIs

IceSentry commented 2 years ago

Why do so many of you even want devtoys on MacOS? There's already DevUtils with most of the same features.

escobar5 commented 2 years ago

@IceSentry diversity is good in software, I like the path DevToys is taking

Jogai commented 2 years ago

@Yopler Photino is a better alternative to electron I believe. And even better would be if someone would use Uno/AvaloniaUI to port it.

togetogejizou commented 2 years ago

It looks like someone is working on a Vscode extension version of DevToys. https://github.com/KeJunMao/vscode-devtoys

SalahAdDin commented 2 years ago

I'm sad no one is working in a version for Linux :'(

admodev commented 2 years ago

Linux user here, i can contribute for cross-platform development (Windows, MacOS and Linux)

rafageist commented 2 years ago

https://smalldev.tools/

gumbarros commented 2 years ago

Anybody is willing to create and contribute to a DevToysLinux using GTK + Python? I really want a DevToys Linux app and would like to contribute. I have UI knowledge only in .NET and Flutter, but I'm willing to learn.

In my opnion and following the tool creator's thoughts, if we use a cross platform framework, we will not respect the idea of the application being as native as possible, and as we already have DevToysMac and Windows, writing a cross platform application would make these 2 projects redundant.

Edit: We could also use Flutter with Ubuntu official Yaru theme, but I don't know if Flutter have a great text editor package for some tools. I would like to hear the Linux community thoughts on this 🙂.

Edit2: I know Flutter and GTK are cross platform, but they're first class citizens on Ubuntu, the most used distro, as we don't have an official UI convention like Windows with Fluent Design. I'm a PopOS user, but I understand that if we create a DevToys theme for each distro it will be a madness.

gumbarros commented 1 year ago

@admodev, @kphanipavan and everyone interested in DevToys for Linux, this is a POC of a SQL Formatter in Flutter using code_editor and yaru packages. I coded this in my spare time, I really want to contribute as no one is developing an alternative to Linux.

I also coded using the author's recommendations in this edition of DevToys for Mac, as the list of tools that are not hard-coded.

The yaru package is the official "Ubuntu way" to code an application in Flutter. The interface is not in the final state and on the same level as the Windows and Mac versions, it's just a POC, but if the community agrees, I want to invest my time in the project to make it equal to the other versions.

If anyone wants to contribute, the repository is https://github.com/gumbarros/DevToysLinux.

image image

State of the app 09/10/22:

image image image image

SalahAdDin commented 1 year ago

@admodev, @kphanipavan, and everyone interested in DevToys for Linux, this is a POC of a SQL Formatter in Flutter using code_editor and yaru packages. I coded this in my spare time, I really want to contribute as no one is developing an alternative to Linux.

I also coded using the author's recommendations in this edition of DevToys for Mac, as the list of tools that are not hard-coded.

The yaru package is the official "Ubuntu way" to code an application in Flutter. The interface is not in the final state and on the same level as the Windows and Mac versions, it's just a POC, but if the community agrees, I want to invest my time in the project to make it equal to the other versions.

If anyone wants to contribute, the repository is https://github.com/gumbarros/DevToysLinux.

image image

Amazing bro,

Thank you

gumbarros commented 1 year ago

This is the current state of DevToys Linux if anyone wants to contribute. I will be contributing in my free time as possible. https://github.com/gumbarros/DevToysLinux/issues/3

veler commented 1 year ago

Hi everyone,

It's been a while we didn't give news on this thread. As an update, @btiteux and I are starting to work on DevToys 2.0 and we actively look at cross-platform support. So far, the idea we have is to keep a native app on Windows, but migrate from UWP to WASDK, which would be .Net 6 (hooray!).

In parallel, we would port the whole app to a PWA, using .Net 6 too (thanks to Uno Platform), which would make the app available on MacOS and Linux from a web browser. We would keep the app working totally offline, apart from downloading it through the web browser of course. In addition, we're thinking about making the app working fully in CLI (so no GUI at all).

Finally, once all this is done, we will look into porting the app to a more native UI on Mac and Linux. What blocks us from doing it immediately is some issues with WebView component on .Net GUI solution on Mac and Linux (Avalonia, Uno, MAUI) that makes the Monaco Editor being difficult to integrate at the moment. We looked at how we could replace Monaco Editor by something else, but there's no great answer at the moment and people seem to love having the same editor than Visual Studio Code integrated directly into our app.

This whole work will take a few months. No ETA for now. Thanks everyone for your support!

Xytrios commented 1 year ago

This project exists and is available through flatpak https://github.com/aleiepure/devtoolbox, perhaps both projects can work together

I'm not associated with the project, I recently discovered DevToys and was looking for a similar app on linux and discovered this project on flathub.

SalahAdDin commented 1 year ago

This project exists and is available through flatpak https://github.com/aleiepure/devtoolbox, perhaps both projects can work together

I'm not associated with the project, I recently discovered DevToys and was looking for a similar app on linux and discovered this project on flathub.

Is it possible to get it from AUR?

Jethril commented 1 year ago

While reading through the comments: please, do not consider Electron (or alternatives). We all have a web browser already, don't force us to download another one just to run one single app that consumes twice CPU and memory as needed. Electron is a toolkit designed for companies that can't afford the development of several apps that does the same thing (and don't want to maintain a codebase made of several programming languages). As open source developers, we are not tied to these constraints.

harvzor commented 1 year ago

don't force us to download another one just to run one single app that consumes twice CPU and memory as needed https://github.com/veler/DevToys/issues/156#issuecomment-1581529544

I was already surprised that the download size of DevToys is 159mb (https://github.com/veler/DevToys/releases/tag/v1.0.13.0).

Compare this to 3 popular Electron apps:

image

Of course, this is not the unpacked size of those apps, and I'm sure at least Discord will install a bunch of updates after installing, but I think Electron would be okay for this project. Everyone uses Visual Studio Code, anyway:

image

https://survey.stackoverflow.co/2023/#integrated-development-environment

Jethril commented 1 year ago

You're talking about disk space which does neither affect your computer's reactivity nor the program's performance and startup time. I find the percentage of products using Electron pretty irrelevant in the process of choosing the right technology.

SalahAdDin commented 1 year ago

You're talking about disk space which does neither affect your computer's reactivity nor the program's performance and startup time. I find the percentage of products using Electron pretty irrelevant in the process of choosing the right technology.

What about the RAM memory consumption?

martinszeltins commented 1 year ago

The audience of this product is developers, but most developers are using MacOS or Linux as their development environment, only support Windows is the biggest bug...

I agree 100%. Linux is THE developer platform. It makes no sense to have a windows only version.

AuburnMedia commented 12 months ago

In August, @btiteux and I discovered DevBox and DevUtils apps for macOS. We've been amazed by how they fit well the macOS environment

I don't see it this way. The DevToys application (with a few tweaks) could fit very well with macOS. It's crucial that we make native apps, instead of using shortcuts like Electron, though I do think WASDK or Uno Platform would work well for our purposes. Moreover, most programmers use macOS or Linux, so I think a more unified application couldn't hurt.

tl87 commented 11 months ago

I would sure like this for Linux as well :)

Akryum commented 10 months ago

There is a nice alternative to Electron called Tauri which reuses the system web engine meaning small app size (hello world is less than 1MB) and lower memory usage.

EliranTurgeman commented 8 months ago

Hi, Any update? :) 2024 is right around the corner, Its will be a big hit in MacOS

btiteux commented 8 months ago

Hi, Any update? :) 2024 is right around the corner, Its will be a big hit in MacOS

Hello, we are working on the v2 supporting Windows and MacOs you can check the progress on the v2 branch.

Linux support is experimental for the moment.

veler commented 8 months ago

Hi, Any update? :) 2024 is right around the corner, Its will be a big hit in MacOS

Hello, we are working on the v2 supporting Windows and MacOs you can check the progress on the v2 branch.

Linux support is experimental for the moment.

Hello, I'd add that we ported more than 50% of the tools to the new version. We're making progress! 😁

veler commented 6 months ago

Update: It remains us 4 tools to migrate from DevToys 1.0 to 2.0, along with finishing some touch up (which are in progress) and prepare release material (installers, website...etc), which we didn't start yet. We're hoping for a preview release in April/May for Windows Mac and Linux.

EliranTurgeman commented 6 months ago

@veler Saw you migrate 1 tool this weekend keep the great work! looking forward to use it on my Mac :)

OrthodoxWindows commented 5 months ago

Hello everyone, I have a question : Is AvaloniaUI (or Uno) compatible with standard Win32 controls ? It would be great to have a version of DevToys with native Windows controls (as this will allow much greater customization).