a volte ci fissiamo su cose complicate anche dove (forse) sono semplici.
Public Sub Main()
Dim sPath, sFM As String
Dim aFM As String[] = ["konqueror", "nautilus", "dolphin", "mc", "krusader", "pcmanfm-qt", "pcmanfm", "xfe", "nemo", "thunar", "spacefm", "caja", "ranger", "deepin", "polo", "cfiles", "emacs", "vifm", "worker", "nnn", "wcm", "4panel", "lf", "jfileprocessor", "qtfm", "fman", "ytree", "liri", "pantheon", "doublecmd"]
Dim aInstallFM As New String[]
For i As Integer = 0 To aFM.Max
sPath = "/usr/bin" &/ aFM[i]
If Exist(sPath) Then
aInstallFM.Push(aFM[i])
Endif
Next
For Each sFM In aInstallFM
Print sFM
Next
End
questo codice dovrebbe funzionare ovunque e non credo che tenere la lista aggiornata sia un problema, cosa ne pensi?