Làm thế nào để cấu hình đúng và dễ dàng `xdg-open` mà không cần bất kỳ môi trường nào?


63

Tôi đang sử dụng trình quản lý cửa sổ OpenBox mà không cần bất kỳ môi trường máy tính để bàn nào .

xdg-opencư xử kỳ lạ. Nó mở tất cả mọi thứ với firefox.

$ xdg-settings --list
Known properties:
  default-web-browser           Default web browser

Tôi đang tìm kiếm một chương trình đơn giản; một cái gì đó như đọc mọi *.desktoptập tin trong /usr/share/applications/thư mục và tự động thiết lập cài đặt xdg.


bằng cách sử dụng xdg-mime(một phần của xdg-utils) là câu trả lời tốt nhất để làm việc với (truy vấn, định cấu hình) xdg-open. Xem thêm unix.stackexchange.com/questions/8793/ từ
michael

Câu trả lời:


24

Bạn có thể sử dụng perl-file-mimeinfo trong extrakho lưu trữ để quản lý mimetypes.

Ví dụ để mở tất cả .pdfcác tệp trong apvlv:

/usr/bin/vendor_perl/mimeopen -d $file.pdf

và sau đó, tại dấu nhắc, nhập ứng dụng : apvlv.


Nó hoạt động. Nhưng nó chỉ mở tập tin. Vì vậy, xdg-openbên trái của tôi không được định cấu hình và các ứng dụng sử dụng xdg-opensẽ không mở tệp bên phải.
kravemir

Tôi không hoàn toàn làm theo bình luận của bạn. Điều gì không làm việc? Công -dtắc đặt mặc định. Vì vậy, nếu bạn sử dụng nó để mở fileA.pdf- thì bạn sẽ có thể mở fileB.pdfbằng ứng dụng ưa thích của mình.
jasonwryan

1
Đúng. mimeopen -d a.pdfđặt mặc định cho *.pdf, nhưng nó đặt mặc định cho chính nó - mimeopen b.pdfhoạt động. Nhưng xdg-opencấu hình không thay đổi và nó vẫn mở mọi thứ với firefox: /
kravemir

3
Khi tôi đã đặt mặc định mimeopen, xdg-openhành xử như mong đợi - trong trường hợp của .pdfs, nó sẽ mở chúng với apvlv.
jasonwryan

1
Điều này không làm việc cho tôi trong Lubfox 16.04. sudo xdg-mime default pluma.desktop text/plaincho đi touch: cannot touch "/home/user/.local/share/applications/mimeapps.list": No such file or directory /usr/bin/xdg-mime: 807: /usr/bin/xdg-mime: cannot create /home/user/.local/share/applications/mimeapps.list.new: Directory nonexistent; /usr/bin/vendor_perl/mimeopen -d $file.txtcho bash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
Nickolai Leschov

62

Tại sao không sử dụng các tiện ích từ chính xdg?

Để biến Thunar thành trình duyệt tệp mặc định, tức là ứng dụng mặc định để mở thư mục.

$ xdg-mime default Thunar.desktop inode/directory

để sử dụng xpdf làm trình xem PDF mặc định:

$ xdg-mime default xpdf.desktop application/pdf

Điều này sẽ tạo ra một mục trong cơ sở dữ liệu MIME địa phương của bạn:

~/.local/share/applications/defaults.list
[Default Applications]
application/pdf=xpdf.desktop

Các tệp PDF của bạn nên được mở bằng xpdf ngay bây giờ.


+1 và xem thêm câu trả lời liên quan của tôi cho câu hỏi liên quan, unix.stackexchange.com/questions/77136/ mẹo
michael

2
Câu trả lời hữu ích nhất, cảm ơn. Dễ nhất để biết về defaults.listnó chỉ đơn giản là có thể được chỉnh sửa bằng tay nếu cần.
mVChr

Vì một số lý do xdg-mimekhông sửa đổi defaults.list, nhưng chỉnh sửa nó bằng tay (nhờ gợi ý trong câu trả lời này) đã thực hiện thủ thuật này.
Skippy le Grand Gourou

FYI vài phụ thuộc Perl được yêu cầu cho việc này, đảm bảo bạn đã cài đặt chúng. Các bản phân phối RPM / DEB sẽ cài đặt chúng cho bạn bình thường.
lzap

2
Có vẻ như defaults.listbây giờ được gọi là mimeapps.list. Xem Arch Wiki để biết danh sách các địa điểm hợp lệ mimeapps.list.
Mateen Ulhaq

7

Trên Debian bạn có thể sử dụng lệnh, với quyền root

update-mime-database /usr/share/mime

shared-mime-infogói cài đặt.


2
Tôi đã thử nó. Nó không hoạt động. Tôi đang chạy Arch.
kravemir

-1 Điều này đặc trưng cho các môi trường máy tính để bàn phụ thuộc vào thông tin được chia sẻ, chẳng hạn như Gnome
craymichael

7

Bạn có thể sử dụng một cái gì đó như thế này để tạo ra các xdg-mimelệnh thích hợp cho mỗi .desktoptệp của bạn và các mô phỏng mà chúng chứa, sau đó thực thi những lệnh bạn thích. Lưu ý /usr/share/applicationscó thể có thư mục con.

for dd in /usr/share/applications ~/.local/share/applications; do
  for d in $(ls $dd 2>/dev/null | grep "\\.desktop$"); do
    for m in $(grep MimeType $dd/$d | cut -d= -f2 | tr ";" " "); do
      echo xdg-mime default $d $m;
    done;
  done;
done

3

Đây giống như câu trả lời của @ aleb , nhưng nó hoạt động trên các tệp trên máy tính để bàn có khoảng trắng:

find /usr/share/applications ~/.local/share/applications -iname '*.desktop' -print0 | while IFS= read -r -d $'\0' d; do
  for m in $(grep MimeType "$d" | cut -d= -f2 | tr ";" " "); do
    echo xdg-mime default "'$d'" "'$m'"
  done
done
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.