diff options
author | Aylur <[email protected]> | 2024-11-02 23:53:41 +0100 |
---|---|---|
committer | Aylur <[email protected]> | 2024-11-02 23:57:22 +0100 |
commit | cdaf8905ac3d566284719a29af6e4eddc10bb857 (patch) | |
tree | 6bd3ffc4848cae29dede4c489c8b5f5a17d0e085 /lib/astal | |
parent | 031321b3f418369a6c4ce578ba2673b7631117c1 (diff) | |
parent | d47b470f68a8e5f2d19f32fbfb1de95752ba8eb8 (diff) |
Merge branch 'main' into feat/gtk4
Diffstat (limited to 'lib/astal')
-rw-r--r-- | lib/astal/gtk3/src/widget/window.vala | 13 | ||||
-rw-r--r-- | lib/astal/io/application.vala | 69 | ||||
-rw-r--r-- | lib/astal/io/cli.vala | 53 |
3 files changed, 68 insertions, 67 deletions
diff --git a/lib/astal/gtk3/src/widget/window.vala b/lib/astal/gtk3/src/widget/window.vala index e513242..9287200 100644 --- a/lib/astal/gtk3/src/widget/window.vala +++ b/lib/astal/gtk3/src/widget/window.vala @@ -1,11 +1,12 @@ using GtkLayerShell; +[Flags] public enum Astal.WindowAnchor { - NONE = 0, - TOP = 1, - RIGHT = 2, - LEFT = 4, - BOTTOM = 8, + NONE, + TOP, + RIGHT, + LEFT, + BOTTOM, } public enum Astal.Exclusivity { @@ -112,7 +113,7 @@ public class Astal.Window : Gtk.Window { * If two perpendicular edges are anchored, the surface will be anchored to that corner. * If two opposite edges are anchored, the window will be stretched across the screen in that direction. */ - public int anchor { + public WindowAnchor anchor { set { if (check("set anchor")) return; diff --git a/lib/astal/io/application.vala b/lib/astal/io/application.vala index c7bd311..09b61b5 100644 --- a/lib/astal/io/application.vala +++ b/lib/astal/io/application.vala @@ -103,75 +103,58 @@ public static List<string> get_instances() { * Quit an an Astal instances. * It is the equivalent of `astal --quit -i instance`. */ -public static void quit_instance(string instance) { - try { - IApplication proxy = Bus.get_proxy_sync( - BusType.SESSION, - "io.Astal." + instance, - "/io/Astal/Application" - ); +public static void quit_instance(string instance) throws Error { + IApplication proxy = Bus.get_proxy_sync( + BusType.SESSION, + "io.Astal." + instance, + "/io/Astal/Application" + ); - proxy.quit(); - } catch (Error err) { - critical(err.message); - } + proxy.quit(); } /** * Open the Gtk debug tool of an an Astal instances. * It is the equivalent of `astal --inspector -i instance`. */ -public static void open_inspector(string instance) { - try { - IApplication proxy = Bus.get_proxy_sync( - BusType.SESSION, - "io.Astal." + instance, - "/io/Astal/Application" - ); +public static void open_inspector(string instance) throws Error { + IApplication proxy = Bus.get_proxy_sync( + BusType.SESSION, + "io.Astal." + instance, + "/io/Astal/Application" + ); - proxy.inspector(); - } catch (Error err) { - critical(err.message); - } + proxy.inspector(); } /** * Toggle a Window of an Astal instances. * It is the equivalent of `astal -i instance --toggle window`. */ -public static void toggle_window_by_name(string instance, string window) { - try { - IApplication proxy = Bus.get_proxy_sync( - BusType.SESSION, - "io.Astal." + instance, - "/io/Astal/Application" - ); +public static void toggle_window_by_name(string instance, string window) throws Error { + IApplication proxy = Bus.get_proxy_sync( + BusType.SESSION, + "io.Astal." + instance, + "/io/Astal/Application" + ); - proxy.toggle_window(window); - } catch (Error err) { - critical(err.message); - } + proxy.toggle_window(window); } /** * Send a message to an Astal instances. * It is the equivalent of `astal -i instance content of the message`. */ -public static string send_message(string instance, string msg) { +public static string send_message(string instance, string msg) throws Error { var rundir = Environment.get_user_runtime_dir(); var socket_path = @"$rundir/astal/$instance.sock"; var client = new SocketClient(); - try { - var conn = client.connect(new UnixSocketAddress(socket_path), null); - conn.output_stream.write(msg.concat("\x04").data); + var conn = client.connect(new UnixSocketAddress(socket_path), null); + conn.output_stream.write(msg.concat("\x04").data); - var stream = new DataInputStream(conn.input_stream); - return stream.read_upto("\x04", -1, null, null); - } catch (Error err) { - printerr(err.message); - return ""; - } + var stream = new DataInputStream(conn.input_stream); + return stream.read_upto("\x04", -1, null, null); } /** diff --git a/lib/astal/io/cli.vala b/lib/astal/io/cli.vala index 8fc0523..9e47b53 100644 --- a/lib/astal/io/cli.vala +++ b/lib/astal/io/cli.vala @@ -11,13 +11,19 @@ const OptionEntry[] options = { { "help", 'h', OptionFlags.NONE, OptionArg.NONE, ref help, null, null }, { "list", 'l', OptionFlags.NONE, OptionArg.NONE, ref list, null, null }, { "quit", 'q', OptionFlags.NONE, OptionArg.NONE, ref quit, null, null }, - { "quit", 'q', OptionFlags.NONE, OptionArg.NONE, ref quit, null, null }, { "inspector", 'I', OptionFlags.NONE, OptionArg.NONE, ref inspector, null, null }, { "toggle-window", 't', OptionFlags.NONE, OptionArg.STRING, ref toggle_window, null, null }, { "instance", 'i', OptionFlags.NONE, OptionArg.STRING, ref instance_name, null, null }, { null }, }; +int err(string msg) { + var red = "\x1b[31m"; + var r = "\x1b[0m"; + printerr(@"$(red)error: $(r)$msg"); + return 1; +} + int main(string[] argv) { try { var opts = new OptionContext(); @@ -25,9 +31,8 @@ int main(string[] argv) { opts.set_help_enabled(false); opts.set_ignore_unknown_options(false); opts.parse(ref argv); - } catch (OptionError err) { - printerr (err.message); - return 1; + } catch (OptionError e) { + return err(e.message); } if (help) { @@ -55,24 +60,30 @@ int main(string[] argv) { if (list) { foreach (var name in AstalIO.get_instances()) - stdout.printf("%s\n", name); + print(@"$name\n"); return 0; } - if (quit) { - AstalIO.quit_instance(instance_name); - return 0; - } + try { + if (quit) { + AstalIO.quit_instance(instance_name); + return 0; + } - if (inspector) { - AstalIO.open_inspector(instance_name); - return 0; - } + if (inspector) { + AstalIO.open_inspector(instance_name); + return 0; + } - if (toggle_window != null) { - AstalIO.toggle_window_by_name(instance_name, toggle_window); - return 0; + if (toggle_window != null) { + AstalIO.toggle_window_by_name(instance_name, toggle_window); + return 0; + } + } catch (DBusError.SERVICE_UNKNOWN e) { + return err(@"there is no \"$instance_name\" instance runnning\n"); + } catch (Error e) { + return err(e.message); } var request = ""; @@ -80,8 +91,14 @@ int main(string[] argv) { request = request.concat(" ", argv[i]); } - var reply = AstalIO.send_message(instance_name, request); - print("%s\n", reply); + try { + var reply = AstalIO.send_message(instance_name, request); + print("%s\n", reply); + } catch (IOError.NOT_FOUND e) { + return err(@"there is no \"$instance_name\" instance runnning\n"); + } catch (Error e) { + return err(e.message); + } return 0; } |