Video wird geladen...

Video konnte nicht geladen werden

Zur Startseite

Work-in-progress: a new split layout framework for nearly all Apple platforms (macOS, iOS, etc.). A mix of SwiftUI and raw CoreAnimation. The goal is "every frame perfect" animation. Still very wip, but getting there! Goal is to bring it back to Ghostty eventually.

341,798 Aufrufe • vor 3 Monaten •via X (Twitter)

57 Kommentare

Profilbild von maria
mariavor 3 Monaten

all of this because macos doesnt let you do window management

Profilbild von Jake 🎉
Jake 🎉vor 3 Monaten

have you checked out BonSplit?

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

Al worked on this with me :) @almonk

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

@almonk To be clear, BonSplit is awesome. This lib serves a slight diff need, simpler in some ways (no tabs) and more complex in others (multi platform).

Profilbild von moreward (moreboxed.com)
moreward (moreboxed.com)vor 3 Monaten

Looks very nice. Really smooth. But when you said "tmux" experiment, I was hoping for a "keep terminal running" feature. Not the panes part 😬

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

Haha fear not

Profilbild von Mark
Markvor 3 Monaten

@morew4rd Unless on Linux? Or will Linux get some love too

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

@morew4rd Web client for Linux initially or plop down into a TUI in ghostty or wherever. Not as feature rich

Profilbild von Mark
Markvor 3 Monaten

@morew4rd Ok, how come not as feature rich? Is Linux a pita to develop these things on? I genuinely don't know

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

@morew4rd Terminals just support the features I want

Profilbild von Junsong Li
Junsong Livor 3 Monaten

Oh no, not factorial spiral again. Instead of trying to be hyprland, I believe trying to be niri makes more sense in window management. Niri + the native overview is way more productive than the factorial spiral window management in my day to day experience.

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

Well first this is macOS

Profilbild von Junsong Li
Junsong Livor 3 Monaten

My point is this: creating a new window using a split layout sacrifices the wrong thing. I always find that a half-split weakens the content in the old window in some way: creating a bottom window makes the existing one jump, sometimes pushing content out of the viewport. Creating a right window causes the text in the left window to wrap awkwardly. When the user creates a new window, the existing window’s size shouldn’t change at all. Don’t make the user wonder whether the view of the existing window will be compressed. It simply shouldn’t. IMO, this is where Niri makes a much better design choice: none of the existing windows are squeezed/resized, so my content stays exactly the same.

Profilbild von Reza Karegaran
Reza Karegaranvor 3 Monaten

is this your tmux experiment?

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

This is just a library, but it will be used for the native app for my multiplexer yes.

Profilbild von Reza Karegaran
Reza Karegaranvor 3 Monaten

🙌

Profilbild von Jakub Kozłowski
Jakub Kozłowskivor 3 Monaten

New variant of 2048 dropped

Profilbild von Josh
Joshvor 3 Monaten

Can we save these so they can be restored?

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

That's a library user concern. The actual split layout is a caller-provided immutable data structure they can choose to make Codable (the Apple encoding protocol) if they want.

Profilbild von Josh
Joshvor 3 Monaten

That is actually a better answer than I was hoping for. I use this to manage my tmux sessions and I think I can swap tmux out for your codable protocol.

Profilbild von Sebastien-console_buche 🪵
Sebastien-console_buche 🪵vor 3 Monaten

I NEED THIS. Actually, I need this in my terminal, but I also need this as a proper window manager on MacOS. The Hyprland vibe is perfect.

Profilbild von Moody
Moodyvor 3 Monaten

Tree data structure?

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

Tree data structure but rasterized down to a 2D absolute layout so the view hierarchy is actually flat.

Profilbild von Ajey Gore
Ajey Gorevor 3 Monaten

Love it.

Profilbild von Dominik Roszkowski
Dominik Roszkowskivor 3 Monaten

Really cool! It's getting more interesting when you add multiple windows and the ability to drag things out and in

Profilbild von Steve Trefethen
Steve Trefethenvor 3 Monaten

