ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Distribution: Fedora 18, Slackware64 13.37, Windows 7/8
Posts: 386
Rep:
Rapid Linux GUI Frameworks
I'm currently a C#.NET developer in the business world and I'm a hobbyist Linux admin and consultant. I'd love to produce the kinds of high quality enterprise application on Linux that I produce in Windows but I'm really struggling to grasp the right direction.
Currently, I have written a ton of BASH applications that use a really simplistic Zenity UI and I just can't take that anymore. I spent some time writing Java programs but Java (Swing) just isn't suited for system admin applications that are designed to interface directly with the Operating System.
I need a real UI framework. I have recently switched gears and started down the path of Python/wxPython but then I realized that none of my Linux machines even have wxPython installed by default and there are known problems using wxPython on Gnome 3.
for the love of god, is there any standard UI framework included by default on (the enterprise) distributions like the .NET framework is on Windows machines that I can generally count on being on the machine?
Please don't say Qt or Gtk+, because I detest the idea of going back to C/C++, especially after having spent the last 10 years focusing on high-level languages.
I don't think your desire for something "installed by default" is appropriate. Why would wxPython be there by default? It's pretty obscure, and would just clutter up most systems. There's nothing wrong with installing stuff...
Maybe a tool like Glade would be of use? Building GTK interfaces for various languages, including C#.
and having "for the love of god" with a Dawkins quote in the same post... interesting!
Last edited by acid_kewpie; 04-24-2012 at 04:09 PM.
Which frameworks are included is totally dependent on the distro you use, but you can say that a standard install of a distro almost ever has GTK+ and QT installed (or at least one of the two, i think most distributions favor GTK+). And no, you don't have to use C/C++ to use them, there are bindings for almost any language.
But anyways, if you make proper packages out of your software the package manager will take care of installing necessary dependencies, so actually you don't have to be concerned about that.
EDIT: @ acid_kewpie: All versions of GTK are called GTK+, with GTK+ 3.4.0 being the last stable version.
Distribution: Fedora 18, Slackware64 13.37, Windows 7/8
Posts: 386
Original Poster
Rep:
Quote:
Originally Posted by dugan
You know that C# and WinForms are available in Linux (with Mono), right?
Yup, been down that road 4 or 5 years ago and Mono is a weak, pathetic .NET imposter.
Quote:
I don't think your desire for something "installed by default" is appropriate. Why would wxPython be there by default? It's pretty obscure, and would just clutter up most systems.
Again, Linux development is a hobby for me at this point so I really have no idea of what is standard and what is obscure. It sounds like GTK+ and Qt are in fact the way to go, except I need to use bindings for higher-level languages (anyone care to point me to a link where this is effectively articulated?). There doesn't seem to be any sort of MSDN Library out there for Linux development and all the books I've looked all use C/C++ or Python with one of a possible zillion GUI frameworks.
Quote:
But anyways, if you make proper packages out of your software the package manager will take care of installing necessary dependencies, so actually you don't have to be concerned about that.
Care to share some documentation on how to build proper packages? In Windows all I need to do is deliver my libraries in the same working directory as the assembly or register them in the GAC (or Enterprise Services Mgr for COMVisible components) and this work is always achieved as part of the MSI installer package that the software is deployed in.
Thanks again guys....I'm hoping this time around I can make some progress in Linux development. The last few times I tried Linux development I got so overwhelmed by the lack of any standards, documentation, and direction that I threw my hands up and walked away. The last thing I want is to pick the wrong framework and have wasted hundreds of hours of precious time.
Yup, been down that road 4 or 5 years ago and Mono is a weak, pathetic .NET imposter.
* ahem
You think it might have changed in 4-5 years?
If you really want a recommendation and you don't want to look at what the current state of Mono is, then you really can't go wrong with PyQt. Definitely not "the wrong framework". It's what I used for my music player (http://duganchen.ca/quetzalcoatl-2-0-screenshot/)
It has the same API (classes and methods) as Qt, so I usually just read the C++ Qt docs (which are IMHO better than MSDN) and mentally translate them to Python.
Quote:
Care to share some documentation on how to build proper packages?
Let the specialists do that.
If your software is open source, then just release source tarballs and let people who build packages for their distributions do it.
If it's not, then just release statically linked binaries, tar them up, and let people who build packages for their distributions package them.
Quote:
I detest the idea of going back to C/C++
Rumor has it that C++ is going to become prevalent for development on Microsoft platforms again.
Care to share some documentation on how to build proper packages? In Windows all I need to do is deliver my libraries in the same working directory as the assembly or register them in the GAC (or Enterprise Services Mgr for COMVisible components) and this work is always achieved as part of the MSI installer package that the software is deployed in.
Forget how it is done in Windows. Linux is not Windows, so don't expect it to act like Windows.
Regarding packages, it depends type of packages your distribution uses, the most common are RPM and DEB.
Distribution: Ubuntu n' Flavors, ReactOS, MINIX3, FreeDOS, Arch
Posts: 339
Rep:
Ruby is not standard on any Linux distro I know of (even the enterprise ones) BUT Tk is part of the Standard, yes standard not extended standard, ruby library.
This is a C++ solution (C++ isn't THAT low level... Is it? Compare it to assembly) but FLTK is super easy (I learned it in one day, and I'm not even that familiar with classes) and is small enough to be stately linked.
Distribution: Fedora 18, Slackware64 13.37, Windows 7/8
Posts: 386
Original Poster
Rep:
Quote:
Originally Posted by TobiSGD
Forget how it is done in Windows. Linux is not Windows, so don't expect it to act like Windows.
Regarding packages, it depends type of packages your distribution uses, the most common are RPM and DEB.
I can't forget how it is done in Windows because I've been developing Windows applications for over a decade. I've been a Linux user and some-time admin longer than I have been a Windows developer so I'm very familiar with Linux (I have 3 Linux certifications)... I'm just new to Linux development. I don't expect Linux development to be anything like Windows development but I have never overcome the lack of an MSDN Library style of direction.
Quote:
You think it (MONO) might have changed in 4-5 years? If you really want a recommendation and you don't want to look at what the current state of Mono is...
I know there have been some great applications developed with Mono (Banshee, etc) but I went down that road several times and it was not even close to the real .NET framework, not only that but Mono is effectively dead, having lost its Novell sponsership (http://www.readwriteweb.com/hack/201...ew-startup.php)
Quote:
then you really can't go wrong with PyQt. Definitely not "the wrong framework". It's what I used for my music player
That looks good but isn't Qt a KDE thing? I'm trying to stay in the mainstream here so I'm going to give a go with PyGTK/PyGObject.
I'll worry about how to implement multi-threading, locks, interprocess communication, OR/M persistence, and other deeper requirements once I understand the GTK+ object model and work through the tutorial.
I'll worry about how to implement multi-threading, locks, interprocess communication, OR/M persistence, and other deeper requirements once I understand the GTK+ object model and work through the tutorial.
Sounds like you're ready to mark the thread as SOLVED, and you've chosen Gtk via Python. That's not wrong. Not at all.
And for GTK, there are GtkSharp (Mono again) and Vala in addition to the Python bindings.
However...
(Py)Qt is not in any way tied to KDE, and it's really as mainstream as GTK. I haven't checked, but wouldn't surprise me at all if even GNOME-based distributions are shipping it on their install DVDs. Again, definitely not the wrong framework. You also shouldn't be worrying about what software comes with the typical mainstream distribution because a) there's no such thing, b) all distributions make software and their dependencies very easy to install, c) no-one limits themselves to the software in a stock install, and d) etc.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.