Így gondoltam először én is, de mégsem jó, mivel sok csapda lehet. Mi van ha a társított alkalmazás csak egy wrapper script, és újabb folyamatot forkol például?
Semmiképpen nem 100%-osan megbízható megoldás szerintem. Most a saját open-emet pofozgatom, igazából teljesen jó lesz ez így - attól függetlenül hogy telepítve van-e az xdg-utils.
Már csak azt nem tudom, hogy hol változik, hogy a mime típusnak mi az elsődleges. Tehát tegyük fel hogy van gedit és geany telepítve. Nézzük az alábbit:
$ grep "^text/plain" /usr/share/applications/mimeinfo.cache
text/plain=gedit.desktop;fedora-geany.desktop;
Ha a társítást felcserélem (jobb egérgomb / tulajdonságok, és az Open With értékét átllítom), attól még nem változik a sorrend a mimeinfo.cache fájlban. Akkor hol változhat? (XFCE és Gnome alatt is ua.)
Szerk.: rákerestem "find -mmin -1" paranccsal, és ez a megoldás:
/home/user/.local/share/applications/defaults.list (XFCE)
/home/user/.local/share/applications/mimeapps.list (Gnome 2)
Szerk2.: ugye Gnome2 alatt az xdg-open a gvfs-open-t használja, annak meg néztem egy strace kimenetet. Hát elég csúnya olyan szempontból, hogy sok fajta mime fájlban matat - tehát ha rendesen le akarom implementálni, akkor az nagy munka.
Akkor marad a kérdés: hogy tudnám elkapni az xdg-open által megnyitott alkalmazás PID-jét? Mert akkor azt subshell-ként hoznám létre, és valahogy így tudna működni:
(PID=grep valahogy valahol) && wait PID