Activate and deactivate certain packages with a few clicks


#1

I use Atom for writing a lot of stuff and it’s convenient to use appropriate packages for each task. For example, if you want to work on a web-related stuff, you can basically create a web IDE by activating certain packages; if you want to do IoT-related coding, you can also use packages that go with that. The problem is, if you want to switch between these IDEs, you need to manually disable and enable all the packages and settings, which is painful. You might suggest enabling all the packages, but, unfortunately, that doesn’t solve it either because often there are conflicts between them and packages ask you to disable other packages or change their settings, and you might as well want to adjust settings for each IDE as needed; also, some packages display toolbars that are convenient for one task, but an obstacle for the others.

What I’m looking for is a simple package or even a native feature (if there is one) to automate this process. I want to be able to name an IDE as “Web” or “IoT” and select the specific packages and settings for it; then to be able to activate the desired feature-set with a few clicks.

Thanks in advance!


#2

Obviously not viable in your case (because if it were, I’m sure package authors would be using it), but Atom does support ‘activation hooks’, which are used to selectively enable packages based on editor information.

For example, packages can be set to activate when a certain package’s grammar is used, which effectively means you only get relevant packages activated when editing a specific file type.

I agree, a setting somewhere to group packages would be nice though. It’s definitely possible with the atom API, so you could even write a package that does it or add something to your init script.


#3

The config.cson file contains a setting for disabled packages. If a package took control of that and gave it a UI, it would allow enabling or disabling of large numbers of packages at once. However, you can’t currently have different package loadouts for different windows unless you do something hacky to open a second window with a different ATOM_HOME.


#4

Thank you both for your suggestions.

Yeah, that’s one way to achieve different IDE profiles, but that’s definitely hacky. I don’t really care about doing it per-window basis, though.


#5

The most complicated part of this would be to create a GUI. Without a GUI, the different profiles could be stored in a .json file and the package could perform edits to the configs to swap between default profiles, which would take a couple dozen lines of code and could live comfortably in init.coffee.

What would be your ideal workflow in terms of downloading and configuring a package like this?


#6

I’m using Docker Toolbox on Windows 10 Home. I have a base debian container from which I build a base atom container. I can them use that atom base to build development specific containers using the Atom Package Manager command line. For example,

FROM my/atom

USER root

RUN DEBIAN_FRONTEND=noninteractive apt-get -y install      \
        python3 python3-pip                                                       && \
                                                                                                      \
    pip3 install graphviz                                                            && \
    apm install autocomplete-python                                        && \
    apm install python-tools

USER ${DEV_NAME}

Obviously, this method has a lot of other overhead, but I use this method for all sorts of task-specific containers, and never worry that updating one tool in a host will totally break any environments.


#7

Sorry for a delayed response.

It’d probably be like enabling and disabling packages and settings first, then going to the package settings and naming the IDE profile.