Add ShowMonitorLabels2 D-Bus API

Add a new D-Bus method for setting the monitor labels. This new method
takes connector names instead of output ids for associating with actual
monitors.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
Jonas Ådahl 2017-04-06 13:18:39 +08:00
parent 082bc20bb9
commit 4cd4678194
2 changed files with 28 additions and 0 deletions

View File

@ -120,6 +120,25 @@ const OsdMonitorLabeler = new Lang.Class({
}
},
show2: function(client, params) {
if (!this._trackClient(client))
return;
this._reset();
for (let connector in params) {
let monitor = this._monitorManager.get_monitor_for_connector(connector);
if (monitor == -1)
continue;
this._monitorLabels.get(monitor).push(params[connector].deep_unpack());
}
for (let [monitor, labels] of this._monitorLabels.entries()) {
labels.sort();
this._osdLabels.push(new OsdMonitorLabel(monitor, labels.join(' ')));
}
},
hide: function(client) {
if (!this._untrackClient(client))
return;

View File

@ -28,6 +28,9 @@ const GnomeShellIface = '<node> \
<method name="ShowMonitorLabels"> \
<arg type="a{uv}" direction="in" name="params" /> \
</method> \
<method name="ShowMonitorLabels2"> \
<arg type="a{sv}" direction="in" name="params" /> \
</method> \
<method name="HideMonitorLabels" /> \
<method name="FocusApp"> \
<arg type="s" direction="in" name="id"/> \
@ -250,6 +253,12 @@ const GnomeShell = new Lang.Class({
Main.osdMonitorLabeler.show(sender, dict);
},
ShowMonitorLabels2Async: function(params, invocation) {
let sender = invocation.get_sender();
let [dict] = params;
Main.osdMonitorLabeler.show2(sender, dict);
},
HideMonitorLabelsAsync: function(params, invocation) {
let sender = invocation.get_sender();
Main.osdMonitorLabeler.hide(sender);