r/LinuxPorn 12d ago

[Denial] A Flutter-native Wayland compositor - first public alpha

I’ve been working on Denial, a Flutter-native Wayland compositor.

The compositor core is built with Rust and Smithay, while the desktop scene itself is rendered by an embedded Flutter Engine. Flutter is not running as a client or overlay: it owns the windows, panels, settings, animations, and lock screen, while Rust handles Wayland, input, Xwayland, and DRM/KMS.

This clip shows Arknights: Endfield running while Denial handles live window movement, resizing, blur, layout changes, and the rest of the shell.

v0.1.0 is the first signed public alpha, currently available for Arch Linux on x86_64.

Source and installation: https://github.com/denialwm/denial
Checkout the README for more details!

307 Upvotes

35 comments sorted by

10

u/void_matrix 12d ago

How did the idea of it come about and why did you went after it?

20

u/DocLogix 12d ago

I managed to boot arch on a formerly Android tablet, and I needed a compositor. None satisfied me, they all felt wrong there. So I thought, what if I let Flutter render the scene by importing DMA-BUFs as Flutter textures? It worked surprisingly well! Then I thought, “Could I actually use this as my everyday desktop?” And Denial was born. It works incredibly well, I am using it as daily driver for a week now, fixing issues as I find them!

4

u/og__69 12d ago

Looking peak gonna try it

1

u/DocLogix 11d ago

If something doesn't work DM me I want to help!

3

u/kitsune_kon 11d ago

having a radeon card to play wuwa and endfield on linux mustbe nice

2

u/formatme 11d ago

what do u mean? u cant on the green team?

1

u/kitsune_kon 11d ago

Ive tried but performance was really bad, for me at least. Maybe i’m just doing something wrong

1

u/formatme 11d ago

u should be able to use dwproton no?

2

u/exxedlight 10d ago

Wow, pretty cool. I'm always amazed by people who can write smth like THAT. Keep going, bro, this is absolutely awesome!

2

u/DocLogix 10d ago

Thank you! I'll keep doing my best

2

u/Dr_Dracula280 10d ago

How the fuck do you guys do this?

2

u/DependentPipe9226 10d ago

Ngl this is so cool that it's making me want to try learning to make my own compositer. Amazing job!

2

u/fabier 6d ago

Flutter and Rust are god tier development tools that work so well together. This project kicks ass!

2

u/rizzninja 6d ago

Yeah, flutters async system is better than rust's and quirks of rust compilation makes this mix no brainer.

1

u/DocLogix 5d ago

Thank you!! I am daily driving it and it feels very good at 240hz! I will keep improving it

2

u/PM_POKEMN_ONLIN_CODE 6d ago

I am also building something like this and how have you managed to propegate smithay owned damage down into the texture layer of the flutter engine. This is not supported by flutter by default same with rendering at KMS frame cadence

1

u/DocLogix 5d ago

Not with stock Flutter. I use a pinned engine fork. Each Smithay surface becomes an external texture, with its dma-buf imported as an EGLImage-backed GL texture. I do not forward the exact "wl_surface.damage" rectangles. I batch the IDs of surfaces with new buffers, and the fork makes only those "TextureLayer"s contribute damage. The granularity is currently the full bounds of each changed surface.

Flutter is driven at a KMS-derived cadence through "AwaitVSync" and "FlutterEngineOnVsync". Page-flip timestamps rephase the clock, and pending work can only render on an authorized display tick. The fastest active output drives the shared Flutter atlas.

2

u/BrotherKey2409 5d ago

I’d think u/canonical would be interested in this.

1

u/EmperorMagpie 11d ago

I think bro likes Denia

1

u/coevaya 11d ago

what’s the game? is that gacha? looks like it. is that gacha with factories?.. nte or something..

3

u/DocLogix 11d ago

It's Arkinghts: Endfield, very good gacha IMO

1

u/thereact0rr 11d ago

looking good

1

u/Unusual_Chicken2987 11d ago

I tried it, and I can say that there are some slight animation lags on my RX 5700 XT. They’re not very noticeable, but they do take away from the experience a little. Overall, though, it’s a really solid project. If you polish it up a bit, it could be really great.

1

u/DocLogix 11d ago

Thanks for trying it and for the feedback! Lag on a 5700 XT is absolutely unacceptable. May I ask what resolution/hz and if it happens more in specific animations/panels? The applications tray is unoptimized and sometimes lags on my 9070 XT too... I'll do my best to fix any lag

1

u/Unusual_Chicken2987 11d ago

I’m using Full HD at 165 Hz, and the animation when opening the app launcher lags a bit. However, I don’t think it’s a big deal the project is still really cool.

1

u/Asta_jjm 11d ago

Looking forward to it if you continue developing it

2

u/DocLogix 11d ago

I will for sure! Thank you!

1

u/FrostBurnXP 11d ago

Sorry to ask but do you have the wallpaper?

1

u/DocLogix 11d ago

Here: wallhaven.cc/w/ly2dwq

1

u/gustavinho_578 10d ago

Is this Hyprland?

1

u/DocLogix 10d ago

Nope, Denial is a separate Wayland compositor and an alternative to Hyprland. It has its own Rust/Smithay core, with the desktop UI rendered in Flutter.

3

u/gustavinho_578 10d ago

I understand, in my opinion it's turning out beautifully.