Bananymous
ca616fdf9c
Advertise ARB_create_context extensions with GLX
...
sokol needs these to boot
2026-07-31 16:53:59 +03:00
Bananymous
b03a10d601
update banan-os submodule
2026-07-07 05:05:08 +03:00
Bananymous
a02355eb20
banan-os: Add support for some missing platform stuff
2026-06-23 23:40:48 +03:00
Bananymous
7d07c069b9
update banan-os submodule
2026-06-23 23:40:11 +03:00
Bananymous
b387457337
Fix loading "None" cursor
2026-06-23 23:27:01 +03:00
Bananymous
5474048db5
Cleanup debug formatting
...
Print XIDs as hex
2026-06-21 21:44:32 +03:00
Bananymous
7370d562de
Rework rendering
2026-06-07 22:00:42 +03:00
Bananymous
b85cbd5edf
Rework banan-os keymaps
2026-06-07 21:17:25 +03:00
Bananymous
40c002323e
Iterate clients by reference in XRes
2026-06-05 01:07:05 +03:00
Bananymous
0e0624ceb6
Make RANDR report multiple monitors correctly
...
This fixes broken aspect ratio in Celeste when running fullscreen
2026-06-05 01:04:30 +03:00
Bananymous
a6a581347e
Fix X-Resource debug printing
2026-06-04 03:27:06 +03:00
Bananymous
e843be0a1c
Cleanup the build system and add porting instructions
2026-06-04 02:26:29 +03:00
Bananymous
421e0a6897
Add very basic X-Resource extension
...
This only supports XResQueryVersion and XResQueryClientIds but it is
enough to get steam running
2026-06-04 01:30:41 +03:00
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