hành vi ứng dụng mặc định mở xdg


13

Khi tôi không có defaults.listmimeapps.list, xdg-openmở ra text/plainvới gvim. Nhưng khi tôi tạo defaults.listtrong /usr/share/applications/và thêm những dòng sau đây:

[Default Applications]
text/plain=emacs.desktop

nó mở tập tin văn bản với firefox.

Tuy nhiên, nếu tôi chuyển /usr/share/applications/defaults.listđến ~/.local/share/applications/mimeapps.list, nó sẽ mở các tệp văn bản emacsnhư mong đợi.

Những câu hỏi của tôi:

  1. Làm thế nào để xdg-openxác định ứng dụng nào sẽ khởi chạy khi không có defaults.listmimeapps.list?
  2. Tại sao xdg-opensử dụng firefox khi tôi chỉ đơn giản là viết /usr/share/applications/defaults.list?

Tôi đang sử dụng Arch linux.


1
Tôi sử dụng Openbox. Ngoài ra, tôi nhận thấy một /usr/share/applications/mimecache.infotập tin dường như liệt kê các ứng dụng mặc định. Nó thậm chí còn khó hiểu hơn ...
Gradient

1
Tôi tìm thấy tập tin cấu hình này trong~/.config/mimeapps.list
Sam Mason

Câu trả lời:


23

Nếu sử dụng xdg-openđể mở ứng dụng, sau đó sử dụngxdg-mime để đặt ứng dụng mặc định cho loại mime nhất định (thông thường, cài đặt xdg-utils cung cấp cho bạn xdg-mime và các chương trình liên quan).

Ví dụ: để xem "filetype" (loại mime, nếu bạn muốn) của tệp đã cho:

$ xdg-mime query filetype tmp.txt
text/plain

$ xdg-mime query filetype foo.pdf 
application/pdf

$ xdg-mime query filetype $PWD
inode/directory

Ví dụ thay đổi trình quản lý tệp mặc định để mở thư mục (có thể chọn caja.desktop (mặc định cho mint), nautilus.desktop (ubfox), v.v .:

$ xdg-mime default Thunar.desktop inode/directory

Và cũng làm locate -i foo.desktopđể xác minh rằng foo.desktoptrong thực tế tồn tại.

Thêm vào đó, để xem trình soạn thảo văn bản mặc định là gì,

$ xdg-mime  query default text/plain 
gedit.desktop

Để sử dụng trình soạn thảo văn bản mặc định khác (một lần nữa, hãy xác minh rằng tệp ".desktop" tồn tại):

$ locate -i vim.desktop
/usr/share/applications/gvim.desktop

$ xdg-mime default gvim.desktop text/plain

Bây giờ, bấm đúp vào "foo.txt" (trong trình quản lý tệp GUI của bạn) hoặc đang chạy xdg-open foo.txtsẽ sử dụng gvimthay vì gedit.

Xử lý sự cố: đảm bảo rằng tệp ".desktop" cho một ứng dụng nhất định có thể được tìm thấy, vì nó phải được sử dụng với xdg-mimetiện ích; ví dụ,

$ xdg-mime default emacs text/plain 
xdg-mime: malformed argument 'emacs', expected *.desktop

Hơn nữa, điều này âm thầm không hoạt động như mong đợi nếu tệp ".desktop" không tồn tại:

$ locate -i emacs.desktop
(none)

$ xdg-mime default emacs.desktop text/plain  # won't work

Tệp ".desktop" thực tế của emacs (trong env của tôi):

$ locate -r 'emacs.*\.desktop'
/usr/share/applications/emacs24.desktop

$ xdg-mime default emacs24.desktop text/plain  # does work

Xem thêm: https://wiki.archlinux.org/index.php/xdg-open


3
Nhiều năm sau, nhưng cảm ơn! Một số nhà phát triển đã đưa một trò đùa thực sự tồi tệ vào rượu, anh ta hẳn đã nghĩ rằng "nếu bạn thực sự muốn lấy lại nỗi đau Windows đó, bạn nên có tất cả để không bao giờ bị hoài cổ!" Và kể từ đó, tất cả các chương trình X11 bắt đầu một bản sao notepad khi mở Tệp văn bản. Mở tệp từ một ứng dụng là hiếm đối với tôi, nhưng notepad thực sự đau. Với sự giúp đỡ của bạn, tôi đã lấy lại được một gvim.
flaschenpost
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.