Đặt các ứng dụng mặc định khác nhau cho các Môi trường màn hình khác nhau


9

Tôi đang sử dụng Ubuntu 12.04 với giao diện Unity mặc định. Tôi đã cài đặt sau máy tính để bàn KDE, XFCE, LXDE, gnome-shell và Cinnamon.

KDE đi kèm với các ứng dụng mặc định khác với Unity, chẳng hạn như

  • kwrite để chỉnh sửa văn bản,
  • konsole như thiết bị đầu cuối ảo,
  • kfontview để xem và cài đặt phông chữ,
  • dolphin như trình duyệt tệp, v.v.

DE khác đi kèm với một số ứng dụng mặc định khác.

Vấn đề phát sinh khi bạn muốn mở một tệp như tệp văn bản, có thể mở cả hai geditkwritetôi muốn sử dụng kwritetrên KDE và gedittrên Unity hoặc Gnome. Nhưng, không có cách nào để thiết lập như thế này. Tôi có thể đặt ứng dụng mặc định cho tệp văn bản bằng cách thay đổi cài đặt tương ứng trong cả KDE và Unity, nhưng nó trở thành mặc định cho cả DE.

Ví dụ: Nếu tôi đặt kfontviewerlàm ứng dụng xem phông chữ mặc định trong KDE, nó cũng mở phông chữ khi tôi ở Unity hoặc Gnome và ngược lại. Đây là một vấn đề bởi vì, việc tải chương trình DE khác mất nhiều thời gian hơn chương trình mặc định cho DE đã sử dụng.

Câu hỏi của tôi là: Tôi có thể sử dụng các ứng dụng mặc định khác nhau cho DE khác nhau không? Làm sao?


Câu trả lời:


5

Tôi đã kết hợp giải pháp này để giải quyết vấn đề của bạn và đã thử nghiệm nó trên KDE và XFCE bằng cách mở tệp văn bản và tệp phông chữ. Đó là một giải pháp chung nên được áp dụng cho bất kỳ số lượng môi trường máy tính để bàn và các loại mime. Cách thức hoạt động của nó là có một tập lệnh python đơn giản được gọi là custom-open sẽ mở một tệp bằng các ứng dụng khác nhau cho các môi trường máy tính để bàn khác nhau. Đây là các bước để thiết lập giải pháp:

  1. lưu tập lệnh mở tùy chỉnh trên máy tính của bạn tốt nhất là trên đường dẫn của bạn nhưng không nhất thiết phải như vậy.
  2. lưu .custom-open.ini trong thư mục chính của bạn ~ / .custom-open.ini
  3. đặt tùy chỉnh mở làm ứng dụng mặc định cho mọi loại tệp bạn muốn xử lý.

mở tùy chỉnh

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

Vì vậy, điều tuyệt vời về giải pháp này là bạn có thể thêm bao nhiêu môi trường máy tính để bàn mới tùy thích và bao nhiêu loại mime bạn muốn. để kiểm tra tên bạn nên cung cấp cho môi trường máy tính để bàn, hãy chạy lệnh dưới đây trong một thiết bị đầu cuối.

env | grep -i DESKTOP_SESSION

để kiểm tra loại mime chính xác của tệp vừa chạy:

file --mime-type filename

EDITED: Nhu cầu liên kết tượng trưng đã được loại bỏ, điều này sẽ giúp sử dụng dễ dàng hơn. Tôi cũng đã thêm một trình xử lý lỗi đồ họa sẽ đưa ra cảnh báo nếu xảy ra lỗi.


1
Cảm ơn bạn vì câu trả lời. Tôi đã làm theo các bước của bạn và tạo ra tất cả các tập lệnh, liên kết và tập tin theo. Giải pháp của bạn hoạt động tốt dưới dạng dòng lệnh và thực hiện như quảng cáo. Nhưng khi tôi cố gắng đặt tập lệnh (hay đúng hơn là liên kết tượng trưng) làm ứng dụng mặc định để mở một loại tệp cụ thể, nó sẽ thất bại và rơi trở lại mặc định thứ cấp. Tôi không biết, nếu tôi làm sai điều gì.
Glutimate

