Skąd polecenie xdg-open wie, której aplikacji użyć do otwarcia pliku?


21

Spodziewałbym się, że polecenie xdg-open użyje tej samej aplikacji, która otwiera się po dwukrotnym kliknięciu pliku w domyślnym menedżerze plików, ale nie zawsze tak jest.

Na przykład moim DE jest XFCE, moim menedżerem plików jest Thunar, a moją domyślną przeglądarką zdjęć jest Ristretto. Jednak xdg-open example.pngotwiera przykładowy plik PNG w Pinta. Dlaczego?

Odpowiedzi:


23

xdg-open to niezależne od pulpitu narzędzie do konfigurowania domyślnych aplikacji użytkownika. Wiele aplikacji wywołuje wewnętrznie polecenie xdg-open. W środowisku pulpitu (takim jak GNOME, KDE lub Xfce), xdg-open po prostu przekazuje argumenty do aplikacji otwierającej pliki w tym środowisku pulpitu (np. Gvfs-open, kde-open lub exo-open). co oznacza, że ​​powiązania są pozostawione środowisku pulpitu. Gdy nie zostanie wykryte żadne środowisko pulpitu (na przykład, gdy uruchomimy samodzielnego menedżera okien, takiego jak np. Openbox), xdg-open użyje własnych plików konfiguracyjnych.

z archwiki

specyficzne dla twojego pytania, możesz spróbować ustawić domyślną aplikację powiązaną z plikiem png:

xdg-mime default <ristretto.desktop> image/png

musisz dowiedzieć się, jaka dokładnie jest nazwa pliku Ristretto na pulpicie. potem możesz to sprawdzić za pomocą:

xdg-mime query default image/png

1
Można to uznać za formalną odpowiedź, ale tak naprawdę nie wyjaśnia zjawiska, o którym wspomniałem.
Ivan

zaktualizowane, sprawdź ponownie
oxnz

Dzięki. I to jest bardzo zabawne: xdg-mime query default image/pngzwraca wine-extension-png.desktop:-)
Iwan

2

@Ivan Tak się dzieje prawdopodobnie, ponieważ nie podałeś odpowiedniego typu pliku, gdy pytałeś o domyślną aplikację. Ważne jest, jak xdg wywołuje ten określony typ pliku. Można to łatwo znaleźć, uruchamiając

xdg-mime query filetype example.png

Na przykład, jeśli zrobię to z określonym plikiem png na moim komputerze, to zwróci image/x-apple-ios-png. Po ustaleniu rzeczywistego typu pliku można uruchomić

xdg-mime query default <new filetype>

i pobierz aplikację używaną przez xdg dla tego określonego typu pliku. W przypadku, gdy dla tego typu pliku nie zdefiniowano żadnej aplikacji, xdg-open sprawdza, czy plik /etc/debian_versionjest dostępny, w takim przypadku uruchomi się run-mailcap, co jest bardzo podobne do xdg-open i spróbuje znaleźć program do otwarcia pliku .

Tylko jeśli to też się nie powiedzie, xdg-open poprosi użytkownika o zdefiniowanie programu do otwarcia pliku.


Czy to już nie napisał Oxnz ?
Jeff Schaller

oxny wspomina tylko, jak ustawić i sprawdzić aplikację pod kątem znanego typu pliku. Brakuje mu odniesienia do xdg-mime query filetype example.pngsprawdzenia rodzaju pliku określonego pliku, ponieważ samo założenie, że plik .png również należy do kategorii obraz / png, nie zawsze jest poprawne. Patrząc na komentarze Ivana , myślę, że jego problem nie został jeszcze rozwiązany.
lauve
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.