Gif length is 1 minute 35 seconds
https://luthetus.github.io/Luthetus.Ide/
- A free and open source IDE
- Runs on Linux, Windows, and Mac
- Written with the .NET environment: C#, Blazor UI Framework, and a lightweight Photino webview.
Luthetus.Ide is an IDE, but it differentiates itself by being the ultimate PDE, or personal development environment.
I'm not sure of the origins for the term "PDE", but I first heard it from a contributor of Neovim named TJ DeVries.
If one programs with a variety of programming languages, its possible they've ended up with multiple different "IDE"(s) downloaded. Where each "IDE" corresponds to a different environment.
Luthetus.Ide works by way of the interface, "ICompilerService".
Therefore, any programming language can be supported. And one can choose which ICompilerService(s) to use.
As of this point in development, the C# compiler service is the most developed implementation. I "dogfood" the IDE, and since the source code is C#, I spend most time on the C# compiler service.
The IDE needs to be language agnostic, if one never will write C# code, then they shouldn't be forced to have that compiler service added.
Furthermore, many IDE(s) that exist run on a single operating system. Luthetus.Ide does not tie you to any particular operating system, it is fully cross platform with Linux, Mac, and Windows.
This is not a matter of undercutting the market, nor is it a matter of me attempting to justify a badly coded product.
I believe there needs to exist an IDE that is not proprietary software, and not exclusive to any specific programming environment.
I'm in progress of removing references to myself but I need to explain the changes I'm making. I will be getting a full time job so I can ensure funding for this project.
Thank you to everyone who has supported the project financially up to this point. It allowed me a great length of time to get a jumpstart on things and get the ball rolling. As I said, I'll be getting a full time job myself, so I can ensure funding. But if anyone would like to donate, the button is still here.
NOTE: The prefix 'Luthetus' has been ommitted here from some types for brevity.
Given: <App/>, the '.razor' pseudo code has the following as App's descendent nodes.
- <CommonInitializer/> | codebehind
- override void OnInitialized()
- AppOptions.SetActiveThemeRecordKey(default);
- AppOptions.SetFromLocalStorageAsync();
- AddToContextSwitch(this); // 'Ctrl' + 'Tab' keybind
- <DragInitializer/> | codebehind | css
- <DialogInitializer/> | codebehind
- <WidgetInitializer/> | codebehind
- <NotificationInitializer/> | codebehind
- <DropdownInitializer/> | codebehind
- <OutlineInitializer/> | codebehind | css
- override void OnInitialized()
- <TextEditorInitializer/> | only has codebehind, no markup
- override void OnInitialized()
- EditorOptions.RegisterThemes(customThemeList);
- EditorOptions.SetActiveThemeRecordKey(default);
- EditorOptions.SetFromLocalStorageAsync();
- AddToContextSwitch(this);
- RegisterKeymapLayer();
- override void OnInitialized()
- <LuthetusIdeInitializer/> | codebehind
- override void OnInitialized()
- EditorOptions.RegisterThemes(customThemeList);
- RegisterTerminals(terminalList);
- InitializePanelTabs();
- InitializeCommands();
- override Task OnAfterRenderAsync(bool firstRender)
- if (LuthetusHostingKind == Photino) then JsRuntime.GetLuthetusIdeApi().PreventDefaultBrowserKeybindings();
- <ContextInitializerDisplay/> | codebehind
- override void OnInitialized()
- Header
- Body
- PanelGroupLeft | PanelGroupDisplay.razor | .cs | .css
- <TabListDisplay/> | .cs | .css
- PanelGroupBody
- DynamicComponent | learn.microsoft.com
- <EditorDisplay/> | .cs | .css
- PanelGroupRight | PanelGroupDisplay.razor | .cs | .css
- <TabListDisplay/> | .cs | .css
- PanelGroupBody
- DynamicComponent | learn.microsoft.com
- PanelGroupLeft | PanelGroupDisplay.razor | .cs | .css
- Footer
- PanelGroupBottom | PanelGroupDisplay.razor | .cs | .css
- PanelGroupTabs
- <TabListDisplay/> | .cs | .css
- InteractiveIconUi
- PanelGroupBody
- DynamicComponent | learn.microsoft.com
- PanelGroupTabs
- PanelGroupBottom | PanelGroupDisplay.razor | .cs | .css
The individual libraries used in Luthetus.Ide are available as NuGet Packages.
There is a README.md for each of the libraries to aid in installation:
There are videos about the IDE here: youtube channel.