Posibles Errores en el tratamiento de archivos desktop con Gnome

Instalado Opensuse Leap 15.6 – Gnome ver 45.3, parece ser que los ficheros de escritorio (lanzadores) con la extensión “desktop” no son reconocidos como tales, sino que son tratados como ficheros de texto, abriéndose el editor de texto y mostrando su contenido al ser ejecutados.

Pongo como ejemplo el siguiente archivo: Arena Chess 1.1.desktop cuyo contenido es el siguiente:

1 [Desktop Entry]

2 Encoding=UTF-8

3 Version=1.0

4 Type=Application

5 Exec=‘/home/kant/Arenalinux_64bit_1.1/Arena_x86_64_linux’ %f

6 Name=Arena Chess 1.1

7 Comment=Custom definition for Arena_x86_64_linux

8 Icon=/home/kant/Arenalinux_64bit_1.1/Arena.ico

Al ejecutarlo en Terminal me ofrece los mensajes de error:

./Arena Chess 1.1.desktop: línea 1: [Desktop: no se encontró la orden

./Arena Chess 1.1.desktop: línea 5: fg: no hay control de trabajos

./Arena Chess 1.1.desktop: línea 6: Chess: no se encontró la orden

./Arena Chess 1.1.desktop: línea 7: definition: no se encontró la orden


El programa ha terminado. Pulse Intro para cerrar esta ventana.


Y si observamos el contenido donde linux almacena sus ficheros de escritorio de aplicaciones (/usr/share/applications), podemos apreciar con Nautilus que todos ellos aparecen con los iconos gráficos típicos como ficheros de texto y así se comportan al ejecutarlos.

Evidentemente algo falla en Gnome en el reconocimiento de este tipo de ficheros. Y me parece que es un tema importante.

¿A alguien se le ocurre como subsanarlo? Gracias.

@joselu Hola;

ln -s /data/applications/arenalinux_64bit_3.10beta/Arena_x86_64_linux bin/Arena_x86_64_linux

cd /data/applications/arenalinux_64bit_3.10beta

magick Arena.ico Arena.png

install -m0644 Arena-*.png ~/.local/share/icons/

cd

vi ~/.local/share/applications/ArenaLinux.desktop

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Name=Arena Chess 3.10beta
GenericName=Arena Chess 3.10beta
Comment=Custom definition for Arena_x86_64_linux
Type=Application
Terminal=false
Exec=Arena_x86_64_linux %f
Icon=Arena-1
Categories=Game;BoardGame;

Screenshot from 2024-08-27 16-13-52

Muchas gracias @Malcolmlewis por contestar tan rápido.
Me planteas que instale la versión 3.1 beta de Arena Chess.
Pero tengo que decir que he escogido ese fichero desktop solo a modo de ejemplo.
El problema que trato de aclarar no se circunscribe a ese fichero en concreto sino a todos los lanzadores con la extensión desktop que están instalados. Gnome no los ejecuta. No los identifica como ficheros de escritorio. Me extraña que no haya más reportes que vayan en este sentido. Y no se me ocurre como podría solucionarlo. Muchas gracias. SalU2

@joselu Hola, bueno, no están destinados a ejecutarse directamente, por lo tanto, los permisos son solo 644, debe agregar las categorías para que funcionen y aparezcan en el sistema de menú.

desktop-file-validate .local/share/applications/ArenaLinux.desktop 
.local/share/applications/ArenaLinux.desktop: warning: key "Encoding" in group "Desktop Entry" is deprecated

https://en.opensuse.org/openSUSE:Packaging_desktop_menu_categories

@joselu Además, con el soflink en su ~/bin siempre puede usar “Alt+F2”, comenzar a escribir en la aplicación y usar la función de completar tabulaciones para ejecutar desde allí.

Screenshot from 2024-08-27 20-42-11

@Malcolmlewis muchas gracias.
He instalado el administrador de archivos Nemo y ese problema con los ficheros desktop no existe. Los reconoce y ejecuta correctamente aunque se encuentren incluso fuera del menu. Tal vez el problema se derive a la vinculación Gnome-nautilus. En ese caso ¿existe algún fichero de configuración donde se pueda corregir algún parámetro para que funcione correctamente?. Muchas gracias de nuevo. SalU2.

@joselu Probablemente, debido al uso de los mismos nombres, GNOME, por ejemplo, Name=Files, entra en conflicto con Nautilus.

Debe comparar
cat /usr/share/applications/org.gnome.Nautilus.desktop
con
cat /usr/share/applications/nemo.desktop

@malcolmlewis Hola . Te agradezco la rapidez con que atiendes las dudas.
En este caso no se ha producido el conflicto al que te refieres porque el problema lo detecté el día 26 y la instalación de Nemo la realicé ayer día 29. Hoy el problema persiste con Gnome-Nautilus y sin embargo con Nemo funciona perfectamente. Sigo sin comprender porqué ocurre esto, cuando Gnome-Nautilus vienen incluidos en el pack de la propia imagen de OpenSuse 15.6. Gracias. SalU2

@joselu Hola, si inicias Nautilus desde la línea de comandos, ¿no hay errores?

@malcolmlewis Hola, no se me había ocurrido. Sí da errores pero no entiendo muy bien a que se refiere:

** Message: 19:32:00.572: Connecting to org.freedesktop.Tracker3.Miner.Files
/usr/share/nautilus-python/extensions/folder-color.py:19: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '4.0') before import to ensure that the right version gets loaded.
  from gi.repository import Nautilus, Gtk, GObject, Gio, GLib
