Tu n'as pas forcément besoin de connaître bash… Juste la manière d'utiliser dmenu. dmenu prend une liste en entrée et renvoie le choix de l'utilisateur. Tu peux générer cette liste avec du C++, du Python, du shell… Perso, j'irai sur une approche shell bien plus (extrêmement) naïve, de ce genre :
#!/bin/sh
find_desktops(){
find /usr/share/applications/ -name '*.desktop'}
list_apps(){for desktopfile in $(find_desktops); do
basename $desktopfile | sed "s/.desktop$//"done}
app_to_file(){
find /usr/share/applications/ -name "$@.desktop"}
desktop_to_command(){
grep -e "Exec=""$@" | sed "s/Exec=//" | cut -d" " -f1
}app="$(list_apps | dmenu)"file="$(app_to_file $app)"cmd="$(desktop_to_command $file)"exec$cmd
Certes, c'est beaucoup moins efficace, mais ça demande pas un très haut niveau en shell. Si tu tiens absolument à générer ta liste avec du C++, tu peux écrire deux programmes en C++ (un qui génère la liste, un qui lance l'application), puis faire la glue en shell, comme ça :
[^] # Re: Pas convaincu
Posté par daeldir . En réponse au journal La stratégie de Mozilla pour les jeux vidéo sur le Web ouvert. Évalué à 1.
Tu n'as pas forcément besoin de connaître bash… Juste la manière d'utiliser dmenu. dmenu prend une liste en entrée et renvoie le choix de l'utilisateur. Tu peux générer cette liste avec du C++, du Python, du shell… Perso, j'irai sur une approche shell bien plus (extrêmement) naïve, de ce genre :
Certes, c'est beaucoup moins efficace, mais ça demande pas un très haut niveau en shell. Si tu tiens absolument à générer ta liste avec du C++, tu peux écrire deux programmes en C++ (un qui génère la liste, un qui lance l'application), puis faire la glue en shell, comme ça :
(
|appname-to-commandest optionnel si ta liste est déjà une liste de commandes, bien entendu)Au final, tu auras au moins évité de réécrire ce que fait dmenu : l'affichage de la liste et le choix dans celle-ci.
Bref, vu ton commentaire, dmenu semble correspondre à ton besoin. Faut juste que tu remplaces dmenu_run par ton propre code ^^