Commit Graph

45 Commits

Author SHA1 Message Date
Bananymous 57ae74f908 Terminal: Implement more ANSI escape handling
This patch adds L and M codes for inserting and deleting lines and SGR 7
for inverting colors
2024-09-26 15:07:08 +03:00
Bananymous 1a6804b4b4 Terminal: Make Terminal::handle_csi() return invalidated rectangle
When I updated Terminal to only do a single invalidation after all of
input text was printed, I forgot to change handle_csi
2024-09-26 15:05:11 +03:00
Bananymous 82e6a3582d LibGUI: cleanup Window::shift_vertical and add copy_horizontal_slice 2024-09-26 15:00:14 +03:00
Bananymous 1b0086217c Terminal: Do scrolling in putchar if necessary
I overlooked that handling *newline* scrolls would be enough. You can
definitely scroll more if printing a lot of text which wraps to the next
line.
2024-09-23 15:00:47 +03:00
Bananymous fbb99de728 ls: Show symlink target with `-l` 2024-09-17 19:12:34 +03:00
Bananymous a6b973003b WindowServer: chmod the correct file 2024-09-17 18:35:27 +03:00
Bananymous 04ae53b6df Shell: Add back accidentally deleted `cd` and `time` builtins 2024-09-17 16:38:45 +03:00
Bananymous 708a720d9d Kernel: Remove SYS_OPEN
This can be done with SYS_OPENAT with fd set to AT_FDCWD
2024-09-17 16:16:47 +03:00
Bananymous c3040a04a3 Terminal: Optimize printing a lot
Terminal used to run `yes` at around 400 lines per second

This patch pumps that to over 100'000 lines per second!

There are 2 optimizations done:
  1. only invalidate window once after rendering is done
  2. if printing more than `rows()` newlines skip prior data
