Instead of introduction
If you ask what I need from a file manager application, there will be a number of requirements:
- The app should be fast and robust. No excuses.
- Its UI should be good enough. I’m not a designer but every time I see unequal paddings, my eyes bleed. Ah, a nice-looking dark theme is a must have for me as I often work at night.
- There should not be any magic under the hood. Come on, it’s just a tool, do what I say.
- It should be extensible. Any user should be able to create an extension and distribute it freely.
- And it should be built for the power users in mind.
I didn’t find any file manager for macOS that satisfied all the criteria above so I started to make Marta. You can read more in the initial blog post. A year passed since then and there’s still so much to be done, but I use Marta every day at my work on Kotlin and I’m happy with it. I feel it’s just what I always wanted to use, and the feedback I get let me know I’m not alone with this feeling. So thank you for your support!
Someday I was debugging something with my colleague Simon on his Linux desktop, and he used Dolphin. It’s basically an Explorer-style file manager, but one thing immediately caught my eye: Dolphin has a nice embedded terminal. Unlike nc/mc, the terminal panel there is always visible, each pane owns its own pty session, and the current dir is two-way synchronized. I thought it would be really great if Marta will offer the similar (or even better) experience, but there was not any good solution that I could just “plug-in”, so I eventually gave up the idea.
Several months later Simon switched to Mac. Thankfully, he liked Marta, and I started to think if I can add a terminal functionality again, but now more seriously. Google said me nothing, and I realized the simple thing one more time: if you want a thing done well, do it yourself.
I made an initial prototype, and, surprisingly, it wasn’t that hard. Of course, feature-parity with veterans like iTerm was never a goal, but there’re a lot of things to think about, like proper window resizing, multiple selections or URL highlighting. Thankfully, Simon helped me with some tasks, and now we have a fully-functional embeddable terminal called etty (I leave the reason for naming to your imagination ). I hope we will open the source code someday later.