Merge lp:~ted/unity/systemd-unit. into lp:unity

Proposed by Ted Gould
Status: Superseded
Proposed branch: lp:~ted/unity/systemd-unit.
Merge into: lp:unity
Prerequisite: lp:~azzar1/unity/unity-active-plugins--safety-check
Diff against target: 741 lines (+433/-47)
25 files modified
CMakeLists.txt (+11/-1)
debian/control (+22/-20)
debian/libunity-core-6.0-9.install (+3/-2)
debian/unity-services.install (+4/-1)
debian/unity-services.links (+13/-0)
debian/unity.install (+3/-0)
lockscreen/LockScreenController.cpp (+4/-0)
lockscreen/LockScreenController.h (+3/-0)
services/CMakeLists.txt (+31/-0)
services/unity-panel-service-lockscreen.override (+1/-0)
services/unity-panel-service-lockscreen.service.in (+7/-0)
services/unity-panel-service.override (+1/-0)
services/unity-panel-service.service.in (+9/-0)
services/unity-screen-locked.target (+4/-0)
tests/CMakeLists.txt (+1/-0)
tests/test_lockscreen_controller.cpp (+5/-2)
tests/test_systemd_wrapper.cpp (+111/-0)
tools/CMakeLists.txt (+3/-0)
tools/unity-compiz-profile-select.in (+25/-0)
unity-shared/CMakeLists.txt (+1/-0)
unity-shared/SystemdWrapper.cpp (+103/-0)
unity-shared/SystemdWrapper.h (+55/-0)
unity7.conf.in (+1/-21)
unity7.override (+1/-0)
unity7.service.in (+11/-0)
To merge this branch: bzr merge lp:~ted/unity/systemd-unit.
Reviewer Review Type Date Requested Status
Iain Lane Needs Fixing
Marco Trevisan (Treviño) Needs Fixing
Review via email: mp+300624@code.launchpad.net

This proposal supersedes a proposal from 2016-07-20.

This proposal has been superseded by a proposal from 2016-09-02.

Commit message

Adding systemd user session units

Description of the change

At it's core this MR is about making unity7 work with the systemd user sessions. It required a larger change than expected, so some descriptions :-)

It moves the prestart scripts from Upstart into a shared shell script so that both systemd and Upstart can use the same code.

Added a signal wrapper for Systemd, today we are sending both signals as both will be running for the time being. In the future the Upstart signals should be droppable.

For lock screen we created a target for when the lock screen is enabled. We put the panel job in there, but other jobs can add themselves by putting a symbolic link into the "unity-screen-locked.target.wants" directory to their jobs if they want.

To post a comment you must log in.
Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote : Posted in a previous version of this proposal

There have been changes recently to upstart job to change COMPIZ_CONFIG_PROFILE depending on the gfx environment. So please sync with upstream changes on that.

Also, please rebase on lp:~azzar1/unity/unity-active-plugins--safety-check, which will need to be ported too

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

I don't see unity-compiz-profile in any .install file.

Please move that into unity.install together with systemd (and unity7.conf file). I don't remember why they were added there in the past (likely for some gsettings and unity8 dependency on libunity-core), but I think that is not the nicest places to be.

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Can you please merge this again with lp:~azzar1/unity/unity-active-plugins--safety-check?

It should be the last time :-)

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

As per channel discussion:

15:15:38 <Trevinho> tedg: also, I was thinking... using that code in the current yakkety causes the Start/Stop calls to not happen since the proxy is not connected... They get queued though... Maybe you could avoid to call start/stop if the systemd_proxy_ is not connected?
15:16:37 <Trevinho> tedg: at the beginning I had the idea of just provinding one of the two wrappers, depending on what is running in the session, but... It's a little to annoying, and I didn't want you to create an abstract class just for that, but... Maybe...
15:16:55 <tedg> Trevinho: Oh, because it's connecting to the session bus instead of the user bus right now?
15:17:04 <Trevinho> tedg: yes
15:17:14 <tedg> Trevinho: We won't have the Upstart stuff for long hopefully, so I don't think it's worth abstracting.
15:18:18 <Trevinho> tedg: yeah, same I thought...
15:18:36 <Trevinho> tedg: but currently guess we'd get some "Timed out waiting for proxy" erros in unity logs
15:18:37 <Trevinho> so...
15:19:11 <Trevinho> tedg: is an env var available when systemd is there?
15:19:55 <tedg> tedg: I think checking if it's connected is fine. We can drop that too once we get migrated over if it's taking too long.
15:20:03 <Trevinho> ok...
15:20:30 <Trevinho> tedg: I mean, it might be not connected at the very start of the session... Like if starting with unity already locked (because of a crash) though
15:20:48 <Trevinho> but... Yeah, as you say, this is something we can get rid of
15:21:08 <Trevinho> or, juts check for an env var presency for both upstart and systemd wrappers
15:23:01 <Trevinho> tedg: also /usr/share/unity/unity-compiz-profile I'd prefer it to be in /usr/lib/unity
15:24:04 <Trevinho> tedg: and probably renamed unity-compiz-profile-set or -selector or... anything that explains better :-)
15:25:05 <tedg> K, I was avoiding changing the codebase too much, but since andyrock moved the .conf file into the build system we can move it to lib.
15:33:32 <Trevinho> tedg: yeah, that's nicer

Revision history for this message
Ted Gould (ted) wrote :

K, I think that's everything :-)

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Still some conflicts with the parent branch, merge again please...

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Also, you want me to land this or you prefer to land the branch together with the other systemd branches?

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Looks good, just still wondering if you can get rid of that static list from the .service :)

Revision history for this message
Ted Gould (ted) wrote :

So I removed the list and put it as a set of symbolic links in the packaging. At least then it is a packaging thing (when suggests change the links should change) more than an Upstream thing.

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Mh, this is better... I would have guessed this was done at each indicator level, but I can go with this too.

One only minor thing, it shouldn't never happen that the lockscreen is there without ups running, but... For safety I think it would be better to also add

