# WTF plots causing Signal desktop app to run?

**URL:** <https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126>\
**Category:** General Usage\
**Created:** [December 11, 2019, 12:46am UTC](https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126 "2019-12-11T00:46:18Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)\
**Post date:** [December 11, 2019, 12:46am UTC](https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126/1 "2019-12-11T00:46:18Z")

</div>

I am relatively new to Julia, I try to use it every so often. Right now I have a problem where I’m solving some diffusion problems and have some data that I want to plot.

So, Queryverse looks nice, and I decide to try to plot some data with:

```julia
df = DataFrame(x=simlocs[1:end,1],y=simlocs[1:end,2],z=simlocs[1:end,3],conc=simlocs[1:end,4])
df |> @vlplot(:point,x=:x,y=:y)

```

and immediately I get

```julia
Set Windows Application User Model ID (AUMID) { appUserModelId: 'org.whispersystems.signal-desktop' }
NODE_ENV production
NODE_CONFIG_DIR /opt/Signal/resources/app.asar/config
NODE_CONFIG {}
ALLOW_CONFIG_MUTATIONS undefined
HOSTNAME undefined
NODE_APP_INSTANCE undefined
SUPPRESS_NO_CONFIG_WARNING undefined
userData: /var/local/dlakelan/config/Signal
config/get: Successfully read user config file
config/get: Successfully read ephemeral config file
making app single instance

```

And the Signal desktop app (encrypted end to end text messages) opens up and says welcome to Signal…

WTH?

(running on Debian, x86-64, under Gnome)

EDIT:  
I’m guessing what’s going on is that the VegaLite package is producing some webpage and then trying to open it in a browser, but instead of a browser, it’s opening Signal… I really want it to open Firefox. I suspect I can set this somehow but how?

EDIT2: I can see the html files in /tmp/ and open them manually by running firefox on them, but how to get the julia package to actually open firefox instead of Signal?

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [December 11, 2019, 2:33am UTC](https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126/2 "2019-12-11T02:33:42Z")

</div>

VegaLite.jl uses `xdg-open` on linux to launch the browser. See e.g. [XDG MIME Applications - ArchWiki](https://wiki.archlinux.org/index.php/XDG_MIME_Applications) for the info needed to fix it. You probably want to use `xdg-mime default firefox.desktop text/html` or something like that; or maybe gnome has a tool for configuring default applications?

On my system, `xdg-mime query default text/html` returns firefox.desktop, and vegalite.jl works pretty much as expected.

---

<div class="post-metadata">

**Author:** ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)\
**Post date:** [December 11, 2019, 2:37am UTC](https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126/3 "2019-12-11T02:37:23Z")

</div>

awesome, your arcane incantation was exactly what was required… 😉

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [December 11, 2019, 2:50am UTC](https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126/4 "2019-12-11T02:50:40Z")

</div>

I’ve spent more time than I care to admit trying to figure out the maze of the XDG MIME spec and why it was making my desktop behave oddly. ☹ Glad it was helpful to someone else, too. 🙂 (Now just wait until you find an application that relies on `rifle` which uses an entirely different set of data to decide what application to open a file with)

---

<div class="post-metadata">

**Author:** ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)\
**Post date:** [December 11, 2019, 2:53am UTC](https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126/5 "2019-12-11T02:53:35Z")

</div>

The fact that these are desktop specific systems, and yet there’s no obvious way to make these selections with a GUI is kinda annoying. I mean, Gnome has a “default applications” thing but it was _already_ set to firefox… so who knows which system that was configuring…

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [December 11, 2019, 5:34pm UTC](https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126/6 "2019-12-11T17:34:19Z")

</div>

You can also use [ElectronDisplay.jl](https://github.com/queryverse/ElectronDisplay.jl), if you want to avoid the browser entirely. The `master` branch has an experimental plot gallery 🙂

---

<div class="post-metadata">

**Author:** ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)\
**Post date:** [December 11, 2019, 5:55pm UTC](https://discourse.julialang.org/t/wtf-plots-causing-signal-desktop-app-to-run/32126/7 "2019-12-11T17:55:21Z")

</div>

Thanks, I will take a look at that. For now the browser is fine because I can collect multiple plots in different tabs and review them in a history. But it is a little clunky, so sometimes I may want the Electron based framework.

Overall, the whole thing is SWEET so I gotta give props where they belong!
