Загрузка видео...

Не удалось загрузить видео

На главную

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 просмотров • 3 месяцев назад •via X (Twitter)

Комментарии: 57

Фото профиля maria
maria3 месяцев назад

all of this because macos doesnt let you do window management

Фото профиля Jake 🎉
Jake 🎉3 месяцев назад

have you checked out BonSplit?

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

Al worked on this with me :) @almonk

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

@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)
moreward (moreboxed.com)3 месяцев назад

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
Mitchell Hashimoto3 месяцев назад

Haha fear not

Фото профиля Mark
Mark3 месяцев назад

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

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

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

Фото профиля Mark
Mark3 месяцев назад

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

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

@morew4rd Terminals just support the features I want

Фото профиля Junsong Li
Junsong Li3 месяцев назад

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
Mitchell Hashimoto3 месяцев назад

Well first this is macOS

Фото профиля Junsong Li
Junsong Li3 месяцев назад

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
Reza Karegaran3 месяцев назад

is this your tmux experiment?

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

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

Фото профиля Reza Karegaran
Reza Karegaran3 месяцев назад

🙌

Фото профиля Jakub Kozłowski
Jakub Kozłowski3 месяцев назад

New variant of 2048 dropped

Фото профиля Josh
Josh3 месяцев назад

Can we save these so they can be restored?

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

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
Josh3 месяцев назад

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 🪵
Sebastien-console_buche 🪵3 месяцев назад

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
Moody3 месяцев назад

Tree data structure?

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

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

Фото профиля Ajey Gore
Ajey Gore3 месяцев назад

Love it.

Фото профиля Dominik Roszkowski
Dominik Roszkowski3 месяцев назад

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

Фото профиля Steve Trefethen
Steve Trefethen3 месяцев назад

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
Mitchell Hashimoto3 месяцев назад

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
Andy Matthews3 месяцев назад

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
Mitchell Hashimoto3 месяцев назад

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
Adam3 месяцев назад

very cool

Фото профиля Evert Junior
Evert Junior3 месяцев назад

At that point just use @maestriapp

Фото профиля Matthew Sanabria
Matthew Sanabria3 месяцев назад

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
Maciej Gajewski3 месяцев назад

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

Фото профиля Christian Alares
Christian Alares3 месяцев назад

This is almost identical as how panes work in

Фото профиля Hieu 🚀
Hieu 🚀3 месяцев назад

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

Фото профиля Raffi
Raffi3 месяцев назад

🔥

Фото профиля Kevin
Kevin3 месяцев назад

Add tabs in panes and you've got me.

Фото профиля Vito Botta
Vito Botta3 месяцев назад

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

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

Ironically pretty darn easy with plain CA though

Фото профиля vish
vish3 месяцев назад

Is this going to come down to libghostty?

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

No that’s not UI

Фото профиля linkarzu
linkarzu3 месяцев назад

macOS 4 life 💪

Фото профиля Blacktop
Blacktop3 месяцев назад

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

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

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
Landon3 месяцев назад

This is so dope

Фото профиля Toby 🇪🇺🇺🇦
Toby 🇪🇺🇺🇦3 месяцев назад

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
Sam Kerr3 месяцев назад

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
Mitchell Hashimoto3 месяцев назад

Generic framework

Фото профиля spacy
spacy3 месяцев назад

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

Фото профиля PhaseOne(Atin)
PhaseOne(Atin)3 месяцев назад

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

Фото профиля Schappi
Schappi3 месяцев назад

I got inspired and made a JS version

Фото профиля Jihoon
Jihoon3 месяцев назад

Nice! We need a better cmux

Фото профиля Seanghay
Seanghay3 месяцев назад

Looks nice

Фото профиля rusa
rusa1 месяц назад

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
asd3 месяцев назад

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

Фото профиля Mitchell Hashimoto
Mitchell Hashimoto3 месяцев назад

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

Фото профиля asd
asd3 месяцев назад

perfect!

Похожие видео