J'utilise Ubuntu 12.04 avec l'interface Unity par défaut. J'ai installé plus tard le bureau KDE, XFCE, LXDE, gnome-Shell et Cinnamon.
KDE est livré avec des applications par défaut différentes de Unity, telles que
kwrite
pour l'édition de texte,konsole
comme terminal virtuel,kfontview
pour l'affichage et l'installation des polices,dolphin
comme navigateur de fichiers, etc.D'autres DE viennent avec d'autres applications par défaut.
Le problème se pose lorsque vous voulez ouvrir un fichier tel qu'un fichier texte, avec lequel vous pouvez ouvrir à la fois avec gedit
et kwrite
, je veux utiliser kwrite
sur KDE et gedit
sur Unity ou Gnome. Mais, il n'y a aucun moyen de définir comme ça. Je peux définir une application par défaut pour un fichier texte en modifiant les paramètres respectifs dans KDE et Unity, mais il devient par défaut pour les deux DE.
Par exemple, si je règle kfontviewer
comme application d'affichage des polices par défaut dans KDE, les polices sont également ouvertes lorsque je suis dans Unity ou Gnome, et inversement. C'est un problème car le chargement du programme d'un autre DE prend plus de temps que celui par défaut du DE utilisé.
Ma question est la suivante: puis-je utiliser différentes applications par défaut pour différents DE? Comment?
J'ai mis en place cette solution pour résoudre votre problème et je l'ai testé sur KDE et XFCE en ouvrant des fichiers texte et des fichiers de polices. C'est une solution générique qui devrait être applicable à un nombre quelconque d'environnements de bureau et de types MIME. Cela fonctionne comme suit: il existe un simple script python appelé ouverture personnalisée qui ouvre un fichier à l'aide de différentes applications pour différents environnements de bureau. Voici les étapes à suivre pour installer la solution:
ouverture personnalisée
#!/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
l'avantage de cette solution est donc que vous pouvez ajouter autant de nouveaux environnements de bureau que vous le souhaitez et autant de types MIME que vous le souhaitez. pour vérifier le nom que vous devez fournir pour l'environnement de bureau, exécutez la commande ci-dessous dans un terminal.
env | grep -i DESKTOP_SESSION
pour vérifier le type mime exact d'un fichier, lancez simplement:
file --mime-type filename
EDITED: Le besoin de liens symboliques a été supprimé, ce qui devrait en faciliter l'utilisation. J'ai également ajouté un gestionnaire d'erreur graphique qui déclenchera une alerte si une erreur se produit.
Si vous ne trouvez pas la "bonne" façon de le faire, vous pouvez utiliser une méthode de force brute, par exemple:
cd $HOME;ls -Rlrt | less
pour savoir quels fichiers viennent d'être mis à jour - c'est-à-dire où ces choix ont été enregistrés.Espérons qu'il existe un moyen de passer d'un script Shell à un environnement de bureau, avec l'option de dire à l'environnement de bureau où obtenir ses fichiers de configuration. C’est peut-être plus propre que de déplacer tout le temps des fichiers, mais je n’ai pas cherché à savoir si ou comment cela fonctionnait.
Une autre solution, beaucoup plus simple, mais pas exactement ce que vous avez demandé, serait simplement:
Créez tous les fichiers de données communs auxquels vous devez accéder de tous ces utilisateurs -rwxrwxr-x
(chmod 775 list-of-files-and-directories
). De cette façon, vous ne rencontrerez pas d'erreurs d'autorisation lorsque vous essayez d'écrire dans un fichier qu'un autre de vos "utilisateurs" a écrit en premier.