Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Graphical User Interface? #8

Closed
Thatoo opened this issue Jun 6, 2022 · 69 comments
Closed

Graphical User Interface? #8

Thatoo opened this issue Jun 6, 2022 · 69 comments
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@Thatoo
Copy link

Thatoo commented Jun 6, 2022

Sounds an awesome project.
Are you planning to make a graphical user interface?

@ivan-hc
Copy link
Owner

ivan-hc commented Jun 6, 2022

Thank you, it would be great but I've not much time to study a new language (for job's reasons).
I'm working alone on this project and there are still a lot of things to do, for example to convert the scripts of appimages built using pkg2appimage or other compilers to complete appimages built trough github-actions, to prevent big download of datas and too CPU usage during the process (see 0ad, VLC, GIMP, Abiword...).
A GUI based on AM would be great, but seems that this project is no more an interesting one like before.
However I've provided the base... I only need some help or someone that works in parallel on this base to improve the project with me. This is an appeal that I launched from the very beginning, when there were fewer than 100 apps managed (now there are 1350 apps), but I'm still alone. I've completed the scripts for x86_64 only because this is the only architecture I use normally, but this script can manage any app on any architecture... I only need help to improve the project.

@Thatoo
Copy link
Author

Thatoo commented Jun 14, 2022

I'll check on pkg2appimage to see if I can be of any help.
Otherwise, how can we make a GUI? What tool could help?

@ivan-hc ivan-hc added enhancement New feature or request good first issue Good for newcomers labels Jun 14, 2022
@ivan-hc ivan-hc pinned this issue Jul 18, 2022
@DLopezJr
Copy link
Contributor

@ivan-hc Do you know python? Enough people know it, so should be able to find some help.

I would suggest looking into tkinter or PySide.

@ivan-hc
Copy link
Owner

ivan-hc commented Jun 17, 2023

Do you know python?

@DLopezJr honestly, I don't like it much. I was thinking about something based on QT or GTK. However any client can use both AM an AppMan as an inbuilt engine, so any GUI is OK for me.

@DLopezJr
Copy link
Contributor

DLopezJr commented Jun 17, 2023

If you want to use QT, maybe checkout QT Designer. [LINK]

It's a drag and drop editor for QT. It can give you the output code in C++ or Python.

@ivan-hc ivan-hc mentioned this issue Jun 22, 2023
@ivan-hc
Copy link
Owner

ivan-hc commented Aug 2, 2023

I added raw view of installation scripts for x86_64 at https://portable-linux-apps.github.io/apps.html

This would be helpful if you're interested to an Electron-based client.

PS: any news? Is there someone interested to a GUI frontend?

@zen0bit
Copy link
Contributor

zen0bit commented Sep 25, 2023

I will think about it...

But nothing to fancy, I am not programmer so maybe in yad...

@ivan-hc
Copy link
Owner

ivan-hc commented Sep 25, 2023

yad or zenity are OK for me

@zen0bit
Copy link
Contributor

zen0bit commented Sep 25, 2023

I have some experience with yad...
Distrohopper

@ivan-hc
Copy link
Owner

ivan-hc commented Sep 25, 2023

This would be a GUI fronted, using the new option --user of AM allows users to use AM the same way you use AppMan, so users of AM can decide to switch AM to a non-privileged use, exactly the way you do with AppMan

@zen0bit
Copy link
Contributor

zen0bit commented Sep 29, 2023

I will start with TUI frontend maybe...

@MauricioLucas
Copy link

MauricioLucas commented Nov 15, 2023

  • Sorry if my comment is redundant, I'm traveling and I only just realized that this was already mentioned

I believe that YAD is the most elegant front-end for all types of scripts in the unix world.

The code can be assembled to offer the test version facilities with YAD without interfering with the current "AM" code as it would only trigger the commands that are already displayed in graphical mode.

