From 0cc1b272fce070e79b3d9350aacab2fe7010391a Mon Sep 17 00:00:00 2001 From: Aylur Date: Thu, 20 Jun 2024 15:46:08 +0200 Subject: init 0.1.0 --- src/workspace.vala | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/workspace.vala (limited to 'src/workspace.vala') diff --git a/src/workspace.vala b/src/workspace.vala new file mode 100644 index 0000000..075f86f --- /dev/null +++ b/src/workspace.vala @@ -0,0 +1,57 @@ +namespace AstalHyprland { +public class Workspace : Object { + public signal void removed (); + + public List _clients = new List(); + + public int id { get; private set; } + public string name { get; private set; } + public Monitor monitor { get; private set; } + public List clients { owned get { return _clients.copy(); } } + public bool has_fullscreen { get; private set; } + public Client last_client { get; private set; } + + public Workspace.dummy(int id, Monitor? monitor) { + this.id = id; + this.name = id.to_string(); + this.monitor = monitor; + } + + internal List filter_clients() { + var hyprland = Hyprland.get_default(); + var list = new List(); + foreach (var client in hyprland.clients) { + if (client.workspace == this) { + list.append(client); + } + } + + return list; + } + + internal void sync(Json.Object obj) { + var hyprland = Hyprland.get_default(); + + id = (int)obj.get_int_member("id"); + name = obj.get_string_member("name"); + has_fullscreen = obj.get_boolean_member("hasfullscreen"); + + monitor = hyprland.get_monitor((int)obj.get_int_member("monitorID")); + last_client = hyprland.get_client(obj.get_string_member("lastwindow")); + + var list = filter_clients(); + if (_clients.length() != list.length()) { + _clients = list.copy(); + notify_property("clients"); + } + } + + public void focus() { + Hyprland.get_default().dispatch("workspace", id.to_string()); + } + + public void move_to(Monitor m) { + Hyprland.get_default().dispatch("moveworkspacetomonitor", id.to_string() + " " + m.id.to_string()); + } +} +} -- cgit v1.2.3