Jak poprawnie i łatwo skonfigurować `xdg-open` bez żadnego środowiska?

63

Używam menedżera okien OpenBox bez środowiska graficznego .

xdg-openzachowuje się dziwnie. Otwiera wszystko za pomocą firefox.

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

Szukam prostego programu; coś jak czytanie każdego *.desktoppliku w /usr/share/applications/folderze i automatyczne ustawianie ustawień xdg.

kravemir
źródło
użycie xdg-mime(część xdg-utils) jest najlepszą odpowiedzią na pracę z (zapytanie, konfiguracja) xdg-open. Zobacz także unix.stackexchange.com/questions/8793/…
michael

Odpowiedzi:

24

Możesz użyć perl-file-mimeinfo w extrarepozytorium do zarządzania typami mimet .

Przykład, aby otworzyć wszystkie .pdfpliki w apvlv:

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

a następnie, w wierszu, wprowadź aplikacji: apvlv.

jasonwryan
źródło
To działa. Ale to tylko otwiera plik. Więc moja xdg-openlewa nieskonfigurowana i aplikacje używające xdg-opennie otwierają poprawnie plików.
kravemir
Nie bardzo podążam za twoim komentarzem. Co nie działa? -dPrzełącznik ustawia domyślną. Więc jeśli używasz go do otwierania fileA.pdf- powinieneś być w stanie otworzyć fileB.pdfprzy użyciu preferowanej aplikacji.
jasonwryan
1
Tak. mimeopen -d a.pdfustawia domyślne dla *.pdf, ale ustawia domyślne dla siebie - mimeopen b.pdfdziała. Ale xdg-openkonfiguracja pozostała niezmieniona i nadal otwiera wszystko za pomocą firefox: /
kravemir
3
Raz mam ustawić domyślną z mimeopen, xdg-openzachowuje się zgodnie z oczekiwaniami - w przypadku .pdfs, otwiera je apvlv.
jasonwryan
1
To nie działa dla mnie w Lubuntu 16.04. sudo xdg-mime default pluma.desktop text/plaindaje 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.txtdaje bash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
Nickolai Leschov
62

Dlaczego nie korzystać z narzędzi samego XDG?

Aby ustawić Thunar jako domyślną przeglądarkę plików, tj. Domyślną aplikację do otwierania folderów.

$ xdg-mime default Thunar.desktop inode/directory

aby użyć xpdf jako domyślnej przeglądarki plików PDF:

$ xdg-mime default xpdf.desktop application/pdf

To powinno utworzyć wpis w lokalnej bazie danych MIME:

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

Twoje pliki PDF powinny być teraz otwarte za pomocą xpdf.

lzap
źródło
+1 i zobacz także moją pokrewną odpowiedź na powiązane pytanie, unix.stackexchange.com/questions/77136/…
michael
2
Najbardziej użyteczna odpowiedź, dzięki. Najłatwiej się o tym dowiedzieć, defaults.listwięc w razie potrzeby można go po prostu ręcznie edytować.
mVChr
Z jakiegoś powodu xdg-mimenie zmodyfikowałem defaults.list, ale edytowanie go ręcznie (dzięki podpowiedziom w tej odpowiedzi) załatwiło sprawę.
Skippy le Grand Gourou
Do twojej dyspozycji jest kilka zależności Perla, upewnij się, że masz je zainstalowane. Dystrybucje RPM / DEB zainstalują je normalnie.
lzap 13.07.16
2
Wygląda na defaults.listto, że jest teraz nazywany mimeapps.list. Zobacz Arch Wiki, aby uzyskać listę prawidłowych lokalizacji dla mimeapps.list.
Mateen Ulhaq
7

W Debianie możesz użyć polecenia jako root

update-mime-database /usr/share/mime

po shared-mime-infozainstalowaniu pakietu.

enzotib
źródło
2
Próbowałem To nie działa Używam Arch.
kravemir
-1 Jest to specyficzne dla środowisk pulpitu, które zależą od wspólnych informacji mime, takich jak GNOME
craymichael
7

Możesz użyć czegoś takiego do wygenerowania odpowiednich xdg-mimepoleceń dla każdego z .desktopplików i zawartych w nich typów mimetycznych, a następnie wykonać te, które ci się podobają. Uwaga /usr/share/applicationsmoże mieć podkatalogi.

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
aleb
źródło
3

To jest jak odpowiedź @ aleb , ale działa na plikach pulpitu ze spacjami:

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
użytkownik60561
źródło