Manage your Dotfiles with Fig
Today, we're incredibly excited to launch Dotfiles πππ
Dotfiles makes it ridiculously easy to:
- π§βπ» manage your shell configuration (aliases, env variables, $PATH, functions, and more)
- β‘οΈ instantly sync your dotfiles across your devices
- π€― share dotfiles with your team
To get started, just run fig
If you don't have Fig, download it here or by running brew install fig
What are dotfiles?
Dotfiles are effectively your "settings" as a developer. They are plain text configuration files that allow you customize preferences, environments, utility workflows, and more for a wide variety of application. They are called "dotfiles" because they start with a dot (e.g. .bashrc
or .zshrc
).
The bash
, zsh
, and fish
shells are some of the most commonly used programs that have dotfiles. However, many CLI tools like git
, vim
, and ssh
are configured through dotfiles too.
What's wrong with dotfiles?
It's 2022. The fact that we are still using hidden plain text files to configure our shell is sort of crazy... Every developer uses the shell almost every day. But for many, the process of managing the shell dotfiles is not just painful, but also downright scary.
We've found developers find dotfile management most painful in the following 4 areas:
- Editing: Editing these files is cumbersome and error prone. There are no guardrails. One mistype and your entire environment can break. The experience is totally unlike editing your settings in today's more modern interfaces.
- Discovery: How do you even know what you can configure? There are no builtin hints or dropdowns. You're entirely on your own. Devs are left to discover best practices through their mentors or articles sporadically shared on Hacker News.
- Syncing: Developers use multiple devices. Why aren't the changes you make to your shell on one device instantly synced to your other devices? Some devs jerry-rig their own solution to this but even then it often involves too much manual effort to sync on each change, or worse, the dev simply forgets how their solution works in the first place.
- Collaboration: Dotfiles aren't just an individual thing. Teams share environments, secrets, utility scripts, and more all the time. Engineering onboarding often involves copying and pasting lines of code directly into your shell config. Why is this so manual and painful? Why can't you easily merge your team's config with your own personal config?
Shell dotfiles are crucial to developer productivity. We don't think existing solutions work well for developers and that's why we've built Dotfiles (with a capital D!)
How Fig Dotfiles works
Fig gives you a simple, modern, keyboard driven UI to manage your dotfiles. Every change you make is instantly synced across all your connected devices. Finally, dotfiles can be owned by you or your team. Any time you want to edit your shell config, all you have to do is run fig
.
Dotfiles is built with the following product principles in mind:
- Speed: Fig should be the fastest way to edit your dotfiles.
- Compatibility: Fig should work seamlessly with
bash
/zsh
/fish
(soon powershell) and every OS - Instant Sync: All changes should be instantly synced across connected devices
- Collaborative: Individuals, teams, and communities should all be able to own dotfiles
- Secure: Any secrets / private data should be E2E encrypted
- No lock-in: Dotfiles should be able to be exported at any time
Together with the Fig Plugin Store, the product is designed to be a full replacement to your existing shell dotfiles (.bashrc
, .zshrc
, config.fish
).
Teams
Your dotfiles aren't just a personal thing. Teams often use Slack or Notion docs to share scripts, environments, secrets, CLI tools, and utility functions. We think this is quite silly. Why isn't there a source of truth for a team's dotfiles that can easily be synced and merged with your personal dotfiles?
That's exactly what we've built! You can create a new team by clicking in the top left corner of our app, add your teammates in settings, and then start collaborating on your team's dotfiles today (it's actually quite neat).
At Fig, we use our team dotfiles account to share secrets, database access URIs, utility scripts/aliases, and more. Onboarding a new engineer is as easy as adding them to our Fig team π
What's next for dotfiles?
What we are launching today accomplishes the majority of what you need from a dotfiles manager. In saying that, there are still kinks and we have a ton more features that we want to add including:
- https://dotfiles.com - every Fig user will get their own custom dotfiles.com namespace π
- CLI tool / package management
- Built in version control
- Better keybinding support
- Performance improvements (we are working on caching to make it much much faster)
- Secret encryption (currently secrets are not encrypted)
- Powershell support
- Easy export to GitHub/GitLab/BitBucket
Please let us know what you would like us to prioritize, we are eager to hear your feedback! β€οΈ
How does Fig make money?
We get this question a lot. Fortunately, we are officially launching pricing in the coming weeks. In the meantime here's a quick summary:
Our pricing model is inspired by GitHub's:
- For individuals, small teams, and open source projects, Dotfiles will be free.
- For larger teams, Fig will charge a small fee per person per month
Finally, Fig's pricing will include access to all Fig products, not just Dotfiles!
Whatβs next for Fig?
Fig makes it easy for engineers/teams to manage terminal environments and workflows, all in one place. Our first app was autocomplete, our second was the Fig Plugin Store, we've just launched Dotfiles, and we have plenty more planned for this week and the rest of this month.
Stay tuned π
Want to stay up to date? Follow us on Twitter: twitter.com/fig