I'm planning to set myself a target for future. Something that I'll thrive to learn and create and if it doesn't succeed I can blame you (just jokin').

So I thought about creating Linux GUI, I mean, I have kind of idea on how GUI should look like, I've got ideas for design, a lot of it, but then problem is coding it. But, off the box.

I try to visualize if it would be hard to learn on how to create DE (Desktop Environment), so the question is.

What would be easier to do, program GUI for Linux that will fully work (+ advanced design (e.g. GNOME), or create a website GUI, that would fully work (+ advanced design) (given that anyhow, in the entire world, you got entire Linux kernel in PHP and Perl files). So, which would be more difficult? I think GUI, but it's not pain to ask you guys,.

Recommended Answers

All 6 Replies

Member Avatar for iamthwee

I would say making a GUI is harder, if you go down the route of either QT or wxWidgets, mainly because you're using c++, and the syntax is rather confusing.

An inbetween would be perhaps using JAVA, but then you need to ensure the java environment is installed, or python.

My preferences would be a web app, and the advantages are quite strong, no runtime/framework is necessary and you can rest assured it will look the same on any web browser. You also have the added bonus of using it on your phone if you make a responsive GUI.

The disadvantages are you will need to install a web server environment on your host machine or purchase a domain and use it from the internet.

There are a lot of admin templates out there where you can simply copy and paste bits of the html. The brains will be handled using PHP which will run on any environment once installed on your server.

I have to say web apps are looking more popular now, most native apps are really only useful if you're intending on doing complicated stuff like 3D or intensive processing.

I would say making a GUI is harder,

It's hardcore difference? Or great difference (lesser than hardcore)? Could you estimate a 'lil bit?

Member Avatar for iamthwee

As all things it depends, I've been writing web apps for most of my time so it's all a piece of cake to me now. Do you know basic html, css? Then you have to learn PHP as well, so there's three things thrown at you already.

Then there's storing that info in a database so you most likely will need to throw in sql.

The other thing is web apps are different in that you don't install them like you would a native app.

Java might be worth exploring if your intent is an easier to program GUI. Personally, I don't like using something that requires the user to install a framework or whatever to get it working. Plus it tends to be more bloated, and some security issues have been found on java, although if you're on the latest patch you should be ok.

I only use java for my arduino, and thats it. Again, python has gui options, personally, I have never liked the syntax, but that what happens when you begin with c++.

Do you know basic html, css? Then you have to learn PHP as well, so there's three things thrown at you already.

How 'bout HTML5, CSS3, basics of JavaScript and jQuery, SQL and PHP5?

I only use java for my arduino, and thats it. Again, python has gui options, personally, I have never liked the syntax, but that what happens when you begin with c++.

So Python or C++?

I don't really understand the question. What does it mean "program a GUI"? Normally, you start with an objective like "provide an application for doing X, Y, and Z." and then create a GUI that helps the end-user work with the application. The "X, Y, and Z" is what really determines what language / platform you might prefer to use. For instance, if there is a lot of processing, complex algorithms and performance-critical tasks to perform, C++ would be preferrable, even if it is not ideal for writing the GUI part of the application (which you might even do with another language like Python, as per the popular "C++ back-end, Python front-end" paradigm). On the other hand, if the problem is more about having a portable application with a complex GUI but with only light work being done on the back-end, then languages like Java or Python might be more appropriate. And if the work involves a lot of web-based services and data-base manipulations, you might want to go with web-development languages (PHP, JQuery, etc..). That's why I think your question is too vague.

program GUI for Linux that will fully work (+ advanced design (e.g. GNOME))

There is a big difference between implementing a GUI application and developing a GUI framework (like GTK+, wxWidgets, or Qt). For GUI applications, you just use a GUI framework, which does most of the low-level work for you, and you just have to pick and place the GUI components onto your design and write some code to respond to events like when buttons are clicked or when fields are changed, which is quite easy. On the other hand, writing something like a GUI framework (e.g., GTK+, wxWidgets, or Qt) or a desktop environment (e.g., GNOME, KDE, etc.) is a massive undertaking that will require you to write a lot of low-level code, algorithms and solving challenging software architecture problems. This is not for the faint of heart. In my early days, I gave a crack at that a few times and it's really hard (but also a great learning experience). This generally requires a significant team of experienced developers to create successfully. If you really want to step into that world, I would suggest you look at or join an ongoing project, such Wayland or one of its desktop environments. And btw, for this kind of work, it's pretty much exclusively C/C++, with some Python and a few other scripting languages.

I wrote a simple desktop interface many years ago (about 1985) using the curses api. That wasn't simple to do, but worked rather well (it became part of a commercial office automation system). You can use Qt or GTK++ to do this today, as do Gnome and KDE, but modern systems have a lot of other cruft to deal with as Mike2K indicates. To create a desktop environment in a web-based (browser) environment has no less challenges, and may be more difficult in fact. As IamThwee said, you will need html, css, and php. FWIW, php is basically C++ with HTML embedding capabilities. Both Qt and GTK++ are C++ libraries. So, in either case, you need to understand object-oriented programming and C++ just to get started.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.