<div dir="ltr">I can concur with Adam's advice. In my previous role I managed a small team of Devs that produced software in support of medical research. To ensure the widest usability across devices and OSs, they wrote hybrid apps i.e. progressive web apps, in one flavour of Javascript or another (React, Angular etc). When run on a mobile device you couldn't tell if it was a web app.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 22 May 2023 at 00:29, Adam Nielsen via linux-aus <<a href="mailto:linux-aus@lists.linux.org.au">linux-aus@lists.linux.org.au</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> What's the easiest way of doing GUI programming on Linux?  When I Google this <br>
> I get lots of results about Python programming, Python isn't a language I like <br>
> or want to learn but I wouldn't rule out using it for simple things if it is <br>
> much easier than other options.  I would prefer C/C++.<br>
<br>
For C/C++ you have to pick a toolkit like Qt, GTK, wxWidgets, etc.  All<br>
of them have their positives and negatives, and all of them require<br>
this toolkit to be installed on the system you want to run the program<br>
on.  If you want to run your final program on a phone, make sure you<br>
can install the toolkit on it before deciding on which one to use.<br>
<br>
> What I would ideally like is a system like IBM's VisualAge for C++ on Linux.  <br>
> When using VisualAge C++ on OS/2 I could write a program that had all the <br>
> basic controls and basic operations on them (EG enter text into an entry field <br>
> and click a button to have it added to a listbox) without writing any code.<br>
<br>
Most of these toolkits now have designers available that let you drag<br>
and drop to develop the UI.  Some are better than others, I suspect<br>
because doing GUIs in traditional languages like C++ is very tedious so<br>
most developers would rather be doing something else.<br>
<br>
> For writing a GUI front-end to a server I could design all the screens <br>
> graphically and then just write C code to copy data between entry fields and <br>
> API calls.  But I have the impression that no such thing exists for Linux.<br>
<br>
If you are talking about API calls then HTML and Javascript starts to be<br>
a viable option, especially based on your next point.<br>
<br>
> What I want to do is move many of the things I do on my laptop to a phone and <br>
> that requires less use of the command-line.  So shell scripts need to be <br>
> replaced with GUI operations and ssh to run commands on a server needs to be <br>
> replaced by API use or parsing ssh output for GUI display.<br>
<br>
If you're going to run on a phone then it probably has a web browser,<br>
so making a web page in Javascript is likely going to give you the<br>
least painful result.<br>
<br>
A web app means you can run on pretty much any mobile device, tablet,<br>
computer, etc.  If you use C++ and a toolkit, it will be difficult to<br>
run on iOS or Android devices as these have different toolkits to a<br>
normal Linux PC - you have to actually write an iOS or Android app,<br>
using whatever lanuages and toolkits the vendor supports.<br>
<br>
However if you go the web route, you can write a "progressive web app"<br>
which is basically static HTML and some Javascript, which thanks to a<br>
few extra config files, gets run on your phone as if it's an app you<br>
installed through the app store.  This means you get an icon on the<br>
phone's home screen to launch the app, it runs full screen like a<br>
native app, and with some additional code it can even run offline.<br>
<br>
Then you just need to handle the backend (actioning API requests coming<br>
from the GUI elements on the web page) which you could do in C++ if you<br>
wanted, but most people stick with Javascript so the language is the<br>
same in both halves of the system.  On a normal Linux machine you'd use<br>
NodeJS to run the server code.  You may be able to run this on a phone,<br>
or it may be more practical to run it on another machine on your<br>
network.<br>
<br>
I spent many years writing GUI code with C++ (on Windows and Linux) and<br>
experimented with Python a bit, but once I realised how much quicker<br>
GUIs are to develop as web sites, I never went back.<br>
<br>
There is a lot to learn if you've never done it before, especially to<br>
make a really polished dynamic app using React or similar, but one good<br>
thing about this is that it doesn't take too much to get basic code up<br>
and running and you can expand from there.  There are also many orders<br>
of magnitude more people working on web sites than C++ GUIs, so there's<br>
a lot more information out there and people who can help if you get<br>
stuck.<br>
<br>
Cheers,<br>
Adam.<br>
_______________________________________________<br>
linux-aus mailing list<br>
<a href="mailto:linux-aus@lists.linux.org.au" target="_blank">linux-aus@lists.linux.org.au</a><br>
<a href="http://lists.linux.org.au/mailman/listinfo/linux-aus" rel="noreferrer" target="_blank">http://lists.linux.org.au/mailman/listinfo/linux-aus</a><br>
<br>
To unsubscribe from this list, send a blank email to<br>
<a href="mailto:linux-aus-unsubscribe@lists.linux.org.au" target="_blank">linux-aus-unsubscribe@lists.linux.org.au</a><br>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature">Colin Fee<br><a href="mailto:tfeccles@gmail.com" target="_blank">tfeccles@gmail.com</a></div>