Commit Graph
90 Commits
Author SHA1 Message Date
Bananymous e4bbc31c7b Keep track of client's pid 2026-06-04 01:29:04 +03:00
Bananymous a1f00aa443 Use 12 bits for client id and 20 bits for resource ids
This is more sensible than limiting ourselves to <255 clients
2026-06-04 01:28:15 +03:00
Bananymous d0606a1939 Remove banan-os's LibInput dependency
Platforms now define their own keymaps
2026-06-03 19:50:45 +03:00
Bananymous aa70815f5f Implement very basic grab pointer
This is definitely not correct with child windows but works with single
window apps (minecraft)
2026-06-01 22:24:17 +03:00
Bananymous 19f043744a Allow querying global cursor position
If a platform implements this, e.g. xeyes can track cursor when the
window is not receiving mouse movement events
2026-06-01 22:04:01 +03:00
Bananymous af2132315d Implement WarpPointer
This allows playing games that capture the cursor
2026-06-01 22:04:01 +03:00
Bananymous 83af554e8c Add support for global window position
This allows proper TranslateCoords and event root coordinate reporting
2026-06-01 20:39:47 +03:00
Bananymous b41d979dcb Port to SDL3 instead of SDL2
Main reason is that SDL3 allows getting keyboard mappings with modifiers
2026-06-01 20:35:56 +03:00
Bananymous 11ebced96a Destroy client's windows on disconnect
This makes sure client's windows are removed from the root window and
all of the destroy events are sent.
2026-06-01 20:35:56 +03:00
Bananymous 504eb2716b Fix QueryPointer
QueryPointer is supposed to return first child of the window containing
the pointer, not the deepest child. This fixes gtk getting into an
invalid state when pressing a mouse button
2026-06-01 20:35:56 +03:00
Bananymous 82edc9c76b Handle external window leave events 2026-06-01 20:35:56 +03:00
Bananymous 92e02dcadf Don't create platform window for small windows
These are usually internal event windows which should not be visible.
I'm not sure what the correct check for this would be...
gtk and other toolkits create a lot of dummy windows that should not be
visible.
2026-06-01 20:35:56 +03:00
Bananymous 97e82afd4d Optimize {,Shm}PutImage
Don't calculate clipping when its not needed. This can still be improved
by a ton, but it can wait :)
2026-06-01 04:55:43 +03:00
Bananymous d787afb7e3 Disable shared pixmaps on MIT-SHM
Our internal pixmap representation does not match what we advertice in
out pixmap formats, and there is no way to only enable 24 and 32 depth
pixmaps for SHM so just disable them all together. MIT-SHM can still be
used through Shm{Get,Put}Image. We probably should store pixmaps as we
say we do, but its too much work for now :^)
2026-06-01 04:55:43 +03:00
Bananymous f6a87f064f Add support for system cursors
When a client creates a cursor from the default cursor font, we try to
detect which cursor it is and create a native system cursor based on
that.
2026-06-01 04:55:43 +03:00
Bananymous 7fe5b0174f Allow sending enter/leave events between different native windows
This fixes hovering on popups
2026-06-01 03:01:31 +03:00
Bananymous 6450fd9a2f Add initial support for window types
This makes popup windows work much better
2026-06-01 03:01:31 +03:00
Bananymous 2ddd67dede Start work on making xbanan portable
This will allow usage of xbanan on non banan-os platforms. I added a
"native" SDL2 port so it can be used without the window manager
2026-06-01 01:27:49 +03:00
Bananymous b2c642f03d Don't make SHM extension dependent option
This was here because I though banan-os didn't define them, but they do
exist there :^)
2026-04-15 19:23:34 +03:00
Bananymous 654e878165 Allow compiling with just xorgproto installed 2026-04-15 19:22:56 +03:00
Bananymous 5076d3bbaf Add missing sys/socket.h include 2026-04-15 18:53:45 +03:00
Bananymous 7be8edada7 Add child window id to its parent
I had accidentally removed this in b228ef13c4 and it broke all programs
that were using child windows :D
2026-04-15 18:43:03 +03:00
Bananymous 07f2b5dbb7 Add hacky way to die when WindowServer dies
We keep a dummy window around which will receive a close event that
exits once WindowServer dies :^)
2026-04-15 18:21:03 +03:00
Bananymous a497e4267f Add README and LICENSE 2026-04-15 17:54:40 +03:00
Bananymous 7252c985b8 Add banan-os as a submodule instead of manually copying libraries 2026-04-15 17:54:31 +03:00
Bananymous f5e52b5ac8 Remove accidentally commited debug script ;) 2026-04-13 02:58:30 +03:00
Bananymous b228ef13c4 Fix null depth on CreateWindow 2026-03-23 17:15:57 +02:00
Bananymous f7150056c4 Cleanup debug prints 2026-02-23 03:02:07 +02:00
Bananymous bb7632d53f Fix input event state and child window
state represents state just before the event, not current

