# How to install Juno from the command line?

**URL:** <https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377>\
**Category:** Juno\
**Created:** [January 15, 2020, 4:14am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377 "2020-01-15T04:14:51Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 15, 2020, 4:14am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/1 "2020-01-15T04:14:51Z")

</div>

I am trying to build a docker image with Juno pre-installed.

However, after adding the line

```julia
RUN apm install uber-juno

```

and when I run Atom, it will show the usually, “Juno: Installing Atom packages” pop-ups and it is quite a few minutes before the setup process is complete.

I wonder if there is a way to do all those in the command-line so that the first time I open Juno, it’s already set up?

I also need to answer Yes to the question “Julia-Client: Open Juno-specific panes on startup?”.

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [January 15, 2020, 4:28am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/2 "2020-01-15T04:28:14Z")

</div>

You can manually install packages that `uber-juno` installs instead:

```julia
apm install julia-client
apm install ink

```

and optionally

```julia
apm install latex-completions
apm install indent-detective
apm install hyperclick
apm install tool-bar

```

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 15, 2020, 4:28am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/3 "2020-01-15T04:28:47Z")

</div>

I found this page to be helpful [Developer Installation Instructions · Juno Documentation](http://docs.junolab.org/latest/devdocs/dev_install/)

Just install the packages that `uber-juno` does the trick for me except answering Yes to the question. But that should be left to the user, I just need a way to remember that preference once set! Probably by mounting a folder that serves as the config folder.

add the below to the Dockerfile is helpful

```julia
RUN apm install language-julia && \
  apm install julia-client && \ 
  apm install ink && \
  julia -e "using Pkg; pkg\"add Atom Juno\"; pkg \"precompile\""

```

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [January 15, 2020, 4:31am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/4 "2020-01-15T04:31:08Z")

</div>

> [@xiaodai](#):
>
> I also need to answer Yes to the question “Julia-Client: OPen Juno-specific panes on startup?”.

for this you can

```julia
apm config set "julia-client.uiOptions.layouts.openDefaultPanesOnStartUp" false

```

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 15, 2020, 4:32am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/5 "2020-01-15T04:32:28Z")

</div>

> [@aviatesk](#):
>
> apm config set “julia-client.uiOptions.layouts.openDefaultPanesOnStartUp” false

Nice. How did you find out? Did you read the code for Juno?

Looking for a way to generalise this so can be done more easily for ppl reading this post.

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [January 15, 2020, 4:35am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/6 "2020-01-15T04:35:38Z")

</div>

Because I’m a currently active developer of Juno ?  
I’m familiar with those layout stuff since I made those configs by myself.

But you can always read code of Juno – [atom-julia-client](https://github.com/JunoLab/atom-julia-client) and [Atom.jl](https://github.com/JunoLab/Atom.jl) keep most things.

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 15, 2020, 4:38am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/7 "2020-01-15T04:38:54Z")

</div>

Ok. One more question if I may 🙂

How do I externalise the Juno settings? E.g. if I want to persist the settings across docker sessions (docker deletes everything after run).

Is there like a config file taht I need to mount from my local drive? Where would that config/setting file be located? How do I point Juno to that config file?

This might be an Atom questoin rather than a Juno question. But when I am done with this I will release this image so other Julia users can just `docker run juno` to enjoy the benefits of Juno. Thanks in advance.

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [January 15, 2020, 4:44am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/8 "2020-01-15T04:44:33Z")

</div>

> [@xiaodai](#):
>
> This might be an Atom questoin rather than a Juno question

yes, this is right. Juno just uses atom’s global config settings which is usually located in `~/.atom/config.cson` (you can see [its manual](https://flight-manual.atom.io/using-atom/sections/basic-customization/#global-configuration-settings))  
Also you can specify which `.atom` directory you want to refer to via setting [`ATOM_HOME` env variable](https://flight-manual.atom.io/using-atom/sections/basic-customization/#custom-home-location-with-an-environment-variable)

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 15, 2020, 4:51am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/9 "2020-01-15T04:51:47Z")

</div>

After adding these lines to Docker it runs great, but the toolbar doesn’t show.

```julia

RUN apm install language-julia && \
  apm install julia-client && \
  apm install ink && \
  apm install latex-completions && \
  apm install indent-detective && \
  apm install hyperclick && \
  apm install tool-bar  

RUN julia -e "using Pkg; pkg\"add Atom Juno\"; pkg\"precompile\""

RUN apm config set "julia-client.uiOptions.layouts.openDefaultPanesOnStartUp" true

```

And I still get this message.

![image](https://global.discourse-cdn.com/julialang/original/3X/e/a/ea4c85597b436db392bdabf1d964c2c839a71962.png)

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [January 15, 2020, 4:54am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/10 "2020-01-15T04:54:16Z")

</div>

You can do:

```julia
RUN apm config set "julia-client.uiOptions.enableToolBar" true
RUN apm config set "julia-client.firstBoot" false

```

(the appearance of the tool-bar may need more tweaks if you want the default style that `uber-juno` sets automatically)

for other settings see [https://github.com/JunoLab/atom-julia-client/blob/master/lib/package/config.coffee](https://github.com/JunoLab/atom-julia-client/blob/master/lib/package/config.coffee)

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 15, 2020, 5:07am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/11 "2020-01-15T05:07:31Z")

</div>

> [@aviatesk](#):
>
> RUN apm config set “julia-client.firstBoot” false

Running these have no impact at all. I am running root because it’s inside docker. Could that be the issue?

I can see that updating the settings through the GUI updates the “~/.atom/config.cson” file but `apm config set “julia-client.firstBoot” false` has no impact.

I still get the same dialog boxes and no toolbar

**Update**  
I see that `~/.atom/.apmrc` does receive the updates but those seem to be used by Juno. I see these 3 lines in .apmrc

```julia
julia-client.uiOptions.layouts.openDefaultPanesOnStartUp=true
julia-client.uiOptions.enableToolBar=true
julia-client.firstBoot=false

```

I just tried the below commands in normal Ubuntu (i.e. no docker) and they don’t have an impact either

```julia
apm config set "julia-client.uiOptions.enableToolBar" true

```

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [January 15, 2020, 9:34am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/12 "2020-01-15T09:34:29Z")

</div>

Yeah, `apm config set` doesn’t do what you want (you can use that to configure `apm` itself, but not Atom). I’d suggest either mounting the config file from the host or putting something like

```nohighlight
RUN echo '
"*":
  "julia-client":
    firstBoot: false
    uiOptions:
      enableToolBar: true
      layouts:
        openDefaultPanesOnStartUp: true
' >> config.cson

```

into your dockerfile.

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [January 15, 2020, 11:34am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/13 "2020-01-15T11:34:39Z")

</div>

@xiaodai ah sorry for the wrong info. I really misunderstood what `apm config` does.

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 15, 2020, 10:37pm UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/14 "2020-01-15T22:37:17Z")

</div>

> [@pfitzseb](#):
>
> RUN echo ’ “\*”: “julia-client”: firstBoot: false uiOptions: enableToolBar: true layouts: openDefaultPanesOnStartUp: true ’ \>\> config.cson

This works great except the toolbar is now on top instead of on the side. How to fix this? It’s in UI options .

 ![image](https://global.discourse-cdn.com/julialang/original/3X/c/e/ced4823523187c0c41c25be8c2e7b0374f2b401d.png)

**Update** \*

Right clicking ont he toolbar shows the option to reposition it. So have done so. By adding this line

```julia
  "tool-bar":
    position: "Left"

```

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [January 16, 2020, 8:56am UTC](https://discourse.julialang.org/t/how-to-install-juno-from-the-command-line/33377/15 "2020-01-16T08:56:53Z")

</div>

well, [here](https://github.com/JunoLab/uber-juno/blob/master/lib/uber-juno.coffee#L19-L24) you can find other config settings that `uber-juno` automatically sets
