9 ms·
Terminal.Gui: A Cross Platform Terminal UI Toolkit for .NET
- bongobingo1 4y agoHow fast does it stream a 10gb file though?
- hulitu 4y agoWhy would a terminal stream a file ? RCE ?
- julianz 4y agoPretty sure this is a Casey Muratori reference. Doesn't really apply to the current project as it's a UI on top of the existing terminal rather than a whole new terminal. More details: https://www.youtube.com/watch?v=hxM8QmyZXtg https://www.youtube.com/watch?v=hxM8QmyZXtg
- gwbas1c 4y agoWhat? No Blazor support? No mobile support? (Joke) I think console UIs are good for a sweet spot where you need a "just good enough" UI that you can whip up in a few minutes. I hope this meets the sweet spot.
- VikingCoder 4y agoI know you're joking, but I wish I had client-server support with xterm.js or something similar. I'd like to write MUDs (Multi-User Dungeon games) in C#...
- Cthulhu_ 4y agoiirc most MUDs use telnet, so any user can use whichever client they prefer - I'm sure there's ways to have xterm.js use telnet. There's this project that is a MUD using Telnet written in C#: https://github.com/cmackles/MudSharp https://github.com/cmackles/MudSharp
- VikingCoder 4y agoYes, thanks, I'm aware most MUDs use telnet, but in my opinion, that's a barrier to entry to most users. And thanks for the link, but it makes me sad to see a repro that was last updated 5 years ago. > I'm sure there's ways to have xterm.js use telnet. You have to have a server in-between to do straight telnet. (You can't do a vanilla TCP/IP connection from the browser.) So I'd like to have WebSockets + xterm.js taking the place of telnet + terminal... And then I'd like a .Net API that looks like curses, or like this GUI, or something... and that persists the console (like tmux or something), so if the user re-connects, they get their view restored "automagically."
- VikingCoder 4y agoOh, also... If I had this thing I want, I could also use it as a debug console for servers...
- airstrike 4y agoWhat we really need is a MUD that is fed through StableDiffusion -> NeRF and outputs a 3D map for you to play in https://github.com/ashawkey/stable-dreamfusion https://github.com/ashawkey/stable-dreamfusion
- cek 4y agoI posted this above too, but for completeness... Blazor support is under development: https://github.com/Blazor-Console/HACC/blob/main/README.md https://github.com/Blazor-Console/HACC/blob/main/README.md
- raphinou 4y agoI'm expecting a terminal UI to be primarily keyboard-driven, but the demo uses the mouse a lot. Anyone having experience with this library and able to confirm keyboard navigation is good by default?
- colanderman 4y agoTab navigation and hotkeys are enabled by default. It's easy to add other keyboard overrides as well. You do not need a mouse to use it.
- BeefWellington 4y agoI may be showing my age here, but I think most people would expect a TUI to provide arrow key navigation and highlight by default, which is not demonstrated. Simply mapping Gui -> TUI isn't really a good user experience IME. The terminal should generally be keyboard-first/designed with keyboard-only in mind.
- cek 4y agoTerminal.Gui maintainer here... We view the mouse as optional. We want the mouse to work perfectly, but it should be optional. If any of the library doesn't work well with just a keyboard, please submit an issue!
- BeefWellington 4y agoThat's good to hear but I have to wonder then why the demo is seemingly exclusively demonstrating the mouse?
- moron4hire 4y agoMaybe it's a lot harder to show flow through the UI with just keyboard entry. The mouse pointer trailing through the frame animates how the user's attention is moving through the UI.
- VikingCoder 4y agoNeat! I wish it also worked with something like xterm.js, a terminal in the browser. Either by compiling .Net to WASM... Like Client-Side Blazor does, right? ...or using client-server technology... Like Server-Side Blazor does, right?
- sceptically 4y agoCorrect
- cek 4y agoTerminal.Gui maintainer here... We're working on it [1] [1] https://github.com/Blazor-Console/HACC/blob/main/README.md https://github.com/Blazor-Console/HACC/blob/main/README.md
- VikingCoder 4y agoAwesome, and yes, +1 to the comment: > A possible BBS with door games like ZMachine and a sea-faring game I'm writing in a private repo, (top secret!) which used to have the only test harness solution containing both the source and test repos. My hot take would be to implement a lot of LambdaMOO [1]... in C#... because I like the grammar and parser [1], and I like reflection and attributes... and... Well, it's a thing I'd just like to exist. [1] : https://www.hayseed.net/MOO/manuals/ProgrammersManual.html https://www.hayseed.net/MOO/manuals/ProgrammersManual.html
- rod_ochoa 4y agoAmazing!
- deleted 4y ago[deleted]
- mu_killnine 4y agoWhat a wonderful project. Bookmarked for the next time I need something nice in the terminal :) Way to go, team.
- bayesianbot 4y agoGreat, there's some terminal programs I'd have preferred to code in C# but did in Python instead as I didn't know this exists. First I thought resizing doesn't work but it seems it's only an issue with kitty, on alacritty it works as expected, in case anyone else is wondering the same.
- hazrmard 4y agoLooking at the demo images, I must admit that I have some traumatic memories associated with that shade of blue on a console :) Mostly from fiddling with BIOS settings etc. My only experience with C# is in using the Unity 3D game engine. Now with a console apps ecosystem, cross-platform focus, GUI libraries, machine learning stuff, mobile apps. It's becoming an attractive prospect by the day.
- tecleandor 4y agoHah! But it also feels a bit Norton Commander to me, and that's not that bad ;)
- DesiLurker 4y agoAlso somehow reminded me of the old Borland Turbo-C++ 'IDE'. would love to have something like that with good tag navigation for daily driver.
- VikingCoder 4y agoAlso "XTree" which was probably the best software ever for DOS.
- deleted 4y ago[deleted]
- onemoresoop 4y agoI remember Xtree back in 1990. Oh boy, do I feel old. I still miss the lightning fast navigation using Xtree and NC afterwards. I used NC till the long filenames were an issue and though I know it supported it later on I just moved on to crappier trends. One recent trend is to completely disempower users by obscuring the file system away.
- malkia 4y agoAnd to me the opposite - Turbo/Borland Pascal/C++, or the E3 editor. Okay, turns out blue is not great color for you - but that was the "dark" theme at the time.
- jabart 4y agoAbout four years ago I had a meeting with a distributor who had terminal app and wanted to move it to a web based app. Everyone had the keyboard shortcuts memorized and did a quick demo that the refresh rate of the monitor was not fast (only slightly joking here) enough to go through all the screens they did for each task they had to do in this system. Interesting that this could be a useful replacement for something like that in a modern language.
- VikingCoder 4y agoI don't think you're joking at all. People underestimate how quickly people can navigate through complex systems when they're given time to practice: https://www.reddit.com/r/nextfuckinglevel/comments/xa50x1/man_taking_inventory_so_quickly/ https://www.reddit.com/r/nextfuckinglevel/comments/xa50x1/ma...
- littlecranky67 4y agoI remember the early 90s, when the women at the local groceries store (Aldi Germany) were equally as fast when typing in the prices of the articles using just a numpad keyboard on the register - before barcode scanners were a thing. Today it seems surreal or special, but back then you were basically considered a trained professional on the checkout counter.
- Mountain_Skies 4y agoA state agency contracted us to replace their old green screen CSR system with a web based one. The existing CSRs hated the new system because they could get work done faster using the keystroke drive system they were accustomed to using. The client however was fine with this outcome because that job had very high turnover and it took too long for new employees to get to the point where they were highly productive. The handful of long term employees asked if they could have both systems running side by side but the client didn't want to have to support both. At least as state employees, this resetting of their productivity to that of new employees didn't impact their salary level that was based mostly on seniority.
- cheriot 4y ago
- amelius 4y agoHow is state managed?
- cek 4y agoThe Terminal.Gui library itself doesn't provide any special means for dealing with state. However, the full power of .NET Core is available for devs to do whatever they please.
- ape4 4y agoIs there a Terminal.somethingElse too ?
- zamadatix 4y agoIt's just the naming convention of .NET stuff, e.g. someone else has a NuGet package for "Terminal.Connector" and someone else has one for " Rebex.Terminal.SerialPort" but none of these are related. I will say normally you'd stick some sort of group/developer/company identifier in front though like the Rebex example has but it's not a hard and fast rule.
- malkia 4y agoOn the C++ front, I've been using this and love it - https://github.com/ArthurSonzogni/FTXUI https://github.com/ArthurSonzogni/FTXUI - it also has wasm target, so may target the web. I'm regular Far Commander on Windows, and Midnight Commander, also known as mc on Linux/OSX. In fact my "Command-Prompt" on Windows is always FAR (this comes with certain limitations, but I'm so used to it, I can't do my normal work without it). I could never get into the Explorer, and only use it in rare cases.
- hdjjhhvvhga 4y agoLooks great, thanks! As for Orthodox File Managers, I'm in the same camp and I could never understand how people can be productive with bare Explorer window. Most operations of files and directories require more work (keystrokes/mouse movements) than in OFMs. Not to mention things like having a quick look into any text file, for example (F3-Esc) as opposed to double clicking - running an external viewer - closing it. Practically everything in OFMs can be done faster.
- lostmsu 4y agoThe main way I navigate these days is global search through Everything. File operations apart from saving and opening files are extremely rare, and I just do them from PowerShell via command history.
- cek 4y agoDo you happen to use "F7 History" [1] which is based on `Out-ConsoleGridView`, which, in-turn is built on Terminal.Gui? If not, why not? (Because I'd love to make it even better). [1] https://github.com/gui-cs/F7History https://github.com/gui-cs/F7History
- lostmsu 4y agoI use PowerShell's standard F8, which autocompletes commands from history.
- 4y ago
- _the_inflator 4y agoIn a certain sense, this is so damn cute and pure DOS nostalgia. My next side project is going to be a Norton Commander I guess.
- lostmsu 4y agoMake a TurboPascal-style VSCode clone instead? :)
- gulabjamuns 4y agoWhat are the prerequisites for installing on MacOS ? Thanks.
- cek 4y agoJust the latest .NET Core runtime.
- ripley12 4y agoTrying to give you a fairly complete answer: It's a .NET library, the prerequisites are the same as any .NET library. If you want to write code in .NET you will need to install the .NET SDK. If you just want to run an application written in .NET... it depends. Apps can be shipped with a built-in .NET runtime ("self-contained"), which makes them bigger on disk but they don't need any prerequisites installed. Apps can also be shipped without a .NET runtime ("framework-dependent"), in which case the user needs to have a shared runtime installed to run the app.
- mavu 4y ago"Cross platform" and .NET Very funny.
- daigoba66 4y agoMaybe funny 4-5 years ago, but these days it’s incredibly well supported across Windows/Linux/MacOS.
- benbristow 4y agohttps://dotnet.microsoft.com/en-us/ https://dotnet.microsoft.com/en-us/ If you haven't looked at .NET in a few years, you'd be surprised.
- hulitu 4y agoDoes it run from a network share ?
- jeremycarter 4y agoYou living under a rock? You've been able to do cross platform .NET since forever, first with Mono and now with .NET Core and .NET latest.
- issung 4y agoHow people get the mouse working in the terminal is one of those things I've always wondered how they do it, but never look into it because then the magic is gone. As a daily software engineer it's nice to have some things remain as magic
- kgwxd 4y agoI'm going to use the heck out of this but I can't even touch it until I know exactly why it's named Terminal._G_ui. I figured an explanation would be in the first sentence. The G better stand for something super clever :)