Farklı Masaüstü Ortamları için farklı varsayılan uygulamalar ayarlama


9

Varsayılan Unity arabirimi ile Ubuntu 12.04 kullanıyorum. Daha sonra KDE masaüstü, XFCE, LXDE, gnome-shell ve Cinnamon kurdum.

KDE, Unity'den farklı varsayılan uygulamalarla birlikte gelir, örneğin

  • kwrite metin düzenleme için,
  • konsole sanal terminal olarak,
  • kfontview yazı tipi görüntüleme ve yükleme için,
  • dolphin Dosya tarayıcı vb.

Diğer DE diğer bazı varsayılan uygulamalarla birlikte gelir.

Sorun hem açılabilir hangi tür bir metin dosyası olarak bir dosyayı açmak istediğinizde doğar geditve kwriteben kullanmak istiyorum, kwriteKDE üzerinde ve geditBirlik veya Gnome üzerinde. Ancak, böyle ayarlamanın bir yolu yoktur. KDE ve Unity'deki ilgili ayarları değiştirerek metin dosyası için varsayılan uygulamayı ayarlayabilirim, ancak her iki DE için de varsayılan olur.

Örneğin, kfontviewerKDE'de varsayılan yazı tipi görüntüleme uygulaması olarak ayarlarsam , Unity veya Gnome'dayken yazı tiplerini de açar ve bunun tersi de geçerlidir. Diğer bir DE programının yüklenmesi, kullanılan DE için varsayılan programdan daha uzun sürdüğü için bu bir sorundur.

Benim sorum: Farklı DE için farklı varsayılan uygulamalar kullanabilir miyim? Nasıl?


Yanıtlar:


5

Sorununuzu çözmek için bu çözümü bir araya getirdim ve metin dosyaları ve yazı tipi dosyaları açarak KDE ve XFCE üzerinde test ettim. Herhangi bir sayıda masaüstü ortamına ve mime tipine uygulanabilecek genel bir çözümdür. Çalışma şekli, farklı masaüstü ortamları için farklı uygulamalar kullanarak bir dosyayı açacak olan custom-open adlı basit bir python betiği olmasıdır. Çözümü ayarlama adımları şunlardır:

  1. özel açık komut dosyasını bilgisayarınıza tercihen yolunuza kaydedin, ancak olması gerekmez.
  2. .custom-open.ini giriş dizininize kaydedin ~ / .custom-open.ini
  3. özel açılmasını, işlenmesini istediğiniz dosya türleri için varsayılan uygulama olarak ayarlayın.

özel açık

#!/usr/bin/env python
import traceback, sys, os, ConfigParser, os.path
from subprocess import Popen, check_output
from gtk import MessageDialog, MESSAGE_ERROR, BUTTONS_CLOSE

try:
    file, desktop = sys.argv[1], os.environ['DESKTOP_SESSION']
    mime = check_output(['file', '--mime-type', file]).strip().split(': ')[1]
    config = ConfigParser.RawConfigParser()
    config.read(os.path.expanduser('~/.custom-open.ini'))
    cmd = config.get(desktop, mime)
    Popen([cmd] + sys.argv[1:])
except:
    msg = "CUSTOM OPEN ERROR\n\n" + traceback.format_exc()
    MessageDialog(None, 0, MESSAGE_ERROR, BUTTONS_CLOSE, msg).run()

.Özel-open.ini

[gnome]
text/plain = gedit
application/x-font-ttf = gnome-font-viewer

[xubuntu]
text/plain = leafpad
application/x-font-ttf = gnome-font-viewer

[kde-plasma]
text/plain = kate
application/x-font-ttf = kfontview

yani bu çözümün en güzel yanı, istediğiniz kadar yeni masaüstü ortamı ve istediğiniz kadar MIME türü ekleyebilmenizdir. masaüstü ortamı için hangi adı girmeniz gerektiğini kontrol etmek için terminalde aşağıdaki komutu çalıştırın.

env | grep -i DESKTOP_SESSION

sadece bir dosyanın tam mime türünü kontrol etmek için:

file --mime-type filename

DÜZENLENDİ: Sembolik bağlantılara olan ihtiyaç kaldırıldı, bu kullanımı kolaylaştırır. Ayrıca bir hata oluşursa bir uyarı getirecek bir grafik hata işleyicisi ekledim.


1
Cevabınız için teşekkür ederim. Adımlarınızı takip ettim ve tüm uygun komut dosyalarını, bağlantıları ve dosyaları oluşturdum. Çözümünüz komut satırından harika çalışıyor ve reklamı yapılan şekilde çalışıyor. Ancak belirli bir dosya türünü açmak için komut dosyasını (veya daha ziyade sembolik bağlantı) varsayılan uygulama olarak ayarlamaya çalıştığımda, başarısız olur ve ikincil varsayılana geri döner. Bilmiyorum, eğer yanlış bir şey yapıyorsam.
Glutanimate

