wayland-explorer
imgui
wayland-explorer | imgui | |
---|---|---|
25 | 351 | |
175 | 55,870 | |
- | - | |
7.8 | 9.7 | |
13 days ago | 2 days ago | |
TypeScript | C++ | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
wayland-explorer
-
PCSX2 Disables Wayland Support
Wayland is good until you hit the corner cases that they decided to abandon, without leaving any alternatives. We can always have extra protocol that can be optionally enabled, but good luck with standardizing that. It feels as if Wayland people are abusing their committee to keep Wayland as-is, instead of extending it. The protocol dashboard[1] doesn't look exactly good.
[1]: https://wayland.app/protocols/
-
Inter-process Communication between two programs on Linux.
Wayland is itself an IPC system (that uses UNIX domain sockets). I would make a custom Wayland protocol (if there isn't already an appropriate one available, look here: https://wayland.app/protocols/). You can define the protocol in XML and generate the boilerplate code in C using wayland-scanner. I assume smithay also has an equivalent of wayland-scanner.
-
The reality of Wayland input methods in 2022
https://wayland.app/protocols/ and https://wayland.freedesktop.org/docs/html/ are just API references.
-
Swingland: Recreating Java Swing for Wayland
Given I will be using most of the Wayland protocol to achieve anything (it's minimal) and Wayland is well specified then the 'start at the bottom and build up' design pattern fits. Wayland has a wire protocol based on a Unix socket, and usefully Java has supported Unix sockets since release 16, so I can write everything in Java to (de)serialise messages. This gets me going quickly, providing positive feedback that I'm on the right track..
-
Red Hat considers Xorg “deprecated” and will remove it in the next RHEL
The core is bare-bones, there are numerous standard protocols since, and many other are in standardization. Here is a site to review their state: https://wayland.app/protocols/
-
Unix philosophy and compositor development
There is some lock-in in some places where tools adopt a protocol that is only implemented by wlroots compositors, or only implemented by KDE, etc, but I suspect this will improve over time as protocols stabilise ( and you can browse the available protocols here: https://wayland.app/protocols/ )
- Wayland Explorer
-
X12
This link comes up in literally every Wayland thread and it is even more bullshit now than it was in 2013 when it was first posted (and it was bullshit then too). It is titled "the real story" but it is quite the opposite.
A few key points:
1) he laughs at how X has a bunch of extensions. https://wayland.app/protocols/ hypocrites much. In 2013, since it was completely unusable, it probably didn't have many. But turns out real world use leads to "useless" features being reimplemented.
2) he complains about how X.org has broad hardware compatibility. As if that's a bad thing. Meanwhile wayland, even now it still doesn't work reliably on half the graphics chips on the market.
3) It complains that certain X features are not fully network transparent. True, but most are and you can detect at runtime and gracefully degrade. Wayland "fixes" this by just dropping the whole feature.
4) it flat-out lies saying the X server does nothing yet it is so much hard to maintain code. The core X protocol provides backward compatibility and is rock solid (and really easy to impelment from scratch btw, someone did it in Javascript for a tutorial for crying out loud). Meanwhile the Wayland compositor keeps accumulating everything because of point 1. Need a screenshot? Add it it the compositor. Need a hotkey? Add it to the compositor. Need drag and drop? Add it to the compositor. Need a notification icon? Add it to the compositor. In X, all those are peer to peer. Graphics are actually a relatively small part of a graphical user interface, something Wayland is still slow to learn.
5) He complains that certain applications are written inefficiently with blocking calls which is inefficient over a network connection. Wayland's calls are ALL blocking and just has no network connection.
6) Complains that X may draw things unnecessarily. Indeed... but there's an extension to disable that. Easy fix. Wayland even uses the same drivers!
- A better way to read Wayland documentation
-
Is it placebo or is X11 more stable than Wayland
So that brings me to Wayland Protocols!. In X11 land, X11 defines a lot of behaviors for you. There is no such definition in Wayland-land by design - this is to give compositors a lot more freedom and flexibility in how they function. It also means that it required time for protocols to develop to cover all of the things that we would need in a desktop window compositor to bring it up to snuff for desktop usage. These protocols evolved through the past 4-5 years of everybody seeing it's shortcomings on a Desktop system compared to a mobile phone based UI. With the latest fractional scaling protocol we have more or less finally "closed the gap" between Wayland and Xorg on the desktop - it's just a matter of compositors implementing full support for all of the protocols people want.
imgui
-
Using raylib with Dear ImGui: Game Dev Debugging UI
include(cmake/CPM.cmake) function(raylib_imgui_setup_dependencies) message(STATUS "Include Dear ImGui") FetchContent_Declare( ImGui GIT_REPOSITORY https://github.com/ocornut/imgui GIT_TAG 277ae93c41314ba5f4c7444f37c4319cdf07e8cf) # v1.90.4 FetchContent_MakeAvailable(ImGui) FetchContent_GetProperties(ImGui SOURCE_DIR IMGUI_DIR) add_library( imgui STATIC ${imgui_SOURCE_DIR}/imgui.cpp ${imgui_SOURCE_DIR}/imgui_draw.cpp ${imgui_SOURCE_DIR}/imgui_widgets.cpp ${imgui_SOURCE_DIR}/imgui_tables.cpp) target_include_directories(imgui INTERFACE ${imgui_SOURCE_DIR}) include(cmake/CPM.cmake) message(STATUS "Include dbg-macro") cpmaddpackage( "gh:sharkdp/dbg-macro#fb9976f410f8b29105818b20278cd0be0e853fe8" )# v0.5.1 message(STATUS "Include fmtlib") cpmaddpackage("gh:fmtlib/fmt#e69e5f977d458f2650bb346dadf2ad30c5320281" )# 10.x message(STATUS "Include raylib") cpmaddpackage("gh:raysan5/raylib#ae50bfa2cc569c0f8d5bc4315d39db64005b1b0" )# v5.0 message(STATUS "Include spdlog") cpmaddpackage("gh:gabime/spdlog#7c02e204c92545f869e2f04edaab1f19fe8b19fd" )# v1.13.0 message(STATUS "Include rlImGui") FetchContent_Declare( rlImGui GIT_REPOSITORY https://github.com/raylib-extras/rlImGui GIT_TAG d765c1ef3d37cf939f88aaa272a59a2713d654c9) FetchContent_MakeAvailable(rlImGui) FetchContent_GetProperties(rlImGui SOURCE_DIR RLIMGUI_DIR) add_library(rlimgui STATIC ${rlimgui_SOURCE_DIR}/rlImgui.cpp) target_link_libraries(rlimgui PRIVATE imgui raylib) target_include_directories(rlimgui INTERFACE ${rlimgui_SOURCE_DIR}) endfunction()
- Ask HN: Fastest cross-platform GUI stack/strategy
-
Immediate Mode GUI Programming
Immediate mode is a fuzzy concept, as witnessed by this writeup: https://github.com/ocornut/imgui/wiki/About-the-IMGUI-paradi...
- Nebula is an open-source and free-to-use modern C++ game engine
-
Black Triangles
It's fun to see the evolution in e.g. these examples of image loading for Dear Imgui:
https://github.com/ocornut/imgui/wiki/Image-Loading-and-Disp...
DirectX9 will even load the image for you, DirectX11 okay we get a few more structures to fill out, DirectX12 is where it goes off the rails and we are filling out a bunch of UNKNOWN DONT_CARE JUST_DO_IT. Then of course Vulkan is the one that gets the big fat "this probably won't actually work for you" warning.
I understand whats happening, but you know sometimes I just want to display a fucking image.
-
Dear ImGui: Bloat-free Graphical User interface with minimal dependencies
ImGui is engine/GPU agnostic
Themeing isn't a just a retained mode thing, you can do wonders with immediate UIs, even thought (dear)ImGui doesn't provide much, you can still do wonders: https://github.com/ocornut/imgui/issues/707#issuecomment-362...
More on that topic: https://www.youtube.com/watch?v=Z1qyvQsjK5Y
-
Where do I start to learn C++ for a game development
Bonus: If you want to make desktop app with UI, then this is another great C++ library and it's also simple to learn as well. https://github.com/ocornut/imgui.
-
GUI library for fast prototyping
AFAIK the Rust equivalent to C++'s Dear ImGui is egui.
-
Stretching myself thin with Dear ImGui projects
They use a Dear ImGui, a C++ GUI library.
-
PCSX2 Disables Wayland Support
Aside from bugs and driver issues, Wayland has some unfortunate design limitations. For example, Dear ImGui multi-viewports don't work because "Wayland doesn't let application read or write windows positions."
https://github.com/ocornut/imgui/wiki/Multi-Viewports
This is a feature available on Windows, macOS, and of course X11. Making choices like this means desktop Linux becomes even more of a weird island that nobody wants to support.
What are some alternatives?
Pion WebRTC - Pure Go implementation of the WebRTC API
wxWidgets - Cross-Platform C++ GUI Library
kondo - Cleans dependencies and build artifacts from your projects.
nuklear - A single-header ANSI C immediate mode cross-platform GUI library
tera - A template engine for Rust based on Jinja2/Django
NanoGUI - Minimalistic GUI library for OpenGL
gnome-gesture-improvements - Touchpad gesture improvements for GNOME on Wayland/X11
GTK+ - Read-only mirror of https://gitlab.gnome.org/GNOME/gtk
Zip Foundation - Effortless ZIP Handling in Swift
egui - egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native
rupy - HTTP App. Server and JSON DB - Shared Parallel (Atomic) & Distributed
CEGUI