summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sway/container.vala23
-rw-r--r--lib/sway/ipc.vala157
-rw-r--r--lib/sway/node.vala211
-rw-r--r--lib/sway/output.vala40
-rw-r--r--lib/sway/sway.vala352
-rw-r--r--lib/sway/window.vala20
-rw-r--r--lib/sway/workspace.vala28
7 files changed, 416 insertions, 415 deletions
diff --git a/lib/sway/container.vala b/lib/sway/container.vala
index 7a0fc93..414c902 100644
--- a/lib/sway/container.vala
+++ b/lib/sway/container.vala
@@ -1,27 +1,30 @@
namespace AstalSway {
- public class Container : Node {
+public class Container : Node {
public bool sticky;
public bool floating;
public bool focused;
public string border;
public int border_width;
public int fullscreen_mode;
+ public float percent { get; private set; }
public Container() {
- node_type = NodeType.CONTAINER;
+ node_type = NodeType.CONTAINER;
}
internal override void sync(Json.Object obj) {
- border = obj.get_string_member("border");
- border_width = (int)obj.get_int_member("current_border_width");
- sticky = obj.get_boolean_member("sticky");
- floating = obj.get_string_member("type") == "floating_con";
- fullscreen_mode = (int)obj.get_int_member("fullscreen_mode");
- base.sync(obj);
+ border = obj.get_string_member("border");
+ border_width = (int)obj.get_int_member("current_border_width");
+ sticky = obj.get_boolean_member("sticky");
+ floating = obj.get_string_member("type") == "floating_con";
+ fullscreen_mode = (int)obj.get_int_member("fullscreen_mode");
+ percent = (float)obj.get_double_member("percent");
+
+ base.sync(obj);
}
public override void focus() {
- Sway.get_default().run_command(@"[con_id=$id] focus");
+ Sway.get_default().run_command(@"[con_id=$id] focus");
}
- }
+}
}
diff --git a/lib/sway/ipc.vala b/lib/sway/ipc.vala
index 772ab40..3fb4650 100644
--- a/lib/sway/ipc.vala
+++ b/lib/sway/ipc.vala
@@ -1,7 +1,7 @@
namespace AstalSway {
- private const string IPC_MAGIC = "i3-ipc";
+private const string IPC_MAGIC = "i3-ipc";
- public enum PayloadType {
+public enum PayloadType {
MESSAGE_RUN_COMMAND = 0,
MESSAGE_GET_WORKSPACES = 1,
MESSAGE_SUBSCRIBE = 2,
@@ -27,113 +27,112 @@ namespace AstalSway {
EVENT_TICK = 0x80000007,
EVENT_BAR_STATE_UPDATE = 0x80000014,
EVENT_INPUT = 0x80000015,
- }
+}
- private struct IpcReponse {
+private struct IpcReponse {
public PayloadType type;
public string payload;
- }
+}
+
-
- // Basic interface to send and receive data through Sway IPjC
- private class Ipc : Object {
+// Basic interface to send and receive data through Sway IPjC
+private class Ipc : Object {
private string SWAYSOCK = GLib.Environment.get_variable("SWAYSOCK");
internal void init() throws Error {
- SWAYSOCK = GLib.Environment.get_variable("SWAYSOCK");
-
- if (SWAYSOCK == null) {
- critical("Unable to detect Sway");
- return;
- }
+ SWAYSOCK = GLib.Environment.get_variable("SWAYSOCK");
+
+ if (SWAYSOCK == null) {
+ critical("Unable to detect Sway");
+ return;
+ }
}
internal SocketConnection? connection() {
- try {
- SocketConnection socket = new SocketClient().connect(new UnixSocketAddress(SWAYSOCK), null);
- return socket;
- } catch (Error err) {
- critical(err.message);
- return null;
- }
+ try {
+ SocketConnection socket = new SocketClient().connect(new UnixSocketAddress(SWAYSOCK), null);
+ return socket;
+ } catch (Error err) {
+ critical(err.message);
+ return null;
+ }
}
internal void send(OutputStream stream, PayloadType type, string payload) {
- Array<uint8> message = new Array<uint8> ();
+ Array<uint8> message = new Array<uint8> ();
- uint8[] magic_str = IPC_MAGIC.data;
- uint32 pl_length = (uint32) payload.length;
- uint32 pl_type = (uint32) type;
- uint8[] pl_data = payload.data;
+ uint8[] magic_str = IPC_MAGIC.data;
+ uint32 pl_length = (uint32) payload.length;
+ uint32 pl_type = (uint32) type;
+ uint8[] pl_data = payload.data;
- message.append_vals(magic_str, magic_str.length);
- message.append_vals((uint8 *)&pl_length, 4);
- message.append_vals((uint8 *)&pl_type, 4);
- message.append_vals(pl_data, pl_data.length);
-
- stream.write(message.data);
+ message.append_vals(magic_str, magic_str.length);
+ message.append_vals((uint8 *)&pl_length, 4);
+ message.append_vals((uint8 *)&pl_type, 4);
+ message.append_vals(pl_data, pl_data.length);
+
+ stream.write(message.data);
}
internal IpcReponse? receive(InputStream stream) {
- var header = stream.read_bytes(14);
- uint8 data[14] = header.get_data();
- if (data == null) {
- return null;
- }
- uint32 pl_length = *(uint32 *)&data[IPC_MAGIC.length];
- PayloadType pl_type = *(uint32 *)&data[IPC_MAGIC.length+4];
-
- var payload = stream.read_bytes(pl_length);
-
- var result = payload.get_data();
- result += '\0';
-
- return {pl_type, (string)result};
+ var header = stream.read_bytes(14);
+ uint8 data[14] = header.get_data();
+ if (data == null) {
+ return null;
+ }
+ uint32 pl_length = *(uint32 *)&data[IPC_MAGIC.length];
+ PayloadType pl_type = *(uint32 *)&data[IPC_MAGIC.length+4];
+
+ var payload = stream.read_bytes(pl_length);
+
+ var result = payload.get_data();
+ result += '\0';
+
+ return {pl_type, (string)result};
}
internal async IpcReponse? receive_async(InputStream stream) {
- var header = yield stream.read_bytes_async(14, Priority.DEFAULT, null);
- uint8 data[14] = header.get_data();
- if (data == null) {
- return null;
- }
- uint32 pl_length = *(uint32 *)&data[IPC_MAGIC.length];
- PayloadType pl_type = *(uint32 *)&data[IPC_MAGIC.length+4];
-
- var payload = yield stream.read_bytes_async(pl_length, Priority.DEFAULT, null);
-
- var result = payload.get_data();
- result += '\0';
+ var header = yield stream.read_bytes_async(14, Priority.DEFAULT, null);
+ uint8 data[14] = header.get_data();
+ if (data == null) {
+ return null;
+ }
+ uint32 pl_length = *(uint32 *)&data[IPC_MAGIC.length];
+ PayloadType pl_type = *(uint32 *)&data[IPC_MAGIC.length+4];
+
+ var payload = yield stream.read_bytes_async(pl_length, Priority.DEFAULT, null);
+
+ var result = payload.get_data();
+ result += '\0';
- return {pl_type, (string)result};
+ return {pl_type, (string)result};
}
public string message(PayloadType type, string payload) {
- SocketConnection conn = connection();
- if (conn == null) {
- return "";
- }
-
- send(conn.output_stream, type, payload);
- var result = receive(conn.input_stream);
- conn.close(null);
+ SocketConnection conn = connection();
+ if (conn == null) {
+ return "";
+ }
+
+ send(conn.output_stream, type, payload);
+ var result = receive(conn.input_stream);
+ conn.close(null);
- return result.payload;
+ return result.payload;
}
public async string message_async(PayloadType type, string payload) {
- SocketConnection conn = connection();
- if (conn == null) {
- return "";
- }
-
- send(conn.output_stream, type, payload);
- var result = yield receive_async(conn.input_stream);
- conn.close(null);
+ SocketConnection conn = connection();
+ if (conn == null) {
+ return "";
+ }
+
+ send(conn.output_stream, type, payload);
+ var result = yield receive_async(conn.input_stream);
+ conn.close(null);
- return result.payload;
+ return result.payload;
}
-
- }
+}
}
diff --git a/lib/sway/node.vala b/lib/sway/node.vala
index 24dbd49..69cc0c1 100644
--- a/lib/sway/node.vala
+++ b/lib/sway/node.vala
@@ -1,21 +1,21 @@
namespace AstalSway {
- public enum NodeType {
+public enum NodeType {
ROOT,
WORKSPACE,
CONTAINER,
WINDOW,
OUTPUT,
SCRATCHPAD
- }
+}
- public struct Rectangle {
+public struct Rectangle {
public static Rectangle from_json(Json.Object obj) {
- return Rectangle() {
- x = (int)obj.get_int_member("x"),
- y = (int)obj.get_int_member("y"),
- width = (int)obj.get_int_member("width"),
- height = (int)obj.get_int_member("height"),
- };
+ return Rectangle() {
+ x = (int)obj.get_int_member("x"),
+ y = (int)obj.get_int_member("y"),
+ width = (int)obj.get_int_member("width"),
+ height = (int)obj.get_int_member("height"),
+ };
}
@@ -23,15 +23,14 @@ namespace AstalSway {
public int y;
public int width;
public int height;
- }
+}
- public class Node : Object {
+public class Node : Object {
public int id {get; private set; }
public bool urgent { get; private set; }
public string name { get; private set; }
public string layout { get; private set; }
public string orientation { get; private set; }
- public float? percent { get; private set; }
public Rectangle rect { get; private set; }
public Rectangle window_rect { get; private set; }
public Rectangle deco_rect { get; private set; }
@@ -41,116 +40,116 @@ namespace AstalSway {
public List<weak Node> nodes;
public List<weak Window> windows { owned get {
- var arr = new List<weak Window> ();
- foreach (var node in nodes) {
- if (node.node_type == NodeType.WINDOW) {
- arr.append(node as Window);
- } else {
- arr.concat(node.windows);
+ var arr = new List<weak Window> ();
+ foreach (var node in nodes) {
+ if (node.node_type == NodeType.WINDOW) {
+ arr.append(node as Window);
+ } else {
+ arr.concat(node.windows);
+ }
}
- }
- return arr;
+ return arr;
}}
protected Json.Object data;
private static HashTable<int, Node> _temp_nodes =
- new HashTable<int, Node>(i => i, (a,b) => a==b);
+ new HashTable<int, Node>(i => i, (a,b) => a==b);
internal static HashTable<int, Node> _all_nodes =
- new HashTable<int, Node>(i => i, (a,b) => a==b);
+ new HashTable<int, Node>(i => i, (a,b) => a==b);
public static Node? build(Json.Object obj) {
- if (obj == null) {
+ if (obj == null) {
+ return null;
+ }
+ switch (obj.get_string_member("type")) {
+ case "workspace":
+ var ws = new Workspace();
+ return ws as Node;
+ case "con":
+ case "floating_con":
+ if (obj.get_member("pid") != null) {
+ var win = new Window();
+ return win as Node;
+ } else {
+ var con = new Container();
+ return con as Node;
+ }
+ case "output":
+ if (obj.get_string_member("name") == "__i3") {
+ var node = new Node();
+ node.node_type = NodeType.SCRATCHPAD;
+ return node;
+ } else {
+ var output = new Output();
+ return output as Node;
+ }
+ default:
+ var node = new Node();
+ node.node_type = NodeType.ROOT;
+ return node;
+ break;
+
+ }
return null;
- }
- switch (obj.get_string_member("type")) {
- case "workspace":
- var ws = new Workspace();
- return ws as Node;
- case "con":
- case "floating_con":
- if (obj.get_member("pid") != null) {
- var win = new Window();
- return win as Node;
- } else {
- var con = new Container();
- return con as Node;
- }
- case "output":
- if (obj.get_string_member("name") == "__i3") {
- var node = new Node();
- node.node_type = NodeType.SCRATCHPAD;
- return node;
- } else {
- var output = new Output();
- return output as Node;
- }
- default:
- var node = new Node();
- node.node_type = NodeType.ROOT;
- return node;
- break;
-
- }
- return null;
}
internal static async void sync_tree() {
- var str = yield Sway.get_default().message_async(PayloadType.MESSAGE_GET_TREE, "");
- var obj = Json.from_string(str).get_object();
- if (obj == null) {
- return;
- }
-
- Node root = build(obj);
- _temp_nodes = new HashTable<int, Node>(i => i, (a,b) => a==b);
- root.sync(obj);
- _temp_nodes.insert(root.id, root);
- _all_nodes = _temp_nodes;
+ var str = yield Sway.get_default().message_async(PayloadType.MESSAGE_GET_TREE, "");
+ var obj = Json.from_string(str).get_object();
+ if (obj == null) {
+ return;
+ }
+
+ Node root = build(obj);
+ _temp_nodes = new HashTable<int, Node>(i => i, (a,b) => a==b);
+ root.sync(obj);
+ _temp_nodes.insert(root.id, root);
+ _all_nodes = _temp_nodes;
}
internal virtual void sync(Json.Object obj) {
- if (obj == null) {
- return;
- }
- data = obj;
- id = (int)obj.get_int_member("id");
- name = obj.get_string_member("name");
- orientation = obj.get_string_member("orientation");
- layout = obj.get_string_member("layout");
- urgent = obj.get_boolean_member("urgent");
- rect = Rectangle.from_json(obj.get_object_member("rect"));
- window_rect = Rectangle.from_json(obj.get_object_member("window_rect"));
- deco_rect = Rectangle.from_json(obj.get_object_member("deco_rect"));
-
- var arr = obj.get_array_member("nodes");
- var arr2 = obj.get_array_member("floating_nodes");
- sync_nodes(arr);
- sync_nodes(arr2);
+ if (obj == null) {
+ return;
+ }
+ data = obj;
+ id = (int)obj.get_int_member("id");
+ name = obj.get_string_member("name");
+ orientation = obj.get_string_member("orientation");
+ layout = obj.get_string_member("layout");
+ urgent = obj.get_boolean_member("urgent");
+ rect = Rectangle.from_json(obj.get_object_member("rect"));
+ window_rect = Rectangle.from_json(obj.get_object_member("window_rect"));
+ deco_rect = Rectangle.from_json(obj.get_object_member("deco_rect"));
+
+ var arr = obj.get_array_member("nodes");
+ var arr2 = obj.get_array_member("floating_nodes");
+ sync_nodes(arr);
+ sync_nodes(arr2);
}
private void sync_nodes(Json.Array arr) {
- var new_nodes = new List<weak Node> ();
-
- foreach (var item in arr.get_elements()) {
- var obj = item.get_object();
- int id = (int)obj.get_int_member("id");
- var node = _all_nodes.get(id);
-
- if (node == null) {
- node = Node.build(obj);
+ var new_nodes = new List<weak Node> ();
+
+ foreach (var item in arr.get_elements()) {
+ var obj = item.get_object();
+ int id = (int)obj.get_int_member("id");
+ var node = _all_nodes.get(id);
+
+ if (node == null) {
+ node = Node.build(obj);
+ }
+
+ node.parent = this;
+ new_nodes.append(node);
+ _temp_nodes.insert(id, node);
+ node.sync(obj);
}
- node.parent = this;
- new_nodes.append(node);
- _temp_nodes.insert(id, node);
- node.sync(obj);
- }
-
- nodes = (owned) new_nodes;
+ nodes = (owned) new_nodes;
}
public virtual void focus() {
@@ -158,15 +157,15 @@ namespace AstalSway {
}
public bool contain(Node node) {
- parent = node.parent;
- while (parent != null) {
- if (id == parent.id) {
- return true;
+ parent = node.parent;
+ while (parent != null) {
+ if (id == parent.id) {
+ return true;
+ }
+ parent = parent.parent;
}
- parent = parent.parent;
- }
- return false;
+ return false;
}
- }
+}
}
diff --git a/lib/sway/output.vala b/lib/sway/output.vala
index 84eb549..cd0c7db 100644
--- a/lib/sway/output.vala
+++ b/lib/sway/output.vala
@@ -1,5 +1,5 @@
namespace AstalSway {
- public class Output : Node {
+public class Output : Node {
public string make;
public string model;
public string serial;
@@ -11,36 +11,36 @@ namespace AstalSway {
public string transform;
public Workspace current_workspace;
public List<weak Workspace> workspaces { owned get {
- var arr = new List<weak Workspace> ();
- foreach (var node in nodes) {
- arr.append(node as Workspace);
- }
- return arr;
+ var arr = new List<weak Workspace> ();
+ foreach (var node in nodes) {
+ arr.append(node as Workspace);
+ }
+ return arr;
}}
public Output() {
- node_type = NodeType.OUTPUT;
+ node_type = NodeType.OUTPUT;
}
internal override void sync(Json.Object obj) {
- base.sync(obj);
+ base.sync(obj);
}
internal void sync_output(Json.Object obj) {
- make = obj.get_string_member("make");
- model = obj.get_string_member("model");
- serial = obj.get_string_member("serial");
- transform = obj.get_string_member("transform");
- subpixel_hinting = obj.get_string_member("subpixel_hinting");
- active = obj.get_boolean_member("active");
- power = obj.get_boolean_member("power");
- focused = obj.get_boolean_member("focused");
- scale = (float)obj.get_double_member("scale");
- current_workspace = Sway.get_default().get_workspace(obj.get_string_member("current_workspace"));
+ make = obj.get_string_member("make");
+ model = obj.get_string_member("model");
+ serial = obj.get_string_member("serial");
+ transform = obj.get_string_member("transform");
+ subpixel_hinting = obj.get_string_member("subpixel_hinting");
+ active = obj.get_boolean_member("active");
+ power = obj.get_boolean_member("power");
+ focused = obj.get_boolean_member("focused");
+ scale = (float)obj.get_double_member("scale");
+ current_workspace = Sway.get_default().get_workspace(obj.get_string_member("current_workspace"));
}
public override void focus() {
- Sway.get_default().run_command(@"focus output $name");
+ Sway.get_default().run_command(@"focus output $name");
}
- }
+}
}
diff --git a/lib/sway/sway.vala b/lib/sway/sway.vala
index 2fa4c0e..f3d7f13 100644
--- a/lib/sway/sway.vala
+++ b/lib/sway/sway.vala
@@ -1,62 +1,62 @@
namespace AstalSway {
- public Sway get_default() {
- return Sway.get_default();
- }
+public Sway get_default() {
+ return Sway.get_default();
+}
- public class Sway : Object {
+public class Sway : Object {
private static Sway _instance;
private Ipc ipc;
private SocketConnection subscribe_socket;
public static Sway? get_default() {
- if (_instance != null) {
- return _instance;
- }
+ if (_instance != null) {
+ return _instance;
+ }
-
- var s = new Sway();
- try {
- s.init();
- _instance = s;
- return s;
- } catch (Error err) {
- critical(err.message);
- return null;
- }
+
+ var s = new Sway();
+ try {
+ s.init();
+ _instance = s;
+ return s;
+ } catch (Error err) {
+ critical(err.message);
+ return null;
+ }
}
private void init() throws Error {
- ipc = new Ipc();
- ipc.init();
- subscribe.begin(() => sync_tree.begin());
+ ipc = new Ipc();
+ ipc.init();
+ subscribe.begin(() => sync_tree.begin());
}
public Workspace focused_workspace;
public Output focused_output;
public Container? focused_container;
-
+
private static HashTable<int, Node> _nodes =
- new HashTable<int, Node>(i => i, (a,b) => a==b);
+ new HashTable<int, Node>(i => i, (a,b) => a==b);
public List<weak Node> nodes { owned get { return _nodes.get_values(); } }
private HashTable<string, Workspace> _workspaces =
- new HashTable<string, Workspace>(str_hash, str_equal);
+ new HashTable<string, Workspace>(str_hash, str_equal);
private HashTable<string, Output> _outputs =
- new HashTable<string, Output>(str_hash, str_equal);
+ new HashTable<string, Output>(str_hash, str_equal);
public List<weak Workspace> workspaces { owned get { return _workspaces.get_values(); } }
public List<weak Output> outputs { owned get { return _outputs.get_values(); } }
public List<weak Window> windows { owned get {
- var arr = new List<weak Window>();
- foreach (var node in nodes) {
- if (node.node_type == NodeType.WINDOW) {
- arr.append(node as Window);
- }
- }
- return arr;
+ var arr = new List<weak Window>();
+ foreach (var node in nodes) {
+ if (node.node_type == NodeType.WINDOW) {
+ arr.append(node as Window);
+ }
+ }
+ return arr;
} }
public Workspace get_workspace(string name) { return _workspaces.get(name); }
@@ -65,117 +65,117 @@ namespace AstalSway {
~Sway() {
if (subscribe_socket != null) {
- try {
- subscribe_socket.close(null);
- } catch (Error err) {
- critical(err.message);
- }
+ try {
+ subscribe_socket.close(null);
+ } catch (Error err) {
+ critical(err.message);
+ }
}
}
public string message(PayloadType type, string payload) {
- return ipc.message(type, payload);
+ return ipc.message(type, payload);
}
public async string message_async(PayloadType type, string payload) {
- return yield ipc.message_async(type, payload);
+ return yield ipc.message_async(type, payload);
}
public void run_command(string command) {
- message_async.begin(PayloadType.MESSAGE_RUN_COMMAND, command,
- (_, res) => {
- var arr = Json.from_string(message_async.end(res)).get_array();
- foreach (var item in arr.get_elements()) {
- var obj = item.get_object();
- if (!obj.get_boolean_member("success")) {
- critical("Command error: %s", obj.get_string_member("error"));
+ message_async.begin(PayloadType.MESSAGE_RUN_COMMAND, command,
+ (_, res) => {
+ var arr = Json.from_string(message_async.end(res)).get_array();
+ foreach (var item in arr.get_elements()) {
+ var obj = item.get_object();
+ if (!obj.get_boolean_member("success")) {
+ critical("Command error: %s", obj.get_string_member("error"));
+ }
+ }
}
- }
- }
- );
+ );
}
public async void sync_tree() {
- yield Node.sync_tree();
- _nodes = Node._all_nodes;
-
- var new_workspaces = new HashTable<string, Workspace>(str_hash, str_equal);
- var new_outputs = new HashTable<string, Output>(str_hash, str_equal);
+ yield Node.sync_tree();
+ _nodes = Node._all_nodes;
+
+ var new_workspaces = new HashTable<string, Workspace>(str_hash, str_equal);
+ var new_outputs = new HashTable<string, Output>(str_hash, str_equal);
-
- // It's possible that there's no focused container
- Container? new_focused_container = null;
- foreach (var node in nodes) {
- switch (node.node_type) {
- case NodeType.WORKSPACE:
- var ws = node as Workspace;
- if (ws.name != "__i3_scratch") {
- new_workspaces.insert(ws.name, ws);
- }
- break;
- case NodeType.CONTAINER:
- case NodeType.WINDOW:
- var con = node as Container;
- if (con.focused) {
- new_focused_container = con;
+ // It's possible that there's no focused container
+ Container? new_focused_container = null;
+
+ foreach (var node in nodes) {
+ switch (node.node_type) {
+ case NodeType.WORKSPACE:
+ var ws = node as Workspace;
+ if (ws.name != "__i3_scratch") {
+ new_workspaces.insert(ws.name, ws);
+ }
+ break;
+ case NodeType.CONTAINER:
+ case NodeType.WINDOW:
+ var con = node as Container;
+ if (con.focused) {
+ new_focused_container = con;
+ }
+ break;
+ case NodeType.OUTPUT:
+ var output = node as Output;
+ new_outputs.insert(output.name, output);
+ break;
}
- break;
- case NodeType.OUTPUT:
- var output = node as Output;
- new_outputs.insert(output.name, output);
- break;
}
- }
- _outputs = new_outputs;
- _workspaces= new_workspaces;
+ _outputs = new_outputs;
+ _workspaces = new_workspaces;
- focused_container = new_focused_container;
- yield sync_workspaces();
- yield sync_outputs();
+ focused_container = new_focused_container;
+ yield sync_workspaces();
+ yield sync_outputs();
}
private async void sync_workspaces() {
- var res = yield message_async(PayloadType.MESSAGE_GET_WORKSPACES, "");
- var arr = Json.from_string(res).get_array();
- foreach (var item in arr.get_elements()) {
- var obj = item.get_object();
- var ws = get_workspace(obj.get_string_member("name"));
- if (ws != null) {
- ws.sync_workspace(obj);
- if (ws.focused) {
- focused_workspace = ws;
- }
+ var res = yield message_async(PayloadType.MESSAGE_GET_WORKSPACES, "");
+ var arr = Json.from_string(res).get_array();
+ foreach (var item in arr.get_elements()) {
+ var obj = item.get_object();
+ var ws = get_workspace(obj.get_string_member("name"));
+ if (ws != null) {
+ ws.sync_workspace(obj);
+ if (ws.focused) {
+ focused_workspace = ws;
+ }
+ }
}
- }
}
private async void sync_outputs() {
- var res = yield message_async(PayloadType.MESSAGE_GET_OUTPUTS, "");
- var arr = Json.from_string(res).get_array();
- foreach (var item in arr.get_elements()) {
- var obj = item.get_object();
- var output = get_output(obj.get_string_member("name"));
- if (output != null) {
- output.sync_output(obj);
- if (output.focused) {
- focused_output = output;
- }
+ var res = yield message_async(PayloadType.MESSAGE_GET_OUTPUTS, "");
+ var arr = Json.from_string(res).get_array();
+ foreach (var item in arr.get_elements()) {
+ var obj = item.get_object();
+ var output = get_output(obj.get_string_member("name"));
+ if (output != null) {
+ output.sync_output(obj);
+ if (output.focused) {
+ focused_output = output;
+ }
+ }
}
- }
}
private async void subscribe() {
- if (subscribe_socket != null) {
- return;
- }
+ 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);
- handle_event(result);
- }
+ 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);
+ handle_event(result);
+ }
}
public signal void event(PayloadType type, string args);
@@ -192,82 +192,82 @@ namespace AstalSway {
public signal void container_float(Container con);
private async void handle_event(IpcReponse reply) {
- yield sync_tree();
- switch (reply.type) {
- case PayloadType.MESSAGE_SUBSCRIBE:
- return;
-
- case PayloadType.EVENT_WORKSPACE:
- handle_workspace_event(reply.payload);
- break;
-
- case PayloadType.EVENT_WINDOW:
- handle_window_event(reply.payload);
- break;
+ yield sync_tree();
+ switch (reply.type) {
+ case PayloadType.MESSAGE_SUBSCRIBE:
+ return;
+
+ case PayloadType.EVENT_WORKSPACE:
+ handle_workspace_event(reply.payload);
+ break;
+
+ case PayloadType.EVENT_WINDOW:
+ handle_window_event(reply.payload);
+ break;
- case PayloadType.EVENT_OUTPUT:
- yield sync_outputs();
- break;
+ case PayloadType.EVENT_OUTPUT:
+ yield sync_outputs();
+ break;
- default:
- break;
- }
-
- event(reply.type, reply.payload);
+ default:
+ break;
+ }
+
+ event(reply.type, reply.payload);
}
private void handle_workspace_event(string args) {
- var obj = Json.from_string(args).get_object();
+ var obj = Json.from_string(args).get_object();
- switch (obj.get_string_member("change")) {
- case "init":
- var name = obj.get_object_member("current").get_string_member("name");
- workspace_added(get_workspace(name));
- notify_property("workspaces");
- break;
+ switch (obj.get_string_member("change")) {
+ case "init":
+ var name = obj.get_object_member("current").get_string_member("name");
+ workspace_added(get_workspace(name));
+ notify_property("workspaces");
+ break;
- case "empty":
- var name = obj.get_object_member("current").get_string_member("name");
- workspace_removed(name);
- notify_property("workspaces");
- break;
+ case "empty":
+ var name = obj.get_object_member("current").get_string_member("name");
+ workspace_removed(name);
+ notify_property("workspaces");
+ break;
- case "focus":
- var new_name = obj.get_object_member("current").get_string_member("name");
- var old_name = obj.get_object_member("old").get_string_member("name");
- workspace_focus(get_workspace(new_name), get_workspace(old_name));
- break;
-
- default:
- break;
- }
+ case "focus":
+ var new_name = obj.get_object_member("current").get_string_member("name");
+ var old_name = obj.get_object_member("old").get_string_member("name");
+ workspace_focus(get_workspace(new_name), get_workspace(old_name));
+ break;
+
+ default:
+ break;
+ }
}
private void handle_window_event(string args) {
- var obj = Json.from_string(args).get_object();
- var change = obj.get_string_member("change");
- var container = obj.get_object_member("container");
- int id = (int)container.get_int_member("id");
+ var obj = Json.from_string(args).get_object();
+ var change = obj.get_string_member("change");
+ var container = obj.get_object_member("container");
+ int id = (int)container.get_int_member("id");
- switch (change) {
- case "new":
- window_added(get_node(id) as Window);
- notify_property("windows");
- break;
- case "close":
- window_close(container.get_string_member("name"));
- notify_property("windows");
- break;
- case "focus":
- window_focus(get_node(id) as Window);
- break;
- case "move":
- window_move(get_node(id) as Window);
- break;
- case "floating":
- container_float(get_node(id) as Container);
- break;
- }
+ switch (change) {
+ case "new":
+ window_added(get_node(id) as Window);
+ notify_property("windows");
+ break;
+ case "close":
+ window_close(container.get_string_member("name"));
+ notify_property("windows");
+ break;
+ case "focus":
+ window_focus(get_node(id) as Window);
+ break;
+ case "move":
+ window_move(get_node(id) as Window);
+ break;
+ case "floating":
+ container_float(get_node(id) as Container);
+ break;
+ }
}
- }
+}
}
diff --git a/lib/sway/window.vala b/lib/sway/window.vala
index f0e2f9a..012e76e 100644
--- a/lib/sway/window.vala
+++ b/lib/sway/window.vala
@@ -1,23 +1,23 @@
namespace AstalSway {
- public class Window : Container {
+public class Window : Container {
public string app_id;
public string shell;
public int pid;
public bool visible;
public bool inhibit_idle;
-
+
public Window() {
- node_type = NodeType.WINDOW;
+ node_type = NodeType.WINDOW;
}
internal override void sync(Json.Object obj) {
- app_id = obj.get_string_member("app_id");
- shell = obj.get_string_member("shell");
- pid = (int)obj.get_int_member("pid");
- visible = obj.get_boolean_member("visible");
- inhibit_idle = obj.get_boolean_member("inhibit_idle");
- base.sync(obj);
+ app_id = obj.get_string_member("app_id");
+ shell = obj.get_string_member("shell");
+ pid = (int)obj.get_int_member("pid");
+ visible = obj.get_boolean_member("visible");
+ inhibit_idle = obj.get_boolean_member("inhibit_idle");
+ base.sync(obj);
}
- }
+}
}
diff --git a/lib/sway/workspace.vala b/lib/sway/workspace.vala
index 148ac6e..c8f584c 100644
--- a/lib/sway/workspace.vala
+++ b/lib/sway/workspace.vala
@@ -1,33 +1,33 @@
namespace AstalSway {
- public class Workspace : Node {
+public class Workspace : Node {
public string representation;
public bool focused;
public bool visible;
public int num;
public Workspace() {
- node_type = NodeType.WORKSPACE;
+ node_type = NodeType.WORKSPACE;
}
internal override void sync(Json.Object obj) {
- var rep = obj.get_member("representation");
- if (rep != null) {
- representation = rep.get_string();
- } else {
- representation = "";
- }
- base.sync(obj);
+ var rep = obj.get_member("representation");
+ if (rep != null) {
+ representation = rep.get_string();
+ } else {
+ representation = "";
+ }
+ base.sync(obj);
}
internal void sync_workspace(Json.Object obj) {
- focused = obj.get_boolean_member("focused");
- visible = obj.get_boolean_member("visible");
- num = (int)obj.get_int_member("num");
+ focused = obj.get_boolean_member("focused");
+ visible = obj.get_boolean_member("visible");
+ num = (int)obj.get_int_member("num");
}
public override void focus() {
- Sway.get_default().run_command(@"focus workspace $name");
+ Sway.get_default().run_command(@"focus workspace $name");
}
- }
+}
}