summaryrefslogtreecommitdiff
path: root/lib/sway/sway.vala
diff options
context:
space:
mode:
authornoname <[email protected]>2025-03-07 17:42:02 +1100
committernoname <[email protected]>2025-03-07 17:42:02 +1100
commitf40a5c5aa8a5242190464c30521e9aca8e8dc2f0 (patch)
treec7128b5027ecbe14c9df0d4fd4b956cf4bdae7ba /lib/sway/sway.vala
parentf77586bd467ac9d15068f6edfd6a1b856273c878 (diff)
change indent to 4 spaces
Diffstat (limited to 'lib/sway/sway.vala')
-rw-r--r--lib/sway/sway.vala352
1 files changed, 176 insertions, 176 deletions
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;
+ }
}
- }
+}
}