9 votes

Définition de différentes applications par défaut pour différents environnements de bureau

J'utilise Ubuntu 12.04 avec l'interface Unity par défaut. J'ai installé par la suite le bureau KDE, XFCE, LXDE, gnome-Shell et Cinnamon.

Le KDE est livré avec des applications par défaut différentes de celles d'Unity, telles que

  • kwrite pour l'édition de texte,
  • konsole comme terminal virtuel,
  • kfontview pour la visualisation et l'installation des polices,
  • dolphin comme le navigateur de fichiers, etc.

D'autres DE sont livrés 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 à la fois ouvrir par gedit y kwrite Je veux utiliser kwrite sur KDE et gedit sur Unity ou Gnome. Mais il n'y a pas de moyen de le faire. Je peux définir l'application par défaut pour le 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 définis kfontviewer comme application d'affichage des polices par défaut dans KDE, il ouvre également les polices lorsque je suis dans Unity ou Gnome et vice versa. C'est un problème car le chargement du programme d'un autre DE prend plus de temps que le programme 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 ?

5voto

Matt Sweeney Points 249

J'ai mis au point cette solution pour résoudre votre problème, et je l'ai testée sur KDE et XFCE en ouvrant des fichiers texte et des fichiers de police. Il s'agit d'une solution générique qui devrait être applicable à un certain nombre d'environnements de bureau et de types de mime. La façon dont cela fonctionne est un simple Python script appelé custom-open qui ouvrira un fichier en utilisant différentes applications pour différents environnements de bureau. Voici les étapes à suivre pour configurer la solution :

  1. enregistrez le script d'ouverture personnalisée sur votre ordinateur, de préférence sur votre chemin d'accès, mais ce n'est pas obligatoire.
  2. sauvegarder .custom-open.ini dans votre répertoire personnel ~/.custom-open.ini
  3. définir custom-open comme l'application par défaut pour tous les types de fichiers que vous voulez qu'elle gère.

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

Ce qui est bien avec cette solution, c'est que vous pouvez ajouter autant de nouveaux environnements de bureau que vous voulez et autant de types de mime que vous voulez. 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 qui vient d'être exécuté :

file --mime-type filename

ÉDITION : La nécessité de liens symboliques a été supprimée, ce qui devrait faciliter son utilisation. J'ai également ajouté un gestionnaire d'erreur graphique qui fera apparaître une alerte si une erreur se produit.

2voto

Joe Points 1759

Si vous ne trouvez pas la "bonne" façon de procéder, vous pouvez utiliser une méthode de force brute, par exemple :

  1. Définir tous les paramètres par défaut dans un seul environnement de bureau
  2. Faites quelque chose comme un cd $HOME;ls -Rlrt | less pour savoir quels fichiers viennent d'être mis à jour - c'est-à-dire où ces choix ont été enregistrés
  3. Faites une copie séparée de ces fichiers pour chaque environnement de bureau (sauvegardé).
  4. Répétez l'opération pour chaque environnement de bureau
  5. Copiez le jeu approprié en place juste avant de passer à cet environnement de bureau (probablement en vous déconnectant et en vous reconnectant et en sélectionnant le nouvel environnement de bureau).

Avec un peu de chance, il y a un moyen de changer d'environnement de bureau à partir d'un Shell Shell avec la possibilité d'indiquer à l'environnement de bureau où obtenir ses fichiers de configuration. Cela pourrait être plus propre que de déplacer des fichiers tout le temps, mais je n'ai pas cherché si ou comment cela fonctionne.

Une autre solution, beaucoup plus simple, mais qui ne correspond pas exactement à ce que vous avez demandé, serait de simplement.. :

  1. Créer des comptes d'utilisateur distincts pour chaque environnement de bureau
  2. Créez un nouveau groupe pour ces utilisateurs
  3. Ajoutez tous ces utilisateurs au nouveau groupe
  4. Créez tous les fichiers de données communs auxquels vous devez accéder à partir de tous ces utilisateurs. -rwxrwxr-x ( chmod 775 list-of-files-and-directories ). De cette façon, vous n'obtiendrez pas d'erreurs de permission en essayant d'écrire dans un fichier qu'un autre de vos "utilisateurs" a écrit en premier.

    • Si vous voulez que certains fichiers soient les mêmes pour tous ces utilisateurs, vous pouvez les créer dans un utilisateur et établir un lien symbolique vers les autres. Cela devrait fonctionner, mais vous devrez vous rappeler qu'ils sont configurés de cette façon lorsque vous modifiez l'un d'entre eux. Par exemple, si vous modifiez l'un d'entre eux et que votre éditeur crée un fichier de sauvegarde, ce fichier de sauvegarde ne sera enregistré que là où vous l'avez modifié, et non sur tous les autres comptes utilisateurs.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X