# How to set the \`xdg-mime\` default?

**URL:** https://discourse.nixos.org/t/how-to-set-the-xdg-mime-default/3560
**Category:** Help
**Created:** [July 28, 2019, 10:07am UTC](https://discourse.nixos.org/t/how-to-set-the-xdg-mime-default/3560 "2019-07-28T10:07:51Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![wizzup](https://discourse.nixos.org/user_avatar/discourse.nixos.org/wizzup/32/1178_2.png) [@wizzup](https://discourse.nixos.org/u/wizzup)
#### Post date: [July 28, 2019, 10:07am UTC](https://discourse.nixos.org/t/how-to-set-the-xdg-mime-default/3560/1 "2019-07-28T10:07:51Z")

</div>

I try to make `xdg-open` use `evince` for `pdf` files but not success.

I have try

```auto
$ xdg-mime default evince.desktop application/pdf

```

but it always ignored (without any error) and fall back to `draw.desktop`

```auto
$ xdg-mime query default application/pdf
draw.desktop               

```

Do I need to set some config in `/etc/nixos/configuration.nix`?

---

<div class="post-metadata">

### Author: ![teto](https://discourse.nixos.org/user_avatar/discourse.nixos.org/teto/32/182_2.png) [@teto](https://discourse.nixos.org/u/teto)
#### Post date: [July 28, 2019, 12:47pm UTC](https://discourse.nixos.org/t/how-to-set-the-xdg-mime-default/3560/2 "2019-07-28T12:47:48Z")

</div>

you can run the same command with XDG\_UTILS\_DEBUG\_LEVEL=2 to understand what’s going on

---

<div class="post-metadata">

### Author: ![Infinisil](https://discourse.nixos.org/user_avatar/discourse.nixos.org/infinisil/32/26523_2.png) [@Infinisil](https://discourse.nixos.org/u/Infinisil)
#### Post date: [July 28, 2019, 6:45pm UTC](https://discourse.nixos.org/t/how-to-set-the-xdg-mime-default/3560/3 "2019-07-28T18:45:21Z")

</div>

Short xdg-mime tutorial:

- `xdg-mime query filetype <file>` to get the mimetype of `<file>`
- see available .desktop files in `/run/current-system/sw/share/applications` (or others from `$XDG_DATA_DIRS`)
- use `xdg-mime default <programname>.desktop <mimetype>` to change the default program, e.g. `xdg-mime default firefox.desktop text/plain`
- Mime type for HTTP and HTTPS is `x-scheme-handler/http` and `x-scheme-handler/https`

The reason your command doesn’t work is because the evince .desktop file was renamed to `org.gnome.Evince.desktop`, so this command should work:

```auto
xdg-mime default org.gnome.Evince.desktop application/pdf

```

---

<div class="post-metadata">

### Author: ![nrj](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/n/22d042/32.png) [@nrj](https://discourse.nixos.org/u/nrj)
#### Post date: [January 19, 2022, 5:50am UTC](https://discourse.nixos.org/t/how-to-set-the-xdg-mime-default/3560/4 "2022-01-19T05:50:07Z")

</div>

Here’s a home-manager solution:

> [@Set default application for mime type with home-manager](https://discourse.nixos.org/t/set-default-application-for-mime-type-with-home-manager/17190/4):
>
> Useful debugging tools: XDG\_UTILS\_DEBUG\_LEVEL=2 xdg-mime query filetype foo.pdf XDG\_UTILS\_DEBUG\_LEVEL=2 xdg-mime query default application/pdf fd evince.desktop / This works: xdg.mimeApps = { enable = true; associations.added = { "application/pdf" = ["org.gnome.Evince.desktop"]; }; defaultApplications = { "application/pdf" = ["org.gnome.Evince.desktop"]; }; };
