beansprout-custom/docs/TODO.md
Ben Buhse 5c427234d7
Add layer shell support and fix floating windows
Now, I actually save the river-layer-shell-v1 and keep track of the
non-exclusive area. The layout calculation uses the usable area instead
of the entire output's geometry.

I removed boundary clamping for the floating windows because it was a
bit janky when hitting the edges. I'll probably add it back at some
point. I also made windows default to 75% of the usable area instead of
keeping their tiled size so that maximized windows look decent when
floating for the first time. Finally, since I removed the clamping, I
added a center_float keybind to center a floating window. If you're
cycling through focused windows and one isn't on the screen, you can use
the center_float bind to get the window visible again.

Replaced all divTrunc with divFloor to be consistent. I think they
should all be positive, anyways, so they'd be the same, but I like just
having one.
2026-02-14 11:30:37 -06:00

1.3 KiB

TODOs

These are in rough order of my priority, though no promises I do them in this order.

  • Implement a river-tag-overlay clone
  • Implement an optional clock bar
  • Make a Rect struct to combine x, y, width, and height
  • Support window rules (float/tags/SSD by app-id/title)
  • Support overriding config location
  • Support configuring primary vs secondary stack side
  • Support switch handling (e.g. lid close)
  • Support keybind modes (e.g. passthrough)
  • Support solid background-color fallback (no wallpaper)
  • Support per-output wallpapers
  • Support focus-follows-cursor granularity (normal vs always)
  • Save window positions between restarts
  • Support multiple seats
  • Support clipping floating windows on edge of/between outputs
  • Support changeable primary ratio
  • Support changeable primary count
  • Support multiple outputs
  • Support floating windows
  • Support wallpapers
  • Make "orelse return" bits into errors; handle gracefully
  • Implement runtime log levels
  • Add input configuration, i.e. pointer acceleration and that type of thing
  • Support None modifier for keybinds (needed for media/brightness keys)
  • Support per-host config using properties
  • Implement primary count/ratio per tagmask
  • Add primary_count and primary_ratio to Config