Atom Profiles


Hello folks!

I would like to know if there’s a way to enable “profiles” in Atom in order to use for example “Profile one” with “Plugin one” and “Plugin two”, an “Profile two” with “Plugin three” and “Plugin four”, and be able to switch between them.

Allow grouping packages together

No, this capability doesn’t exist currently. What is the benefit of switching between profiles like you suggest rather than having all packages loaded and ready to go?


I program in C# and PHP and I don’t want to overload Atom with plugins for both languages. I want Atom to continue running fast.


Ok, so you want to defer loading of things that you don’t need yet. Atom has mechanisms for that. But once something has been loaded and is ready to go, unloading it just means that you would have to load it again if you need it again … incurring an additional cost.

As a matter of fact, we’re building in more mechanisms to build more ways to defer loading and activation of packages to speed up launch times. So this may achieve your underlying goal of Atom remaining fast without the necessity of having to make a manual change from one profile to another.


On the contrary, I think this would help! As atom is being used to create IDEs (Nucleide, PlataformIO, etc.), I think it would be really convenient to have mode switcher or profile system with user defined parameters. For example lets say I want to work with PlataformIO and then do some work with Nuclide. It works best if those two instances are separate. Also PlataformIO might add things I do not want to have while coding in Nuclide (like buttons and such). Also, I might want a different syntax highlighting color for each programming language I use or you just don’t want some unneeded packages that slow you down. Instead of manually enabling/disabling for each use (which can get to ones nerves), you just make your own and switch when necessary. This might also come into use when you run multiple instances of atom and want a different mode on each instance.


This would be an awesome feature, for starters as a user I am already familiar with the concept of profiles like google chrome has, I use one for work and one for home. Both have different set of extensions and plugins that I use.

Having a similar concept in Atom would be a real treat. During the day when I am at work, I have a different SCM manager that’s internal to my org, we have developed a package for Atom. And use a ton others that’s related to tech stack that I use at work.

By night, when I am working on Node, JavaScript, Git etc., I use a completely different stack. This doesn’t need the packages from my day job. Additionally its cumbersome as well because the way the UI is arranged in both setups.

So yeah, something like profiles should be a real life saver.


I support this 100%

As soon as you start using Atom for two different programing language or software stack, your plugins start to conflict, and Atom slows down. I’d love profiles.


This would be awesome


I posted already on this github issue, but I’ll copy my comment to here:

Commenting with another use case:

I teach a programming class two days a week, where I sometimes project my screen onto the wall. When I do that, I need light UI and Syntax themes (usually I prefer dark). I also need to disable linting and autocomplete, and crank up the font size.

It would be nice to not have to toggle all of these settings every other day.


I also would love to see this. I have different plugins that change my UI depending on what I’m using it for. It’s annoying to have to disable packages depending on my task.


I signed up just to upvote this idea. I love having profiles in Chrome and Firefox so I can have different set of extensions installed for each. In my browsers, I have a set of main extensions for browsing, another for shopping, another for a completely clean session.

With Atom profiles I would be able to have a profile specific for the language I’m writing in making sure I don’t have a lot of unnecessary baggage for Scala when I’m writing in Go.


:+1: Invaluable option. For beginners and not.


+1 This would be awesome

As workaround if you are using a Linux OS you can:

  1. create an empty folder like “/home/luca/atomprofile/nucleide”

  2. create a script with the following content:

    #!/usr/bin/env bash

Assuming that the name of the script is, you can run atom or apm using: atom . apm list --installed --bare

I hope that this tip will be helpful until this feature will be added in Atom :slight_smile:


+1 this.

I myself use atom between many different machines for many different tasks, for which I use most machines for most tasks. I.e.
At work, I am a full stack web developer working with a PHP dev environment on Windows.
At home and also at my brother’s house, I have a few PCs, windows and ubuntu, where I do everything at work, and also C# Game dev with the Unity engine, Bash (mainly, soon python I hope) with Raspberry Pis, and also some Arduino work. I’m even looking at branching out into mobile development too, which would mean I would want another profile on top of everything else.

For each of these separate tasks, I require different things loaded in Atom (i.e. PHPUnit and Composer at work, omnisharp-atom for Game Dev).

Atom is great for this, it integrates with everything and I am not stuck with a purpose-specific IDE like the Arduino IDE, or the Monodevelop IDE (for Unity). However, with my requirements being so vast, it’s painful to wait for atom to initialise all the different extensions that I like to use.

If this feature could be implemented into Atom, that would make me a very happy code monkey.


Can’t you use different values of the ATOM_HOME environment variable when you run atom to achieve this? Maybe just not side by side?


That does work, but it’s not convenient to change even when you know how, for any OS.



I have found the lack of having profiles to be somewhat irritating.

Case in point: I have multiple projects that I’m working on that use the same file type but multiple plugins try to “own” the file.

  • Project 1:
    One is from several years ago. It uses ES5 and Polymer. This means I will be working with HTML files that read as Polymer files.

  • Project 2:
    Another is working with TypeScript that have been inconveniently named with .js extension.

  • Project 3:
    Another works with the regular ES6 JavaScript files and normal HTML files.

The Result:
The regular HTML files are linted and “penalized” because it doesn’t adhere to the Polymer syntax.
The regular JS files are linted and “penalized” because it doesn’t follow the TypeScript syntax and rules.
While the plugins that are not being utilized theoretically are not supposed to be in memory, the ones that do read those files still are loaded and run because they are configured that way. The only alternatives right now are to use different editors for different projects or to turn on and off the plugins needed while switching projects. Neither one is acceptable.