Initializing nautilus-image-converter extension
TypeError: get_file_items() missing 1 required positional argument: 'items'
** Message: 19:32:01.402: Called "net usershare info" but it failed: La «red compartida» devolvió el error 255: net usershare: usershares are currently disabled

TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
** Message: 19:32:41.322: Called "net usershare info" but it failed: La «red compartida» devolvió el error 255: net usershare: usershares are currently disabled

TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'
TypeError: get_file_items() missing 1 required positional argument: 'items'

Con esto ¿comprendes como solucionarlo?. Gracias. SalU2.

Hola:
El archivo desktop es un archivo de texto, que indica donde se encuentra el binario (ademas define el icono,país,etc) cuando se ejecuta el binario, aparece un icono en barra de tareas y en sus propiedades, debe indicar donde se encuentra el desktop y en aplicación donde está la aplicación.
Ejemplo para kde, el ejecutable binario se encuentra en /bin y el desktop, se encuentra en /usr/share/applications, estando esos 2 elementos ahí, debe aparecer en lanzador de aplicaciones .

Si el programa, parte o se ha descargado desde /home , ya este tiene los permisos de usuario, si no vas al ejecutable y se lo pones, para que el usuario pueda ejecutarlo .
En el desktop, en propiedades, donde pone ejecutable, el programa tiene que aparecer en donde pone examinar, debajo, de ahí está el argumento (suele ser %F) y en la 1ª pagina del desktop, en contenido, tiene la ruta donde actualmente se encuentra el archivo desktop, mas abajo en ubicación aparece la ruta donde se encuentra , el desktop, es decir en /usr/share/applications.

Mira otros desktop y toma los mas o menos como ejemplo.
Saludos

@mikrios Hola, gracias por tu aportación, pero creo entender que aquí parece existir algún tipo de colisión de algún otro programa con Nautilus que interfiere en el debido funcionamiento de dichos archivos desktop. Gracias. SalU2

Parece el típico error de python de que le falta un argumento.

Buscando por "get_file_items() " en Google, sale que es un problema de Nautilius y en algunos están resueltos. Mira si te sirven, previa copia.

Gracias DiabloRojo. Creo que tu observación es correcta pero no he podido dar con la solución. Incluso he vuelto a reinstalar Nautilus sin ningún resultado. Además he observado otra incidencia que pudiera estar relacionada ya que también tiene que ver con los iconos, en este caso con los iconos de los archivos de video (avi, mp4, mkv, etc.) que no muestran un fotograma de su contenido como suele ser habitual sino que utiliza un modelo de tipo genérico todos iguales?!. En este caso también sucede con Nemo. Por eso sigo pensando que algo tiene que ver con Gnome. ¿Se puede reinstalar Gnome sin problemas? ¿Qué precauciones debo tener en cuenta? ¿Puedo instalar el entorno de escritorio KDE -Plasma5 sin desinstalar Gnome? ¿Pueden convivir ambos en el mismo PC? Gracias SalU2.

