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?
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.
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.
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.
xdg-mime query default image/png
zwracawine-extension-png.desktop
:-)@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
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ć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_version
jest 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.
źródło
xdg-mime query filetype example.png
sprawdzenia 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.