Я использую 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? Как?
Я соединил это решение решить Ваш вопрос и протестировал его на KDE и XFCE с открытием текстовых файлов и файлов шрифтов. Это - универсальное решение, которое должно быть применимо к любому количеству типов пантомимы и настольных сред. Путем это работает, существует простой сценарий Python, названный пользовательско-открытым, который откроет файл, использующий различные приложения для различных настольных сред. Это шаги для установки решения:
пользовательско-открытый
#!/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
ОТРЕДАКТИРОВАННЫЙ: необходимость в символьных ссылках была устранена, это должно помочь использовать. Я также добавил графический обработчик ошибок, который поднимет предупреждение, если ошибка произойдет.
Если Вы не находите "правильный" способ сделать это, Вы могли бы использовать метод грубой силы что-то как:
cd $HOME;ls -Rlrt | less
для обнаружения, какие файлы были просто обновлены - т.е. где тот выбор был сохранен Хотелось бы надеяться, существует способ переключить настольные среды со сценария оболочки с опцией сообщения настольной среды, где добраться, это - конфигурационные файлы от. Это могло бы быть более чисто, чем перемещающиеся файлы все время, но я не исследовал, если или как это работает.
Другой, много простого решения, но не точно, что Вы попросили, будет только к:
Делают любые файлы общих данных, к которым необходимо получить доступ от всех этих пользователей -rwxrwxr-x
(chmod 775 list-of-files-and-directories
). Тем путем Вы не получите ошибки разрешения, пытающиеся записать в файл, что другой Ваших "пользователей" записал в сначала.