Some links that will help you realize its potential:
Website with best examples: yad-guide.ingk.se/
Official Link: github.com/v1cont/yad
Old Link samples: sourceforge.net/p/yad-dialog/wiki/browse_pages/
Discussion Group: groups.google.com/g/yad-common

@zen0bit
Copy link
Contributor

zen0bit commented Nov 16, 2023

Thinking about posibilities...

yad don't fully work under wayland yet

@DLopezJr
Copy link
Contributor

DLopezJr commented Nov 16, 2023

You can check out tcl/tk (very simple to use) or FLTK (C++ but simple and small).

EDIT: There also is Dear ImGui which has bindings I believe to a couple of languages.

@atzufuki
Copy link

atzufuki commented Dec 5, 2023

I think there might be room for several GUI's for different user groups. For example an integration to Gnome Software would be a no-brainer for Gnome users.

I'm a web dev myself and enthusiastic about pure vanilla web components. Therefore I could work on an Electron based app.

This project isn't too popular, nor AppImages in general. Therefore I'm thinking ahead, like what user group we should prioritize and what kind of design the app should have in terms of marketing. There is now some hype around Steam Deck, SteamOS and gaming on Linux in general. And they are really lacking a reliable way to install non-steam apps. So maybe we should target this area to boost this project? Therefore the Electron app should integrate well with Steam's ecosystem in terms of design and UX.

@ivan-hc
Copy link
Owner

ivan-hc commented Dec 5, 2023

@atzufuki I've actually always thought of Electron as a solution, precisely for all the reasons you explained. Electron offers greater cross-platform compatibility. I've seen that some projects (including Bottles) are starting to move towards that technology specifically to export their projects to multiple different platforms.

Unfortunately I am not good at any type of coding other than SHELL, so I trust in your more expert hands.

@atzufuki
Copy link

atzufuki commented Dec 5, 2023

Awesome. I shall look for time to implement a first working version soon.

@DLopezJr
Copy link
Contributor

DLopezJr commented Dec 5, 2023

@atzufuki and whoever else works on the electron version,

Is there any chance you can keep it to VanillaJS? Would be easier for future contributors if they didn't need to learn another layer of software (eg. React, Typescript, npm, Vue, etc)

@atzufuki
Copy link

atzufuki commented Dec 5, 2023

@DLopezJr Depends on what you consider vanilla exactly. Every code base is different and there is no universal way of doing things, hence we need some way to teach the basics specific to this project to new developers anyway. It's possible to achieve really maintainable and really unmaintainable code bases regardless the technology stack, although a bigger stack usually means the latter.

To me these frameworks like React and Vue bring nothing and they solve nothing. They just complicate things with magic and just like you mentioned, there will be a higher learning curve for any developer. I think there isn't a single problem they solve, which couldn't be solved via native API's. Nowadays it's even possible to implement reusable components using native custom elements API, which was one of the biggest marketing point for React back in the day.

So, I can promise to go as vanilla as possible but I will also promise maintainability. To be able to provide that maintainability, there will be some decisions made on top of vanilla. Again, depending on what you consider vanilla.

NPM is pretty much a must at this point, I don't think there is any other way. I would use TypeScript, since the benefit is so much bigger than the learning curve, especially for new developers who might not know TypeScript beforehand.

@Thatoo
Copy link
Author

Thatoo commented Dec 5, 2023

A good alternative to Electron is https://tauri.app/ in case you plan to check for alternatives.

@atzufuki
Copy link

atzufuki commented Dec 5, 2023

@Thatoo Tauri is great but it uses WebKit on Linux and personally I've had a hard time working with WebKit on Linux. Maybe it's just me but WebKit feels still quite unpolished while encountering very weird problems even with the most basic tasks. It's funny because at the same time I'm a fan of WebKit. :D

Well, it should be easy to port from Electron to Tauri in the future if WebKit matures up ja Tauri becomes the next industry standard. At least if you know Rust.

@atzufuki
Copy link

atzufuki commented Dec 6, 2023

I started tinkering with Electron for couple of hours and installing a package by clicking a button is now technically working while using AppMan at the moment. 👏 👏

image

For me it parses the app list from ~/Applications/appman/x86_64-apps which gets updated on launch by appman list. This isn't the best way to integrate the UI, since that app list is meant for representation in terminal, not for application communication. But it works for simple listing purposes if the format remains the same.

For more diverse purposes like displaying icons we need more backend stuff. Since getting icons automatically isn't trivial, I think we should start maintaining icons manually in Github alongside name and description. Other solution could be having a real online backend with a database and file hosting, which both the GUI and CLI depends on.

About the direction and goals of the project, if we were building not just a GUI for an application manager, but a full fledged application store like Gnome Software with commenting and reviewing, then we would really need that real online backend and a database, therefore a sponsorship/funding. That said I think there is bunch of decisions to be made about the direction of the project, which I think is the hardest part. Like how to break the market in the current ecosystem without wasting time and effort.

@ivan-hc
Copy link
Owner

ivan-hc commented Dec 6, 2023

This is a dream that become true!

To get the icons should not be a problem.

If you're able to get each line as a group of items, for example by replacing ":" with a new line, we should be able to have something like this:

avidemux kdenlive
avidemux kdenlive
Multiplatform Video Editor. A powerful Video Editor provided by KDE.
install install

To generate that kind of list (and the home page) I use a script on my PC that you can get from here:
https://github.com/ivan-hc/AM-Application-Manager/blob/main/tools/am2pla-site

Due to github API limits that allow you to connect and download stuff via CLI only some dozens of times per hour, to download and generate the icons would be a problem if done manually, but we can implement something like this in github actions and start downloading an archive with all the icons we need, each of them in a separate directory into a Tar archive, and all we must do is to upload it. All new addition istead would be done manually.

I want to start a test for this.

@ivan-hc
Copy link
Owner

ivan-hc commented Dec 6, 2023

I started adding icons on https://portable-linux-apps.github.io/apps.html

For now I have uploaded 1/3 of all the icons (641 vs the 1839 to add)

@DLopezJr
Copy link
Contributor

DLopezJr commented Dec 6, 2023

@atzufuki

Thank you for your work getting a UI proof of concept up and running.

I like your mindset, on expanding appimages from a marketing standpoint. @ivan-hc has done a tremendous job on this project and with your help on Ui and marketing tactics I do see potential with the project.

We should probably move this discussion out of issues and into discussions. I'll respond to you here, but I think we should move the conversation to over there. We can strategize there in depth on how to grow out the project.

Depends on what you consider vanilla exactly. Every code base is different and there is no universal way of doing things, hence we need some way to teach the basics specific to this project to new developers anyway. It's possible to achieve really maintainable and really unmaintainable code bases regardless the technology stack, although a bigger stack usually means the latter.

Excellent points. There is no official definition for "Vanilla JS", so a better spec to follow would probably be the most commonly used ECMAScript version at the time of development.

So, I can promise to go as vanilla as possible but I will also promise maintainability. To be able to provide that maintainability, there will be some decisions made on top of vanilla. Again, depending on what you consider vanilla.

I respect all of that. That sounds ideal.

NPM is pretty much a must at this point, I don't think there is any other way. I would use TypeScript, since the benefit is so much bigger than the learning curve, especially for new developers who might not know TypeScript beforehand.

It seems difficult to use TypeScript without npm. Would love to discuss your ideas more in a discussion to even learn for my own sake. I think as we list out the requirement for the UI, it'll steer things into the right direction.

For example, since AppImages are self-contained files unlike flatpaks, a user could technically just use the site to download the AppImages. That's what AppImageHub. If a plan is laid out that the site and electron app can use, this could effectively be killing two birds with one stone.

