← Back to team overview

unity7maintainers team mailing list archive

Re: Unity 7 standalone applications (without shell)

 

Hi,

To answer my own question(s) and share some of my finding with whoever it may concern: i did some experimenting and found that Unity 7 can run mostly fine without compiz. Some features are not available, for instance, compiz can reserve space on screen in places where other WMs can't, blur has to be done externally as opposed to internally, but in other regards it runs just fine on unpatched GTK and without compiz.

I tried it on Xfce4(Xfwm4)/MATE/Openbox/Cinnamon with xcompmgr/compton/compiz-reloaded - seems to work OK.

It wasn't too hard to remove compiz dependency either. I'd say Unity 7 design is correct, i just removed some redundant parts like dependency on systemd, made a sort of control program to glue all components together, slightly changed rendering and it just worked. There are a lot of dependencies on Gnome and Gtk too, but that's fine, nothing is perfect, mistakes were made, that's fine. I doubt there are any projects out there without a sort of technical debt, that's cool.

But i was genuinely surprised how easy it was to make it work on other window managers. Unity 7 developers made a great job not only on visual design but on technical front too i must admit. Unity 7 running on Openbox+xcompmgr is pretty crazy stuff if you ask me, i didn't originally think that would be possible at all.

However, i showed screenshots of this to various folks and didn't find any significant demand for something like this. Surprisingly feedback was mostly positive, there was no open hate towards Unity on other WMs, but amount of that positive feedback, or amount of any feedback at all, wasn't that great.

So my conclusion would be that not a lot of people are interested in "a desktop experience designed for efficiency of space and interaction". Maybe i'm wrong, but it sure looks like it, anyone is welcome to prove me wrong.

Anyways, if anyone wants to see how Unity 7 looks like on Xfce/MATE/Openbox, here is a link to forum thread: https://forum.voidlinux.eu/t/chromatic-demo/5219 . That thread has screenshots and also links to source code and build instructions if anyone would want to compile it and try it live.

Hope this helps.

On 03/20/2018 02:07 PM, Aleksey Tulinov wrote:
Hello.

Thank you for having me. I don't have anything to offer but i have
some questions about Unity 7 source code.

I understand that you all are probably busy with 18.04 and all that
stuff. Please consider this just an invitation to discussion, i do not
insist on replies and i'm not requesting anyone to do investigation of
any sorts. I would appreciate if someone could just point me into
right direction or give a general advice.

I'm puzzling myself with running Unity on a different distro and
advanced for a bit but not quite. Please allow me to show what i have
today, then i'll share some of my findings, i hope they will be
interesting to hear for you too. I'm not sure if this mailing list
would allow attachments, so here is link to screenshots on forum:
https://forum.voidlinux.eu/t/offical-desktop-screenshot-thread/30/389
, i'm also attaching screenshots to this email if you don't want to
open external links and attachments won't be stripped.

What you see on screenshots is Unity 7.5.0 launcher and dash kind of
running on Void Linux without any patches to Gtk, on compiz-0.9, at
the top of the screen it's xfce4-panel with global menu applet. What i
have installed are Gtk2 2.24.32 and Gtk3 3.22.29 as packaged by Void
packages maintainers, source code i used for build is from
https://launchpad.net/unity and other places on launchpad. My main
finding was that some (actually most so far) components of Unity 7 can
run on vanilla Gtk. I had to disable panel services build because it
depends on ido (https://launchpad.net/ido) and ido depends on
gtk-private, but launcher, dash, hud (frontend), shutdown and switcher
built without errors (all standalone versions). Some components
doesn't work (switcher), some doesn't work very well (launcher and
dash), but it's more or less functional, launcher track windows and
dash is capable of doing searches. I don't know, maybe some other
components i didn't touch yet depend on gtk-private, but launcher and
dash are what i'm mostly interested in at this moment. Dash works
alright-ish and looks very promising, launcher works not so much
alright-ish, but still looks rather promising than not.

I tried to look into standalone launcher and dash and as far as i
understand, it's just some example applications for testing or
debugging. Do i understand this correctly or is it something else?
Another my finding was that those standalone applications do not link
with compiz:

[alex@localhost build]$ ldd ./launcher/launcher | grep -i compiz
[alex@localhost build]$

They link with nux, but not with compiz. I also do not have unityshell
plugin installed into compiz. I understand that compiz is required to
do desktop effects like scale and probably expo, but i'm actually
interested in _not_ linking to compiz. IIRC scale could be initiated
with some dbus message before, i don't know how it is now, anyways
that's not the point, i'm pretty happy with what i've got so far, it's
just information to whom it may concern.

My main question: do you think it is theoretically possible to
eventually re-purpose these standalone applications into full-fledged
launcher and dash that do not depend on patched Gtk?

I tried to debug launcher and progressed a little bit, but i had to
dig pretty deep, in my opinion, i had to implement some missing bits
of XWindowSystem for example. Does that ring a bell? Or maybe i'm
trying to do some stupid thing and Unity isn't supposed to work like
that?

I would like to experiment with this more if that makes any sense and
i'm looking for any documentation or advice how to approach this. Is
this the right place to ask such questions or other rather low-level
questions about Unity source code? I'm interested in what bits could
be potentially reused for standalone Unity apps, general info on Unity
architecture, any hints to why some particular features might not work
in standalone apps, etc. Can i ask such questions here?

Thanks in advance.



References