Commit Graph

187 Commits

Author SHA1 Message Date
7831c74e8c DynamicLoader: Add support for LD_LIBRARY_PATH
Also fix a bug with dlopen with TLS
2025-07-31 22:47:29 +03:00
c1978f9133 Shell: Implement redirections
This works well enough. At the moment redirections can appear anywhere
in the command **after** environment variables and possible alias
command. This means commands like `>foo echo hello` are not supported.
I don't think this is big enough problem for now (99% time redirections
are given after arguments) that i would rewrite the environment and
alias parsing.
2025-07-22 16:54:06 +03:00
1e65f02ff7 Terminal: Handle bell and warn on unimplemented control characters 2025-07-21 14:28:09 +03:00
aa0249fadb WindowServer: Support absolute position mouse 2025-07-19 18:01:23 +03:00
22542a3a71 BuildSystem: Enable sse and sse2 for all programs and libraries
This is default on x86_64 but not on the 32 bit target. banan-os
already requires the CPU to support SSE even on 32 bit platforms.
2025-07-18 18:20:37 +03:00
6b9dbf625d userspace: Add audio utility to play audio files 2025-07-15 16:12:03 +03:00
3aea2c007d Userspace: Add simple AudioServer and LibAudio 2025-07-15 16:12:03 +03:00
19897ffa26 userspace: Compile test utility :D 2025-06-28 22:40:00 +03:00
42a10b21c7 userspace: Implement true and false utilities 2025-06-28 22:39:19 +03:00
5df0e25c1f userspace: Implement chown utility 2025-06-28 21:32:59 +03:00
c7c3dd7662 init/ports: Fix environment variables in init/ncurses
init no longer sets NCURSES_NO_UTF8_ACS
ncurses no longer sets TERM
2025-06-28 20:25:35 +03:00
e8491b34b8 Kernel/LibC: Rework TIOC{G,S}WINSZ more linux like
Userspace can freely set terminal size, kernel just updates it when for
example new font is loaded. Also SIGWINCH is now sent by kernel instead
of userspace.
2025-06-28 19:40:54 +03:00
521457eb92 DynamicLoader: Add support for calling destructors
After all libraries are initialized, their destructors are registered
using atexit
2025-06-28 16:55:13 +03:00
850b3284ac Terminal: Fix screen clearing when scrolling 2025-06-28 16:55:13 +03:00
5f07d53034 WindowServer: Send mod key to clients
Also roll back accidental mod key update from super->alt
2025-06-28 16:55:13 +03:00
cf07b747fe LibGUI/WindowServer: Implement per-window custom cursors 2025-06-28 16:55:13 +03:00
273e9bbc92 LibGUI/WindowServer: Implement per-window cursor hiding 2025-06-28 16:55:13 +03:00
7dcf1797e9 WindowServer: Cleanup packet callback calling 2025-06-28 16:55:13 +03:00
397219c22e LibC: Implement very hacky dlopen/dlsym/dclose
If ELF loading fails, this will just crash the program :D

And there is no support for RTLD_LOCAL
2025-06-28 16:55:13 +03:00
4fa40de557 WindowServer: Fix crash when moving mouse out of bounds 2025-06-28 16:55:13 +03:00
0cbc39698c WindowServer: Ignore SIGPIPE so we don't crash unexpectedly 2025-06-28 16:55:13 +03:00
83069e433f LibGUI/WindowServer: Implement window showing/hiding 2025-06-28 16:55:13 +03:00
bbb490b24f LibGUI: Implement set_max_size
I already support set_min_size so why not this :)
2025-06-28 16:55:13 +03:00
4a00cb7d55 DynamicLoader: Add few more TLS relocations 2025-06-16 15:06:48 +03:00
ac22e006a4 Shell: Don't get stuck on broken state when failing to build command 2025-06-10 11:03:02 +03:00
30d5d85d1d userspace: Add test utility 2025-06-08 23:56:39 +03:00
8ea0a67280 Terminal: Add support for tabs 2025-06-06 16:41:06 +03:00
5ad7d7edb1 DynamicLoader: Fix TLS on 32 bit platform
There were two problems with my previous implementation
- TLS was not allocated if nothing used it. There is a fallback
  initialization in _init_libc, but this was not enough if one of the
  init functions tried to access errno.
- __tls_get_addr was not resolved. If __tls_get_addr was called through
  a plt entry, everything would just break :(
2025-06-06 16:27:07 +03:00
cfeabc4580 Kernel/Terminal: Fix ANSI SGR 8 bit color parsing 2025-06-05 20:43:57 +03:00
49f203d61d Terminal: Add ANSI CSI P and ANSI SGR 22 2025-06-05 02:41:48 +03:00
a912a4dc67 LibGUI: Remove fill_color from texture copy API
Nothing was using this and it just overcomplicated everything
2025-06-05 02:40:51 +03:00
8de19aff3c Kernel/Terminal: Fix 24 bit ANSI SGR color parsing 2025-06-05 02:38:07 +03:00
775c77c0fa Shell: Get default backspace key from c_cc[VERASE] 2025-06-02 15:55:20 +03:00
e473118ec8 userspace: Add nologin "shell" 2025-06-02 12:26:16 +03:00
fdcb38ac1f Shell: Accept '\r' as enter
This happens with some terminals and i don't want to bother with fixing
my termios :D
2025-06-02 11:42:06 +03:00
e9f8471a28 BAN: Return UTF::invalid from byte_length instead of 0 2025-06-02 11:39:18 +03:00
1c882ea361 DynamicLoader: Don't print TODOs on PT_GNU_ headers
These should be either handled by kernel or just used as optimizations.
There is no requirement to handle them in dynamic loader
2025-06-01 13:48:03 +03:00
37dea8aee7 userspace: Implement basic less program
This is very simple and only supports couple of flags and scrolling
2025-05-29 01:00:28 +03:00
e7f0cd0c4b stat: Fix return value when one of stats fails 2025-05-13 10:19:13 +03:00
a8844ddd28 WindowServer: Send mouse release to same window as mouse press 2025-05-13 10:16:21 +03:00
40617f0d5c WindowServer: Make mod+d open program launcher 2025-05-06 00:42:15 +03:00
09745a7835 userspace: Implement program launcher
This is kinda useless as I only have Terminal and test-window
implemented. Also the code is really messy as I don't have GUI widgets.
2025-05-06 00:41:22 +03:00
57f6f50939 Terminal: Implement dumb font bolding
This is just drawing character twice at one pixel offset
2025-05-05 23:09:53 +03:00
f959905adf LibGUI: Rework window rendering
Abstract drawing surface to Texture. All windows now contain a texture
matching its size.
2025-05-05 23:08:01 +03:00
eb79c6c47c mkdir: Add -p option 2025-05-05 19:16:29 +03:00
bf1cbb4cde Terminal: Update terminal size and send SIGWINCH on resize 2025-05-05 19:09:21 +03:00
0689954433 Terminal: Set minimum size to 8x2 cells 2025-05-05 18:20:22 +03:00
5c37f198cb WindowServer/LibGUI: Allow windows to set minimum size 2025-05-05 18:19:59 +03:00
3b02a9d4fe WindowServer: Resize from closest corner 2025-05-05 18:19:19 +03:00
c9057aa498 WindowServer: Cleanup code and resize on fullscreen 2025-05-05 16:42:15 +03:00