alsa-visual/spark_ncurses.c
2025-03-19 18:03:54 +03:00

48 lines
702 B
C

#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <ncurses.h>
#include <sys/ioctl.h>
void sig_handler(int sig) {
(void)sig;
endwin();
exit(0);
}
int main(void) {
signal(SIGINT, sig_handler);
signal(SIGTERM, sig_handler);
struct winsize ws;
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0)
return 1;
initscr();
noecho();
curs_set(0);
timeout(0);
size_t middle = ws.ws_row / 2;
size_t args = 0;
while (1) {
if (args > ws.ws_col) {
refresh();
clear();
args = 0;
}
int val1;
read(STDIN_FILENO, &val1, sizeof(val1));
int k = val1 * (middle - 5) / INT_MAX;
mvprintw(middle + k, args, "@");
args++;
}
}