Etty – an embedded terminal

October 2017 · 3 minute read

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.

Etty embedded terminal

etty is bundled in Marta 0.4.4 which is available from today.

Press ⌘O to open the terminal. Then you can quickly switch between it and your file list by pressing the same hotkey. If you want to hide etty, press ⌘⎇O. It’s easy to remember: ⌘O changes focus, and ⌘⎇O toggles visibility.

Note that even being hidden, the shell process is still running. Press ⌃D if the shell is not needed anymore.

There are five bundled themes for etty, and, of course, you can make your own. Just put the .ettyTheme file to the Themes directory inside the user configuration. Moreover, by default terminal view adapts to the main theme so it will look nice and consistent whatever Marta theme you use.

Note that it’s only the initial release of etty, and some features like search functionality are not implemented yet. Please file an issue if you have something cool in mind.

Have etty days with Marta! ❤️