namespace AstalHyprland { public class Bind : Object { public bool locked { get; construct set; } public bool mouse { get; construct set; } public bool release { get; construct set; } public bool repeat { get; construct set; } public bool long_press { get; construct set; } public bool non_consuming { get; construct set; } public bool has_description { get; construct set; } public int64 modmask { get; construct set; } public string submap { get; construct set; } public string key { get; construct set; } public int64 keycode { get; construct set; } public bool catch_all { get; construct set; } public string description { get; construct set; } public string dispatcher { get; construct set; } public string arg { get; construct set; } internal Bind.from_json(Json.Object obj) { locked = obj.get_boolean_member("locked"); mouse = obj.get_boolean_member("mouse"); release = obj.get_boolean_member("release"); repeat = obj.get_boolean_member("repeat"); long_press = obj.get_member("longPress")?.get_boolean() ?? false; non_consuming = obj.get_boolean_member("non_consuming"); has_description = obj.get_member("has_description")?.get_boolean() ?? false; modmask = obj.get_int_member("modmask"); submap = obj.get_string_member("submap"); key = obj.get_string_member("key"); keycode = obj.get_int_member("keycode"); catch_all = obj.get_boolean_member("catch_all"); description = obj.get_member("description")?.get_string() ?? ""; dispatcher = obj.get_string_member("dispatcher"); arg = obj.get_string_member("arg"); } } public class Position : Object { public int x { get; construct set; } public int y { get; construct set; } internal Position.cursorpos(string pos) { var xy = pos.split(","); x = int.parse(xy[0].strip()); y = int.parse(xy[1].strip()); } } }