Papersway – a scrollable window management for Sway/i3wm
spwhitton.name
spwhitton.name
PaperWM (Gnome) https://github.com/paperwm/PaperWM
karousel (KDE) https://github.com/peterfajdiga/karousel
niri (wayland) https://github.com/YaLTeR/niri
hyprscroller (hyprland plugin) https://github.com/dawsers/hyprscroller
hyprslidr (hyprland plugin) https://gitlab.com/magus/hyprslidr
PaperWM.spoon (MacOS) https://github.com/mogenson/PaperWM.spoon
I never understood the appeal of tiling as 99% of the time I am focused on a single window at a time and I want it to take the full height of my display, so scrolling with the focused window centered is my ideal workflow.
I only wish I had the ability to quickly toggle the side-by-side mode that is default with these for the occasional time I need to have a code editor next to my browser.
If anyone knows if any of these supports that toggle, while also supporting the other key features I use in karousel (being able to shrink/expand the focused window with a hotkey), then I'd be willing to leave KDE to get that perfect workflow.
This got pretty close to perfect for me
I use kakoune, which has a client/server architecture. Each kak instance I open within a project connects to the same server, so it is natural for me to use my WM (niri) to tile my terminals, instead of having something like tmux or the editor do the tiling for me. I don't want to bother with more than one layer of WM, where separate layers don't mix.
Even if everything is full screen, it enforces that I don't have something else hidden behind, gives me the ability to snap immediately between them (programs/workspaces) with a keyboard shortcut.
I mostly only have 1 full screen program per workspace (sway on Linux, yabai on macOS) but find that invaluable, really struggle to use say my wife's laptop with an overlapping mess of windows, where the best I can is tab between them. The main exception, where I do have them actually tile, is terminals - I don't need the full width anyway, so my workspace 1 is always 2-3 alacritty instances. Everything else that's always open is full screen in its own workspace.
I like physical positional cues, and being able to just flick my eyes over to other things to check status rather than having to scroll through hidden context. I have a terrible habit of losing my train of thought if I check on something that's hidden, and thereby hide my current work. So just being able to glance and then glance back is a huge plus.
I also have an insane amount of screen real estate on my work machine (2x 4K 30" displays, 1x 2K 15"), so I can have everything on screen at once. I mostly use terminals, a couple browsers, and slack, so YMMV if you are using a bunch of IDE-like windows or the like.
Spacial Shell (i3/Sway, OCaml) https://github.com/lthms/spatial-shell
Newm (Wayland, vry fancy) https://sr.ht/~atha/newm-atha/
Video of newm https://youtu.be/z7S3L-RZskY
Obsolete (but fascinating):
CardboardWM (https://gitlab.com/cardboardwm/cardboard)
EndlessWM (Wayland) https://github.com/peterfajdiga/EndlessWM
1: From https://lobste.rs/s/urwcat/spatial_shell_6th_release_might_b...
(But heck, with evil-mode maybe it'd feel pretty familiar?)
I think Hyperland or i3/Sway could also be scripted to behave this way.
Doesnt seem super applicable to window managers at the moment, but there being a singular screen does seem like a severe UI limitation.
I wonder how well this would work for a WM, though. Processes are a lot heavier than buffers so it kind of does matter how many are running. Unless it's a system like Android where any app expects to be oom killed at any time.
Feedback: I highly suggest a project rename to something that does not have "sway" in the name. Reading the source it seems like it actully has no dependency, API compatibility, or direct interaction with either Sway, i3, or PaperWM?
Sway and i3 just happen to be the most well-known tiling WMs of the hour. There are a bunch of other tiling WM which seem like they will work just fine with Papersway. The docs make it seem like it should only be expected to work with Sway and i3. The possibility is high that most users will not look beyond the "NAME" section before bouncing if they are not already using either of those two and also already familiar with PaperWM.
Less urgently in the docs, it would be nice to be able to get an rough idea about what the project does and the "pitch" without having the reader research PaperWM first.
Why define it strictly in terms of other projects? Why not be usable with other tiling WMs?
Seems relevant.
my $wm_ipc_socket = $have_sway ? $ENV{SWAYSOCK} : $ENV{I3SOCK}; my $wmipc = AnyEvent::I3->new($wm_ipc_socket); $wmipc->connect->recv or die "couldn't connect to WM IPC socket";
(One of the reasons I moved from ratpoison to i3 in the first place was that i3 has this kind of interface, though usually I use i3-msg and jq directly. I'd be curious if there are others like it...)
Edit: I realize this isn’t about Niri, but it’s basically Niri on i3.
It has a short clip, I assume it is similar enough to the actual submission to give an idea what it's about.
https://i.imgur.com/8vVNYno.png
You can add or remove columns by moving a window past an edge:
My sway setup has 20 workspaces on the main monitor and 10 for each other monitor.
Most workspaces are dedicated to just a single window, some have more as is their purpose.