[gnome-shell/wip/carlosg/x11-services-on-demand: 4/4] windowManager: Handle starting/stopping of X11 services



commit 74269efd14656eae2b61fd681891675e373ae294
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Aug 15 13:29:53 2019 +0200

    windowManager: Handle starting/stopping of X11 services
    
    We now do 2 things along Xwayland startup/shutdown:
    - Start or stop the gnome-session-x11-services target, that will
      pull all X11 related services that the session might depend on.
    - As we start ibus-daemon manually, trigger a restart in order to
      toggle the XIM daemon on and off along with Xwayland presence.

 js/ui/windowManager.js | 10 ++++++++++
 1 file changed, 10 insertions(+)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index 346485ffdb..ca9c31fd60 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -17,6 +17,7 @@ const PadOsd = imports.ui.padOsd;
 const EdgeDragAction = imports.ui.edgeDragAction;
 const CloseDialog = imports.ui.closeDialog;
 const SwitchMonitor = imports.ui.switchMonitor;
+const IBusManager = imports.misc.ibusManager;
 
 const { loadInterfaceXML } = imports.misc.fileUtils;
 
@@ -1041,6 +1042,15 @@ var WindowManager = class {
             }
         });
 
+        global.display.connect('x11-display-opened', () => {
+            IBusManager.getIBusManager().restartDaemon(['--xim']);
+            Shell.util_start_systemd_unit('gnome-session-x11-services.target', 'fail');
+        });
+        global.display.connect('x11-display-closing', () => {
+            Shell.util_stop_systemd_unit('gnome-session-x11-services.target', 'fail');
+            IBusManager.getIBusManager().restartDaemon();
+        });
+
         Main.overview.connect('showing', () => {
             for (let i = 0; i < this._dimmedWindows.length; i++)
                 this._undimWindow(this._dimmedWindows[i]);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]