* Imagenes de instalación de las versiones estables para Mageia y OpenMandriva.

OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.

Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.

¿Que fichero lleva el listado de los programas que componen el menú?

Estoy programando una sql con los programas que hay en el menú de kde y descripción, divididos por tipos, junto a la orden para llamarlos y se podrán llamar desde el programa para ejecutarlos, algo como alt-f2, más o menos pero con las lista o manual según se necesite.

Alguien sabe en que fichero se guarda dicha información porque no lo consigo encontrar, ya que tiene que estar en algún fichero de configuración.

Gracias y saludos!!!

Opciones de visualización de comentarios

Seleccione la forma que desee de mostrar los comentarios y haga clic en «Guardar opciones» para activar los cambios.


Gravatar de Vicx

# 114294 No hay un archivo donde

No hay un archivo donde encuentres un listado de programas del menú de kde, cada programa que se incluiría en el menú de kde tiene que instalar un archivo con un nombre tipo {nombreDePrograma}.desktop donde define las características de la aplicación como, lugar en el menú (internet, oficina, gráficos, etc), nombre genérico, icono, archivo a ejecutar, etc., el listado del menú es creado al arrancar kde tomando las características de las aplicaciones de los archivos mencionados.

Hay varias ubicaciones donde el programa puede instalar dicho archivo, dependiendo si es local al usuario, para todos los usuarios, si el programa es de kde y/u otras opciones, algunas de las rutas donde se encuentran dichos archivos podrían ser (no estoy seguro de ello :P ):

para aplicaciones instaladas por un usuario no root:

~/.local/share/applications/  

para aplicaciones instaladas por root:

/root/.local/share/applications/

/usr/local/share/applications/

/usr/share/applications/

/usr/share/applications/kde4/

Con respecto a la estructura de los archivos .desktop, este link te puede servir:

http://standards.freedesktop.org/desktop-entry-spec/latest/

Sobre como se conforma el menú creo que aquí lo podrás encontrar mas completo (la verdad me dio gueva volver a leerlo para encontrar las ubicaciones :P ):

http://www.freedesktop.org/wiki/Specifications/menu-spec?action=show&redirect=Standards%2Fmenu-spec

Espero esto te sirva, me costo mucho tiempo averiguar esto cuando alguna vez jugue con meterle la mano al menú pragmaticamente :P

Suerte.

Vicx.



Gravatar de DoctorBOFH

# 114295 Como bien te han respondido

Como bien te han respondido no es un fichero sino una ruta.Alli se quedan los ficheros .desktop.Edita cualquier fichero de estos y comprenderás que información contiene.Existen varias rutas, y los rpms siempre usan estas dos

/usr/share/applications/

/usr/share/applications/kde4/

Los programas instalados 'a mano',  lo dejan aqui

~/.local/share/applications/  

para aplicaciones instaladas por root:

/root/.local/share/applications/n Saludo

Suerte

Muy Suyo

Her DoctorBOFH



Gravatar de kapyderi

# 114301 Pues puede ser asi, pero....

Cuando utilizas...

kmenuedit 

...desde consola, te lleva para configurar tu menú y si pones "a mano" cualquier programa con su lanzador, lo guardas, por lo tanto tiene que haber un sitio donde se guarde esa información, sino para que vas a tener un botón de guardar, nop?

Ya habia revisado lo de los desktop,  tengo montados varios Rpm's, y se como funciona para que salgan en los menus, aunque lo hago automaticamente desde rpmbuilder y en la creacion del fichero extensión .desktop.

No tiene sentido hacer un rastreo en todo el ordenador para saber que programas hay en el menú, ya que hay varias ubicaciones, ya que se pierde tiempo y espacio, por lo que sigo pensando que para reducir memoria, tiene que haber algun fichero con esos datos, que se cargue en el local, incluso antes de cargar las X, ya que tanto en Kde, como Gnome u otros, tienen menús diferentes.

Creo que la solución pasa por bajarse el .src del paquete kmenuedit o su paquete "padre" y ver el source de dicho paquete para ver de donde recoge la info y como lo hace, ya que tiene pinta de ser algo parecido a un sql o sqlite o incluso xmls.

A ver si descubrimos el enigma xD

Saludos y seguimos investigando!!!!

Linux es como el Barça...lo tiene todo para ser el número uno
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)



Gravatar de Annubis

# 114302 kmenuedit

Modifica los .desktop. Bravas te ha dado la información correcta. Y tanto GNOME, como KDE, LXDE y alguno más siguen la misma especificación. El estándar XDG de freedesktop.



Gravatar de Guala

# 114307 ~/.config/menus/applications-kmenuedit.menu