set child window to null if wid == child_wid
2026-02-23 03:00:08 +02:00
Bananymous 862eaa205a Fix parenthesis being flipped 2026-02-23 02:58:48 +02:00
Bananymous 61f8b2fa66 Implement per-client event masks
This allows multiple clients to listen for events on the same window.
Mostly used for listening events on the root window
2026-02-23 00:40:53 +02:00
Bananymous e376c57cda Remove unnecessary includes added by clangd 2026-02-22 22:16:33 +02:00
Bananymous 561aaecc3f Add support for changing window's fullscreen state 2026-02-22 22:16:33 +02:00
Bananymous 4886e71452 Cleanup WM_CLOSE_WINDOW atom handling
predefine needed atoms so we dont have to check if or when they are
made available
2026-02-22 22:15:48 +02:00
Bananymous 710b896a84 LibGUI/WindowServer: Add fullscreen events 2026-02-22 22:13:03 +02:00
Bananymous 8c2fea9edf Cleanup whitespace and suppress unused variable warnings 2026-02-22 22:13:03 +02:00
Bananymous 85bb292a31 Support WM_CLOSE_WINDOW 2026-02-22 22:13:03 +02:00
Bananymous 20f105f56c Fix predefined atom definitions
Atom names are not supposed to contain the XA_ prefix :D
2026-02-22 22:13:03 +02:00
Bananymous 3e0dc851c4 Link to system libraries on banan-os 2026-02-21 19:25:14 +02:00
Bananymous 26b65e1e6e Make glx and shm cmake options 2026-02-21 18:47:58 +02:00
Bananymous b90cbae5ae Add missing include 2026-02-21 18:39:11 +02:00
Bananymous 6119e8dc7a Implement FillPoly 2026-02-21 18:29:44 +02:00
Bananymous 4c1f869e32 Dont use c++26 extension 2026-02-21 17:18:25 +02:00
Bananymous 7018e1e17d Fix font pattern matching and add ListFontsWithInfo 2026-02-21 17:15:46 +02:00
Bananymous ccb2507ac3 Don't crash on failed Shm mapping 2026-02-21 17:15:02 +02:00
Bananymous a13b8617dc Implement line drawing PolyLine, PolySegment 2026-02-21 16:29:42 +02:00
Bananymous df32c7aa99 Add global safe getters for retrieving objects 2026-02-21 14:37:13 +02:00
Bananymous a52181e140 Implement GrabServer and UngrabServer
These seem very scary but they are part of the spec :)
2026-02-21 05:04:17 +02:00
Bananymous 8a0f287d8c Send NoExposure in CopyArea
Im not sure if/when i should be sending GraphicsExposure but this fixes
xterm hanging when scrolling
2026-02-21 04:32:48 +02:00
Bananymous 88ccba3dee BAN: Add reallocator and make Vector use it 2026-02-21 03:54:08 +02:00
Bananymous 778af77654 BAN: Add is_trivially_copyable trait 2026-02-21 03:53:41 +02:00
Bananymous 2f4c0e87a1 Disable verbose debugging logs for every X request 2026-02-21 03:53:25 +02:00
Bananymous 7088be0e51 Add mostly stubbed out GLX extensions
Surprisingly this lets most GLX apps run as they still render client
side, they just need the extension to exist
2026-02-21 03:53:25 +02:00
Bananymous 6da9cb7362 Add font support 2026-02-21 03:50:42 +02:00
Bananymous ed57950ee0 Get screen size from libGUI insted of hardcoding
Also use DPI 96 instead of 1 pixel == 1 milli meter
2026-02-21 03:48:05 +02:00
Bananymous d0b289d77b Cleanup objects created by extensions 2026-02-21 03:47:29 +02:00
Bananymous a32d509cde Fix CreateCursor masking
If there was no mask, cursor would be invisible
2026-02-21 03:46:14 +02:00
Bananymous 2016621f78 Implement SetClipRectangles
This fixes firefox flickering with SHM
2026-02-21 03:45:45 +02:00
Bananymous 406ea61be0 Implement ShmCreatePixmap 2026-02-21 03:43:06 +02:00
Bananymous 572a0b6bd5 Fix some crashes on invalid ids 2026-02-21 03:40:39 +02:00
Bananymous 631770725b Implement ReparentWindow, ListProperties, QueryBestSize 2026-02-21 03:39:57 +02:00
Bananymous 7c1b403e05 LibDEFLATE: Add GZip support
This allows compressing and decompressing with data using GZip headers
and footers
2026-02-20 00:00:32 +02:00
Bananymous 632787b142 Implement ShmGetImage
Also SHM extension is now only compiled if the system has shmat and
shmdt
2026-02-12 18:40:55 +02:00
Bananymous 188f9182ea Add stub OpenFont 2026-02-12 02:40:10 +02:00
Bananymous abaa239505 Add basic MIT-SHM support
Supports only Attach, Detach and PutImage but those seem to be enough
for firefox and chromium
2026-02-12 02:39:24 +02:00
Bananymous 545ddefcce Fix ListExtension string encoding 2026-02-12 02:38:35 +02:00
Bananymous 24baab2e84 Cleanup extensions 2026-02-12 02:38:08 +02:00
Bananymous 6124525439 Store per window depths 2026-02-12 02:37:12 +02:00
Bananymous b9c69d8456 Add proper support for QueryKeymap 2026-02-12 02:35:56 +02:00
Bananymous 93a101b235 Cleanup code 2026-02-11 17:43:47 +02:00
Bananymous b48f099aa2 BAN: Print timestamps with d{print,warn,error}ln 2026-02-11 17:43:47 +02:00
Bananymous a74d99de45 Fix keymaps, reported info and add custom cursors 2026-02-11 17:43:47 +02:00
Bananymous 28a68069fb Receive client auth info on initial message 2026-02-11 17:26:16 +02:00
Bananymous 3da8964a32 xbanan: Fix encoding of non byte sized containers 2026-02-11 17:23:46 +02:00
Bananymous 8ed4390598 BAN: Add value_type to String and StringView 2026-02-11 17:23:21 +02:00
Bananymous 49984f2844 BAN: Span remove unnecessary asserts 2026-02-11 17:22:57 +02:00
Bananymous 7a66eb44d4 LibGUI/WindowServer: Allow custom cursor origin 2026-02-10 23:09:19 +02:00
Bananymous 4801fd3e67 Only send key/mouse events to a single window
Firefox was getting mouse clicks as duplicates making every click a
double click
2026-02-10 03:05:15 +02:00
Bananymous 808e51b855 Make objects global instead of per client
This allows copying from one window to another!
2026-02-10 01:28:47 +02:00
Bananymous d59dea43e0 Add bunch of stuff and refactor code
This adds some new opcodes, implements RANDR extension and splits stuff
into separate files
2026-02-10 00:54:02 +02:00
Bananymous 19235e68ca Add stub AllocNamedColor 2026-02-09 03:48:53 +02:00
Bananymous a37d7168eb Fix close/epoll_ctl order 2026-02-09 03:48:53 +02:00
Bananymous 01f9f24b9b Add more mapping opcodes 2026-02-09 03:48:53 +02:00
Bananymous 7376cd17ac Add proper support for ListExtensions 2026-02-09 03:48:53 +02:00
Bananymous 09e442ff43 Support Pixmaps with GetGeometry 2026-02-09 03:48:53 +02:00
Bananymous 16d5871775 Add support for mouse events 2026-02-09 03:48:53 +02:00
Bananymous 675c615be9 Enable compiler warnings 2026-02-09 03:48:53 +02:00
Bananymous 301765a5bd Add stuff :) 2026-02-09 03:48:53 +02:00
Bananymous 971038fd4f support TCP sockets 2026-02-07 23:12:38 +02:00
Bananymous 219734a813 Initial commit 2026-02-07 18:44:48 +02:00