diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sway/container.vala | 23 | ||||
-rw-r--r-- | lib/sway/ipc.vala | 157 | ||||
-rw-r--r-- | lib/sway/node.vala | 211 | ||||
-rw-r--r-- | lib/sway/output.vala | 40 | ||||
-rw-r--r-- | lib/sway/sway.vala | 352 | ||||
-rw-r--r-- | lib/sway/window.vala | 20 | ||||
-rw-r--r-- | lib/sway/workspace.vala | 28 |
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"); } - } +} } |