Komut dosyasını varsayılan uygulama olarak şu şekilde tanımladım: 1.) ~ / .local / share / apps co.desktopile bir başlatıcı ( ) oluşturun Exec=/home/user/.scripts/Customization/Defaultapps/custom-open-text. 2.) Düzenleme ./local/share/applications/mimeapps.listve aşağıdaki varsayılan ilişkilendirme ekleyin: text/plain=co.desktop. Bu prosedürde herhangi bir hata buldunuz mu?
Glutanimate

1
Tamam, yeni sürümü deneyin, kullanımı kolaylaştırmak için bazı geliştirmeler yaptım. Ayrıca grafik hata işleyicisini ekledim, bu yüzden şimdi hata mesajı ile bir uyarı açmalıdır. Tekrar deneyin ve hala çalışmıyorsa hata mesajını bir yorumda yayınlayın. Ayrıca hangi Ubuntu sürümünü ve hangi masaüstü ortamını denediğinizi söyleyebilir misiniz?
Marwan Alsabbagh

Çalışır ve fevkalade yapar (LXDE / Unity kullanarak)! Çözümünüz bu ödülün her son noktasını hak ediyor. Bunu yapmak için zaman ayırdığınız için çok teşekkür ederim. (PS: Hala böyle bir işlevin varsayılan olarak Ubuntu ile birlikte gelmesi gerektiğini düşünüyorum. DE-hoplama popüler bir uygulama olmayabilir, ancak resmi bir çözüm garanti etmek için yeterince yaygındır.)
17'de Glutanimate

1
Üzgünüm, ama ben OP değilim, sadece ödülü ayarladım. @Olive Twist kendi sorusunu cevaplandı olarak işaretlemek zorunda kalacak.
Glutanimate

2

Bunu yapmanın "doğru" yolunu bulamazsanız, kaba kuvvet yöntemini aşağıdaki gibi kullanabilirsiniz:

  1. Tüm varsayılanları tek bir masaüstü ortamında ayarlama
  2. cd $HOME;ls -Rlrt | lessHangi dosyaların güncellendiğini öğrenmek için a gibi bir şey yapın - yani bu seçeneklerin nereye kaydedildiğini
  3. Her masaüstü ortamı için (yedeklenmiş) bu dosyaların ayrı bir kopyasını oluşturun.
  4. Her masaüstü ortamı için tekrarlayın
  5. Bu masaüstü ortamına geçmeden hemen önce uygun grubu yerine kopyalayın (büyük olasılıkla oturumu kapatıp tekrar oturum açıp yeni masaüstü ortamını seçerek).

İnşallah, masaüstü ortamını bir kabuk betiğinden, masaüstü ortamına yapılandırma dosyalarını nereden alacağını söyleme seçeneğiyle değiştirmenin bir yolu vardır. Bu, dosyaları sürekli hareket ettirmekten daha temiz olabilir, ancak bunun işe yarayıp yaramadığını ya da nasıl çalıştığını araştırmadım.

Başka, çok daha basit bir çözüm, ancak tam olarak istediğiniz şey değil:

  1. Her masaüstü ortamı için ayrı kullanıcı hesapları oluşturun
  2. Bu kullanıcılar için yeni bir grup oluşturun
  3. Tüm bu kullanıcıları yeni gruba ekle
  4. Tüm bu kullanıcılardan erişmeniz gereken ortak veri dosyalarını oluşturun -rwxrwxr-x ( chmod 775 list-of-files-and-directories). Bu şekilde, "kullanıcılarınızdan" diğerinin önce yazdığı bir dosyaya yazmaya çalışırken izin hataları almayacaksınız.

    • Bazı dosyaların tüm bu kullanıcılar arasında aynı olmasını istiyorsanız, bunları bir kullanıcıda oluşturabilir ve geri kalanlarına symlink yapabilirsiniz. Bu işe yarar, ancak herhangi birini değiştirdiğinizde bu şekilde kurulduklarını hatırlamanızı gerektirir. Örneğin, bunlardan birini düzenlerseniz ve düzenleyiciniz bir yedekleme dosyası yaparsa, bu yedekleme dosyası diğer tüm kullanıcı hesaplarına değil, yalnızca düzenlediğiniz yere kaydedilir.

Kullanıcı başına dosya ilişkilendirmelerinin nerede saklandığını not edebilirsiniz~/.local/share/mime/
RobotHumans
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.