Contestando a tus preguntas por orden.

1.- Si se puede, en Yast->Instalar software, seleccionas por Patrones y clic en Escritorio Gnome, le das Ok y te lo desintala.

2.- Ninguna. Salvo que no te guste como esta Gnome y quieras dejarlo limpio. Tendrás que eliminar su carpeta de configuración. Algún compañero que tenga Gnome te lo puede mirar.

3.- y 4.- Si, puedes instalar Plasma y convivirá perfectamente con Gnome. Es más, puedes instalar todos los escritorios que quieras y usarlos, previa selección en el login cuando Cierras la sesión.

Nunca lo he probado, pero no veo el por qué no. Puedes instalar todos los DE de golpe e iniciar cada día con uno según gustes (y con el usuario que quieras).

De hecho, por defecto viene instalado Plasma o Gnome a elegir y además (aunque no te lo digan) IceWM:

 ~/Descargas  zypper se -v icewm                                                        ✔  16:03:16 
Cargando datos del repositorio...
Leyendo los paquetes instalados...

S  | Name                          | Type   | Version            | Arch   | Repository
---+-------------------------------+--------+--------------------+--------+----------------------------
i+ | icewm                         | paqu-> | 3.6.0-1.1          | x86_64 | Repositorio principal (OSS)
    name: icewm
   | icewm-config-upstream         | paqu-> | 3.6.0-1.1          | noarch | Repositorio principal (OSS)
    name: icewm-config-upstream
i+ | icewm-default                 | paqu-> | 3.6.0-1.1          | x86_64 | Repositorio principal (OSS)
    name: icewm-default
i+ | icewm-lang                    | paqu-> | 3.6.0-1.1          | noarch | Repositorio principal (OSS)
    name: icewm-lang
   | icewm-lite                    | paqu-> | 3.6.0-1.1          | x86_64 | Repositorio principal (OSS)
    name: icewm-lite
i+ | icewm-theme-branding          | paqu-> | 1.2.5-7.1          | noarch | Repositorio principal (OSS)
    name: icewm-theme-branding
   | icewm-theme-yast-installation | paqu-> | 84.87.20240405-1.5 | noarch | Repositorio principal (OSS)
    name: icewm-theme-yast-installation
   | icewm-themes                  | paqu-> | 0.1-689.4          | noarch | Repositorio principal (OSS)
    name: icewm-themes

Yo tengo esogido Plasma pero mira que tengo (y no lo he pedido):

 ~/Descargas  zypper se -iv gnome                                                       ✔  16:03:25 
Cargando datos del repositorio...
Leyendo los paquetes instalados...

S  | Name                         | Type    | Version     | Arch   | Repository
---+------------------------------+---------+-------------+--------+----------------------------
i+ | gnome-icon-theme             | paquete | 3.12.0-5.16 | noarch | Repositorio principal (OSS)
    name: gnome-icon-theme
i+ | gnome-icon-theme-extras      | paquete | 3.12.0-3.21 | noarch | Repositorio principal (OSS)
    name: gnome-icon-theme-extras
i+ | gnome-icon-theme-symbolic    | paquete | 3.12.0-3.21 | noarch | Repositorio principal (OSS)
    name: gnome-icon-theme-symbolic
i+ | gnome-keyring                | paquete | 46.2-1.1    | x86_64 | Repositorio principal (OSS)
    name: gnome-keyring
i+ | gnome-keyring-32bit          | paquete | 46.2-1.1    | x86_64 | Repositorio principal (OSS)
    name: gnome-keyring-32bit
i+ | gnome-keyring-lang           | paquete | 46.2-1.1    | noarch | Repositorio principal (OSS)
    name: gnome-keyring-lang
i+ | gnome-keyring-pam            | paquete | 46.2-1.1    | x86_64 | Repositorio principal (OSS)
    name: gnome-keyring-pam
