]> code.delx.au - sometimes-steal-my-focus/blob - extension.js
added libreoffice to whitelist
[sometimes-steal-my-focus] / extension.js
1 const {
2 windowAttentionHandler: defaultWindowAttentionHandler,
3 activateWindow
4 } = imports.ui.main;
5
6 const WHITELIST = [
7 "emacs",
8 "firefox",
9 "libreoffice-base",
10 "libreoffice-calc",
11 "libreoffice-draw",
12 "libreoffice-impress",
13 "libreoffice-writer",
14 "soffice"
15 ];
16
17 const customWindowAttentionHandler = {
18 _onWindowDemandsAttention(display, window) {
19 if (WHITELIST.includes(window.wm_class.toLowerCase())) {
20 activateWindow(window);
21 } else {
22 defaultWindowAttentionHandler._onWindowDemandsAttention(display, window);
23 }
24 }
25 };
26
27 function connect(obj) {
28 const handler = obj._onWindowDemandsAttention.bind(obj);
29 obj._windowDemandsAttentionId = global.display.connect('window-demands-attention', handler);
30 obj._windowMarkedUrgentId = global.display.connect('window-marked-urgent', handler);
31 }
32
33 function disconnect(obj) {
34 global.display.disconnect(obj._windowDemandsAttentionId);
35 global.display.disconnect(obj._windowMarkedUrgentId);
36 }
37
38 function init() {
39 }
40
41 function enable() {
42 log('Disconnecting default handler');
43 disconnect(defaultWindowAttentionHandler);
44
45 log('Connecting custom handler');
46 connect(customWindowAttentionHandler);
47
48 log('Enabled!');
49 }
50
51 function disable() {
52 log('Disconnecting custom handler');
53 disconnect(customWindowAttentionHandler);
54
55 log('Reconnecting default handler');
56 connect(defaultWindowAttentionHandler);
57
58 log('Disabled!');
59 }