git.cappig.dev / apheleiaOS.git master

5ea87b171e0bec53af3f977240cc42f4e9b4049e master
cappig <[email protected]> ยท 4 months ago
WM/WS resize pipeline, SIGWINCH, and cursor theming

* Add WS resize ioctl/event plumbing (WSIOC_SET_SIZE + INPUT_EVENT_WINDOW_RESIZE), persistent per-window dirty coalescing, and safer framebuffer store copy/resize paths

* Wire SIGWINCH end-to-end on TIOCSWINSZ for PTY/TTY foreground process groups; keep default SIGWINCH action ignored

* Rework WM move/resize handling with edge/corner hit-testing, directional cursors, damage-driven compose/present, and release-time resize sync to eliminate resize corruption

* Update gui/window helpers and user apps (term, sh, vi, mbrot, wdemo) to consume runtime resize events, update winsize, and redraw cleanly

* Move cursor assets under /etc/cursors and extend wm.conf with cursors + color.* palette configuration
43 files changed, 2348 insertions, 455 deletions
kernel/sched/signal.c +1 -0
kernel/sys/framebuffer_dev.c +22 -24
kernel/sys/pty.c +9 -1
kernel/sys/tty.c +16 -2
kernel/sys/ws.c +386 -38
libs/gui/draw.c +47 -44
libs/gui/draw.h +4 -28
libs/gui/fb.h +12 -1
libs/gui/input.h +4 -0
libs/gui/ui.c +175 -21
libs/gui/ui.h +7 -3
libs/gui/ws.h +3 -0
libs/libc/signal.h +1 -0
libs/libc/sys/ioctl.h +1 -0
root/etc/cursor.ppm removed
root/etc/cursors/pointer.ppm created
root/etc/cursors/resize.ppm created
root/etc/cursors/resize_ew.ppm created
root/etc/cursors/resize_ns.ppm created
root/etc/cursors/resize_nw.ppm created
root/etc/cursors/resize_se.ppm created
root/etc/cursors/resize_sw.ppm created
root/etc/wm.conf +11 -1
user/mbrot/main.c +125 -33
user/sh/input.c +21 -0
user/sh/input.h +1 -0
user/sh/main.c +9 -0
user/term/main.c +70 -15
user/term/term_pty.c +14 -3
user/term/term_pty.h +2 -0
user/term/term_screen.c +168 -32
user/term/term_screen.h +4 -1
user/vi/main.c +19 -0
user/wdemo/main.c +9 -9
user/wm/main.c +248 -17
user/wm/wm.h +21 -4
user/wm/wm_background.c +9 -9
user/wm/wm_background.h +3 -3
user/wm/wm_cursor.c +81 -21
user/wm/wm_cursor.h +21 -2
user/wm/wm_loop.c +544 -52
user/wm/wm_loop.h +1 -1
user/wm/wm_state.c +279 -90