Настройка разных приложений по умолчанию для разных сред рабочего стола

Я использую Ubuntu 12.04 с интерфейсом Unity по умолчанию. Позже я установил рабочий стол KDE, XFCE, LXDE, gnome-shell и Cinnamon.

KDE поставляется с приложениями по умолчанию, отличными от Unity, такими как

  • kwrite для редактирования текста,
  • konsole в качестве виртуального терминала,
  • kfontview для просмотра и установки шрифта,
  • dolphin в качестве браузера файлов и т. Д.

Другие DE поставляются с некоторыми другими приложениями по умолчанию.

Проблема возникает, когда вы хотите открыть файл, такой как текстовый файл, с помощью которого можно открыть gedit и kwrite, я хочу использовать kwrite в KDE и gedit в Unity или Гном. Но нет способа установить так. Я могу установить приложение по умолчанию для текстового файла, изменив соответствующие настройки как в KDE, так и в Unity, но оно станет по умолчанию для обоих DE.

Например, если я установлю kfontviewer в качестве приложения для просмотра шрифтов по умолчанию в KDE, оно также открывает шрифты, когда я нахожусь в Unity или Gnome, и наоборот. Это проблема, потому что загрузка другой программы DE занимает больше времени, чем по умолчанию для используемой DE.

Мой вопрос: могу ли я использовать разные приложения по умолчанию для разных DE? Как?

9
задан 21 May 2013 в 17:47

2 ответа

Я соединил это решение решить Ваш вопрос и протестировал его на KDE и XFCE с открытием текстовых файлов и файлов шрифтов. Это - универсальное решение, которое должно быть применимо к любому количеству типов пантомимы и настольных сред. Путем это работает, существует простой сценарий Python, названный пользовательско-открытым, который откроет файл, использующий различные приложения для различных настольных сред. Это шаги для установки решения:

  1. сохраните пользовательско-открытый сценарий на своем компьютере предпочтительно на Вашем пути, но не должен быть.
  2. сохраните .custom-open.ini в своем корневом каталоге ~/.custom-open.ini
  3. набор, пользовательско-открытый как приложение по умолчанию для любых типов файлов, Вы хотите обработанный им.

пользовательско-открытый

#!/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

таким образом, то, что является большим об этом решении, - то, что можно добавить столько новых настольных сред, сколько Вы хотите и поскольку многие имитируют тип, Вы хотите. проверять, что называет Вас, должно предусмотреть настольную среду, выполненную ниже команды в терминале.

env | grep -i DESKTOP_SESSION

проверять точный тип пантомимы файла, просто выполненного:

file --mime-type filename

ОТРЕДАКТИРОВАННЫЙ: необходимость в символьных ссылках была устранена, это должно помочь использовать. Я также добавил графический обработчик ошибок, который поднимет предупреждение, если ошибка произойдет.

5
ответ дан 21 May 2013 в 17:47

Если Вы не находите "правильный" способ сделать это, Вы могли бы использовать метод грубой силы что-то как:

  1. Набор все значения по умолчанию в одной настольной среде
  2. Делают что-то как cd $HOME;ls -Rlrt | less для обнаружения, какие файлы были просто обновлены - т.е. где тот выбор был сохранен
  3. , Делают отдельную копию тех файлов для каждой настольной среды (сохраненной).
  4. Повторение для каждой настольной среды
  5. Копия соответствующий набор в место прежде, чем переключиться на ту настольную среду (вероятно, выходя из системы и входя в и выбирая новую настольную среду).

Хотелось бы надеяться, существует способ переключить настольные среды со сценария оболочки с опцией сообщения настольной среды, где добраться, это - конфигурационные файлы от. Это могло бы быть более чисто, чем перемещающиеся файлы все время, но я не исследовал, если или как это работает.

Другой, много простого решения, но не точно, что Вы попросили, будет только к:

  1. Создают счета отдельного пользователя на каждую настольную среду
  2. , Создают новую группу для этих пользователей
  3. , Добавляют, что все эти пользователи новой группе
  4. Делают любые файлы общих данных, к которым необходимо получить доступ от всех этих пользователей -rwxrwxr-x (chmod 775 list-of-files-and-directories). Тем путем Вы не получите ошибки разрешения, пытающиеся записать в файл, что другой Ваших "пользователей" записал в сначала.

    • , Если Вы хотите, чтобы некоторые файлы были тем же через всех этих пользователей, можно создать их в одном пользователе и символьной ссылке их к остальной части их. Это должно работать, но потребует, чтобы Вы помнили, что они настраиваются тот путь, когда Вы изменяете любого из них. Например, если Вы отредактируете один из них, и Ваш редактор делает файл резервной копии, то тот файл резервной копии будет только сохранен, где Вы отредактировали его, не на всех других учетных записях пользователей.
2
ответ дан 21 May 2013 в 17:47

Другие вопросы по тегам:

Похожие вопросы: