Bananymous
cf07b747fe
LibGUI/WindowServer: Implement per-window custom cursors
2025-06-28 16:55:13 +03:00
Bananymous
273e9bbc92
LibGUI/WindowServer: Implement per-window cursor hiding
2025-06-28 16:55:13 +03:00
Bananymous
7dcf1797e9
WindowServer: Cleanup packet callback calling
2025-06-28 16:55:13 +03:00
Bananymous
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
Bananymous
4fa40de557
WindowServer: Fix crash when moving mouse out of bounds
2025-06-28 16:55:13 +03:00
Bananymous
0cbc39698c
WindowServer: Ignore SIGPIPE so we don't crash unexpectedly
2025-06-28 16:55:13 +03:00
Bananymous
83069e433f
LibGUI/WindowServer: Implement window showing/hiding
2025-06-28 16:55:13 +03:00
Bananymous
bbb490b24f
LibGUI: Implement set_max_size
...
I already support set_min_size so why not this :)
2025-06-28 16:55:13 +03:00
Bananymous
4a00cb7d55
DynamicLoader: Add few more TLS relocations
2025-06-16 15:06:48 +03:00
Bananymous
ac22e006a4
Shell: Don't get stuck on broken state when failing to build command
2025-06-10 11:03:02 +03:00
Bananymous
30d5d85d1d
userspace: Add `test` utility
2025-06-08 23:56:39 +03:00
Bananymous
8ea0a67280
Terminal: Add support for tabs
2025-06-06 16:41:06 +03:00
Bananymous
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
Bananymous
cfeabc4580
Kernel/Terminal: Fix ANSI SGR 8 bit color parsing
2025-06-05 20:43:57 +03:00
Bananymous
49f203d61d
Terminal: Add ANSI CSI P and ANSI SGR 22
2025-06-05 02:41:48 +03:00
Bananymous
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
Bananymous
8de19aff3c
Kernel/Terminal: Fix 24 bit ANSI SGR color parsing
2025-06-05 02:38:07 +03:00
Bananymous
775c77c0fa
Shell: Get default backspace key from c_cc[VERASE]
2025-06-02 15:55:20 +03:00
Bananymous
e473118ec8
userspace: Add nologin "shell"
2025-06-02 12:26:16 +03:00
Bananymous
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
Bananymous
e9f8471a28
BAN: Return UTF::invalid from byte_length instead of 0
2025-06-02 11:39:18 +03:00
Bananymous
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
Bananymous
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
Bananymous
e7f0cd0c4b
stat: Fix return value when one of stats fails
2025-05-13 10:19:13 +03:00
Bananymous
a8844ddd28
WindowServer: Send mouse release to same window as mouse press
2025-05-13 10:16:21 +03:00
Bananymous
40617f0d5c
WindowServer: Make mod+d open program launcher
2025-05-06 00:42:15 +03:00
Bananymous
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
Bananymous
57f6f50939
Terminal: Implement dumb font bolding
...
This is just drawing character twice at one pixel offset
2025-05-05 23:09:53 +03:00
Bananymous
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
Bananymous
eb79c6c47c
mkdir: Add -p option
2025-05-05 19:16:29 +03:00
Bananymous
bf1cbb4cde
Terminal: Update terminal size and send SIGWINCH on resize
2025-05-05 19:09:21 +03:00
Bananymous
0689954433
Terminal: Set minimum size to 8x2 cells
2025-05-05 18:20:22 +03:00
Bananymous
5c37f198cb
WindowServer/LibGUI: Allow windows to set minimum size
2025-05-05 18:19:59 +03:00
Bananymous
3b02a9d4fe
WindowServer: Resize from closest corner
2025-05-05 18:19:19 +03:00
Bananymous
c9057aa498
WindowServer: Cleanup code and resize on fullscreen
2025-05-05 16:42:15 +03:00
Bananymous
2b0d198b05
Terminal: Allow resizing of the terminal
2025-05-05 03:15:30 +03:00
Bananymous
7798145c74
WindowServer: Implement window resizing
...
windows can now set resizable attribute which allows window server to
resize them
2025-05-05 03:14:50 +03:00
Bananymous
76d4e6bd18
LibGUI: Add support for changing window title
2025-05-05 01:10:05 +03:00
Bananymous
ccb81de85d
snake: Use box drawing characters
...
This makes it look much better.
Also fix bug with apples generating on top of snake's tail
2025-05-05 00:30:58 +03:00
Bananymous
73f9de6635
Terminal: Add support for ANSI SGR 8bit and 24bit
2025-04-23 22:03:53 +03:00
Bananymous
12b9c82086
Terminal: Don't wrap cursor right after x == cols
...
This prevents scrolling when bottom right scroll is written to
2025-04-23 22:03:53 +03:00
Bananymous
28bf2d6374
Kernel/Terminal: Add support for ANSI DSR
2025-04-23 06:14:56 +03:00
Bananymous
8a00b53050
Kernel/Terminal: Fix ANSI SGR m for multiple values
2025-04-23 05:29:22 +03:00
Bananymous
33a0f562d3
resolver: Add support for CNAME
...
Also rework resolver's send format and convert test-tcp and nslookup to
use getaddrinfo
2025-04-22 08:36:44 +03:00
Bananymous
34e680d792
ports/ncurses: Set some needed environment variables
...
ncurses depends on these being set to function properly
2025-04-22 01:56:34 +03:00
Bananymous
f467a9a309
resolver: Resolve hostname to loopback address
...
We don't currently support loopback adapters, but some ports were trying
to resolve it.
2025-04-22 00:48:26 +03:00
Bananymous
2cbfe70a28
DynamicLoader: Don't leak fds
2025-04-20 18:18:32 +03:00
Bananymous
7edfae8583
Shell: Cleanup `export` builtin
2025-04-19 21:23:26 +03:00
Bananymous
28275d86ea
LibC/Shell: set PWD env in Shell, not libc
...
I have no idea why I was doing it in the libc
2025-04-19 21:16:11 +03:00
Bananymous
8cd2d772b0
Shell: Print error if `execv` fails
2025-04-19 00:39:42 +03:00
Bananymous
d73a270fb1
Shell: Save and restore stdin flags after child returns
...
If child makes stdin nonblocking, Shell now restores it back to "normal"
flags
2025-04-18 18:26:09 +03:00
Bananymous
d9647868cc
Terminal: Fix ANSI SGR color invert
2025-04-18 17:32:24 +03:00
Bananymous
4409d0f03f
Terminal: Implement ANSI CSI A, B, b, d, @
2025-04-17 23:16:22 +03:00
Bananymous
ebd00b1eb2
Terminal: Implement ANSI SGR 10, 39, 49
2025-04-17 23:15:44 +03:00
Bananymous
ac90800c3c
Kernel/LibC/DynamicLoader: Implement thread local storage
...
For some reason this does not work on 32 bit version, so it is disabled
on that platform. I'll have to look into it later to find the bug :)
2025-04-15 23:33:39 +03:00
Bananymous
254fd80088
DynamicLoader: Cleanup and prepare for TLS
2025-04-15 23:31:17 +03:00
Bananymous
36baf7b0af
Kernel/LibC/DynamicLoader: Update process start ABI
...
We now use SysV abi for process startup
2025-04-15 23:05:52 +03:00
Bananymous
e6026cb0b8
DynamicLoader: Handle circular dependencies
2025-04-15 23:05:52 +03:00
Bananymous
4f49d60e4a
DynamicLoader/LibC: lazy malloc environ
...
This allows DynamicLoader to just set the value of global environ symbol
without libc needing to malloc it at startup
2025-04-15 23:05:52 +03:00
Bananymous
7fedd94cc5
ln: Don't require link target to exist for symlinks
2025-01-28 17:46:36 +02:00
Bananymous
c6cd185cb5
DynamicLoader: Fix copy relocations
...
Weak symbols are now actually resolved to the same strong symbol between
shared objects and copy relocations now work!
2025-01-24 19:23:33 +02:00
Bananymous
6f8f99f42c
Terminal: Set terminal size with TIOCSWINSZ when starting
...
This actually fixes the very broken vim port
2024-12-21 03:23:21 +02:00
Bananymous
a7f3351c0e
TaskBar: Prevent possible division by zero
...
If battery reports its full capacity as zero, battery percentage
calculation did a division by zero crashing the TaskBar :)
2024-12-18 18:36:26 +02:00
Bananymous
0642c569b4
TaskBar: Show battery percentage if available
2024-12-18 14:06:32 +02:00
Bananymous
51b6329c86
Kernel: Make backspace \b and delete 0x7F
...
This is what `vim` seems to expect and imo makes way more sense.
2024-12-05 17:34:37 +02:00
Bananymous
cb7d5c9d09
userspace: Implement `dirname` utility
2024-12-05 08:30:30 +02:00
Bananymous
097ab82529
userspace: Implement `basename` utility
2024-12-05 08:30:06 +02:00
Bananymous
56cc5da9fb
userspace: Implement `ln` utility
2024-12-05 08:14:45 +02:00
Bananymous
3a465cb94f
DynamicLoader: Don't write to pltgot if it does not exist
...
This makes `tcc` compile runnable executables
2024-12-04 21:11:43 +02:00
Bananymous
0fab7ad63b
Kernel: Fix SYS_FCNTL command handling :)
...
I had misunderstood how these work
2024-12-03 16:12:26 +02:00
Bananymous
415b20f884
LibC: Remove errno EEXISTS
...
I don't know why I had added this. It doesn't seem to be a thing on
either POSIX or linux. This was literally equivalent to EXIST
2024-12-02 20:13:38 +02:00
Bananymous
ffcc4fd03a
init: Make tty owned by logged in user
2024-12-02 20:13:37 +02:00
Bananymous
aaff5a65e1
Kernel/init: /dev/tty is now custom symlink to controlling terminal
...
kernel now passes the name of default console to init process so init
knows which file to open as stdio. before /dev/tty was referencing the
system wide current terminal which was inherited from cmdline. This
doesn't work anymore as we have pseudo terminals implemented that can
chage the current terminal during runtime :D
2024-11-17 22:38:52 +02:00
Bananymous
36d07065fb
WindowServer: Optimize msync calls to synchronize less bytes
...
This *probably* makes framebuffer much faster :D Window server does not
have to do page aligned and page sized syncs which used way too many
pixels.
2024-11-17 20:15:28 +02:00
Bananymous
411f32c766
WindowServer: Make select timeout more precise to hit target FPS
...
Previously window server was only running at around 40 FPS while
targetting 60. This makes the select timeout properly sleep so that
target FPS is reached!
2024-11-17 20:15:28 +02:00
Bananymous
e1b82e4e43
WindowServer: Don't allow focusing unfocusable windows after closing
2024-11-17 20:15:28 +02:00
Bananymous
df613775b6
WindowServer: Alpha blend background image in fullscreen mode
2024-11-17 20:15:28 +02:00
Bananymous
c96aee5740
WindowServer: Make mod+f toggle focused window fullscreen state
2024-11-15 20:45:56 +02:00
Bananymous
1c08849667
WindowServer: Draw cursor in fullscreen mode
2024-11-15 20:45:01 +02:00
Bananymous
73349e5e75
WindowServer: don't set window location to (0,0) when fullscreening
2024-11-15 20:43:41 +02:00
Bananymous
74ae411b69
WindowServer: Skip invalidation on other windows in fullscreen mode
2024-11-15 20:42:07 +02:00
Bananymous
d458592fb1
WindowServer: Don't focus unfocusable windows on window creation
2024-11-15 20:41:42 +02:00
Bananymous
a859558840
LibGUI: Window Creation takes attributes as an argument
...
This reduces windows showing/moving once they are opened and setting
their attributes.
2024-11-14 20:57:34 +02:00
Bananymous
bda2c663da
WindowServer: Implement fullscreen windows
...
If window size does not match framebuffer size, window data will be
scaled to framebuffer using nearest sampling for best performance.
2024-11-13 19:10:15 +02:00
Bananymous
5e041e6e5a
WindowServer: Make all terminating signals exit cleanly
...
This allows window server to restore input handling to TTY if window
server crashes on page fault or some other unexpected exception.
2024-11-13 17:32:13 +02:00
Bananymous
d19264eea8
WindowServer: Implement partial window resizing
...
This patch adds support for client side resizing, so clients can request
the server to resize their windows. WindowServer will respond with
resize event when and if the resizing is complete.
2024-11-13 17:30:12 +02:00
Bananymous
6bd51ac345
LibGUI: Client window now exits if it loses connection from server
...
This can be prevented by installing callback for socket errors.
2024-11-10 14:02:23 +02:00
Bananymous
cf21eb4b39
TaskBar: Cleanup TaskBar string generation
2024-11-08 02:57:35 +02:00
Bananymous
da8170c5b6
LibGUI: Add support for focusable windows and mouse capturing
...
These are essential parts of a window server! This allows making TaskBar
non-focusable.
2024-11-08 02:55:10 +02:00
Bananymous
f4be37700f
Kernel/userspace: rework floating point math
...
SSE is now unconditionally enabled any where and most of math.h is now
actually implemented. using __builtin_<func> lead to many hangs where
the builtin function would just call itself.
2024-11-03 20:28:15 +02:00
Bananymous
5fde2cf91a
TaskBar: Ignore window close events and exit on connection close
...
This prevents user from killing the task bar with keyboard shortcuts
2024-10-18 17:19:05 +03:00
Bananymous
d57e797147
WindowServer: Don't kill window on key event, instead send close event
...
This allows notifying the client about window close and let client
handle it as it wants
2024-10-18 17:17:58 +03:00
Bananymous
e99a271465
Userspace: Implement basic task bar
...
This bar only shows current time but its something to work on later!
2024-10-18 03:36:03 +03:00
Bananymous
d266c7f93b
LibGUI: Implement attributes for windows
...
Windows can now change whether they have title bar, rounded corners,
alpha channel and whether they are movable. Also windows can also change
their own position
2024-10-18 03:32:12 +03:00
Bananymous
d7e5c56e94
userspace: Use SOCK_STREAM instead of SOCK_SEQPACKET for WindowServer
...
This makes more sense if we have longer packages
2024-10-17 01:44:48 +03:00
Bananymous
91381546d5
Shell: Don't crash if history file does not exist :D
2024-10-16 00:41:28 +03:00
Bananymous
41e2b898ab
Shell: Implement history file for persistent history storage
2024-10-16 00:21:58 +03:00
Bananymous
6e981d1222
Shell: Add support for inline environment variables
...
e.g. `foo=$(echo lol) Shell -c 'echo $foo'` will now print lol!
2024-10-15 23:45:08 +03:00
Bananymous
8317bb13ca
Shell: Cleanup code by defining argument types as nested types
2024-10-15 23:44:06 +03:00
Bananymous
c40f244dff
Shell: remove `env` builtin and add `type`
...
other shells don't seem to implement as a builtin, so i won't either
2024-10-15 23:42:01 +03:00