web-dev-qa-db-fra.com

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é 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?

9
Anwar

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:

  1. enregistrer le script personnalisé ouvert sur votre ordinateur de préférence sur votre chemin, mais ne doit pas nécessairement l'être.
  2. enregistrer le fichier .custom-open.ini dans votre répertoire personnel ~/.custom-open.ini
  3. définissez ouverture personnalisée comme application par défaut pour tous les types de fichiers que vous souhaitez gérer.

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.

5
Marwan Alsabbagh

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

  1. Définir toutes les valeurs par défaut dans un 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éter pour chaque environnement de bureau
  5. Copiez l'ensemble approprié juste avant de basculer sur cet environnement de bureau (probablement en vous déconnectant, en vous reconnectant et en sélectionnant le nouvel environnement de bureau).

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:

  1. Créer des comptes d'utilisateurs distincts pour chaque environnement de bureau
  2. Créer un nouveau groupe pour ces utilisateurs
  3. Ajouter tous ces utilisateurs au nouveau groupe
  4. 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.

    • Si vous souhaitez que certains fichiers soient identiques pour tous ces utilisateurs, vous pouvez les créer en un seul utilisateur et les lier par lien symbolique au reste d'entre eux. Cela devrait fonctionner, mais vous devrez vous rappeler qu'ils sont configurés de cette manière lorsque vous en changez un. Par exemple, si vous en modifiez un et que votre éditeur crée un fichier de sauvegarde, celui-ci ne sera sauvegardé que là où vous l'avez édité, et non sur tous les autres comptes d'utilisateur.
2
Joe