Налаштування різних програм за замовчуванням для різних середовищ робочого столу


9

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

KDE постачається з іншими програмами за замовчуванням, ніж Unity, такими як

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

Інші DE поставляються з іншими програмами за замовчуванням.

Проблема виникає, коли ви хочете відкрити такий файл, як текстовий файл, який можна відкрити geditі kwrite, і я хочу використовувати kwriteв KDE і geditв Unity або Gnome. Але немає способу встановити подібне. Я можу встановити програму за замовчуванням для текстового файлу, змінивши відповідні налаштування як у KDE, так і у Unity, але він став типовим для обох DE.

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

Моє запитання: Чи можна використовувати різні програми за замовчуванням для різних DE? Як?


Відповіді:


5

Я зібрав це рішення для вирішення вашої проблеми та протестував його на KDE та XFCE, відкривши текстові файли та файли шрифтів. Це загальне рішення, яке повинно застосовуватися для будь-якої кількості робочих середовищ та типів mime. Як це працює, існує простий скрипт python під назвою custom-open, який відкриє файл, використовуючи різні програми для різних середовищ робочого столу. Це кроки для налаштування рішення:

  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

тож, що в цьому рішенні чудово, це те, що ви можете додати стільки нових середовищ робочого столу, скільки вам потрібно, і стільки типів mime, скільки вам потрібно. щоб перевірити, яке ім'я слід вказати для середовища робочого столу, запускайте команду нижче в терміналі.

env | grep -i DESKTOP_SESSION

щоб перевірити точний тип mime файлу, просто запустіть:

file --mime-type filename

ВІДМОВЛЕНО: Необхідність символічних посилань усунена, це має полегшити використання. Я також додав графічний обробник помилок, який підніме сповіщення, якщо виникла помилка.


1
Спасибі за вашу відповідь. Я дотримувався ваших кроків і створив усі відповідно до сценаріїв, посилань та файлів. Ваше рішення чудово працює у командному рядку та виконує рекламу. Але коли я намагаюся встановити скрипт (а точніше символічне посилання) як програму за замовчуванням, щоб відкрити певний тип файлу, він виходить з ладу і повертається до вторинного за замовчуванням. Я не знаю, чи роблю я щось не так.
Глутанімат

Ось як я визначив сценарій як додаток за замовчуванням: 1.) створити запуск ( co.desktop) з допомогою Exec=/home/user/.scripts/Customization/Defaultapps/custom-open-text~ / .local / share / застосунків. 2.) Редагувати ./local/share/applications/mimeapps.listі додайте наступну асоціацію з замовчуванням: text/plain=co.desktop. Знайдіть якісь помилки в цій процедурі?
Glutanimate

1
ОК, спробуйте нову версію, я зробив деякі вдосконалення, щоб полегшити їх використання. Я також додав графічний обробник помилок, тож тепер він повинен спливати попередження із повідомленням про помилку. Спробуйте ще раз та опублікуйте повідомлення про помилку в коментарі, якщо воно все ще не працює. Також ви могли б згадати, яку версію Ubuntu та яке робоче середовище ви випробували.
Marwan Alsabbagh

Він працює і робить це фантастично (використовуючи LXDE / Unity)! Ваше рішення заслуговує на кожну останню точку цього виграшу. Дуже дякую, що знайшли час для цього. (PS: Я все-таки думаю, що така функція повинна мати стандартний Ubuntu за умовчанням. DE-стрибки можуть не бути популярною практикою, але це достатньо часто, щоб гарантувати офіційне рішення.)
Glutanimate

1
Мені дуже шкода, але я не ОП, я просто налаштував щедроту. @Olive Twist доведеться відзначити власне запитання як відповідь.
Глутанімат

2

Якщо ви не знайдете "правильний" спосіб це зробити, ви можете скористатися методом грубої сили чимось на кшталт:

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

Сподіваємось, існує спосіб перемикання середовищ робочого столу із сценарію оболонки з можливістю підказувати середовищу робочого столу, звідки його конфігураційні файли. Це може бути чистіше, ніж постійно переміщувати файли, але я не досліджував, чи це працює.

Ще одне, набагато простіше рішення, але не саме те, про що ви просили, було б просто:

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

    • Якщо ви хочете, щоб деякі файли були однаковими для всіх цих користувачів, ви можете створити їх в одному користувачі та позначити їх з іншими. Це має працювати, але вам потрібно буде пам’ятати, що вони налаштовані таким чином, коли ви змінюєте будь-яку з них. Наприклад, якщо ви редагуєте одну з них, і ваш редактор створює файл резервної копії, цей файл резервної копії зберігатиметься лише там, де ви її редагували, а не на всіх інших облікових записах користувачів.

Ви можете відзначити, де зберігаються асоціації файлів користувачів~/.local/share/mime/
RobotHumans
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.