/usr/lib/systemd/user/indicator-datetime.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-datetime.service
/usr/lib/systemd/user/indicator-keyboard.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-keyboard.service
/usr/lib/systemd/user/indicator-power.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-power.service
/usr/lib/systemd/user/indicator-session.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-session.service
/usr/lib/systemd/user/indicator-sound.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-sound.service

Revision history for this message
Ted Gould (ted) wrote :

On Tue, 2016-08-09 at 16:09 +0000, Marco Trevisan (Treviño) wrote:
> Mh, this is better... I would have guessed this was done at each
> indicator level, but I can go with this too.
Yes, systemd is "backwards" to Upstart in that you define a state and
how to achieve that state instead of an event that you listen for. So
the state is panel-service running and you achieve that by starting the
indicators instead of the panel service asking the indicators to start.
I miss Upstart, I think it made more sense too :-(
> One only minor thing, it shouldn't never happen that the lockscreen is there without ups running, but... For safety I think it would be better to also add
>

Yup, good idea, added.

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Nice, I think we can land this now!

review: Approve
Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Ouch, I'm getting this now:

dpkg: error processing archive /tmp/apt-dpkg-install-pcRES4/3-unity_7.5.0+16.10.20160823-0ubuntu1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/unity/makebootchart.py', which is also in package libunity-core-6.0-9:amd64 7.5.0+16.10.20160817.1-0ubuntu1

I guess this is because the unity.install +usr/lib/*/unity line, can you set it as it used to be please?

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) :
review: Needs Fixing
Revision history for this message
Ted Gould (ted) wrote :

Set them up to explicitly mention, looks like they end up in the right package now.

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

I didn't generated scripts have wrong path, you should use FULL_LIBDIR.

[/usr/lib/systemd/user/unity7.service:10] Executable path is not absolute, ignoring: lib/x86_64-linux-gnu/unity/unity-compiz-profile-select

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

The prefixes on the .service and .config files are still wrong... See the inline comments.

Also unity7 doesn't start automatically (it does if I use systemctl manually), and I also see this:

 indicator-application.service not-found inactive dead indicator-application.service
● indicator-bluetooth.service not-found inactive dead indicator-bluetooth.service
● indicator-datetime.service not-found inactive dead indicator-datetime.service
● indicator-keyboard.service not-found inactive dead indicator-keyboard.service
● indicator-messages.service not-found inactive dead indicator-messages.service
● indicator-power.service not-found inactive dead indicator-power.service
● indicator-session.service not-found inactive dead indicator-session.service
● indicator-sound.service not-found inactive dead indicator-sound.service
  unity-gtk-module.service loaded active exited Unity GTK Module Environment variables
  unity-panel-service.service loaded inactive dead Backing Service for the Unity Panel
  unity-settings-daemon.service loaded active running Unity Settings Daemon
  unity7.service loaded inactive dead Unity Shell v7
  indicators-pre.target loaded inactive dead

Revision history for this message
Iain Lane (laney) wrote :

Missing:

  - symlink /usr/lib/systemd/user/ubuntu-session.target.requires/unity7.service -> ../unity7.service
  - Environment=COMPIZ_CONFIG_PROFILE=ubuntu

review: Needs Fixing
Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

> - Environment=COMPIZ_CONFIG_PROFILE=ubuntu

This isn't true anymore, since the profile could also be ubnutu-lowgfx, so this has to be done from the pre-start script

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

> - Environment=COMPIZ_CONFIG_PROFILE=ubuntu

This isn't true anymore, since the profile could also be ubnutu-lowgfx, so this has to be done from the pre-start script

Revision history for this message
Iain Lane (laney) wrote :

On Wed, Aug 31, 2016 at 10:54:22AM -0000, Marco Trevisan (Treviño) wrote:
> > - Environment=COMPIZ_CONFIG_PROFILE=ubuntu
>
> This isn't true anymore, since the profile could also be ubnutu-lowgfx, so this has to be done from the pre-start script

Then make that call dbus-update-activation-environment

--
Iain Lane [ <email address hidden> ]
Debian Developer [ <email address hidden> ]
Ubuntu Developer [ <email address hidden> ]

Revision history for this message
Iain Lane (laney) wrote :

On Wed, Aug 31, 2016 at 11:03:38AM -0000, Iain Lane wrote:
> On Wed, Aug 31, 2016 at 10:54:22AM -0000, Marco Trevisan (Treviño) wrote:
> > > - Environment=COMPIZ_CONFIG_PROFILE=ubuntu
> >
> > This isn't true anymore, since the profile could also be ubnutu-lowgfx, so this has to be done from the pre-start script
>
> Then make that call dbus-update-activation-environment

instead of systemctl set-environment, that is. Most jobs do

  initctl set-env -g ...
  dbus-update-activation-environment --verbose --systemd VAR

--
Iain Lane [ <email address hidden> ]
Debian Developer [ <email address hidden> ]
Ubuntu Developer [ <email address hidden> ]

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2016-07-21 13:01:59 +0000
+++ CMakeLists.txt 2016-08-31 03:25:56 +0000
@@ -429,5 +429,15 @@
429#429#
430# Upstart430# Upstart
431#431#
432configure_file(unity7.conf.in ${CMAKE_CURRENT_BINARY_DIR}/unity7.conf)432
433configure_file(unity7.conf.in ${CMAKE_CURRENT_BINARY_DIR}/unity7.conf @ONLY)
433install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unity7.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/upstart/sessions)434install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unity7.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/upstart/sessions)
435
436#
437# Systemd
438#
439
440configure_file(unity7.service.in ${CMAKE_CURRENT_BINARY_DIR}/unity7.service @ONLY)
441pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)
442install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unity7.service DESTINATION ${SYSTEMD_USER_DIR})
443install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/unity7.override DESTINATION ${CMAKE_INSTALL_DATADIR}/upstart/systemd-session/upstart)
434444
=== modified file 'debian/control'
--- debian/control 2016-07-25 18:20:16 +0000
+++ debian/control 2016-08-31 03:25:56 +0000
@@ -53,6 +53,7 @@
53 python3 (>= 3.4),53 python3 (>= 3.4),
54 python-setuptools,54 python-setuptools,
55 quilt,55 quilt,
56 systemd,
56 xserver-xorg-video-dummy,57 xserver-xorg-video-dummy,
57 xsltproc,58 xsltproc,
58Standards-Version: 3.9.559Standards-Version: 3.9.5
@@ -81,12 +82,31 @@
81 libxfixes3 (>= 1:5.0.1-1),82 libxfixes3 (>= 1:5.0.1-1),
82 libxi6 (>= 2:1.7.1.901),83 libxi6 (>= 2:1.7.1.901),
83 unity-scope-home,84 unity-scope-home,
84Provides: indicator-renderer
85Recommends: unity-control-center,85Recommends: unity-control-center,
86 ${unity-default-masterscopes}86 ${unity-default-masterscopes}
87 nautilus,87 nautilus,
88 gnome-disk-utility,88 gnome-disk-utility,
89 indicator-appmenu (>= 15.02.0),89 hud,
90 session-shortcuts,
91Breaks: unity-lens-applications (<< 5.12.0-0ubuntu2),
92 unity-lens-files (<< 5.10.0-0ubuntu2),
93 unity-lens-music (<< 6.0.0),
94 unity-lens-video (<< 0.3.6-0ubuntu2),
95Description: Interface designed for efficiency of space and interaction.
96 Unity is a desktop experience that sings. Designed by Canonical and the Ayatana
97 community, Unity is all about the combination of familiarity and the future. We
98 bring together visual design, analysis of user experience testing, modern
99 graphics technologies and a deep understanding of the free software landscape
100 to produce what we hope will be the lightest, most elegant and most delightful
101 way to use your PC.
102
103Package: unity-services
104Architecture: any
105Depends: ${shlibs:Depends},
106 ${misc:Depends},
107 indicator-common,
108Provides: indicator-renderer
109Recommends: indicator-appmenu (>= 15.02.0),
90 indicator-application,110 indicator-application,
91 indicator-sound,111 indicator-sound,
92 indicator-bluetooth,112 indicator-bluetooth,
@@ -96,24 +116,6 @@
96 indicator-printers,116 indicator-printers,
97 indicator-power,117 indicator-power,
98 indicator-session,118 indicator-session,
99 hud,
100 session-shortcuts,
101Breaks: unity-lens-applications (<< 5.12.0-0ubuntu2),
102 unity-lens-files (<< 5.10.0-0ubuntu2),
103 unity-lens-music (<< 6.0.0),
104 unity-lens-video (<< 0.3.6-0ubuntu2),
105Description: Interface designed for efficiency of space and interaction.
106 Unity is a desktop experience that sings. Designed by Canonical and the Ayatana
107 community, Unity is all about the combination of familiarity and the future. We
108 bring together visual design, analysis of user experience testing, modern
109 graphics technologies and a deep understanding of the free software landscape
110 to produce what we hope will be the lightest, most elegant and most delightful
111 way to use your PC.
112
113Package: unity-services
114Architecture: any
115Depends: ${shlibs:Depends},
116 ${misc:Depends},
117Description: Services for the Unity interface119Description: Services for the Unity interface
118 Unity is a desktop experience that sings. Designed by Canonical and the Ayatana120 Unity is a desktop experience that sings. Designed by Canonical and the Ayatana
119 community, Unity is all about the combination of familiarity and the future. We121 community, Unity is all about the combination of familiarity and the future. We
120122
=== modified file 'debian/libunity-core-6.0-9.install'
--- debian/libunity-core-6.0-9.install 2016-07-26 16:45:34 +0000
+++ debian/libunity-core-6.0-9.install 2016-08-31 03:25:56 +0000
@@ -2,8 +2,9 @@
2usr/lib/*/unity/*.py2usr/lib/*/unity/*.py
3usr/share/ccsm3usr/share/ccsm
4usr/share/gnome-control-center/4usr/share/gnome-control-center/
5usr/share/unity5usr/share/unity/icons
6usr/share/upstart/sessions/unity7.conf6usr/share/unity/themes
7debian/unity-crashdb.conf etc/apport/crashdb.conf.d/7debian/unity-crashdb.conf etc/apport/crashdb.conf.d/
8debian/source_unity.py usr/share/apport/package-hooks8debian/source_unity.py usr/share/apport/package-hooks
9tools/convert-files/* usr/lib/compiz/migration/9tools/convert-files/* usr/lib/compiz/migration/
10usr/share/upstart/sessions/unity7.conf
1011
=== modified file 'debian/unity-services.install'
--- debian/unity-services.install 2016-07-26 13:58:14 +0000
+++ debian/unity-services.install 2016-08-31 03:25:56 +0000
@@ -1,3 +1,6 @@
1usr/lib/*/unity/*service1usr/lib/*/unity/*service
2usr/share/upstart/sessions/unity-panel-service*.conf2usr/share/upstart/sessions/unity-panel*
3usr/share/upstart/systemd-session/upstart/unity-panel*
4usr/lib/systemd/user/unity-panel*
5usr/lib/systemd/user/unity-screen-locked.target
3usr/share/man/*/unity-panel-service.16usr/share/man/*/unity-panel-service.1
47
=== added file 'debian/unity-services.links'
--- debian/unity-services.links 1970-01-01 00:00:00 +0000
+++ debian/unity-services.links 2016-08-31 03:25:56 +0000
@@ -0,0 +1,13 @@
1/usr/lib/systemd/user/indicator-application.service /usr/lib/systemd/user/unity-panel-service.service.wants/indicator-application.service
2/usr/lib/systemd/user/indicator-bluetooth.service /usr/lib/systemd/user/unity-panel-service.service.wants/indicator-bluetooth.service
3/usr/lib/systemd/user/indicator-datetime.service /usr/lib/systemd/user/unity-panel-service.service.wants/indicator-datetime.service
4/usr/lib/systemd/user/indicator-keyboard.service /usr/lib/systemd/user/unity-panel-service.service.wants/indicator-keyboard.service
5/usr/lib/systemd/user/indicator-messages.service /usr/lib/systemd/user/unity-panel-service.service.wants/indicator-messages.service
6/usr/lib/systemd/user/indicator-power.service /usr/lib/systemd/user/unity-panel-service.service.wants/indicator-power.service
7/usr/lib/systemd/user/indicator-session.service /usr/lib/systemd/user/unity-panel-service.service.wants/indicator-session.service
8/usr/lib/systemd/user/indicator-sound.service /usr/lib/systemd/user/unity-panel-service.service.wants/indicator-sound.service
9/usr/lib/systemd/user/indicator-datetime.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-datetime.service
10/usr/lib/systemd/user/indicator-keyboard.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-keyboard.service
11/usr/lib/systemd/user/indicator-power.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-power.service
12/usr/lib/systemd/user/indicator-session.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-session.service
13/usr/lib/systemd/user/indicator-sound.service /usr/lib/systemd/user/unity-panel-service-lockscreen.service.wants/indicator-sound.service
014
=== modified file 'debian/unity.install'
--- debian/unity.install 2016-07-26 16:45:34 +0000
+++ debian/unity.install 2016-08-31 03:25:56 +0000
@@ -2,6 +2,9 @@
2usr/bin2usr/bin
3usr/lib/*/compiz/libunity*.so3usr/lib/*/compiz/libunity*.so
4usr/lib/*/unity/unity-active-plugins-safety-check4usr/lib/*/unity/unity-active-plugins-safety-check
5usr/lib/*/unity/unity-compiz-profile-select
5usr/share/man/*/unity.16usr/share/man/*/unity.1
6usr/share/compiz7usr/share/compiz
7usr/share/locale8usr/share/locale
9usr/lib/systemd/user/unity7.service
10usr/share/upstart/systemd-session/upstart/unity7.override
811
=== modified file 'lockscreen/LockScreenController.cpp'
--- lockscreen/LockScreenController.cpp 2016-07-04 12:45:06 +0000
+++ lockscreen/LockScreenController.cpp 2016-08-31 03:25:56 +0000
@@ -56,6 +56,7 @@
56Controller::Controller(DBusManager::Ptr const& dbus_manager,56Controller::Controller(DBusManager::Ptr const& dbus_manager,
57 session::Manager::Ptr const& session_manager,57 session::Manager::Ptr const& session_manager,
58 key::Grabber::Ptr const& key_grabber,58 key::Grabber::Ptr const& key_grabber,
59 SystemdWrapper::Ptr const& systemd_wrapper,
59 UpstartWrapper::Ptr const& upstart_wrapper,60 UpstartWrapper::Ptr const& upstart_wrapper,
60 ShieldFactoryInterface::Ptr const& shield_factory,61 ShieldFactoryInterface::Ptr const& shield_factory,
61 bool test_mode)62 bool test_mode)
@@ -63,6 +64,7 @@
63 , dbus_manager_(dbus_manager)64 , dbus_manager_(dbus_manager)
64 , session_manager_(session_manager)65 , session_manager_(session_manager)
65 , key_grabber_(key_grabber)66 , key_grabber_(key_grabber)
67 , systemd_wrapper_(systemd_wrapper)
66 , upstart_wrapper_(upstart_wrapper)68 , upstart_wrapper_(upstart_wrapper)
67 , shield_factory_(shield_factory)69 , shield_factory_(shield_factory)
68 , suspend_inhibitor_manager_(std::make_shared<SuspendInhibitorManager>())70 , suspend_inhibitor_manager_(std::make_shared<SuspendInhibitorManager>())
@@ -129,6 +131,7 @@
129 shields_.clear();131 shields_.clear();
130132
131 upstart_wrapper_->Emit("desktop-unlock");133 upstart_wrapper_->Emit("desktop-unlock");
134 systemd_wrapper_->Stop("unity-screen-locked.target");
132 accelerator_controller_.reset();135 accelerator_controller_.reset();
133 indicators_.reset();136 indicators_.reset();
134 }137 }
@@ -464,6 +467,7 @@
464{467{
465 indicators_ = std::make_shared<indicator::LockScreenDBusIndicators>();468 indicators_ = std::make_shared<indicator::LockScreenDBusIndicators>();
466 upstart_wrapper_->Emit("desktop-lock");469 upstart_wrapper_->Emit("desktop-lock");
470 systemd_wrapper_->Stop("unity-screen-locked.target");
467471
468 accelerator_controller_ = std::make_shared<AcceleratorController>(key_grabber_);472 accelerator_controller_ = std::make_shared<AcceleratorController>(key_grabber_);
469 auto activate_key = WindowManager::Default().activate_indicators_key();473 auto activate_key = WindowManager::Default().activate_indicators_key();
470474
=== modified file 'lockscreen/LockScreenController.h'
--- lockscreen/LockScreenController.h 2016-06-21 01:28:26 +0000
+++ lockscreen/LockScreenController.h 2016-08-31 03:25:56 +0000
@@ -31,6 +31,7 @@
31#include "ScreenSaverDBusManager.h"31#include "ScreenSaverDBusManager.h"
32#include "unity-shared/BackgroundEffectHelper.h"32#include "unity-shared/BackgroundEffectHelper.h"
33#include "unity-shared/KeyGrabber.h"33#include "unity-shared/KeyGrabber.h"
34#include "unity-shared/SystemdWrapper.h"
34#include "unity-shared/UpstartWrapper.h"35#include "unity-shared/UpstartWrapper.h"
3536
36namespace unity37namespace unity
@@ -46,6 +47,7 @@
46 typedef std::shared_ptr<Controller> Ptr;47 typedef std::shared_ptr<Controller> Ptr;
4748
48 Controller(DBusManager::Ptr const&, session::Manager::Ptr const&, key::Grabber::Ptr const&,49 Controller(DBusManager::Ptr const&, session::Manager::Ptr const&, key::Grabber::Ptr const&,
50 SystemdWrapper::Ptr const& systemd_wrapper = std::make_shared<SystemdWrapper>(),
49 UpstartWrapper::Ptr const& upstart_wrapper = std::make_shared<UpstartWrapper>(),51 UpstartWrapper::Ptr const& upstart_wrapper = std::make_shared<UpstartWrapper>(),
50 ShieldFactoryInterface::Ptr const& shield_factory = std::make_shared<ShieldFactory>(),52 ShieldFactoryInterface::Ptr const& shield_factory = std::make_shared<ShieldFactory>(),
51 bool test_mode = false);53 bool test_mode = false);
@@ -88,6 +90,7 @@
88 key::Grabber::Ptr key_grabber_;90 key::Grabber::Ptr key_grabber_;
89 indicator::Indicators::Ptr indicators_;91 indicator::Indicators::Ptr indicators_;
90 AcceleratorController::Ptr accelerator_controller_;92 AcceleratorController::Ptr accelerator_controller_;
93 SystemdWrapper::Ptr systemd_wrapper_;
91 UpstartWrapper::Ptr upstart_wrapper_;94 UpstartWrapper::Ptr upstart_wrapper_;
92 ShieldFactoryInterface::Ptr shield_factory_;95 ShieldFactoryInterface::Ptr shield_factory_;
93 SuspendInhibitorManager::Ptr suspend_inhibitor_manager_;96 SuspendInhibitorManager::Ptr suspend_inhibitor_manager_;
9497
=== modified file 'services/CMakeLists.txt'
--- services/CMakeLists.txt 2016-02-09 01:26:22 +0000
+++ services/CMakeLists.txt 2016-08-31 03:25:56 +0000
@@ -58,3 +58,34 @@
5858
59configure_file(unity-panel-service-lockscreen.conf.in ${CMAKE_CURRENT_BINARY_DIR}/unity-panel-service-lockscreen.conf)59configure_file(unity-panel-service-lockscreen.conf.in ${CMAKE_CURRENT_BINARY_DIR}/unity-panel-service-lockscreen.conf)
60install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unity-panel-service-lockscreen.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/upstart/sessions)60install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unity-panel-service-lockscreen.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/upstart/sessions)
61
62##
63## Systemd Unit Files
64##
65
66# where to install
67# Uncomment when we drop Vivid
68# pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)
69set (SYSTEMD_USER_DIR "/usr/lib/systemd/user")
70message (STATUS "${SYSTEMD_USER_DIR} is the systemd user unit file install dir")
71
72configure_file (unity-panel-service.service.in "${CMAKE_CURRENT_BINARY_DIR}/unity-panel-service.service")
73configure_file (unity-panel-service-lockscreen.service.in "${CMAKE_CURRENT_BINARY_DIR}/unity-panel-service-lockscreen.service")
74
75install( FILES
76 "${CMAKE_CURRENT_BINARY_DIR}/unity-panel-service.service"
77 "${CMAKE_CURRENT_BINARY_DIR}/unity-panel-service-lockscreen.service"
78 "${CMAKE_CURRENT_SOURCE_DIR}/unity-screen-locked.target"
79 DESTINATION "${SYSTEMD_USER_DIR}")
80
81##
82## Upstart systemd override Job File
83##
84
85set (UPSTART_SYSTEMD_OVERRIDE_DIR "${CMAKE_INSTALL_FULL_DATADIR}/upstart/systemd-session/upstart")
86message (STATUS "${UPSTART_SYSTEMD_OVERRIDE_DIR} is the Upstart override Job File for systemd dir")
87
88install (FILES
89 unity-panel-service.override
90 unity-panel-service-lockscreen.override
91 DESTINATION "${UPSTART_SYSTEMD_OVERRIDE_DIR}")
6192
=== added file 'services/unity-panel-service-lockscreen.override'
--- services/unity-panel-service-lockscreen.override 1970-01-01 00:00:00 +0000
+++ services/unity-panel-service-lockscreen.override 2016-08-31 03:25:56 +0000
@@ -0,0 +1,1 @@
1manual
02
=== added file 'services/unity-panel-service-lockscreen.service.in'
--- services/unity-panel-service-lockscreen.service.in 1970-01-01 00:00:00 +0000
+++ services/unity-panel-service-lockscreen.service.in 2016-08-31 03:25:56 +0000
@@ -0,0 +1,7 @@
1[Unit]
2Description=Backing Service for the Unity Panel in Lockscreen mode
3PartOf=unity-screen-locked.target
4
5[Service]
6ExecStart=${CMAKE_INSTALL_FULL_LIBDIR}/unity/unity-panel-service --lockscreen-mode
7Restart=on-failure
08
=== added file 'services/unity-panel-service.override'
--- services/unity-panel-service.override 1970-01-01 00:00:00 +0000
+++ services/unity-panel-service.override 2016-08-31 03:25:56 +0000
@@ -0,0 +1,1 @@
1manual
02
=== added file 'services/unity-panel-service.service.in'
--- services/unity-panel-service.service.in 1970-01-01 00:00:00 +0000
+++ services/unity-panel-service.service.in 2016-08-31 03:25:56 +0000
@@ -0,0 +1,9 @@
1[Unit]
2Description=Backing Service for the Unity Panel
3After=unity7.service
4PartOf=graphical-session.target
5BindsTo=indicators-pre.target
6
7[Service]
8ExecStart=${CMAKE_INSTALL_FULL_LIBDIR}/unity/unity-panel-service
9Restart=on-failure
010
=== added file 'services/unity-screen-locked.target'
--- services/unity-screen-locked.target 1970-01-01 00:00:00 +0000
+++ services/unity-screen-locked.target 2016-08-31 03:25:56 +0000
@@ -0,0 +1,4 @@
1[Unit]
2Description=A target that, when running, represents the screen being locked
3Wants=ubuntu-panel-service-lock.service
4PartOf=graphical-session.target
05
=== modified file 'tests/CMakeLists.txt'
--- tests/CMakeLists.txt 2015-12-17 22:32:37 +0000
+++ tests/CMakeLists.txt 2016-08-31 03:25:56 +0000
@@ -286,6 +286,7 @@
286 test_switcher_controller_class.cpp286 test_switcher_controller_class.cpp
287 test_switcher_model.cpp287 test_switcher_model.cpp
288 test_switcher_view.cpp288 test_switcher_view.cpp
289 test_systemd_wrapper.cpp
289 test_tabiterator.cpp290 test_tabiterator.cpp
290 test_texture_cache.cpp291 test_texture_cache.cpp
291 test_text_input.cpp292 test_text_input.cpp
292293
=== modified file 'tests/test_lockscreen_controller.cpp'
--- tests/test_lockscreen_controller.cpp 2016-06-21 14:40:26 +0000
+++ tests/test_lockscreen_controller.cpp 2016-08-31 03:25:56 +0000
@@ -83,9 +83,10 @@
83 , session_manager(std::make_shared<NiceMock<session::MockManager>>())83 , session_manager(std::make_shared<NiceMock<session::MockManager>>())
84 , key_grabber(std::make_shared<key::MockGrabber::Nice>())84 , key_grabber(std::make_shared<key::MockGrabber::Nice>())
85 , dbus_manager(std::make_shared<DBusManager>(session_manager))85 , dbus_manager(std::make_shared<DBusManager>(session_manager))
86 , systemd_wrapper(std::make_shared<SystemdWrapper>())
86 , upstart_wrapper(std::make_shared<UpstartWrapper>())87 , upstart_wrapper(std::make_shared<UpstartWrapper>())
87 , shield_factory(std::make_shared<ShieldFactoryMock>())88 , shield_factory(std::make_shared<ShieldFactoryMock>())
88 , controller(dbus_manager, session_manager, key_grabber, upstart_wrapper, shield_factory)89 , controller(dbus_manager, session_manager, key_grabber, systemd_wrapper, upstart_wrapper, shield_factory)
89 {}90 {}
9091
91 struct ControllerWrap : Controller92 struct ControllerWrap : Controller
@@ -93,9 +94,10 @@
93 ControllerWrap(DBusManager::Ptr const& dbus_manager,94 ControllerWrap(DBusManager::Ptr const& dbus_manager,
94 session::Manager::Ptr const& session_manager,95 session::Manager::Ptr const& session_manager,
95 key::Grabber::Ptr const& key_grabber,96 key::Grabber::Ptr const& key_grabber,
97 SystemdWrapper::Ptr const& systemd_wrapper,
96 UpstartWrapper::Ptr const& upstart_wrapper,98 UpstartWrapper::Ptr const& upstart_wrapper,
97 ShieldFactoryInterface::Ptr const& shield_factory)99 ShieldFactoryInterface::Ptr const& shield_factory)
98 : Controller(dbus_manager, session_manager, key_grabber, upstart_wrapper, shield_factory, /* test_mode */ true)100 : Controller(dbus_manager, session_manager, key_grabber, systemd_wrapper, upstart_wrapper, shield_factory, /* test_mode */ true)
99 {}101 {}
100102
101 using Controller::shields_;103 using Controller::shields_;
@@ -112,6 +114,7 @@
112 session::MockManager::Ptr session_manager;114 session::MockManager::Ptr session_manager;
113 key::MockGrabber::Ptr key_grabber;115 key::MockGrabber::Ptr key_grabber;
114 DBusManager::Ptr dbus_manager;116 DBusManager::Ptr dbus_manager;
117 unity::SystemdWrapper::Ptr systemd_wrapper;
115 unity::UpstartWrapper::Ptr upstart_wrapper;118 unity::UpstartWrapper::Ptr upstart_wrapper;
116119
117 ShieldFactoryMock::Ptr shield_factory;120 ShieldFactoryMock::Ptr shield_factory;
118121
=== added file 'tests/test_systemd_wrapper.cpp'
--- tests/test_systemd_wrapper.cpp 1970-01-01 00:00:00 +0000
+++ tests/test_systemd_wrapper.cpp 2016-08-31 03:25:56 +0000
@@ -0,0 +1,111 @@
1// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
2/*
3* Copyright (c) 2016 Canonical Ltd
4*
5* This program is free software: you can redistribute it and/or modify
6* it under the terms of the GNU General Public License version 3 as
7* published by the Free Software Foundation.
8*
9* This program is distributed in the hope that it will be useful,
10* but WITHOUT ANY WARRANTY; without even the implied warranty of
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12* GNU General Public License for more details.
13*
14* You should have received a copy of the GNU General Public License
15* along with this program. If not, see <http://www.gnu.org/licenses/>.
16*
17* Authored by: Ted Gould <ted@canonical.com>
18*/
19
20#include <gtest/gtest.h>
21using namespace testing;
22
23#include "unity-shared/SystemdWrapper.h"
24
25#include <UnityCore/GLibDBusServer.h>
26#include <UnityCore/Variant.h>
27
28#include "test_utils.h"
29
30namespace
31{
32
33const std::string SYSTEMD =
34R"(<node>
35 <interface name="org.freedesktop.systemd1.Manager">
36 <method name="StartUnit">
37 <arg name="name" type="s" direction="in" />
38 <arg name="mode" type="s" direction="in" />
39 <arg name="job" type="o" direction="out" />
40 </method>
41 <method name="StopUnit">
42 <arg name="name" type="s" direction="in" />
43 <arg name="mode" type="s" direction="in" />
44 <arg name="job" type="o" direction="out" />
45 </method>
46 </interface>
47</node>)";
48
49struct MockSystemdWrapper : unity::SystemdWrapper {
50 MockSystemdWrapper()
51 : SystemdWrapper(SystemdWrapper::TestMode())
52 {}
53};
54
55struct TestSystemdWrapper : public Test
56{
57 TestSystemdWrapper()
58 {
59 systemd_server_ = std::make_shared<unity::glib::DBusServer>("com.canonical.Unity.Test.Systemd");
60 systemd_server_->AddObjects(SYSTEMD, "/org/freedesktop/systemd1");
61
62 Utils::WaitUntilMSec([this] { return systemd_server_->IsConnected(); });
63 Utils::WaitUntilMSec([this] { return systemd_wrapper_.IsConnected(); });
64 }
65
66 unity::glib::DBusServer::Ptr systemd_server_;
67 MockSystemdWrapper systemd_wrapper_;
68};
69
70
71TEST_F(TestSystemdWrapper, Start)
72{
73 bool start_sent = false;
74
75 systemd_server_->GetObjects().front()->SetMethodsCallsHandler([&] (std::string const& method, GVariant* par) -> GVariant* {
76 if (method == "StartUnit")
77 {
78 start_sent = true;
79
80 std::string event_name = glib::Variant(g_variant_get_child_value(par, 0)).GetString();
81 EXPECT_EQ("unity-screen-locked", event_name);
82 }
83
84 return nullptr;
85 });
86
87 systemd_wrapper_.Start("unity-screen-locked");
88 Utils::WaitUntil(start_sent);
89}
90
91TEST_F(TestSystemdWrapper, Stop)
92{
93 bool stop_sent = false;
94
95 systemd_server_->GetObjects().front()->SetMethodsCallsHandler([&] (std::string const& method, GVariant* par) -> GVariant* {
96 if (method == "StopUnit")
97 {
98 stop_sent = true;
99
100 std::string event_name = glib::Variant(g_variant_get_child_value(par, 0)).GetString();
101 EXPECT_EQ("unity-screen-locked", event_name);
102 }
103
104 return nullptr;
105 });
106
107 systemd_wrapper_.Stop("unity-screen-locked");
108 Utils::WaitUntil(stop_sent);
109}
110
111}
0112
=== modified file 'tools/CMakeLists.txt'
--- tools/CMakeLists.txt 2016-07-18 17:26:01 +0000
+++ tools/CMakeLists.txt 2016-08-31 03:25:56 +0000
@@ -28,3 +28,6 @@
28add_executable(unity-active-plugins-safety-check unity_active_plugins_safety_check.cpp)28add_executable(unity-active-plugins-safety-check unity_active_plugins_safety_check.cpp)
29target_link_libraries(unity-active-plugins-safety-check ${LIBS})29target_link_libraries(unity-active-plugins-safety-check ${LIBS})
30install(TARGETS unity-active-plugins-safety-check DESTINATION ${CMAKE_INSTALL_LIBDIR}/unity/)30install(TARGETS unity-active-plugins-safety-check DESTINATION ${CMAKE_INSTALL_LIBDIR}/unity/)
31
32configure_file (${CMAKE_CURRENT_SOURCE_DIR}/unity-compiz-profile-select.in ${CMAKE_CURRENT_BINARY_DIR}/unity-compiz-profile-select @ONLY)
33install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/unity-compiz-profile-select DESTINATION ${CMAKE_INSTALL_LIBDIR}/unity/)
3134
=== added file 'tools/unity-compiz-profile-select.in'
--- tools/unity-compiz-profile-select.in 1970-01-01 00:00:00 +0000
+++ tools/unity-compiz-profile-select.in 2016-08-31 03:25:56 +0000
@@ -0,0 +1,25 @@
1#!/bin/bash
2
3set -e
4
5# If gnome-session is going to start compiz,
6# we don't want to be the ones doing it.
7
8if grep -q compiz /usr/share/gnome-session/sessions/ubuntu.session ; then
9 echo "GNOME Session is starting Compiz"
10 stop ; exit 0
11fi
12
13compiz_profile="ubuntu"
14
15if ! /usr/lib/nux/unity_support_test -p; then
16 compiz_profile="ubuntu-lowgfx"
17fi
18
19echo "Using compiz profile '$compiz_profile'"
20
21initctl set-env -g COMPIZ_CONFIG_PROFILE="$compiz_profile"
22systemctl set-environment --user COMPIZ_CONFIG_PROFILE="$compiz_profile"
23
24export COMPIZ_CONFIG_PROFILE="$compiz_profile"
25exec @CMAKE_INSTALL_FULL_LIBDIR@/unity/unity-active-plugins-safety-check
026
=== modified file 'unity-shared/CMakeLists.txt'
--- unity-shared/CMakeLists.txt 2016-08-12 11:21:48 +0000
+++ unity-shared/CMakeLists.txt 2016-08-31 03:25:56 +0000
@@ -60,6 +60,7 @@
60 SpreadFilter.cpp60 SpreadFilter.cpp
61 SpreadWidgets.cpp61 SpreadWidgets.cpp
62 StaticCairoText.cpp62 StaticCairoText.cpp
63 SystemdWrapper.cpp
63 TextureCache.cpp64 TextureCache.cpp
64 TextInput.cpp65 TextInput.cpp
65 TextureThumbnailProvider.cpp66 TextureThumbnailProvider.cpp
6667
=== added file 'unity-shared/SystemdWrapper.cpp'
--- unity-shared/SystemdWrapper.cpp 1970-01-01 00:00:00 +0000
+++ unity-shared/SystemdWrapper.cpp 2016-08-31 03:25:56 +0000
@@ -0,0 +1,103 @@
1// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 3 -*-
2/*
3* Copyright © 2016 Canonical Ltd
4*
5* This program is free software: you can redistribute it and/or modify
6* it under the terms of the GNU General Public License version 3 as
7* published by the Free Software Foundation.
8*
9* This program is distributed in the hope that it will be useful,
10* but WITHOUT ANY WARRANTY; without even the implied warranty of
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12* GNU General Public License for more details.
13*
14* You should have received a copy of the GNU General Public License
15* along with this program. If not, see <http://www.gnu.org/licenses/>.
16*
17* Authored by: Ted Gould <ted@canonical.com>
18*/
19
20#include "SystemdWrapper.h"
21
22#include <UnityCore/GLibDBusProxy.h>
23
24namespace unity
25{
26
27//
28// Start private implementation
29//
30
31class SystemdWrapper::Impl
32{
33public:
34 Impl(bool test);
35
36 void Start(std::string const& name);
37 void Stop(std::string const& name);
38 bool IsConnected();
39
40private:
41 glib::DBusProxy::Ptr systemd_proxy_;
42};
43
44SystemdWrapper::Impl::Impl(bool test)
45{
46 std::string busname = "org.freedesktop.systemd1";
47 if (test) {
48 busname = "com.canonical.Unity.Test.Systemd";
49 }
50
51 systemd_proxy_ = std::make_shared<unity::glib::DBusProxy>(busname, "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager");
52}
53
54void SystemdWrapper::Impl::Start(std::string const& name)
55{
56 if (IsConnected()) {
57 systemd_proxy_->Call("StartUnit", g_variant_new("(ss)", name.c_str(), "replace"));
58 }
59}
60
61void SystemdWrapper::Impl::Stop(std::string const& name)
62{
63 if (IsConnected()) {
64 systemd_proxy_->Call("StopUnit", g_variant_new("(ss)", name.c_str(), "replace"));
65 }
66}
67
68bool SystemdWrapper::Impl::IsConnected()
69{
70 return systemd_proxy_->IsConnected();
71}
72
73//
74// End private implementation
75//
76
77SystemdWrapper::SystemdWrapper()
78 : pimpl_(new Impl(false))
79{}
80
81SystemdWrapper::SystemdWrapper(SystemdWrapper::TestMode const& tm)
82 : pimpl_(new Impl(true))
83{}
84
85SystemdWrapper::~SystemdWrapper()
86{}
87
88void SystemdWrapper::Start(std::string const& name)
89{
90 pimpl_->Start(name);
91}
92
93void SystemdWrapper::Stop(std::string const& name)
94{
95 pimpl_->Stop(name);
96}
97
98bool SystemdWrapper::IsConnected()
99{
100 return pimpl_->IsConnected();
101}
102
103}
0104
=== added file 'unity-shared/SystemdWrapper.h'
--- unity-shared/SystemdWrapper.h 1970-01-01 00:00:00 +0000
+++ unity-shared/SystemdWrapper.h 2016-08-31 03:25:56 +0000
@@ -0,0 +1,55 @@
1// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
2/*
3* Copyright © 2016 Canonical Ltd
4*
5* This program is free software: you can redistribute it and/or modify
6* it under the terms of the GNU General Public License version 3 as
7* published by the Free Software Foundation.
8*
9* This program is distributed in the hope that it will be useful,
10* but WITHOUT ANY WARRANTY; without even the implied warranty of
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12* GNU General Public License for more details.
13*
14* You should have received a copy of the GNU General Public License
15* along with this program. If not, see <http://www.gnu.org/licenses/>.
16*
17* Authored by: Ted Gould <ted@canonical.com>
18*/
19
20#ifndef UNITY_SYSTEMD_WRAPPER
21#define UNITY_SYSTEMD_WRAPPER
22
23#include <memory>
24
25namespace unity
26{
27
28class SystemdWrapper
29{
30public:
31 typedef std::shared_ptr<SystemdWrapper> Ptr;
32
33 SystemdWrapper();
34 ~SystemdWrapper();
35
36 void Start(std::string const& name);
37 void Stop(std::string const& name);
38 bool IsConnected();
39
40protected:
41 struct TestMode {};
42 SystemdWrapper(TestMode const&);
43
44private:
45 // Noncopyable
46 SystemdWrapper(SystemdWrapper const&) = delete;
47 SystemdWrapper& operator=(SystemdWrapper const&) = delete;
48
49 class Impl;
50 std::unique_ptr<Impl> pimpl_;
51};
52
53}
54
55#endif
056
=== modified file 'unity7.conf.in'
--- unity7.conf.in 2016-07-21 13:01:59 +0000
+++ unity7.conf.in 2016-08-31 03:25:56 +0000
@@ -4,27 +4,7 @@
4start on xsession SESSION=ubuntu and started unity-settings-daemon4start on xsession SESSION=ubuntu and started unity-settings-daemon
5stop on desktop-end5stop on desktop-end
66
7pre-start script7pre-start exec @CMAKE_INSTALL_FULL_LIBDIR@/unity-compiz-profile-select
8 # If gnome-session is going to start compiz,
9 # we don't want to be the ones doing it.
10
11 if grep -q compiz /usr/share/gnome-session/sessions/ubuntu.session ; then
12 echo "GNOME Session is starting Compiz"
13 stop ; exit 0
14 fi
15
16 compiz_profile="ubuntu"
17
18 if ! /usr/lib/nux/unity_support_test -p; then
19 compiz_profile="ubuntu-lowgfx"
20 fi
21
22 echo "Using compiz profile '$compiz_profile'"
23 initctl set-env -g COMPIZ_CONFIG_PROFILE="$compiz_profile"
24 export COMPIZ_CONFIG_PROFILE="$compiz_profile"
25
26 ${CMAKE_INSTALL_FULL_LIBDIR}/unity/unity-active-plugins-safety-check
27end script
288
29respawn9respawn
30exec compiz10exec compiz
3111
=== added file 'unity7.override'
--- unity7.override 1970-01-01 00:00:00 +0000
+++ unity7.override 2016-08-31 03:25:56 +0000
@@ -0,0 +1,1 @@
1manual
02
=== added file 'unity7.service.in'
--- unity7.service.in 1970-01-01 00:00:00 +0000
+++ unity7.service.in 2016-08-31 03:25:56 +0000
@@ -0,0 +1,11 @@
1[Unit]
2Description=Unity Shell v7
3Requires=unity-settings-daemon.service unity-panel-service.service bamfdaemon.service
4Wants=unity-gtk-module.service
5After=unity-settings-daemon.service
6PartOf=graphical-session.target
7
8[Service]
9ExecStart=/usr/bin/compiz
10ExecStartPre=@CMAKE_INSTALL_FULL_LIBDIR@/unity-compiz-profile-select
11Restart=on-failure