Impostazione di diverse applicazioni predefinite per diversi ambienti desktop


9

Sto usando Ubuntu 12.04 con l'interfaccia Unity predefinita. In seguito ho installato il desktop KDE, XFCE, LXDE, gnome-shell e Cinnamon.

KDE include diverse applicazioni predefinite rispetto a Unity, come ad esempio

  • kwrite per la modifica del testo,
  • konsole come terminale virtuale,
  • kfontview per la visualizzazione e l'installazione dei caratteri,
  • dolphin come browser di file ecc.

Altri DE vengono forniti con alcune altre applicazioni predefinite.

Il problema sorge quando si desidera aprire un file come un file di testo, con il quale può essere aperto sia da geditche kwrite, che voglio usare kwritesu KDE e geditsu Unity o Gnome. Ma non c'è modo di impostare in questo modo. Posso impostare l'applicazione predefinita per il file di testo modificando le rispettive impostazioni sia in KDE che in Unity, ma diventa predefinito per entrambi DE.

Ad esempio, se imposto kfontviewercome applicazione di visualizzazione dei caratteri predefinita in KDE, apre anche i caratteri quando sono in Unity o Gnome e viceversa. Questo è un problema perché il caricamento di un altro programma DE richiede molto tempo rispetto a quello predefinito per il DE usato.

La mia domanda è: posso usare diverse applicazioni predefinite per diversi DE? Come?


Risposte:


5

Ho messo insieme questa soluzione per risolvere il tuo problema e l'ho testato su KDE e XFCE con l'apertura di file di testo e file di caratteri. È una soluzione generica che dovrebbe essere applicabile a qualsiasi numero di ambienti desktop e tipi mime. Il modo in cui funziona è che c'è un semplice script Python chiamato custom-open che aprirà un file usando diverse applicazioni per diversi ambienti desktop. Questi sono i passaggi per configurare la soluzione:

  1. salva lo script di apertura personalizzata sul tuo computer preferibilmente sul tuo percorso ma non deve esserlo.
  2. salva .custom-open.ini nella tua home directory ~ / .custom-open.ini
  3. imposta custom-open come applicazione predefinita per tutti i tipi di file che desideri vengano gestiti da essa.

custom-aperto

#!/usr/bin/env python
import traceback, sys, os, ConfigParser, os.path
from subprocess import Popen, check_output
from gtk import MessageDialog, MESSAGE_ERROR, BUTTONS_CLOSE

try:
    file, desktop = sys.argv[1], os.environ['DESKTOP_SESSION']
    mime = check_output(['file', '--mime-type', file]).strip().split(': ')[1]
    config = ConfigParser.RawConfigParser()
    config.read(os.path.expanduser('~/.custom-open.ini'))
    cmd = config.get(desktop, mime)
    Popen([cmd] + sys.argv[1:])
except:
    msg = "CUSTOM OPEN ERROR\n\n" + traceback.format_exc()
    MessageDialog(None, 0, MESSAGE_ERROR, BUTTONS_CLOSE, msg).run()

.custom-open.ini

[gnome]
text/plain = gedit
application/x-font-ttf = gnome-font-viewer

[xubuntu]
text/plain = leafpad
application/x-font-ttf = gnome-font-viewer

[kde-plasma]
text/plain = kate
application/x-font-ttf = kfontview

quindi la cosa grandiosa di questa soluzione è che puoi aggiungere tutti i nuovi ambienti desktop che vuoi e quanti tipi di mime vuoi. per verificare quale nome è necessario fornire per l'ambiente desktop, eseguire il comando seguente in un terminale.

env | grep -i DESKTOP_SESSION

per controllare l'esatto tipo mime di un file basta eseguire:

file --mime-type filename

EDITED: la necessità di collegamenti simbolici è stata rimossa per facilitare l'utilizzo. Ho anche aggiunto un gestore di errori grafico che farà apparire un avviso se si verifica un errore.


1
La ringrazio per la risposta. Ho seguito i tuoi passi e creato tutti gli script, i collegamenti e i file corrispondenti. La tua soluzione funziona alla grande dalla riga di comando e funziona come pubblicizzato. Ma quando provo a impostare lo script (o meglio il collegamento simbolico) come applicazione predefinita per aprire un tipo di file specifico, fallisce e torna al valore predefinito secondario. Non so se sto facendo qualcosa di sbagliato.
Glutanimate,

Ecco come ho definito lo script come l'app predefinita: 1.) creare un launcher ( co.desktop) con Exec=/home/user/.scripts/Customization/Defaultapps/custom-open-textin ~ / .local / share / applicazioni. 2.) Modifica ./local/share/applications/mimeapps.liste aggiungere il seguente associazione predefinita: text/plain=co.desktop. Hai trovato errori in questa procedura?
Glutanimate,

1
ok prova la nuova versione, ho apportato alcuni miglioramenti per facilitarne l'utilizzo. Ho anche aggiunto il gestore di errori grafico, quindi ora dovrebbe apparire un avviso con il messaggio di errore. Riprova e pubblica il messaggio di errore in un commento se continua a non funzionare. Potresti anche menzionare quale versione di Ubuntu e quale ambiente desktop hai provato.
Marwan Alsabbagh,

Funziona e funziona in modo fantastico (usando LXDE / Unity)! La tua soluzione merita ogni singolo ultimo punto di questa generosità. Grazie mille per aver dedicato del tempo per farlo. (PS: Penso ancora che una funzione come questa dovrebbe venire con Ubuntu per impostazione predefinita. Il DE-hopping potrebbe non essere una pratica popolare ma è abbastanza comune da giustificare una soluzione ufficiale.)
Glutanimate,

1
Mi dispiace, ma non sono l'OP, ho semplicemente creato la taglia. @Olive Twist dovrà contrassegnare la propria domanda come risposta.
Glutanimate,

2

Se non trovi il modo "giusto" per farlo, potresti usare un metodo di forza bruta come:

  1. Impostare tutte le impostazioni predefinite in un ambiente desktop
  2. Fai qualcosa di simile a uno cd $HOME;ls -Rlrt | lessper scoprire quali file sono stati appena aggiornati, ovvero dove sono state salvate quelle scelte
  3. Creare una copia separata di tali file per ciascun ambiente desktop (backup).
  4. Ripetere l'operazione per ciascun ambiente desktop
  5. Copiare il set appropriato in posizione appena prima di passare a quell'ambiente desktop (probabilmente disconnettendosi e riconnettendosi e selezionando il nuovo ambiente desktop).

Speriamo che ci sia un modo per cambiare gli ambienti desktop da uno script di shell con l'opzione di dire all'ambiente desktop da dove ottenere i suoi file di configurazione. Potrebbe essere più pulito dello spostamento dei file in ogni momento, ma non ho studiato se o come funziona.

Un'altra soluzione molto più semplice, ma non esattamente quello che hai chiesto, sarebbe semplicemente:

  1. Crea account utente separati per ciascun ambiente desktop
  2. Crea un nuovo gruppo per questi utenti
  3. Aggiungi tutti questi utenti al nuovo gruppo
  4. Crea tutti i file di dati comuni a cui devi accedere da tutti questi utenti -rwxrwxr-x ( chmod 775 list-of-files-and-directories). In questo modo non otterrai errori di autorizzazione nel tentativo di scrivere su un file su cui un altro dei tuoi "utenti" ha scritto per primo.

    • Se si desidera che alcuni file siano gli stessi per tutti questi utenti, è possibile crearli in un utente e collegarli al resto di essi. Questo dovrebbe funzionare, ma ti chiederà di ricordare che sono impostati in quel modo quando cambi uno di essi. Ad esempio, se ne modifichi uno e il tuo editor crea un file di backup, quel file di backup verrà salvato solo dove l'hai modificato, non su tutti gli altri account utente.

È possibile notare dove sono archiviate le associazioni dei file per utente~/.local/share/mime/
RobotHumans,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.