Important: Please read the Qt Code of Conduct -

QML Based Linux Desktop Enviroment

  • Intitaly I was skeptical about what QML could do, so I figured "what the hell" I prototype a desktop environment using QML.

    Animated Wallpaper, Translucent Panels and Desktop Icons (I used Magick++ to create a forward and reverse swirl effect and saved the effect as a mng animation"

    You will find a download of the video below this image.
    ! always wanted animated wallpapers)!
    "Video of Animated Wallpaper":

    Here is a screenshot of a more complete desktop it features Sliding Drawer like Panels, Desktop Icons,
    Rubberband Selection, Animated Wallpaper and Integrated Window Manager and Window Drop Shadows.
    ! Result)!

    I only used the raster engine in my test's and everything was done on a Intel Atom 330 CPU.
    I didn't notice any difference in the performance compared to the all c++ example that I did.

    Adding Animated Desktop Icons with Particle Effect (House Icon with Smoke coming out of chimney), and 2D Physics
    using the QML Box2D plugin is extremely easy to do.

    I now find QML to be very very impressive.

  • Cool and welcome to the world of QML :)

    I can't find the link to the screenshot of a more complete desktop?!

  • I haven't made a video for that yet. I wanted to upload my videos to youtube or vimeo but the
    videos get all messed up when they convert them from ogv to flash.

  • Looks very nice!

  • Rubberband Selection
    One thing that I did notice, "didn't realize it at first" but when you set your view to have rubberband selection
    it ends up being on the top most level of your application.

    On normal desktop environments rubberband selection is reserved to just the desktop.

    Although I didn't find away to restrict rubberband selection to the desktop, I discovered that this could actually be a feature. You could rubberband select a group of window and move or resize them as a group.

    You could rubberband select everything on the desktop if you wanted or you
    could place restrictions on certain objects.

    Now rubberband selection could be done for just the desktop but not by setting it with the view. You would have the rubberband as an object its self. So when you clicked and dragged on the desktop "icons are separate objects" you would place/show/resize the rubberband object starting at the point that your mouse clicked and ending at the point when you released your mouse button.

    All icons who's position is with in the bounds of the x,y,w,h of the rubberband object become selected.

    Animated Widgets
    I started thinking about animated widget, after giving it some thought I came to the conclusion that there isn't a
    Qt widget that you couldn't re-create in a short amount of time except possible the Color Picker and the Text Edit/Entry widgets. Then my creative mind started working. Hmmmmm how about having a button sprout a rocket
    engine, have a flame & smoke particle effect. And then have the button rocket off the application. Hit the side of the desktop bounce a round a couple of times and explode. lol ;)

  • The new Ubuntu Unity interface is going to have a QML 2D based interface and a high Qt integration. But, man this is awesome when an individual like you can do something that a big community like Canonical is doing.

    By the way, QML is the best innovation for creating UIs and it just made Qt like God to all developers out there. But still C++ should not be left out.

  • This looks like a wonderful start. Is the source code available?

    I had a look around but all I could see was a done in HTML, not QML.

  • That was the start of a Hybrid C++/HTML concept. That never really took off do to poor performance. I do
    have the QML source somewhere's for they above application. It fairly basic. But Me and a few other Qt developers have started working on a Qt Desktop Enviroment. If you can program your more than welcome to join us hack, share ideas and what not.

    You can find me here


    File Associations Editor

    Gwenview Clone

    Package Manager Front End

    [quote author="markc" date="1315724308"]This looks like a wonderful start. Is the source code available?

    I had a look around but all I could see was a done in HTML, not QML.[/quote]

  • Excellent. About time someone(s) started on a QDE project. The folks that still use KDE3 will be very pleased. My Qt-fu is limited but hopefully I can make some trivial contributions although I am wary of the license. I normally only contribute to GPL licensed projects.

    The above examples look far more advanced than the 2 sub-project folders currently in the repo. Do you intend to add the above program code to the Chipara repo anytime soon?

  • Licensing has been a problem, one half of the team wants GPL and the other half MIT/BSD. I have no preference as-long as its an opensource GPL compatible licenses. So you can say I am working on that :)

    The last two applications are not in the repo yet but they will be eventually. When I start a project I try to get it to the point that its fully commented and the basics are working with the addition to a couple of advance features, before it hits the repo.

    There are others with there own repos working on different things. Manjaro Linux <-- there working on
    a Hardware Detection System and a Login Manager using Qt4.

    Unlike traditional open source projects ours are made to be forked. For instance I might fork Manjaro Linux
    Login Manager put my own spin on it. They will then go threw my fork and pull what code that I wrote that they want and integrate it into there version. Someone else might come along and fork me and put there spin on it. Then both me and Manjaro Linux might cherry pick threw that persons version and integrate what code we want. In the end there will always be a maintained version of the code by someone familiar with the code base, and the quality of the code will be very good.

    You don't have to be an expert at Qt to contribute. Say most of your experience is with the QtXml module. If that was the case then you could help with the FreeDesktop Classes/Libs

    It all depends on where your experience is and what you like to do. We are starting from scratch so even a calculator or text editor is useful.
    We are saving the easier stuff for the less experience programmers to work on, and working on the hard stuff our selfs. :)

  • I actually prefer and use AGPLv3 myself. Thanks for the tip about as I use Archlinux and hadn't heard about them.

    My initial thought was to at least go through the code and convert any tabs to 4-spaces and cosmetically normalize some other trivial }else{ cases as I review the source to better understand how it works. And convert the README files to Githubs markup... but, no point if your local codebase is more advanced and will overwrite my simple changes.

    If I may be so bold I have 2 suggestions...

    a) to create a parent project folder (say QDE/whatever) with a file adding subdirs for any related sub-projects so that one can point qtcreator at single project file can build everything in one go.

    b) use the master branch as a stable rolling release target and always develop next/staging experiments in branches. This way there is a single canonical and persistent URL for the latest source that should always build and run.

  • Beatiful! It's opensource?

  • So after cloning what is the correct build order (what depends on what)?

    Or the build procedure for that matter?

    Update: I managed to get QTermWidget and QTerminal to compile and run but the menus do not work. Is this app and Quantum still under active development? Should I fork the repo and provide any pull requests if I find something I can fix or add?

Log in to reply