From 8b3f863404ca74e0538dee93765d66894dbdb4cd Mon Sep 17 00:00:00 2001 From: Yves Biener Date: Mon, 11 Nov 2024 13:32:39 +0100 Subject: [PATCH] mod(app): automatically hide cursor when running fullscreen tui's --- src/app.zig | 2 ++ src/terminal.zig | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/app.zig b/src/app.zig index c64dd61..c531e36 100644 --- a/src/app.zig +++ b/src/app.zig @@ -89,6 +89,7 @@ pub fn App(comptime E: type, comptime R: fn (comptime bool) type, comptime fulls if (fullscreen) { try terminal.saveScreen(); try terminal.enterAltScreen(); + try terminal.hideCursor(); } } @@ -109,6 +110,7 @@ pub fn App(comptime E: type, comptime R: fn (comptime bool) type, comptime fulls if (this.termios) |*termios| { try terminal.disableRawMode(termios); if (fullscreen) { + try terminal.showCursor(); try terminal.existAltScreen(); try terminal.restoreScreen(); } diff --git a/src/terminal.zig b/src/terminal.zig index 9c8cb91..0ba219c 100644 --- a/src/terminal.zig +++ b/src/terminal.zig @@ -43,6 +43,14 @@ pub fn clearScreen() !void { _ = try std.posix.write(std.posix.STDIN_FILENO, "\x1b[2J"); } +pub fn hideCursor() !void { + _ = try std.posix.write(std.posix.STDIN_FILENO, "\x1b[?25l"); +} + +pub fn showCursor() !void { + _ = try std.posix.write(std.posix.STDIN_FILENO, "\x1b[?25h"); +} + pub fn setCursorPositionHome() !void { _ = try std.posix.write(std.posix.STDIN_FILENO, "\x1b[H"); }