.Xresources ve .Xdefaults arasındaki fark nedir?


59

Bu iki dosya aynı işleve sahip gibi görünüyor. Varsa, ikisi arasındaki fark nedir?

Yanıtlar:


68

~/.XdefaultsX kaynaklarını depolamak için eski yöntemdir. Her Xlib programı başlatıldığında bu dosya yeniden okunur. Ağ üzerinden X11 kullanılıyorsa, dosyanın programlarla aynı dosya sisteminde bulunması gerekir.

~/.Xresourcesdaha yeni. Bu doludur xrdbiçine RESOURCE_MANAGERX11 kök pencerenin özelliği. Herhangi bir program bir kaynağı aradığında, doğrudan okunuyor RESOURCE_MANAGER.

Bu özellik yoksa, Xlib .Xdefaultsher program başlangıcında eski okuma yöntemine geri döner . Çoğu dağıtımın ~/.Xresourcesmevcutsa otomatik olarak yükleneceğini .Xdefaultsve hiçbir zaman xrdbmanuel olarak çalışmamış olsanız bile ihmal edilmesine neden olduğunu unutmayın .

Yeni yöntemin avantajı, bir xrdbkez aramanın yeterli olması ve bu ekranda çalışan herhangi bir programın kaynaklarının yerel veya uzak olması. (Ad ~/.Xresourcesyalnızca bir kuraldır - xrdbhatta herhangi bir dosyayı yüklemek için kullanabilirsiniz .Xdefaults.)

Xlib Programlama El Kitabı P.441:

X11R2'den önce, X kaynak ayarları, kullanıcıların ana dizinindeki .Xdefaults dosyasından ve isteğe bağlı olarak X istemcisinin çalıştığı makinede okunduğundan, birden fazla dosyanın bakımı zordu.

Daha sonra, kullanıcıların kaynak ayarlarını geçerli X sunucusundaki kök pencerenin XA_RESOURCE_MANAGER özelliğine .Xresources içindeki kullanıcıların kaynak ayarlarını depolamak için xrdb programı yapıldı, böylece aynı sunucuya bağlı tüm istemciler bunlara erişebildi. Kullanıcı özelliği ayarlamak için xrdb'yi aramamışsa, .Xdefaults okunur.

Vikipedi :

[...] X kaynakları, tüm ekranlara mı yoksa belirli bir taneye mi uygulandığına bağlı olarak iki standart konumda saklanır:

  • 0 ekranının kök penceresinin RESOURCE_MANAGER özelliği
  • isteğe bağlı bir ekranın kök penceresinin SCREEN_RESOURCES özelliği

Bu tam olarak bitmiyor.

  • Ayarlanmamışsa $XENVIRONMENTvarsayılan olarak değişkeni de vardır . Bu, aynı şekilde kullanılır , ancak mevcut olup olmamasından bağımsız olarak her zaman okunur . Genel ayarları kullanırken bazı ayarları makineye özgü tutmak için dosyaları kullanabilirsiniz .~/.Xdefaults-hostname.XdefaultsRESOURCE_MANAGER.Xdefaults-hostnamexrdb

Aşağıda listelenen # 4 ve # 5 öğelerinin her ikisi de GTK 3 veya diğer araç setleri tarafından değil yalnızca saf Xlib programları tarafından kullanılıyor gibi görünmektedir.

  • Dördüncü konum, $XAPPLRESDIRortam değişkeninin gösterdiği dizindir . (Tuhaf bir şekilde, değişken ayarlanmamışsa, $HOMEvarsayılan olarak kullanılır.) Bir program başlatıldığında, aşağıdaki dosyalardan birinin var olup olmadığına bakar (dosya adı, programın sınıf adıyla aynıdır):

    • $XAPPLRESDIR/$LC_CTYPE/XTerm
    • $XAPPLRESDIR/language/XTerm
    • $XAPPLRESDIR/XTerm

    ( ilk bileşen hariç tümü sıyrılarak languageelde edilir $LC_CTYPE; örneğin en_US.utf-8en.)

  • Beşinci konum sistem genelinde "app-varsayılan" dizinleri olduğunu. Yine, uygulama varsayılan dizinleri, programdan sonra bir dosyaya sahiplerse program başlangıcında kontrol edilir. Örneğin, XTerm (Arch Linux'ta) şunları kullanır:

    • /etc/X11/$LC_CTYPE/app-defaults/XTerm
    • /etc/X11/language/app-defaults/XTerm
    • /etc/X11/app-defaults/XTerm
    • /usr/share/X11/$LC_CTYPE/app-defaults/XTerm
    • /usr/share/X11/language/app-defaults/XTerm
    • /usr/share/X11/app-defaults/XTerm

    Uygulama varsayılan dosyaları genellikle /usr/shareprogramın kendisiyle birlikte yüklenir ; yönetici geçersiz kılmalar giderdi /etc.


Yukarıda belirtilen her şey, X.org araç seti belgelerinde ayrıntılı olarak belgelenmiştir - Makale X Araç Seti İç - C Dili Arayüzü , Kaynak Veritabanının Yüklenmesi bölümü .

Ne yazık ki, 2012 yılında ilgisiz oldukları için X kaynaklarını tanımlayan herhangi bir kullanım kılavuzu bulamadım. Ancak tarihsel (okuma: çok eski) bilgiler için X Pencere Sistemi kullanım kılavuzunu X11 R3 ve R4 için okuyabilirsiniz Pencere Sistemi Bölüm 9: Kaynakların Ayarlanması (sayfa 181 ile başlayan).


Harika cevap, ancak tüm uygulamaların kuralları doğru şekilde yerine getirmediğine dikkat edilmelidir. Mesela, SunOS 4 ve Solaris 6 uygulamalarının açılmayacağını hatırlıyorum. Daha sonra açıkça "xrdb" çalıştırmadığım sürece .Xdefaults değişiklikleri. Uygulama ve X sunucusu farklı ana bilgisayarlarda çalışırken de bazı gariplikler olabilir. Bazı uygulamalar yerel dosyayı, bazıları da veritabanını X sunucusundan okur.
David C.

1
@DavidC .: Xdefaults davranış Yani edilir yukarıda açıklanan kuralları takip. Eğer xrdbgelmiştir hiç girişinizden itibaren bu X'in ekran için işletilmektedir - X kök özelliği varsa, - o zaman xlib hiç artık .Xdefaults kullanmayacaktır.
Grawity

1
Bu mantıklı. Ancak ~ / .Xresources içeriğini okuyacak ve xrdb veritabanını görmezden gelecek pek çok açıkça görünen uygulama var. Bu, farklı bir ana bilgisayara (farklı bir .xresosuna sahip) oturum açtığınızda ve uygulamanın yerel olarak çalıştırıldığında içeriğini göstermediğini fark ederseniz, gerçekten can sıkıcı olabilir.
David C.
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.