Forse non hai letto bene il codice che ti ho inviato; il metodo Application.Env() ritorna il set di variabili di ambiente dell'utente, che puoi verificare digitando "env" da riga di comando.
KDE e Gnome hanno due variabili che indentificano appunto il browser, però questo dipende anche da come è strutturata la distro; tieni presente che queste variabili sono scritte in un file, di solito "profile", situato nella directory /etc del sistema, ma non è detto che vengano impostate per o da tutti. Linux permette ad ogni utente di impostare le proprie variabili di ambiente private, e volendo anche sovrascrivere quelle di default; magari nessuno lo fà, perchè ciò non lo esclude, per cui è necessario tenerlo a mente quando si scrive un programma. Oltre a ciò, l'accesso al sistema operativo comporta una serie di problemi che potrebbero causare problemi nel caso di elaborazioni complesse (vedi tempi di risposta), e quindi è necessario prima analizzare bene questo tipo di approccio.
Nelle tue modifiche usi un comando esterno per sapere se esiste e dove si trova un determinato programma; la cosa è valida, ma io sono dell'opinione di tentare di usare il più possibile le funzioni interne di Gambas.
Nel mio esempio, in effetti, viene usato alla fine un comando per eseguire il browser di sistema; questo purtroppo è necessario, in quanto Gambas non mi sembra abbia ancora le strutture necessarie per eseguire dall'interno programmi esterni, come esiste invece in altri linguaggi. In questo caso il discorso diventa obbligatorio, ma tieni conto che l'esempio che ti ho inviato fà parte di una struttura più ampia, in cui il programma fà decidere all'utente in che modo visualizzare una determinata pagina html e, eventualmente, c'è una form interna all'applicazione che fà da browser.
Ad ogni modo ti ringrazio per l'aggiunta dei nomi di browser che hai suggerito, provvederò ad inserirli nella funzione in modo da renderla più completa; io, del resto, avevo inserito solo quelli più conosciuti, e non mi ero preoccupato al momento di analizzare se ne esistevano possibili altri.
Ops, scusa, mi ero dimenticato un'altro pezzo, un'altra funzione che viene chiamata da quella che ti ho inviato in precedenza; in effetti uso anche io il comando "which" :-) :
'---
' Verify if a program exist
'
' @parameter : String : Program name
' @return : Boolean : TRUE=exist, else FALSE
'
STATIC PUBLIC FUNCTION CheckProgram(program AS String) AS Boolean
DIM iPos AS Integer
iPos = InStr(program, " ")
IF (iPos) THEN program = Left(program, iPos - 1)
SHELL "which " & program & " >/dev/null 2>&1" WAIT
IF Process.LastValue THEN RETURN TRUE
RETURN FALSE
CATCH
pgApplication.HaltError(pgApplication.GetError(), TRUE)
END