Eu juntei esta solução para resolver o seu problema, e testei-a no KDE e no XFCE com a abertura de arquivos de texto e arquivos de fontes. É uma solução genérica que deve ser aplicável a qualquer número de ambientes de desktop e tipos MIME. A maneira como funciona é que existe um script python simples chamado custom-open que abre um arquivo usando diferentes aplicativos para diferentes ambientes de desktop. Estas são as etapas para configurar a solução:
- salve o script aberto no seu computador, de preferência no seu caminho, mas não precisa ser.
- salve .custom-open.ini no seu diretório pessoal ~ / .custom-open.ini
- defina o recurso de abertura personalizada como o aplicativo padrão para qualquer tipo de arquivo que você queira manipular.
custom-open
#!/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
O que é ótimo nessa solução é que você pode adicionar quantos novos ambientes de área de trabalho você quiser e quantos tipos de mime quiser. Para verificar o nome que você deve fornecer para o ambiente de área de trabalho, execute o comando abaixo em um terminal.
env | grep -i DESKTOP_SESSION
para verificar o tipo mime exato de um arquivo que acabou de ser executado:
file --mime-type filename
EDITED: A necessidade de links simbólicos foi removida, isso deve facilitar o uso. Eu também adicionei um manipulador de erro gráfico que exibirá um alerta se ocorrer um erro.