Video yükleniyor...

Video Yüklenemedi

Ana Sayfaya Dön

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,610 görüntüleme • 3 ay önce •via X (Twitter)

57 Yorum

maria profil fotoğrafı
maria3 ay önce

all of this because macos doesnt let you do window management

Jake 🎉 profil fotoğrafı
Jake 🎉3 ay önce

have you checked out BonSplit?

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

Al worked on this with me :) @almonk

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

@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).

moreward (moreboxed.com) profil fotoğrafı
moreward (moreboxed.com)3 ay önce

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

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

Haha fear not

Mark profil fotoğrafı
Mark3 ay önce

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

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

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

Mark profil fotoğrafı
Mark3 ay önce

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

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

@morew4rd Terminals just support the features I want

Junsong Li profil fotoğrafı
Junsong Li3 ay önce

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.

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

Well first this is macOS

Junsong Li profil fotoğrafı
Junsong Li3 ay önce

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.

Reza Karegaran profil fotoğrafı
Reza Karegaran3 ay önce

is this your tmux experiment?

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

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

Reza Karegaran profil fotoğrafı
Reza Karegaran3 ay önce

🙌

Jakub Kozłowski profil fotoğrafı
Jakub Kozłowski3 ay önce

New variant of 2048 dropped

Josh profil fotoğrafı
Josh3 ay önce

Can we save these so they can be restored?

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

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.

Josh profil fotoğrafı
Josh3 ay önce

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.

Sebastien-console_buche 🪵 profil fotoğrafı
Sebastien-console_buche 🪵3 ay önce

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.

Moody profil fotoğrafı
Moody3 ay önce

Tree data structure?

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

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

Ajey Gore profil fotoğrafı
Ajey Gore3 ay önce

Love it.

Dominik Roszkowski profil fotoğrafı
Dominik Roszkowski3 ay önce

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

Steve Trefethen profil fotoğrafı
Steve Trefethen3 ay önce

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.

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

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.

Andy Matthews profil fotoğrafı
Andy Matthews3 ay önce

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.

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

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

Adam profil fotoğrafı
Adam3 ay önce

very cool

Evert Junior profil fotoğrafı
Evert Junior3 ay önce

At that point just use @maestriapp

Matthew Sanabria profil fotoğrafı
Matthew Sanabria3 ay önce

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.

Maciej Gajewski profil fotoğrafı
Maciej Gajewski3 ay önce

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

Christian Alares profil fotoğrafı
Christian Alares3 ay önce

This is almost identical as how panes work in

Hieu 🚀 profil fotoğrafı
Hieu 🚀3 ay önce

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

Raffi profil fotoğrafı
Raffi3 ay önce

🔥

Kevin profil fotoğrafı
Kevin3 ay önce

Add tabs in panes and you've got me.

Vito Botta profil fotoğrafı
Vito Botta3 ay önce

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

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

Ironically pretty darn easy with plain CA though

vish profil fotoğrafı
vish3 ay önce

Is this going to come down to libghostty?

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

No that’s not UI

linkarzu profil fotoğrafı
linkarzu3 ay önce

macOS 4 life 💪

Blacktop profil fotoğrafı
Blacktop3 ay önce

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

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

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...)

Landon profil fotoğrafı
Landon3 ay önce

This is so dope

Toby 🇪🇺🇺🇦 profil fotoğrafı
Toby 🇪🇺🇺🇦3 ay önce

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.

Sam Kerr profil fotoğrafı
Sam Kerr3 ay önce

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

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

Generic framework

spacy profil fotoğrafı
spacy3 ay önce

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

PhaseOne(Atin) profil fotoğrafı
PhaseOne(Atin)3 ay önce

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

Schappi profil fotoğrafı
Schappi3 ay önce

I got inspired and made a JS version

Jihoon profil fotoğrafı
Jihoon3 ay önce

Nice! We need a better cmux

Seanghay profil fotoğrafı
Seanghay3 ay önce

Looks nice

rusa profil fotoğrafı
rusa1 ay önce

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.

asd profil fotoğrafı
asd3 ay önce

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

Mitchell Hashimoto profil fotoğrafı
Mitchell Hashimoto3 ay önce

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

asd profil fotoğrafı
asd3 ay önce

perfect!

Benzer Videolar