Herhangi bir ortam olmadan 'xdg-open`' nasıl düzgün ve kolay bir şekilde yapılandırılabilir?


63

Herhangi bir masaüstü ortamı olmadan OpenBox pencere yöneticisini kullanıyorum .

xdg-opengarip davranır. Her şeyi ile açar firefox.

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

Basit bir program arıyorum; Klasördeki her *.desktopdosyayı okumak /usr/share/applications/ve otomatik olarak xdg ayarlarını yapmak gibi bir şey .


xdg-mime(kısmı xdg-utils) kullanarak , (sorgulama, yapılandırma) ile çalışmak için en iyi cevaptır xdg-open. Ayrıca bakınız unix.stackexchange.com/questions/8793/…
michael

Yanıtlar:


24

Mimetypes yönetmek için depoda perl-file-mimeinfo kullanabilirsiniz extra.

Tüm .pdfdosyaları açmak için örnek apvlv:

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

ve sonra, istemi de, uygulamayı girin: apvlv.


İşe yarıyor. Ancak sadece dosyayı açar. Bu yüzden benim xdg-openyapılandırılmamış sol ve kullanan uygulamalar xdg-opendosyaları doğru açmaz .
kravemir

Yorumunu pek takip etmiyorum. Ne çalışmıyor -dAnahtar varsayılan ayarlar. Öyleyse açmak için kullanıyorsanız fileA.pdf- fileB.pdftercih ettiğiniz uygulamayla açabilmelisiniz .
jasonwryan

1
Evet. mimeopen -d a.pdfiçin varsayılan *.pdf, ancak kendisi için varsayılan ayarlar - mimeopen b.pdfçalışır. Ancak xdg-openyapılandırma değişmeden kaldı ve hala her şeyi açar firefox: /
kravemir

3
Varsayılanı ayarladıktan sonra mimeopen, xdg-openbeklendiği gibi davranır - .pdfs durumunda, bunları açar apvlv.
jasonwryan

1
Bu benim için Lubuntu 16.04’de işe yaramıyor. sudo xdg-mime default pluma.desktop text/plainverir 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.txtverir bash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
Nickolai Leschov

62

Neden xdg'nin yardımcı programlarını kullanmıyorsunuz?

Thunar'ı varsayılan dosya tarayıcı yapmak, yani klasör açmak için kullanılan varsayılan uygulama yapmak için.

$ xdg-mime default Thunar.desktop inode/directory

xpdf'yi varsayılan PDF görüntüleyici olarak kullanmak için:

$ xdg-mime default xpdf.desktop application/pdf

Bu, yerel MIME veritabanınızda bir giriş oluşturmalıdır:

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

PDF dosyalarınız şimdi xpdf ile açılmalıdır.


+1 ile ilgili soruya ilgili cevabımı da gör, unix.stackexchange.com/questions/77136/…
michael

2
En faydalı cevap, teşekkürler. defaults.listBu konuda bilmek kolay, gerekirse sadece elle düzenlenebilir.
mVChr

Bazı nedenlerden dolayı xdg-mimedeğişiklik yapmadı defaults.list, fakat elle düzenleme (bu cevabın ipuçlarıyla) hile yaptı.
Skippy le Grand Gourou

FYI bunun için birkaç Perl bağımlılığı gerekir, bunların kurulu olduğundan emin olun. RPM / DEB dağıtımları normalde bunları sizin için kurar.
lzap

2
Görünüşe defaults.listgöre şimdi denir mimeapps.list. Geçerli konumların listesi için Arch Wiki'ye bakın mimeapps.list.
Mateen Ulhaq

7

Debian'da komutu root olarak kullanabilirsiniz.

update-mime-database /usr/share/mime

sahip shared-mime-infoyüklü paketi.


2
Denedim. Çalışmıyor. Ben koşuyorum Arch.
kravemir

-1 Bu, Gnome olarak paylaşılan MIME bilgi bağlıdır masaüstü ortamları, özgüdür
craymichael

7

Dosyalarınızın xdg-mimeher biri .desktopve içerdikleri mimetypes için uygun komutları oluşturmak için böyle bir şey kullanabilirsiniz , sonra istediğinizleri yürütün. Not /usr/share/applicationsalt dizinleri olabilir.

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

Bu @ aleb cevabı gibi , ancak boşluk içeren masaüstü dosyalarında çalışıyor:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.