+ // HomeScreen
+ hs->init(port, token.c_str());
+ // Set the event handler for Event_TapShortcut which will activate the surface for windowmanager
+ hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [qwm, myname](json_object *object){
+ json_object *appnameJ = nullptr;
+ if(json_object_object_get_ex(object, "application_name", &appnameJ))
+ {
+ const char *appname = json_object_get_string(appnameJ);
+ if(myname == appname)
+ {
+ qDebug("Surface %s got tapShortcut\n", appname);
+ qwm->activateSurface(myname);
+ }
+ }
+ });
+
+ engine.load(QUrl(QStringLiteral("qrc:/Mixer.qml")));
+
+ // Find the instantiated model QObject and connect the signals/slots
+ QList<QObject *> mobjs = engine.rootObjects();
+
+ QQuickWindow *window = qobject_cast<QQuickWindow *>(mobjs.first());
+ QObject::connect(window, SIGNAL(frameSwapped()), qwm, SLOT(slotActivateSurface()));
+
+ PaControlModel *pacm = mobjs.first()->findChild<PaControlModel *>("pacm");
+ QObject::connect(client, SIGNAL(controlAdded(int, QString, int, int, const char *, int)),
+ pacm, SLOT(addOneControl(int, QString, int, int, const char *, int)));
+ QObject::connect(client, SIGNAL(volumeExternallyChanged(uint32_t, uint32_t, uint32_t, uint32_t)),
+ pacm, SLOT(changeExternalVolume(uint32_t, uint32_t, uint32_t, uint32_t)));
+ QObject::connect(pacm, SIGNAL(volumeChanged(uint32_t, uint32_t, uint32_t, uint32_t)),
+ client, SLOT(setVolume(uint32_t, uint32_t, uint32_t, uint32_t)));
+
+ // Initalize PA client
+ client->init();
+ }