SDDM - QML Based Display Manager
I am developing QML based display manager. I know for a long there was a high demand in creating a QML interface for KDM. Since this never materialized and KDM codebase is huge and somewhat complicated for me, I took the alternate route and wrote my own display manager from stratch.
Being fond of KISS, I tried to keep code simple and dependencies minimum. Only dependencies are PAM, Xlib and Qt. No dependencies on kdelibs or whatever. Code is around 700 lines according to sloccount. As a result of this featureset is somewhat limited compared to bigger ones: no remote connections, no xdmcp etc. things I had never used anyway.
Themes are done in QML, with a few hooks provided for login, shutdown/reboot etc. You can see how things are done in the default theme. There are no restrictions imposed on theme, you can do whatever you want. But it has to be in Qt4 aka QML1 for now. Qt5 porting will done after qt5 gets a bigger install base and easier availability. After that you will be able to use gpu shader/effects in the display manager. Yaaay!
Code can be downloaded from github repo. Service file for systemd and a PKGBUILD is also provided. You can see the PKGBUILD to understand what gets installed into where.
Patches, bug-reports, constructive criticism and feedback much welcome. Actually themes are very welcome too, default theme is pretty simplistic. We may need some bling-bling themes to show off.
Last edited by aavci; 01-19-2013 at 12:07 PM.
Reason: Added image
That looks very interesting.
After glancing over the code very quickly i have some comments for you.
- First of all, why didn't you posted your repository url? (https://github.com/sddm)
- You are using Qt, but it seems like you prefer plains C++? Since you use a lot of things that Qt also has. For inctance, std::cerr = qError(...). QProcess can execute a command for you. QCoreApplication::arguments(); gets a QStringList of command line arguments. and there is much more like this. Your code can be a lot cleaner if you where to use that.
- You are using XLib directly. While this might be needed for your case, i do encourage you to write an abstraction layer. The current stuff is still X11, but wayland is really going forward now and in not too many years we well certainly see applications/desktop environments working in there. If you where to have an abstraction than porting SDDM to wayland would be "relatively" easy.
Just some comments thus far
Good luck developing this further, it looks interesting!
Options to standby/hibernate planned?
My guess is that he can't easily implement that. It's not part of Qt and there doesn't seem to be a simple library for it either.
Originally Posted by pejakm
Originally Posted by pejakm
Suspend and hibernate support landed now in git master. It can use either systemd or upower. In case of systemd hybridsleep can be used too, if supported by the system.
Originally Posted by markg85
Well, that's because KDE’s development focus is a QML-based Greeter for LightDM: http://projects.kde.org/lightdm
Originally Posted by aavci
I think your project does greatly fit to Razor-qt.
Probably. We have similar goals. In fact, I started SDDM to be the login manager for SDE (Simple Desktop Environment). A fast, simple and beautiful desktop environment based on QtQuick2/Wayland.
Originally Posted by Ikem
This is where we differantiate with Razor. AFAIK, they are trying to be more like KDE but using less resources and only Qt. A classical approach, one might say and I am perfectly fine with it.
But... My desire is to unleash the power of QtQuick2, Wayland and hardware acceleration to create something beatiful. Something simple and elegant.
Anyway, I would love to see SDDM as the default display manager for Razor-qt and/or some distrubitions.
P.S: I hope michael doesn't pull this into the front page, as a new desktop environment in the works (fingers crossed).
For now Razor is opting for a custom LightDM Greeter.