Skip to content
This repository has been archived by the owner on Nov 25, 2022. It is now read-only.

GUI wrapper #21

Open
LeMikaelF opened this issue Jul 25, 2019 · 11 comments
Open

GUI wrapper #21

LeMikaelF opened this issue Jul 25, 2019 · 11 comments
Labels
feature New feature or request major Features or changes that require a lot of effort planned/2.x
Projects
Milestone

Comments

@LeMikaelF
Copy link
Contributor

LeMikaelF commented Jul 25, 2019

Note: this is in response to a card in the "to do" category in ghost2's project page that suggests building a GUI.

I also think there should be a GUI wrapper for the less tech-savvy, but I think this wrapper should be developed independently. In keeping with the Unix philosophy, we should

"Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features".

For example, a lot of Unix CLI tools that are somewhat complicated to use have had GUI wrappers built for them, sometimes many different ones. For example,ffmpeg, a video editing CLI tool, has at least seven different GUIs.

As a GUI wrapper will necessarily drag in more dependencies (at least JavaFX, for a Java project) and more complexity (testing with JavaFX isn't always easy), I think a GUI wrapper should live in a completely different repository. This will also:

  • enable users to run ghost2 on a headless server (I'm fairly certain it would run well on a Raspberry Pi or the like);
  • allow a GUI to be built in another language (I know for example that recent JavaFX builds don't support ARM platforms); and
  • allow for native interfaces.

So on top of proposing that the GUI wrapper be completely independent from this repo, I think its development should also be delayed until the release of 1.0.

@LeMikaelF LeMikaelF added the feature New feature or request label Jul 25, 2019
@zzzowoey
Copy link
Member

You pretty much nailed the idea. Instead of JavaFX, I was thinking of using an ncurses-style TUI library, but it doesn't seem like there are many available for Java. That'll get figured out eventually.

With the "core" commands implemented, we're already at 1.0, so I'll put this on 2.x for now.

@zzzowoey zzzowoey added this to the 2.x milestone Jul 26, 2019
@zzzowoey zzzowoey changed the title [Feature] GUI wrapper [2.x] [Feature] GUI wrapper Jul 26, 2019
@zzzowoey zzzowoey added this to To do in ghost2 Jul 26, 2019
@zzzowoey zzzowoey added help wanted major Features or changes that require a lot of effort labels Feb 4, 2020
@zzzowoey zzzowoey changed the title [2.x] [Feature] GUI wrapper GUI wrapper Jun 5, 2020
@zzzowoey zzzowoey moved this from To do to TBD / infinite development in ghost2 Jun 5, 2020
@weakphish
Copy link

Howdy - re-reading this and was wondering what you'd think of either a Rust or Go TUI library, since Java doesn't really have a good library for it?

Thanks.

@zzzowoey
Copy link
Member

Those are both great ideas! I personally prefer Rust as a language, but I think Go is probably more mature.

At a glance, I think Cursive and this gocui fork are among the best choices for either language. Both are actively maintained and produce some pretty clean code -- especially Cursive.

@zzzowoey
Copy link
Member

zzzowoey commented Sep 14, 2020

I do want to start working on this project again, so I'll try to start laying out a Cursive frontend this week. Keep in mind, though, that it's not in the plans to make this wrapper part of this repository. You could easily make your own if you want to.

@weakphish
Copy link

weakphish commented Sep 14, 2020

Cursive looks great and I much prefer Rust. Should we make a repo in the Ghost2 org in order to keep it related but not the same repo?

@zzzowoey
Copy link
Member

Yep. It'll be in the same org. I'll link it here when it's available.

@weakphish
Copy link

Sounds good. I haven't personally worked on an open-source project from the ground floor so I'm not exactly sure what the procedure is for generating a roadmap, but I'm happy to do whatever you point me to, or come up with designs, etc. Just give me the orders. :-)

@zzzowoey
Copy link
Member

Here's the repo. I still need to put some thought into the roadmap, but if you want to throw some ideas/designs into the ring, I'll integrate them.

Also, I'm going to make the call to switch to a webapp, because it's a lot easier to build cross-platform. Windows is really not built for TUI applications. There's a fantastic, 100% native Rust library named Iced that I think is probably going to be the library of choice, but I'll look around a little more this afternoon.

@weakphish
Copy link

Looks like I don't have access to the repo. Otherwise, I look forward to getting to work!

@zzzowoey
Copy link
Member

Quick update: I haven't been completely dead for the past 4 days! I am very preoccupied with school, though, so we're going to be moving somewhat slow. I've got a really cheap UI mockup in the works that I'll include in the ghost2-wrapper roadmap once I post it. You should be able to see that repository now as well.

For now, the first concrete step in this process is going to be implementing a REST API here to expose to the wrapper. We've already got Spring, so that should be relatively easy. I'll open a separate issue here for it.

@weakphish
Copy link

Same re: school, so no worries at all. I'll take a look at the API and see what I can whip up in the limited time I have.

@zzzowoey zzzowoey mentioned this issue Oct 14, 2020
35 tasks
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
feature New feature or request major Features or changes that require a lot of effort planned/2.x
Projects
ghost2
  
TBD / infinite development
Development

No branches or pull requests

3 participants