mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-01-11 14:40:25 +01:00
Missing workflows #95
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @JJGO on GitHub (Jun 8, 2022).
Hi, thanks for creating komorebi, it's the best tiling window manager I've come across.
I've been a yabai user for a while and there are a few workflows I'm sorely missing. I've gone through the commands but I've not been able to find matching behaviour and would love advice on how to achieve similar results. Please do not take this as a feature request, I'm just trying to learn how to make komorebi ergonomical.
yabai -m window --toggle split). Without this, I'm having a hard time having three columns in bsp mode.yabai -m window --resize)yabai -m window --toggle zoom-parent)Lastly, what is the recommended way of dealing with Windows Desktops? Just use one and let komorebi handle workspaces?
Thank you
@LGUG2Z commented on GitHub (Jun 8, 2022):
You can resize with
komorebic resize-edge [left, right, up, down] [increase, decrease]orkomorebic resize-axis [horizontal, vertical] [increase, decrease]- these can be bound to the keyboard or the mouse; these days I mostly just bindresize-axis horizontal increase/decreaseto alt + mwheel down/up.No partial zooms because there is no tree (see below).
No 2x2 grids in bsp because there is no tree (see below), but this could be possible by extending what is possible with custom layouts (allowing primary columns to have multiple rows).
You could achieve various 3-column layouts with a custom layout (see attached image), but I don't think this really sounds like what you're looking for:
Bsp rotations (really, any tree manipulation operations) again aren't possible because
komorebistores windows in a Ring rather than a Tree. More context from another comment:Trees are pretty hard to implement well in Rust and trying to port a bspwm/yabai-style BSP tree data structure from C to Rust is unfortunately beyond both my (barely mentionable) knowledge of C (to understand how the original data structure works) and my knowledge of Rust (to reimplement it faithfully while satisfying the safety guarantees required by the compiler).
Although it would be quite a big architectural change, I would be willing to migrate
komorebito using a BSP tree as the foundational data structure to manage workspace state if someone with the requisite knowledge were able to provide a working example of a bspwm/yabai-style BSP tree in Rust either via a PR or by publishing a library.@JJGO commented on GitHub (Jun 8, 2022):
Thank you for the detailed write-up, it's very informative.
Love the trick of binding resize-axis to the mouse wheel, it's great. Added a shift variant for vertical resizing.
I understand the datastructure issue, it seems like a very nontrivial thing to pull off. I've been meaning to get familiar with Rust for a while but as a mostly Python programmer the borrow checker looks quite intimidating. I'd love to help with the ring to tree migration at some point but I feel it like I need to get my feet wet with Rust first. Hopefully there exists some good tree crate that can be (partially) reused.
In the meantime, the 3-column layout you describe seems useful and better than the column layout where >3 windows makes everything unusably narrow. I've tested it and I like how it deals with 3+ windows but it looks like now the resize-axis commands are not working. Do those commands only work in bsp mode?
@LGUG2Z commented on GitHub (Jun 9, 2022):
The
resize-axiscommand works withbspand with custom layouts, with the caveat being that on custom layouts, the resize commands will only operate on the primary column:This is the custom layout that I mostly use-
resize-axis [increase, decrease]will change theWidthPercentageof thePrimary.There is however one bug that I'm still trying to work out: If a custom layout is activated by a workspace layout rule then the
resize-axiscommand currently does not work as intended.@LGUG2Z commented on GitHub (Jun 15, 2022):
The bug related to the resizing of a primary column in a custom layout activated by a layout rule has been fixed on
master. 🎉