i+ | gnome-keyring-pam-32bit      | paquete | 46.2-1.1    | x86_64 | Repositorio principal (OSS)
    name: gnome-keyring-pam-32bit
i+ | gnome-online-accounts        | paquete | 3.50.5-1.1  | x86_64 | Repositorio principal (OSS)
    name: gnome-online-accounts
i+ | gnome-online-accounts-lang   | paquete | 3.50.5-1.1  | noarch | Repositorio principal (OSS)
    name: gnome-online-accounts-lang
i+ | graphviz-gnome               | paquete | 2.49.3-11.1 | x86_64 | Repositorio principal (OSS)
    name: graphviz-gnome
i+ | libgck-modules-gnome-keyring | paquete | 46.2-1.1    | x86_64 | Repositorio principal (OSS)
    name: libgck-modules-gnome-keyring
i+ | openssh-askpass-gnome        | paquete | 9.8p1-3.1   | x86_64 | Repositorio principal (OSS)
    name: openssh-askpass-gnome
i+ | polkit-gnome                 | paquete | 0.105-15.3  | x86_64 | Repositorio principal (OSS)
    name: polkit-gnome
i+ | polkit-gnome-lang            | paquete | 0.105-15.3  | noarch | Repositorio principal (OSS)
    name: polkit-gnome-lang

A ti te pasará igual posiblemente teniendo cosas de Plasma.

EDIT: Aún no habías contestado @DiabloRojo y yo todavía estaba escribiendo mi tocho. He visto tu respuesta al publicar la mía. :sweat_smile:

Saludos

Hola:
Revisando el archivo desktop, se ve si es correcto la ruta del ejecutable.
El logo, icono u un gráfico, al asociarlo a un ejecutable, se crea un enlace simbólico, al ejecutable, ese es el archivo desktop.

Si se ve el ejecutable, en propiedades, o bien en editar el archivo, este indicara donde se encuentra el ejecutable.

Para el usuario, como dice @malcolmlewis es /home/user/share/ applicatios/…; ahí suele estar el desktop, y el ejecutable, puede estar en /usr/user/share/bin/ o en otro lugar,
aquí puede pasar algunas cosas, que desktop, este mal, que este en bin y no tiene permiso, idem lo mismo , pero tiene permiso y propiedad del ejecutable, o bien el argumento autoriza al usuario a ejecutarlo.