2024-09-15 03:12:26 +03:00
Bananymous d68ad893f0 Kernel/Shell: Add support for delete key 2024-09-14 22:45:48 +03:00
Bananymous 4ca147699d Shell: use printf and putchar instead of fprintf and fputc 2024-09-14 22:37:09 +03:00
Bananymous abed41b8fa Shell: Remove builtin tests
Test should be programs in /bin instead
2024-09-14 22:28:33 +03:00
Bananymous 2604a55f80 Shell: Make ctrl+c start a new command 2024-09-14 22:27:32 +03:00
Bananymous 97da386ed6 WindowServer: Make focused window bounce by pressing F2
This was an awesome idea by [@Dcraftbg](https://github.com/Dcraftbg)
2024-09-12 20:09:23 +03:00
Bananymous c706829a91 WindowServer: Make corner-radius a variable in config file! 2024-09-12 20:07:30 +03:00
Bananymous 6cd246a38e WindowServer: Add support for rounded corners and transparency 2024-09-12 19:35:44 +03:00
Bananymous 43e88c0ae0 Terminal: Add alpha channel to colors
This doesn't do anything yet, but will when I add transparency support
for WindowServer
2024-09-12 19:34:25 +03:00
Bananymous bf01b935bd WindowServer: Start Terminal with Super+Enter
this allows doing something in GUI after Terminal is closed

also WindowServer is now stopped with Super+Shift+E
2024-09-11 22:18:08 +03:00
Bananymous 98c011e6a6 WindowServer: Open all fds as CLOEXEC
This will allow forking the window server cleanly :D
2024-09-11 22:17:31 +03:00
Bananymous 86dcb5c471 init: Don't leak pwent fd to child processes 2024-09-11 22:11:05 +03:00
Bananymous 4006a04817 DynamicLoader: Don't do file backed mapping over file bounds 2024-09-11 19:30:35 +03:00
Bananymous 19d16620a6 DynamicLoader: Don't do file backed mapping for filesz == 0 2024-09-05 14:50:05 +03:00
Bananymous e8bcebfb8e DynamicLoader: Use file backed mmap when possible 2024-09-05 13:59:39 +03:00
Bananymous 9aed8dbe6b Toolchain: Build crtbeginS.o crtendS.o and shared libgcc 2024-09-05 12:58:21 +03:00
Bananymous aa7e92b275 Userspace: Write a dynamic loader
This allows running executing dynamically linked executables!
2024-09-05 12:58:21 +03:00
Bananymous f30947336a BuildSystem: Cleanup cmake files 2024-09-05 12:52:25 +03:00
Bananymous 5f92807fdd userspace: Allow building without SSE
I had added changes that had broken compilation without sse support
2024-09-02 21:25:00 +03:00
Bananymous bec3e8654f Shell: Implement escaping quotes in quoted strings 2024-08-24 17:13:50 +03:00
Bananymous 46b34817d2 snake: Remove random goto statements when regenerating apple's position 2024-08-16 17:36:37 +03:00
Bananymous 723e458bd7 Kernel/Terminal: Update terminal color themes and fix TTY bright/dark 2024-08-12 21:15:55 +03:00
Bananymous 1bd7b86e60 Terminal: Implement cursor blinking
This looks much nicer than the old static cursor
2024-08-12 14:24:17 +03:00
Bananymous 18e7cf2069 Terminal: Add cursor rendering
Cursor is now shown at the current position. It can be hidden (or shown)
with the ansi `\033[?25h` or `\033[?25l`
2024-08-12 00:50:06 +03:00
Bananymous 9e79ef2a91 Terminal: Use pseudo terminal instead of pipes
Terminal can now send signals from keyboard (ctrl+c) to programs running
in the terminal!
2024-08-11 01:02:59 +03:00
Bananymous f08d429851 Terminal: Add utf8 parsing for input
This patch adds possibility to render multibyte utf8 codepoints!
2024-08-11 00:54:51 +03:00
Bananymous 1c67b5e812 Kernel: Fix wait syscall to report status of exited children 2024-08-09 16:52:35 +03:00
Bananymous 91d513a672 2000th COMMIT: userspace: Implement basic fetch program bananfetch
This patch adds a obligatory fetch program to banan-os!

This program (`bananfetch`) fetches some basic information about the
operating system and the hardware its running on!
2024-08-09 15:58:56 +03:00
Bananymous a578527012 Kernel/LibC: Implement ioctl(TIOCGWINSZ)
This allows ncurses to get the window size!
2024-08-01 22:56:26 +03:00
Bananymous 20d38ed28c LibC/Shell: Implement gethostname() and shell uses it for hostname 2024-07-31 23:53:55 +03:00
Bananymous e00efca170 Userspace: Pprogram template and loadfont mark install as optional 2024-07-21 17:41:40 +03:00
Bananymous 61f0043cd8 resolver: Fix infinite debug printing loop, if client disconnects 2024-07-16 15:05:07 +03:00
Bananymous 5b8fdbc82d LibC: Don't expose math.h in stdlib.h 2024-07-16 12:47:38 +03:00
Bananymous a5cb4057f9 Kernel: Implement unified input files for device hot-plugging support
/dev/keyboard and /dev/mouse can be read for events from any attached
keyboard or mouse respectively. This makes device hot-plugging support
pretty much automatic for TTY, GUI, and whatever takes input.
2024-07-15 22:11:15 +03:00
Bananymous 442ea8a692 BAN: Remove Optional emplace constructor
This was kind breaking some initializations. Emplacing is still possible
through Optional::emplace
2024-07-14 01:53:50 +03:00
Bananymous a97a574718 Kernel: Rewrite the whole input system
PS/2 code is now kind of messed up, but it works. Keyboards and mice are
now an abstract class that is automatically exposed to userspace. This
will make adding USB input much nicer.
2024-07-14 01:53:50 +03:00
Bananymous 8ddab05ed3 BuildSystem: Cleanup userspace directory layout
userspace programs are now in userspace/programs
userspace tests are now in userspace/tests

This makes listing userspace projects much cleaner. Libraries were
already separated to their own directory, so other programs should also.
2024-07-03 09:18:02 +03:00