Dalam sebuah program yang saya tulis, saya ingin menawarkan fungsionalitas untuk membuka direktori tempat file yang sedang saya proses berada dan secara otomatis memilih file itu (sehingga pengguna tidak perlu mencarinya).
Saya tahu bahwa saya dapat membuka direktori menggunakan file manager default
xdg-open /path/to/directory
Saya tahu bahwa saya dapat membuka direktori di nautilus dan memilih file menggunakan
nautilus /path/to/file.txt
Saya pikir saya bisa menggunakannya
xdg-mime query default inode/directory
untuk mendapatkan manajer file default dan - jika nautilus - panggil seperti yang ditunjukkan di atas. Tapi, terlepas dari kenyataan bahwa nautilus adalah default pada sistem saya ( xdg-open
membuka nautilus dan begitu juga menu tempat di shell gnome), xdg-mime
kembali Thunar.desktop
. (Saya sudah mencoba find / -name Thunar.desktop -mount 2>/dev/null
tetapi tidak menemukan apa pun.)
Juga, saya tidak tahu cara membuka direktori dan memilih sub direktori di nautilus (dengan pendekatan yang disebutkan di atas akan membuka subdirektori).
Bagaimana saya bisa membuka direktori di filemanager default dan memilih file di direktori itu (jika memilih direktori juga, itu mungkin akan bagus, tetapi untuk aplikasi ini tidak diperlukan) atau setidaknya mencari tahu default filemanager sehingga saya dapat memanggilnya langsung?
mimeapps.list
. Bisakah Anda menjelaskan apa saja asosiasi ini "jika setelah semua file ditangani, kami belum menemukan aplikasi default, pilih aplikasi yang paling disukai (menurut asosiasi) yang mendukung tipe"? Apakah Anda tahu cara mengetahui program mana yang akan dimulai secara otomatis tanpa perlu menerapkan kembali algoritma ini?Anda mungkin ingin mempertimbangkan untuk menggunakan dbus untuk membuka file Anda karena dengan cepat menjadi lebih populer.
Konsep file manager "default" hanya benar-benar ada jika Anda hanya fokus pada
xdg-mime
, namun di dbus land, dan memang sebagian besar aplikasi di luar sana, cerita mengambil twist yang berbeda, dan konsep file manager "default" tidak ada lagi.Ini adalah bagaimana Anda membuka file (
/home/me/path/to/folder/or/file
) di manajer file (default?), Menggunakan dbus:Apa yang dilakukan perintah ini adalah mencari layanan dbus yang mengimplementasikan
org.freedesktop.FileManager1
antarmuka, dan memanggilnya dengan path ke file yang ingin Anda buka.Alasan saya menaruh tanda tanya setelah default adalah karena dbus tidak menghormati konsep manajer file "default"; semua yang dilakukannya adalah mengirim panggilan ke layanan pertama yang ditemukannya yang mengimplementasikan antarmuka dan memungkinkannya menangani operasi. Sekarang mungkin aplikasi yang dipilihnya adalah pengelola file "default" Anda, tetapi itu tidak selalu merupakan jaminan.
Sebagian besar aplikasi modern akan digunakan
dbus
secara default dan kemudian mundur kexdg-mime
jika panggilan dbus gagal, jadi ini yang saya sarankan Anda lakukan.sumber