+const {
+ windowAttentionHandler: defaultWindowAttentionHandler,
+ activateWindow
+} = imports.ui.main;
+
+const WHITELIST = [
+ "Emacs",
+ "Firefox"
+];
+
+const customWindowAttentionHandler = {
+ _onWindowDemandsAttention(display, window) {
+ if (WHITELIST.includes(window.wm_class)) {
+ activateWindow(window);
+ } else {
+ defaultWindowAttentionHandler._onWindowDemandsAttention(display, window);
+ }
+ }
+};
+
+function connect(obj) {
+ const handler = obj._onWindowDemandsAttention.bind(obj);
+ obj._windowDemandsAttentionId = global.display.connect('window-demands-attention', handler);
+ obj._windowMarkedUrgentId = global.display.connect('window-marked-urgent', handler);
+}
+
+function disconnect(obj) {
+ global.display.disconnect(obj._windowDemandsAttentionId);
+ global.display.disconnect(obj._windowMarkedUrgentId);
+}
+
+function init() {
+}
+
+function enable() {
+ log('Disconnecting default handler');
+ disconnect(defaultWindowAttentionHandler);
+
+ log('Connecting custom handler');
+ connect(customWindowAttentionHandler);
+
+ log('Enabled!');
+}
+
+function disable() {
+ log('Disconnecting custom handler');
+ disconnect(customWindowAttentionHandler);
+
+ log('Reconnecting default handler');
+ connect(defaultWindowAttentionHandler);
+
+ log('Disabled!');
+}