My main contribution to this project has been refactoring the 'APP-MANAGER' file for readability. My main goal of 2024 will be stage two of that refactor (breaking the script down into functions) but I am free to help with easing the developer experience/deployment of the UI.

@atzufuki
Copy link

atzufuki commented Dec 6, 2023

@DLopezJr Thank you for your insight. I believe this project could really help AppImages to become a major packaging candidate in the Linux world if the cards were played correctly. Sure, let's move this conversation to discussions.

For example, since AppImages are self-contained files unlike flatpaks, a user could technically just use the site to download the AppImages. That's what AppImageHub. If a plan is laid out that the site and electron app can use, this could effectively be killing two birds with one stone.

Hmm, but it's gonna be a little more complicated since we can't host pre-built AppImages, but their packaging scripts. Maybe the user could download the packaging script, it would launch a simple prompt asking for both packaging and installation to be done, just like AppImageLauncher does? That said, maybe AppImageLauncher should support running scripts (the packaging script) before the install/integration process?

@ivan-hc
Copy link
Owner

ivan-hc commented Feb 21, 2024

Update: today we exceeded 1900 installation scripts for x86_64 (right now there are 1919).

Is there any news?

@atzufuki

@atzufuki
Copy link

Is there any news?

@atzufuki

Not at the moment. I have been busy at work and with my own business. But I now activated in the discussion and will continue the conversation there.

@zen0bit
Copy link
Contributor

zen0bit commented Feb 21, 2024

Thinking about posibilities...

yad don't fully work under wayland yet

EasybashGui have some updates, so will try next..

@zen0bit
Copy link
Contributor

zen0bit commented Feb 24, 2024

TUI #175

@zen0bit
Copy link
Contributor

zen0bit commented Feb 29, 2024

It would be nice to separate all UI calls in AM to default UI module. so can be easily interchangeable.
And all potential GUI and TUI could be just modules ❤️

@zen0bit
Copy link
Contributor

zen0bit commented Mar 12, 2024

Thinking about posibilities...

yad don't fully work under wayland yet

EasybashGui have some updates, so will try next..

Looks like easybashgui is best option

Easy Bash Gui shortened as EBG, is a Posix compliant Bash functions library that aims to give unified GUI functions using frontends for dialogs boxeds (from the user's point of view are frontends but from the EGB side are backends)
Backends environments GUI

EBG implements different dialogs boxes! You don't have to worry about what environment you are running the script in, as EasyBashGUI will handle this transparently, based on the availability of the backends (frontends).

Console mode:

  • dialog
  • gum (will be implemented)
    Graphical mode:
  • yad
  • gtkdialog
  • kdialog
  • zenity
  • xdialog

@Heus-Sueh
Copy link

my recommendation for which GUI to use, I think Toga or QT are better candidates than tkinter or fltk, these libraries are simple and light, but they are not modern and nowadays not many people are interested in learning them as there are better alternatives.

@DLopezJr
Copy link
Contributor

@Heus-Sueh Excited to see your pull request using Toga or Qt :)

@Heus-Sueh
Copy link

@Heus-Sueh Excited to see your pull request using Toga or Qt :)

sorry man, I was just recommending it, I won't be able to implement it because I'm new to programming

@ivan-hc
Copy link
Owner

ivan-hc commented Mar 25, 2024

@Heus-Sueh don't worry

@ivan-hc ivan-hc unpinned this issue Mar 26, 2024
@ivan-hc ivan-hc pinned this issue Mar 26, 2024
@Thatoo
Copy link
Author

Thatoo commented Apr 5, 2024

I mention AM to nitrux development team.
Nitrux being the distribution relying the most on appimages, and about UX/UI design they are really good. They could be very helpful on this topic.

https://github.com/orgs/Nitrux/discussions/143

@zen0bit
Copy link
Contributor

zen0bit commented Apr 12, 2024

Godot engine? 🤔

@DLopezJr
Copy link
Contributor