Dưới đây là cách tôi xác định tập lệnh là ứng dụng mặc định: 1.) tạo launcher ( co.desktop) với Exec=/home/user/.scripts/Customization/Defaultapps/custom-open-texttrong ~ / .local / share / application. 2.) Chỉnh sửa ./local/share/applications/mimeapps.listvà thêm liên kết mặc định sau : text/plain=co.desktop. Tìm bất kỳ sai lầm trong thủ tục này?
Glutimate

1
ok hãy thử phiên bản mới, tôi đã thực hiện một số cải tiến để sử dụng dễ dàng hơn. Tôi cũng đã thêm trình xử lý lỗi đồ họa để bây giờ nó sẽ bật lên một cảnh báo với thông báo lỗi. Hãy thử lại và đăng thông báo lỗi trong một bình luận nếu nó vẫn không hoạt động. Bạn cũng có thể đề cập đến phiên bản Ubuntu và môi trường máy tính để bàn nào bạn đã thử.
Marwan Alsabbagh

Nó hoạt động và nó làm rất tuyệt vời (sử dụng LXDE / Unity)! Giải pháp của bạn xứng đáng với mọi điểm cuối cùng của tiền thưởng này. Cảm ơn bạn rất nhiều vì đã dành thời gian để làm điều này. (PS: Tôi vẫn nghĩ rằng một chức năng như thế này nên đi kèm với Ubuntu theo mặc định DE-hopping có thể không được thực hành phổ biến nhưng nó đủ phổ biến để đảm bảo một giải pháp chính thức..)
Glutanimate

1
Tôi xin lỗi, nhưng tôi không phải là OP, tôi chỉ đơn thuần là đặt tiền thưởng lên. @Olive Twist sẽ phải đánh dấu câu hỏi của chính mình như đã trả lời.
Glutimate

2

Nếu bạn không tìm thấy cách "đúng" để làm điều đó, bạn có thể sử dụng phương pháp vũ phu như:

  1. Đặt tất cả các giá trị mặc định trong một môi trường máy tính để bàn
  2. Làm một cái gì đó giống như cd $HOME;ls -Rlrt | lessđể tìm hiểu những tập tin nào vừa được cập nhật - tức là những lựa chọn đó đã được lưu
  3. Tạo một bản sao riêng của các tệp đó cho từng môi trường máy tính để bàn (được sao lưu).
  4. Lặp lại cho từng môi trường máy tính để bàn
  5. Sao chép bộ thích hợp vào vị trí ngay trước khi chuyển sang môi trường máy tính để bàn đó (có thể bằng cách đăng xuất và đăng nhập lại và chọn môi trường máy tính để bàn mới).

Hy vọng rằng, có một cách để chuyển đổi môi trường máy tính để bàn từ tập lệnh shell với tùy chọn cho biết môi trường máy tính để bàn lấy tệp cấu hình từ đâu. Điều đó có thể sạch hơn việc di chuyển các tệp mọi lúc, nhưng tôi chưa nghiên cứu xem nó hoạt động như thế nào.

Một giải pháp khác, đơn giản hơn nhiều, nhưng không chính xác những gì bạn yêu cầu, sẽ chỉ là:

  1. Tạo tài khoản người dùng riêng cho từng môi trường máy tính để bàn
  2. Tạo một nhóm mới cho những người dùng này
  3. Thêm tất cả những người dùng này vào nhóm mới
  4. Tạo bất kỳ tệp dữ liệu phổ biến nào bạn cần truy cập từ tất cả những người dùng này -rwxrwxr-x ( chmod 775 list-of-files-and-directories). Bằng cách đó, bạn sẽ không gặp phải lỗi cấp phép khi cố ghi vào một tệp mà một "người dùng" khác đã viết cho bạn trước.

    • Nếu bạn muốn một số tệp giống nhau trên tất cả những người dùng này, bạn có thể tạo chúng trong một người dùng và liên kết chúng với những người còn lại. Điều này sẽ hoạt động, nhưng sẽ yêu cầu bạn nhớ rằng chúng được thiết lập theo cách đó khi bạn thay đổi bất kỳ trong số chúng. Chẳng hạn, nếu bạn chỉnh sửa một trong số chúng và trình chỉnh sửa của bạn tạo tệp sao lưu, tệp sao lưu đó sẽ chỉ được lưu ở nơi bạn chỉnh sửa, chứ không phải trên tất cả các tài khoản người dùng khác.

Bạn có thể lưu ý nơi lưu trữ các liên kết tệp người dùng~/.local/share/mime/
RobotHumans
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.