Estos son los 2 casos mas comunes ; 1º sesión usuario, 2º en raíz ; pero hay una excepción, que se instalara con Discover, este lo hace en la sesión de usuario, pero no en /.local , si no que crea un directorio oculto , llamado /.var (ejemplo instalar con discover la última versión de krita, este lo va hacer en /.var , tener en cuenta, que si hay que añadir, modificar algo, tiene que ser ahí, si no no funciona, lo que añadas (recursos,plugins,etc) ; este sería un 3º caso .

En el caso que no sea correcto, la aplicación no va a aparecer en el lanzador de aplicaciones, habría que crear el enlace simbólico a mano, una vez hecho, si aparece, ademas, ya se añada a favoritos, linea de ejecutables, pantalla, etc, todos ellos se van a ejecutar correctamente .

Ejemplos : beebref, esta en la barra de aplicaciones y en el escritorio, ademas en usuario, aparece en favoritos y en gráficos.
El desktop vino defectuoso y me baje el logo a parte, en formato png, a través de el hice el desktop, el defectuoso, ocupaba 170bytes y o menos, el correcto sobre 500 bytes., los enlaces simbólicos, se crean personalmente. (/usr /bin y en /usr/share/applications)

Krita , es una aplicación appimage, se crea destino a /.home/user/share/bin (funciona también si lo hago a /usr … etc (dado que el appimage se bajo desde el usurio y aparece como propietario y permisos de usuario, aunque lo ejecute desde la raíz, me funciona como usuario también, sin password, ni nada) . idem crear enlace simbólico .

La cámara fotográfica es Spectacle, creo el icono, lo relaciono con ejecutable y el desktop lo asocio al icono, pero no hace falta cambiar la ruta, ya que sigue siendo la misma.

Los datos de la ruta se buscan pidiendo propiedades al desktop, o bien editando (aquellos que no aparece propiedades, tiene una opción de editarlo, ahí aparece el icono, se pincha en el y se cambia por l que mas nos guste .

Como se ve es bastante sencillo, lo único son los parámetros, los cuales no tengo mucha información , pero con %F o sin eso funciona .

Saludos y espero que sirva de algo.

@mikrios /home/user/.local/share/applications

desktop-file-validate .local/share/applications/jaikoz.desktop 
.local/share/applications/jaikoz.desktop: error: (will be fatal in the future): value "jaikoz.png" for key "Icon" in group "Desktop Entry" is an icon name with an extension, but there should be no extension as described in the Icon Theme Specification if the value is not an absolute path

vi .local/share/applications/jaikoz.desktop

- Icon=jaikoz.jpg
+ Icon=jaikoz

desktop-file-validate .local/share/applications/jaikoz.desktop

https://build.opensuse.org/projects/home:malcolmlewis:TESTING/packages/beeref/files/beeref.desktop?expand=1

1 Like

Hola:
Correcto (coincidía con la información aportada y puede que de una pista en el post, por si hay un problema por ese lado y sobre todo enseñando la asociación de esos archivos ) .

La 1ª vez al ejecutarlo no creaba el logo (icon) , por lo que fui a su pagina Web y allí estaban ; había 3 , uno para windows, otro para mac y otro para linux.

El de linux, era logo.png , archivo que asocie a BeebRef.

No recuerdo si tenía ellos un ejemplo.

El que me creo a mí fue en Icon=/home/frank/.local/share/plasma_icons/logo.png.

Cuando ejecutas por 1ª vez un appimage, suele generar un desktop en el directorio Icon=/home/frank/.local/share/plasma_icons/logo.png (plasma_icons) , de ahí uno puede cogerlo y moverlo a la raíz o copiarlo y dejarlo en applications (lo mismo hace con krita , y si ves sus propiedades indica su path, excepto que no se ponga, por que coincide con el que tiene en la actualidad .

Este fue el que hizo :
[Desktop Entry]
Categories=Qt;KDE;Graphics;
Comment[es_ES]=A simple reference image viewer
Comment=A simple reference image viewer
Exec=/usr/bin/BeeRef-0.3.3.appimage
GenericName[es_ES]=Image Viewer
GenericName=Image Viewer
Icon=/home/frank/.local/share/plasma_icons/logo.png
MimeType=
Name[es_ES]=BeeRef
Name=BeeRef
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-KDE-ExtraNativeMimeTypes=
X-KDE-NativeMimeType=application/x-beeref
X-KDE-RunOnDiscreteGpu=false
X-KDE-SubstituteUID=false
X-KDE-Username=

path , como ves esta en blanco, si vas a propiedades y miras en applications y le dices examinar, el busca la ruta (path) del programa , y de ese archivo de texto obtenemos los datos que enlaza con el programa (el logo “icon” y la ruta , es decir icon y path, mas el ejecutable ) .

En este caso, el desktop que generaba , daba error (en total genero en las pruebas 3 desktop : uno de 143bytes (incorrecto ya que el nombre no coincide con la aplicación) , el 2º que genero fue de 389 Bytes (funciono, pero añadió mas datos a la aplicación( poniendo el tipo de ella, o sea una appimage) y el 3º correcto, puso lo que pedía (el 1 “no” y el 2 y 3 “yes” bien y funcionando) .

El archivo, desktop, puede ser mas complejo y añadir mas datos (nombres en mas idiomas, copyright, etc…) ; pero @malcolmlewis con la información que aportas, es buena para seguir la pista a esa asociación, entre icono y path , mas ejecutable “exec” (para comprobar el problema de este post) , ademas de servir para personalizar tus programas y escritorio.

Cosa que llevo haciendo desde hace tiempo; sustituyo los icons, por una versión , mas objetiva y natural (o por una versión que destaque mas o sea personalizada ) .

Gracias por los datos aportados y Saludos cordiales .

Gnome FlashBack el verdadero Gnome :smiley: