danilw / vulkan-shadertoy-launcher

using C, no external dependencies
MIT License
72 stars 4 forks source link

support wlr-layer-shell #3

Open colemickens opened 1 year ago

colemickens commented 1 year ago

https://wayland.app/protocols/wlr-layer-shell-unstable-v1#zwlr_layer_shell_v1

By supporting wlr-layer-shell, vukan-shadertoy-launcher could be a wallpaper replacement for users of wlroots-based wayland compositors.

danilw commented 1 year ago

Well, this is very interesting way to make live-wallpaper, I did not know about it.

I remember I was looking to render shaders in Gnome Desktop in Wayland - and it was actually impossible, even thru Gnome extensions, only KDE-extension in Wayland allow to render shadertoy shaders on desktop. This shader https://www.shadertoy.com/view/NslGRN has two links for my implementation (there old Gnome3, but as I know Gnome4 has same limitations so works only in x11 Gnome3)

Speaking about your context: wlr-layer-shell-unstable-v1#zwlr_layer_shell_v1 look like it is unstable feature?

As I mention in https://github.com/danilw/vulkan-shadertoy-launcher/blob/master/os_utils/wayland_utils.h :

// Wayland does not have stable "decoration" support, xdg-decoration not supported
// zxdg_toplevel_decoration_v1 is unstable

Reason why I have not added decoration support to Wayland - because I have not found "stable example" that works everywhere, only stable I saw was - Gnome Wayland integration, but integrating dependency from Gnome - it just explodes binary size from 50Kb to 500Kb+

I need to recheck it again, maybe there is some simple way to do correct decoration in Wayland without exploding binary and code size.

I mean I had it in "TODO", il add your request also to "future-TODO", currently im finishing/working on my other projects.

I say - I may look on to do it in next few months, ofc you can make it faster if you want to and Pull request.

Note to Pull request - only if there simple way to make it without new dependency and not exploding code, this is not wallpaper/screensaver - only if solution small I will add it to this repository. If solution big - better make your own fork of this my vulkan-shadertoy-launcher and add all changes there, il add link to your fork to this description page.

theoparis commented 1 year ago

I have figured out how to create this functionality using Qt6 and QML as a separate project. I can even set a web browser (with qt webengine) as my wallpaper :joy: I can interact with it if nothing is in the way.

I used https://invent.kde.org/plasma/layer-shell-qt along with dynamically loading a qml file that displays something. I have not tested shaders yet but considering there is a vulkan backend built into Qt6 and that I managed to get a 3d scene and a web browser working I think it is definitely possible.

I will share my repository here soon in case anyone's interested 😄

danilw commented 1 year ago

@theoparis cool, but this my project main point is - small size, 30Kb size and almost no memory-ram usage. I thought it "have sense" to make wayland-native-wallpaper support for reason - "no overhead". But I have way too many other plans for now, so even if I make something for this project - it will be months latter if in this year.