In Linux, come posso determinare l'editor di testo, il terminale, ecc.Come determinare automaticamente le applicazioni predefinite in linux
varia a seconda della distanza?
In Linux, come posso determinare l'editor di testo, il terminale, ecc.Come determinare automaticamente le applicazioni predefinite in linux
varia a seconda della distanza?
Non credo che la nozione di predefinita editor o terminale abbia senso. Per l'editor, c'è la convenzione di usare $EDITOR
quando è definito.
Su Debian e affini (ad esempio Ubuntu, Mint) si dispone di percorsi come /usr/bin/editor
e /usr/bin/x-terminal-emulator
link simbolico (tramite collegamenti simbolici in /etc/alternatives/
) ad alcuni di default del sistema.
Vedi anche Dacav's answer
Le variabili di ambiente per utente lo dicono.
Ciò tuttavia è valido per i software della riga di comando, mentre in genere gli ambienti desktop utilizzano le proprie variabili (interne).
Anche in python è possibile leggere le variabili di ambiente utilizzando os.getenv
.
quindi dovrei essere in grado di (in shell) echo $ EDITOR per vedere di cosa si tratta? Ho appena provato e mi ha appena dato una riga vuota – sqram
In effetti sì. La sua definizione non è obbligatoria. Suppongo che nel caso non sia presente il valore predefinito su un valore basato sulla distro. Non so come ottenerlo in questo caso. – Dacav
ho accesso alla lista, mentre fa programatically in un modo piuttosto brutto e sono sicuro che la sua non è il modo migliore. Le opzioni sono memorizzate in un file chiamato defaults.list (penso che questo sia generalmente il caso). La posizione è meno generale Penso che sia in/usr/share/applications/sul mio sistema di Ubuntu anche se sembra altrove penso. L'ho poi trattato come un file di testo.
Questo funziona in ubuntu/gnome:
>>> query_lines = subprocess.check_output(['update-alternatives',
'--query',
'gnome-text-editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/usr/bin/gedit'
Se non su GNOME, si potrebbe almeno avere l'editor della riga di comando:
>>> query_lines = subprocess.check_output(['update-alternatives',
... '--query',
... 'editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/bin/nano'
l'ordine di risoluzione è $EDITOR
->editor
- > un elenco predefinito di editor di console. Su Debian/Ubuntu, sensible-editor
(e sensible-browser
e sensible-pager
) eseguiranno la ricerca per te, anche guardando le giuste variabili di ambiente. Variabili simili sono $PAGER
, $SHELL
, $BROWSER
. Per cercare un'associazione di file, è possibile utilizzare xdg-open
.
Prendendo spunto dalla risposta @ di bombetta, e puramente bash:
editor=$(grep "text/plain" -r -i -I /usr/share/applications/defaults.list | awk -F';' '{print $1}' | awk -F'.desktop' '{print $1}' | awk -F'=' '{print $2}')
Ok, quindi si presenta come il sistema utilizza un file chiamato defaults.list. Quindi, scoprire quale default usa. Il sistema sta usando dovrebbe risolvere questo. Se qualcuno ha qualche consiglio, vai su – sqram