Bir uygulama için kullanıcı ayarları nerede saklanır?


12

Uygulamamın bir ayar kapatmasını istersem, bir uygulama kapatıldığında bu kalıcı olur, nerede saklamalıyım?

Karmaşık bir şeyden bahsetmiyorum: iki boolean ve bir dize (gelecekte daha karmaşık ayarları saklamak isteyebilirim de)

Ben gconf, dconf, gsettings, vb tüm duydum duydum. "Tercih edilen" yöntem nedir? Tercihen Python'da hoş ve kolay olanı.


Yanıtlar:


9

gconfkullanımdan kaldırıldı, bu yüzden yeni bir proje için kullanmam. dconfbir uygulama geliştiricisi olarak normalde onunla uğraşmak zorunda kalmamanız gerekir.

İhtiyacınız olan şey gsettings, ayarları gerçekte nasıl / nerede saklandıklarını rahatsız etmeden saklamak / almak için yüksek düzeyli bir API ( C için API dokümantasyonu ). gnome'un ( ve gibi ) temel paketlerinden biri olan gsettingsparçasıdır . Bu blog yazısı , Python ile nasıl kullanılacağına dair kısa bir giriş sağlar.gioglibgobject

Herhangi bir bağımlılık istemiyorsanız gio(örneğin bir GNOME uygulaması geliştirmiyorsanız) ve basit yapılandırma dosyalarını saklamak istiyorsanız , freedesktop spec'e$HOME/.config göre dizini (veya tanımladığı herhangi bir dizini $XDG_CONFIG_DIRS) kullanmanızı öneririz. .$HOME/.your_appname


Blog gönderisine bağlantınız öldü. Başka şansın var mı?
Seth

@ Maalesef bağlandığım blog yazısı artık mevcut değil. Bağlantıyı, aynı zamanda iyi bir başlangıç ​​noktası olması gereken başka bir blog yayınının bağlantısıyla değiştirdim.
Marcel Stimberg

10

Uygulama sistem genelinde çalışır

ayarları depolamak için uygun yer:

/etc/[application]/

burada bir alt dizin isteğe bağlıdır.


Uygulama kullanıcı başına modda çalışır

ayarlar, HOME kullanıcısında, tercihen gizli bir dizinde saklanmalıdır:

/home/<user>/<.application>/

Ayrıca bkz. Debian FHS .


X-Desktop'ta çalışan uygulamalar

X-Desktop uygulamaları (örn. GNOME, KDE, Unity, Xfce) , yerel değişkenlerde aşağıdaki dosya konumlarının tanımlandığı XDG Temel Dizin Spesifikasyonu'na başvurmalıdır :

  • $XDG_DATA_HOMEkullanıcıya özgü veri dosyalarının saklanması gereken göreli temel dizini tanımlar. $ XDG_DATA_HOME ayarlanmamış veya boşsa, $ HOME / .local / share değerine eşit bir varsayılan değer kullanılmalıdır.

  • $XDG_CONFIG_HOMEkullanıcıya özel yapılandırma dosyalarının saklanması gereken göreli temel dizini tanımlar. $ XDG_CONFIG_HOME ayarlanmamış veya boşsa, $ HOME / .config değerine eşit bir varsayılan değer kullanılmalıdır.

  • $XDG_DATA_DIRS$ XDG_DATA_HOME temel dizinine ek olarak veri dosyalarını aramak için tercih edilen temel dizin kümesini tanımlar. $ XDG_DATA_DIRS içindeki dizinler iki nokta üst üste ':' ile ayrılmalıdır.

  • If $XDG_DATA_DIRS ayarlanmamış veya boşsa, / usr / local / share /: / usr / share / değerine eşit bir değer kullanılmalıdır.

  • $XDG_CONFIG_DIRS$ XDG_CONFIG_HOME temel dizinine ek olarak yapılandırma dosyalarını aramak için tercih edilen temel dizin dizisini tanımlar. $ XDG_CONFIG_DIRS içindeki dizinler iki nokta üst üste ':' ile ayrılmalıdır. $ XDG_CONFIG_DIRS ayarlanmamış veya boşsa, / etc / xdg değerine eşit bir değer kullanılmalıdır.


Hayır, /home/<user>/.config/application/ adresinde olmalıdır
Anonim

@Anonymous: Bunun için bir referans olması harika olurdu. Mevcut Debian politikası , uygulamaların, kullanıcı ayarlarını kullanıcının HOME'unda bir nokta dosyasında (veya dizinde) saklaması önerilmesi dışında FHS 2.3'ü gerektirir .
Takkat

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.