git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit69d1912ff1d5f01cbca8e78f389dd0dd4fb73215
parent3ee47e7e0a
authorLeon Henrik Plickat <[email protected]>
date2021-03-27 11:36
riverctl: Print error messages instead of error traces for common user mistakes

 riverctl/main.zig | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/riverctl/main.zig b/riverctl/main.zig
index 1f64233..9df4e4d 100644
--- a/riverctl/main.zig
+++ b/riverctl/main.zig
@@ -44,6 +44,35 @@ pub const Globals = struct {
 };
 
 pub fn main() !void {
+    _main() catch |err| {
+        if (std.builtin.mode == .Debug)
+            return err;
+
+        switch (err) {
+            error.RiverControlNotAdvertised => printErrorExit(
+                \\The Wayland server does not support river-control-unstable-v1.
+                \\Do your versions of river and riverctl match?
+            , .{}),
+            error.RiverStatusManagerNotAdvertised => printErrorExit(
+                \\The Wayland server does not support river-status-unstable-v1.
+                \\Do your versions of river and riverctl match?
+            , .{}),
+            error.RiverOptionsManagerNotAdvertised => printErrorExit(
+                \\The Wayland server does not support river-options-unstable-v1.
+                \\Do your versions of river and riverctl match?
+            , .{}),
+            error.SeatNotAdverstised => printErrorExit(
+                \\The Wayland server did not advertise any seat.
+            , .{}),
+            error.XdgOutputNotAdvertised => printErrorExit(
+                \\The Wayland server does not support xdg-output-unstable-v1.
+            , .{}),
+            else => return err,
+        }
+    };
+}
+
+fn _main() !void {
     const display = try wl.Display.connect(null);
     const registry = try display.getRegistry();