0

Sometimes on Void Linux, GDK will get into a broken state due to bad permissions on files in /usr/share/mime.

Any GTK applications will have an error like:

(evince:14593): Gtk-WARNING **: 11:32:26.476: Could not load a pixbuf from icon theme.

This may indicate that pixbuf loaders or the mime database could not be found. 

The bad permissions typically look like (notice all the files have a mode of 640):

-rw-r----- 1 root root  10773 Mar  1 13:37 aliases
drwxr-xr-x 1 root root  17650 Mar  1 13:37 application/
drwxr-xr-x 1 root root   1264 Mar  1 13:37 audio/
drwxr-xr-x 1 root root     72 Mar  1 13:37 font/
-rw-r----- 1 root root  21733 Mar  1 13:37 generic-icons
-rw-r----- 1 root root  31371 Mar  1 13:37 globs
-rw-r----- 1 root root  34843 Mar  1 13:37 globs2
-rw-r----- 1 root root     20 Mar  1 13:37 icons
drwxr-xr-x 1 root root   2474 Mar  1 13:37 image/
drwxr-xr-x 1 root root   5868 Mar  1 13:37 inode/
-rw-r----- 1 root root  28142 Mar  1 13:37 magic
drwxr-xr-x 1 root root    216 Mar  1 13:37 message/
-rw-r----- 1 root root 147456 Mar  1 13:37 mime.cache
drwxr-xr-x 1 root root     46 Mar  1 13:37 model/
drwxr-xr-x 1 root root    224 Mar  1 13:37 multipart/
drwxr-xr-x 1 root root    136 Mar  1 13:37 packages/
-rw-r----- 1 root root  17811 Mar  1 13:37 subclasses
drwxr-xr-x 1 root root   3220 Mar  1 13:37 text/
-rw-r----- 1 root root    964 Mar  1 13:37 treemagic
-rw-r----- 1 root root  21842 Mar  1 13:37 types
-rw-r----- 1 root root      5 Mar  1 13:37 version
drwxr-xr-x 1 root root    688 Mar  1 13:37 video/
drwxr-xr-x 1 root root    522 Mar  1 13:37 x-content/
drwxr-xr-x 1 root root     28 Mar  1 13:37 x-epoc/
-rw-r----- 1 root root   1775 Mar  1 13:37 XMLnamespaces

To fix the situation, the permissions must be fixed, and then the mime database and gdk pixbuf cache must be regenerated.

What is the best way to repair the permissions so that the files are 644?

1

To change all files in /usr/share/mime and below (without directories) with permission 640 to 644, you could run

find /usr/share/mime -type f -perm 640 -exec chmod 644 {} \;
  • find /usr/share/mime find files in /usr/share/mime
  • -type f restrict to regular files (non-directories)
  • -perm 640 and restrict find to files with permission 640
  • -exec chmod 644 {} \; executes chmod 644 on the files found
0

An alternative way to accomplish this specific permissions issue is to regenerate the mime database with the correct umask:

$ sudo sh
# umask 022
# update-mime-database /usr/share/mime
# exit

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.