-
Notifications
You must be signed in to change notification settings - Fork 1
/
extension.js
72 lines (59 loc) · 1.64 KB
/
extension.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
const St = imports.gi.St;
const Main = imports.ui.main;
const Util = imports.misc.util;
const Shell = imports.gi.Shell;
let button;
function toggleCalculator() {
let win = _getWindowActor();
if (!win) {
Main.notify("Calculator Button Extension: Report this bug to the extension github page https://extensions.gnome.org/extension/1168/calculator-button/");
return;
}
if (win === 'start') {
try {
Util.trySpawnCommandLine('gnome-calculator');
} catch(err) {
try {
Util.trySpawnCommandLine('flatpak run org.gnome.Calculator');
} catch(err) {
Main.notify("Calculator Button Extension: Calculator not found. Is it installed (either RPM or flatpak)?");
}
}
}
if (win.has_focus()) {
if (win.minimized) {
win.unminimize();
win.activate(global.get_current_time());
} else {
win.minimize();
}
} else {
win.unminimize();
win.activate(global.get_current_time());
}
}
function _getWindowActor() {
ApplicationString = _('org.gnome.Calculator.desktop');
var window = Shell.AppSystem.get_default().lookup_app(ApplicationString).get_windows()[0];
if(typeof window == 'undefined') {
window = 'start';
}
return window;
}
function init(extensionMeta) {}
function enable() {
button = new St.Bin({
style_class: 'panel-button',
reactive: true,
can_focus: true,
track_hover: true});
let icon = new St.Icon({
icon_name: 'accessories-calculator-symbolic',
style_class: 'system-status-icon'});
button.set_child(icon);
button.connect('button-press-event', toggleCalculator);
Main.panel._rightBox.insert_child_at_index(button, 0);
}
function disable() {
Main.panel._rightBox.remove_child(button);
}