@zen0bit Unless you find a dedicated Godot or two developer that's a risk that is not worth taking.

@zen0bit
Copy link
Contributor

zen0bit commented Apr 15, 2024

@zen0bit Unless you find a dedicated Godot or two developer that's a risk that is not worth taking.

Any knowledge gained will satisfy me, and open new opportunities...
I just need to figured out how to properly run commands with arguments. Everything else looks like a peace of cake

@ivan-hc
Copy link
Owner

ivan-hc commented Apr 23, 2024

hey GUIys 🤣 would you like to see what I've found on the antix forum? An ui for AppMan

https://www.antixforum.com/forums/topic/appman-a-package-manager-for-appimage-and-binary-files/

download from here https://www.antixforum.com/wp-content/uploads/2023/06/appman-gui-5.1.zip

this is genial in my opinion

PS: we have this issue opened from two years and the only one that have done a (partial) GTK GUI to solve this issue have not joined us. Its a shame.

@zen0bit
Copy link
Contributor

zen0bit commented Apr 23, 2024

Maybe I can learn a bit from them
Let me see...

@joedefen
Copy link

joedefen commented Jun 17, 2024

Hey all interested in a GUI interface (like I was). Since a GUI seems to be long-term project, I wrote a quickie, python-curses based layer atop appman called vappman (i.e., visual appman). I have other other apps that use same foundation, and so it was literally a few hours to develop and test the features that I wanted for myself.

I think it provides much of the potential value of a GUI app at (obviously) a fraction of the development cost (and maintenance). Thus, it might have some wider interest as a replacement for the GUI or, at least, a temporary project.

I'm happy with vappman as a personal tool. But if there is wider interest and it is within my development budget and interests, then make suggestions.

Cheers.

@ivan-hc
Copy link
Owner

ivan-hc commented Jul 31, 2024

This issue has been open for two years, "AM" still hasn't received the attention it deserves, and AppImages are still considered second-class software packages.

It makes me think that my intent to enhance AppImages failed, apparently only me cared.

I'm seriously considering archiving "AM".

It no longer makes sense to keep this issue open.

@ivan-hc ivan-hc closed this as completed Jul 31, 2024
@joedefen
Copy link

ivan-hc: Well, I cared and recommended it when applicable. Still, for me it was a partial solution to my problem of "outliers" (i.e., apps not in repos or flatpak) because AppMan only reduced the count, and in spite of your efforts, creating my own appimages and wrappers to further close the gap was a bitch. Anyhow, a very noble effort producing slick tools, however under-appreciated. Bummer. Cheers.

@ivan-hc
Copy link
Owner

ivan-hc commented Jul 31, 2024

@joedefen thank you anyway, yours is still a good solution.

The issue here is that none else care about AM or AppMan.

It's what I noticed, since people prefer to care more about Flatpake and Snap. "May Appimages never have their own package manager! NO! They would be competing, and that's not nice! Let's let Snap and Flatpak monopolize software management!"

This is what people and the mainstream keep think. And this is what pisses me off the more

@zen0bit
Copy link
Contributor

zen0bit commented Jul 31, 2024

If we want stick with mainstream, we are on windows right?
Don't give up, and keep your excellent work going please...
(It's still same song.
Leave win
Leave ubuntu
Leave systemD
Leave flatpak
Leave snaps)
❤️

@Samueru-sama
Copy link
Contributor

creating my own appimages and wrappers to further close the gap was a bitch

You can always request apps to be added to the database. And if it doesn't exist as appimage I might make it.

appman made me stop using the Aur which is great, because even with btrfs snapshots setup, I often ran into issues that broke the entire system lol.

@joedefen
Copy link

joedefen commented Aug 1, 2024

appman made me stop using the Aur which is great

Well, while on Arch, I thought AUR was a dumpster fire, and I used it as a last resort (preferring flatpaks, tarballs, etc.). But, yes, appman (had I known at the time) would have been my goto.