Por lo  menos en kde, cuando creas a mano un nuevo elemento o submenú, los agregados y solo ellos, se guardan en el fichero ~/.config/menus/applications-kmenuedit.menu

Hace no mucho quería replicar mis intervenciones del menú en una MDV en MGA y encontré que los datos se guardaban ahí, puede que dicha info sirva.

Salu2!

¡Corriendo Mageia 7 ~ Plasma!... y una que otra distro como Arch + sabores y nuestra prima-tía-hermana, Fedora



Gravatar de kapyderi

# 114318 Pues es una pena...

...ya que para una tonteria voy a tener que programar un montón de codigo:

1.- Hacer un listado de los directorios comentados y pasarlos a una variable con algo como dir *.desktop de cada ruta y que lo junte en la misma variable.

2. - Entrar en cada uno de los componentes del listado (.desktop) mediante un for y buscar las 4 lineas que me interesan desechando las de otros idiomas con los comandos cat, grep, sed y otras.

3.- Abrir base de datos de Sqlite, ver si estan en dicha BD mediante rastreo y si esta, siguiente variable en el for y si no esta, añadir y guardar.

4.- Ventana de la DB, donde se puede visionar, lanzar, modificar, eliminar, etc.

5.- SOLO eso.

A ver, listados si que hay, por ejemplo:

/usr/share/applications/defaults.list (Por defecto)  o /usr/share/applications/mimeinfo.cache (Actualizado, creo que con guardar del keditmenu, por ejemplo, pero este no esta completo).

Lo que sigo sin entender es como al lanzar el Keditmenu, por ejemplo, tarde tan poco en recopilar toda la info del sin fin de .desktop que se pueden tener en el menú, ya que tiene que entrar en cada uno de los desktop y buscar la info, idioma, etc. ¿?, ya que por ejemplo en mi caso es casi automatico y tengo solo en juegos más de 70 enlaces. Algo NO me cuadra, pero en fin, será asi... Por ejemplo en mi programa para recopilar todos los rpm's que tengo en el sistema y conectarlas a un edit, me tardá varios segundos y eso que lo agarra sin tener que hacer ningún paso intermedio. Preguntaré en el foro de Kde Hispano a ver si sabe alguien como lo hace tan rapido Keditmenu.

Si alguien sabe algo más que se apunte al hilo, ya que me "fastidiaria" tener que programar más de 50 lineas de código para una chorrada que se puede hacer con dos o tres lineas.

Saludos!!!!

Linux es como el Barça...lo tiene todo para ser el número uno
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)



Gravatar de kapyderi

# 114328 Primera parte...

How to del punto 1

Si alguien no me corrige la mejor manera de recibir toda la ruta de los desktop que me interesan es...

find /usr/share/applications/ | grep ".desktop"

De esta manera he observado que me cogerá todos los subdirectorios dentro de  /usr/share/applications/ de forma recursiva y con grep ".desktop" me lo limita a lo que me interesa. Es la mejor opción para realizar la variable que me la llevaré a QT mediante un QProcess con los argumentos y los comandos anteriores. (No hay otra forma de poder recibirlos si no lo hago QStringList (Array).


Actualizado:


Implementado en QT con el siguiente codigo (para el que quiera aprender a programar en C++ y QT)


QString drakeSistema::getDB()
{
    QProcess *procesoFind, *procesoGrep;
    QStringList argumentosFind;
    QStringList argumentosGrep;
    QByteArray db;

    procesoFind=new QProcess(this);
    procesoGrep=new QProcess(this);

    argumentosFind << "/usr/share/applications/";
    argumentosGrep << ".desktop";

    procesoFind->setStandardOutputProcess(procesoGrep);

    procesoFind->start("find",argumentosFind);
    procesoGrep->start("grep",argumentosGrep);

    if (! procesoGrep->waitForStarted())
        return QString("");

    procesoFind->waitForFinished();
    procesoGrep->waitForFinished();

    db = QString(procesoGrep->readAllStandardOutput());
    procesoGrep->waitForFinished();

    delete procesoFind;
    delete procesoGrep;
    QString res =  QString(db);
    res.chop(1);
    return res;
}

Si en unos dias no me sabeis decir algo más de la info, será pasado al apartado de programación, pero de momento lo dejo aqui, porque en realidad es una duda de Linux.

Saludos!!!!

Linux es como el Barça...lo tiene todo para ser el número uno
Registered Linux user #472290
MiniBOFH 2008 - MediumBOFH - KapyBOFH - Utiliza RecoverDrake!! (Proyecto Derix)

Opciones de visualización de comentarios

Seleccione la forma que desee de mostrar los comentarios y haga clic en «Guardar opciones» para activar los cambios.