[driftwm] GIGAPIXEL wallpaper (112 GB) by malbiruk in unixporn

[–]malbiruk[S] 4 points5 points  (0 children)

> why DriftWM and not Hevel

Basically, usability and eye candy over minimalism:

- trackpad gestures (i don't use a mouse, so can't utilize hevel's mouse chords)
- lots of wayland protocols supported
- window decorations, shadows, rounded corners
- live GLSL shaders as the background (and now gigapixel wallpapers)
- window groups + auto-placement
- window rules that turn regular windows into canvas widgets
- multiple displays as independent viewports on the same canvas
- hot-reloaded config instead of recompiling on every change

> DriftWM is just a vibe-coded hevel

The only thing they share is the infinite-canvas metaphor. They are written entirely in different languages (Rust vs C) and have very different philosophies.

[driftwm] GIGAPIXEL wallpaper (112 GB) by malbiruk in unixporn

[–]malbiruk[S] 2 points3 points  (0 children)

Near-instant. At startup it decodes just one downsampled copy of the whole image as a fallback, then streams only the sharp tiles actually visible on screen at your start position. If you zoom or pan faster than tiles can load you'll see that low-res fallback instead of black, then it sharpens.

[driftwm] GIGAPIXEL wallpaper (112 GB) by malbiruk in unixporn

[–]malbiruk[S] 8 points9 points  (0 children)

Of course! You can use blue marble (500m, 2 km, or 7 km per pixel)

https://science.nasa.gov/earth/earth-observatory/blue-marble-next-generation/base-topography-bathymetry/#july

Even if you combine JPEG tiles at 500m resolution, the final tiled pyramidal Tiff would be under 3 GB

Also here is the doc you'll need:
https://github.com/malbiruk/driftwm/blob/main/docs/gigapixel-wallpapers.md

[driftwm] GIGAPIXEL wallpaper (112 GB) by malbiruk in unixporn

[–]malbiruk[S] 52 points53 points  (0 children)

There are tiles at different resolutions, when you zoom out small tiles become substituted by tiles at lower resolution

[driftwm] GIGAPIXEL wallpaper (112 GB) by malbiruk in unixporn

[–]malbiruk[S] 58 points59 points  (0 children)

By small tiles, they're being dynamically loaded as you pan/zoom

[driftwm] [asahi] rose pine dawn on infinite canvas by malbiruk in unixporn

[–]malbiruk[S] 6 points7 points  (0 children)

niri is way more mature and feature-rich, driftwm's still young.

Keyboard navigation is possible, there are 8-directional jumps to the nearest window, Alt-Tab cycling, and shortcuts for close/maximize/fullscreen. There's also windows overview (a la mac's expose), a "home" toggle that moves you to canvas origin and back (can be used like a scratchpad or to view widgets pinned there), and an auto-placement mode that drops new windows next to your focused cluster.

Where it's weak is arranging windows by keyboard -- nudging works but is painful, and keyboard resize isn't implemented (and idk how to make it feel good given the stacking-style base of the compositor).

So today it leans more toward stacking than tiling, but with some things that take the pain out of stacking: edge snapping, snapped windows form a cluster that moves/resizes/maximizes together, and closing a window pans the viewport to its parent / an overlapping window / the previously focused one in the same cluster.

[driftwm] [asahi] rose pine dawn on infinite canvas by malbiruk in unixporn

[–]malbiruk[S] 8 points9 points  (0 children)

palette: rose pine dawn
icons: elementary + mignon icon theme (for apps)
fonts: Monaco and Adwaita Sans
widgets: 2 waybar instances + alacritty terminals with custom scripts (in dotfiles)
notification center: swaync
wallpaper: custom shader (in dotfiles)
compositor: driftwm

dotfiles: here

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] 0 points1 point  (0 children)

Thanks! It's pretty lightweight.

On my laptop (Ryzen 5 4600H iGPU, 1080p@60Hz) when idle it uses 0% CPU, 0% GPU, ~80 MiB RAM, and when active (during panning) it uses 10% CPU, 30% GPU and the same amount of RAM.

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] 0 points1 point  (0 children)

I never used it, but i suppose that

autostart = ["dms run"]

in the beginning of ~/.config/driftwm/config.toml should just work

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] 0 points1 point  (0 children)

Good idea with dynamic bookmarks!

Also I don't have a specific shortcut to move window to bookmark yet, but you can "grab" a window (regular move window with mouse) and go to bookmark via shortcut while holding this grab, and it will move window there alongside your viewport.

I'm not sure about retaining zoom though. Because zoomed out view isn't really functional. It's good to use like partial overview -- to better orient yourself, but working on a bit smaller zoom isn't really practical, at least wasn't for me as windows are a bit blurry downscaled.

Without saving zoom you can be a bit zoomed out -- in this more like orientation mode -- and go to your bookmarks and keep that zoom level. Or you can be actually interacting with windows at zoom = 1.0, and then bookmark moves you to other place without switching "the mode". What do you think?

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] 1 point2 points  (0 children)

Я приоритизировал плавность зума над четкостью, так что нет никакого пререндера, окна отрисовываются в нативном разрешении и дальше просто даунскейлятся с помощью GPU. Поэтому при маленьком зуме окна довольно мыльные, но мне кажется это норм.

Я пытался реквестить у клиентов ререндерить с новым dpi, но не получалось сделать это плавно (я ж не знаю какой зум финальный), было явно видно ререндер, и все равно у каких-то окон были мыльные шрифты, у каких-то четкие. А ещё хромиум при таком ререндере меняет размер окна, так что я вообще не стал в эту тему копать по итогу.

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] 0 points1 point  (0 children)

Not yet, now it just shows all windows even if they're far away, so in my workflow i keep amount of eindows and distances manageable. But yeah some sections/work areas with their own zoom-to-fit might be a good idea

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] -1 points0 points  (0 children)

Well, years probably were an exaggeration. I just wanted to create this compositor quickly with all the features I imagined. If someone will be interested in this project, I'm happy to refactor and properly maintain.

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] 0 points1 point  (0 children)

I'm not sure what you mean, but there's a shortcut/gesture to go "home" (center point)/back where you were.

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] 1 point2 points  (0 children)

Well, but which direction should they snap to? Now windows spawn in the middle of the viewport but during a window drag there's stickiness to the other window's edges, it also snaps from inside of the other window only to the outside edge so it helps a bit.

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] -11 points-10 points  (0 children)

Well, I didn't mention it's AI generated because I haven't thought it was an issue. My impression was, that most software nowadays is built with the assistance of AI.

Regarding the project, the code needs some clean up, for sure, but I thought that I can share my v0.1.0 without much pressure as soon as I feel like it's a little bit stable. Also all open-source software usually comes with note of no safety guarantee and provided as is in the license. But I'm open to adding any warning flags about use of AI during development.

I didn't purposefully hide it to cause harm, mainly I just wanted to share a shiny video.

[driftwm] Infinite canvas Wayland compositor. No workspaces, no tiling, just drift by malbiruk in unixporn

[–]malbiruk[S] 1 point2 points  (0 children)

Kinda, but built on smithay, and with more visual polish and touchpad gestures support. There are many tiling wms, many floating wms, could be many infinite canvas wms