You can always request apps to be added to the database.

I have six outlier apps (i.e., crudely, self-managed apps not in repos, appman, flatpak, etc). The most widely useful, I think, would be "ventoy-gui". BTW, ventoy is available w appman, but it fails ("polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie; ==== AUTHENTICATION FAILED ===="); I've not looked into it at all .. I just uninstall appimages that don't work (and this is not the first).

I'm no expert on vappman/am documentation (so pardon my ignorance), but I don't where I'd request app, where to report an appimage problem, how to share an appimage (if I ever got one working), and how to know if somebody is already working on the appimage (or declared it impractical). Anyhow, like AUR, for appman to succeed, I think, you have to harness the power of many volunteers to support it.


As one idea, each time I do an "about" (or maybe an "install", too), you might provide (1) the link to the appimage's support page, and (2) a link to a page with "how to contribute" (in terms of requesting apps, signing up to implement an app, checking the status of the app (how many requests, whether in progress, whether declare impossible, etc).


And to ease its "getting started", you might make, say, appman + vappman (my python tool to make it excusable) a PyPi project, so that appman is installed with "pipx install appman" rather the off-putting CLI magic. Frankly, I'd chuck AM (not self-descriptive) and make appman do both (install in common areas or home area based on whether running as root or not ... similar to pip).


I don't know whether the project will get its due attention and popularity, but it seems like to me that some of the preconditions are:

  • harnessing the power of a bunch of weekend warriors (for appimage development and support)
  • making it more noob / casual user friendly

Anyhow, just some brainstorming ... don't take me too seriously ... rebuttal not needed.

@Samueru-sama
Copy link
Contributor

BTW, ventoy is available w appman, but it fails ("polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie; ==== AUTHENTICATION FAILED ===="

I've just tested ventoy, it works here. The only way I can get that error you have is if I kill my polkit agent.

I'm no expert on vappman/am documentation (so pardon my ignorance), but I don't where I'd request app, where to report an appimage problem, how to share an appimage (if I ever got one working), and how to know if somebody is already working on the appimage (or declared it impractical). Anyhow, like AUR, for appman to succeed, I think, you have to harness the power of many volunteers to support it.

You would need to open an issue to request apps, there used to be one issue for all app requests but Ivan changed it to the user opening one instead, if you have a working appimage template that would be thru a PR adding said script to the application database.

AM/AppMan has the -t flag that lets you make the appimage template, usually when the app is an appimage from github all you have to do is give it the github repo link and that's it, no further modification is needed in the script.

Frankly, I'd chuck AM (not self-descriptive) and make appman do both (install in common areas or home area based on whether running as root or not ... similar to pip).

I think that appman should be what's installed by default instead, but that's just me, I actually mentioned this to Ivan yesterday that the INSTALL script should ask and explain which one to use.

@joedefen
Copy link

joedefen commented Aug 1, 2024

I've just tested ventoy, it works here.

My duh. It did not register. I'm a i3wm noob and it has no agent and it never struck me before. I despise the polkit prompts when I have password-less sudo set up; when prompted, I just insert "sudo" in the offensive .desktop; thus, and circumventing the agent. And, yes, ventoy-gui works with sudo. But, I shoulda done this with polkit rule, in retrospect, obviously (I think that'll do it). Sorry to bother.

@Samueru-sama
Copy link
Contributor

I've just tested ventoy, it works here.

My duh. It did not register. I'm a i3wm noob and it has no agent and it never struck me before. I despise the polkit prompts when I have password-less sudo set up; when prompted, I just insert "sudo" in the offensive .desktop; thus, and circumventing the agent. And, yes, ventoy-gui works with sudo. But, I shoulda done this with polkit rule, in retrospect, obviously (I think that'll do it). Sorry to bother.

I'm also a i3wm user, I actually have i3 as an appimage lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

9 participants