diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js index 3d378fad7..a31482131 100644 --- a/js/ui/windowMenu.js +++ b/js/ui/windowMenu.js @@ -115,6 +115,39 @@ const WindowMenu = new Lang.Class({ } } + let screen = global.screen; + let nMonitors = screen.get_n_monitors(); + if (nMonitors > 1) { + this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); + + let monitorIndex = window.get_monitor(); + + let upMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.UP); + if (upMonitorIndex != -1) { + this.addAction(_("Move to Monitor Up"), Lang.bind(this, function(event) { + window.move_to_monitor(upMonitorIndex); + })); + } + let downMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.DOWN); + if (downMonitorIndex != -1) { + this.addAction(_("Move to Monitor Down"), Lang.bind(this, function(event) { + window.move_to_monitor(downMonitorIndex); + })); + } + let leftMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.LEFT); + if (leftMonitorIndex != -1) { + this.addAction(_("Move to Monitor Left"), Lang.bind(this, function(event) { + window.move_to_monitor(leftMonitorIndex); + })); + } + let rightMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.RIGHT); + if (rightMonitorIndex != -1) { + this.addAction(_("Move to Monitor Right"), Lang.bind(this, function(event) { + window.move_to_monitor(rightMonitorIndex); + })); + } + } + this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); item = this.addAction(_("Close"), Lang.bind(this, function(event) {