blob: 8f20952c26c5268181d47dec891b3b27bf4d522e (
plain)
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
|
namespace AstalSway {
public Sway get_default() {
return Sway.get_default();
}
public class Sway : Object {
private static Sway _instance;
private Ipc ipc;
private SocketConnection subscribe_socket;
public Workspace focused_workspace;
public static Sway? get_default() {
if (_instance != null) {
return _instance;
}
var s = new Sway();
var ipc = new Ipc();
try {
ipc.init();
s.ipc = ipc;
s.subscribe.begin();
_instance = s;
return s;
} catch (Error err) {
critical(err.message);
return null;
}
}
~Sway() {
if (subscribe_socket != null) {
try {
subscribe_socket.close(null);
} catch (Error err) {
critical(err.message);
}
}
}
public string message(PayloadType type, string payload) {
return ipc.message(type, payload);
}
public async string message_async(PayloadType type, string payload) {
return yield ipc.message_async(type, payload);
}
public async void subscribe() {
if (subscribe_socket != null) {
return;
}
subscribe_socket = ipc.connection();
ipc.send(subscribe_socket.output_stream, PayloadType.MESSAGE_SUBSCRIBE, "[ \"workspace\", \"window\" ]");
while (true) {
var result = yield ipc.receive_async(subscribe_socket.input_stream);
print(result.payload);
}
}
}
}
|