We built demos _exactly_ like this for/in Delphi in something like 2007 if not before that. I find it funny how often software repeats itself. The IDE and VCL had docking that worked just like this.

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

The concept is ancient. I’ve been shopping production split layouts for years myself. The new part here is the focus on every frame perfect animations.

Profilbild von Andy Matthews
Andy Matthewsvor 3 Monaten

I’ve been using a Mac app that does this called Divvy for like 10+ years. It’s one of the first things in install on any new Mac.

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

Yeah divvy is great. This isn’t a window manager. This is a reusable embedded lib for apps. Also not a new concept (I’ve shipped a diff one for 3 years to millions of daily users. This is the 6th I’ve built across platforms.). The newness is the every frame perfect animation goal

Profilbild von Adam
Adamvor 3 Monaten

very cool

Profilbild von Evert Junior
Evert Juniorvor 3 Monaten

At that point just use @maestriapp

Profilbild von Matthew Sanabria
Matthew Sanabriavor 3 Monaten

Can the panes only run processes that this application launched? I see how this would be useful in Ghostty but I want to put all my macOS windows in there and have some tiling window manager experience.

Profilbild von Maciej Gajewski
Maciej Gajewskivor 3 Monaten

We had responsive GUIs in the 2000s. Now, 25 years later, this became a lost technology, living only as artisanal hobby projects.

Profilbild von Christian Alares
Christian Alaresvor 3 Monaten

This is almost identical as how panes work in

Profilbild von Hieu 🚀
Hieu 🚀vor 3 Monaten

You know you'll never use it but this is cool as hell

Profilbild von Raffi
Raffivor 3 Monaten

🔥

Profilbild von Kevin
Kevinvor 3 Monaten

Add tabs in panes and you've got me.

Profilbild von Vito Botta
Vito Bottavor 3 Monaten

Every-frame-perfect animation on Apple platforms is painful. SwiftUI still has rough edges with scroll performance.

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

Ironically pretty darn easy with plain CA though

Profilbild von vish
vishvor 3 Monaten

Is this going to come down to libghostty?

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

No that’s not UI

Profilbild von linkarzu
linkarzuvor 3 Monaten

macOS 4 life 💪

Profilbild von Blacktop
Blacktopvor 3 Monaten

🥀for tmux (am so pump to have a better solution)

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

well, this is also the split framework my multiplexer is going to use... (it works in TUI too, but there is a native app, and web app, and mobile app...)

Profilbild von Landon
Landonvor 3 Monaten

This is so dope

Profilbild von Toby 🇪🇺🇺🇦
Toby 🇪🇺🇺🇦vor 3 Monaten

Okay, this is awesome. I love that you're making the things you create into proper frameworks. Allows all of us to reuse and potentially also feed back improvements ofc.

Profilbild von Sam Kerr
Sam Kerrvor 3 Monaten

Will this be just for ghostty or can we build other apps on top of it? I was looking for something like this a while ago and ended up having to do something custom

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

Generic framework

Profilbild von spacy
spacyvor 3 Monaten

any chance we'll get background sessions bascially asking for gmux

Profilbild von PhaseOne(Atin)
PhaseOne(Atin)vor 3 Monaten

Wow, would love to collab or use this with c11, our agent optimized terminal multiplexer

Profilbild von Schappi
Schappivor 3 Monaten

I got inspired and made a JS version

Profilbild von Jihoon
Jihoonvor 3 Monaten

Nice! We need a better cmux

Profilbild von Seanghay
Seanghayvor 3 Monaten

Looks nice

Profilbild von rusa
rusavor 1 Monat

the every-frame-perfect goal is exactly why you drop out of swiftui for the transitions. its layout pass can re-measure mid-animation and you get a hitch you can't chase down. driving CA directly is the only way to own the timeline.

Profilbild von asd
asdvor 3 Monaten

nice! suggestion: would be good to include a reduce motion or no animation setting

Profilbild von Mitchell Hashimoto
Mitchell Hashimotovor 3 Monaten

thats a macOS setting. if you set reduce motion on macOS it doesn't animate at all, we respect it.

Profilbild von asd
asdvor 3 Monaten

perfect!

Ähnliche Videos