Mengapa beberapa aplikasi menggunakan ~ / .config / appname untuk data konfigurasi mereka sementara yang lain menggunakan ~ / .appname?

37

Saya perhatikan bahwa beberapa aplikasi meletakkan file konfigurasinya ~/.config/appnamesementara yang lain menggunakan ~/.appname(cara klasik, AFAIK) untuk ini. Apa arti perbedaan ini dan apa yang bisa lebih baik untuk dipertimbangkan untuk aplikasi saya?

UPDATE: Sepertinya saya (XUbuntu 11,10 default) $ XDG_CONFIG_HOME diatur ke ~/dan sebagian besar aplikasi di sistem saya (seperti Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine, dll) mematuhi ini. Tetapi masih ada banyak aplikasi (seperti Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE, dll.) ~/.config/Sebagai gantinya. Hal lain yang mencurigakan adalah bahwa direktori di ~/.config/dalamnya tidak disembunyikan (tidak ada titik dalam nama mereka) - bukankah konfigurasi aplikasi diharapkan memiliki nama konstan sendiri tanpa bergantung pada lokasi (nilai $ XDG_CONFIG_HOME)?

Ivan
sumber

Jawaban:

44

Sebuah pelengkap jawaban jasonwryan yang luar biasa, mengatasi beberapa masalah Anda:

  • Anda $XDG_CONFIG_HOMEadalah tidak diatur untuk ~/. Itu tidak diatur. Jadi aplikasi yang mengikuti Spesifikasi XDG menggunakan default~/.config

  • Dir di dalam /.configtidak disembunyikan karena mereka tidak perlu. Inti dari menggunakan ~/.configdir adalah untuk mengacaukan pengguna $HOME. Karena mereka sudah berada di dir, terpisah tersembunyi, tidak perlu disembunyikan di dalam sana.

  • Perangkat lunak yang tidak mengikuti spesifikasi (sayangnya masih sebagian besar) menggunakan dir tersembunyi untuk pengaturan mereka (seperti ~/.myapp) sebagai upaya untuk tidak mengacaukan pengguna $HOME. Ini (agak) berfungsi, tetapi masih merupakan pendekatan yang buruk ketika, misalnya, Anda mencoba untuk membuat cadangan pengaturan dan "data besar" Anda (seperti Gambar, Video, Musik) secara terpisah. Memiliki semua pengaturan di satu tempat, tanpa campur dengan data pengguna, adalah pendekatan yang jauh lebih baik

  • Adapun "memiliki nama konstan terlepas dari mana XDG_CONFIG_HOMEmenunjuk ke" , mereka sudah melakukannya: itu appname tanpa titik terkemuka. Ingat: yang menggunakan $HOME/.appnameadalah yang mengabaikan XDG Spec. Mereka menggunakan jalur hardcoded.

  • Adapun aplikasi Anda, silakan gunakan Standar XDG ! Saya mohon, dan pengguna Anda akan mengucapkan terima kasih karena Anda tidak mengacaukan $ HOME mereka lebih jauh.

MestreLion
sumber
4
Hanya ingin mengatakan jawaban Anda paling bagus! Kebijaksanaan konvensional sangat berguna dan poin Anda dijelaskan dengan sangat baik :) terima kasih!
Steve Benner
Di mana perbedaan antara daftar file tersembunyi di direktori HOME dan daftar file yang tidak tersembunyi dalam direktori konfigurasi tersembunyi? Bagi saya itu seluas seperti panjang.
ceving
@ceving: Saya melihat 2 perbedaan utama, kosmetik dan praktis: dari $HOMEsudut pandang Anda, ini adalah ~/.configentri tunggal dan bukan beberapa, mungkin lusinan. Dan itu membuat cadangan pengaturan Anda (atau mengecualikannya) jauh lebih mudah! Bagaimana Anda membedakan pengaturan perangkat lunak dari, katakanlah, Anda ~/Documentsatau Anda ~/.cache?
MestreLion
24

Karena aplikasi yang menempatkan file konfigurasi $HOMEmengabaikan spesifikasi direktori dasar XDG , terutama:

Ada direktori basis tunggal relatif yang file konfigurasi khusus pengguna harus ditulis. Direktori ini ditentukan oleh variabel lingkungan $ XDG_CONFIG_HOME ...

Jika $ XDG_CONFIG_HOME tidak disetel atau kosong, standar yang sama dengan $ HOME / .config harus digunakan.
jasonwryan
sumber
Sepertinya saya (default XUbuntu 11.10) $XDG_CONFIG_HOMEdiatur ke ~/, tetapi masih ada banyak aplikasi yang menggunakan~/.config/
Ivan
3
Jawaban ini jauh dari lengkap. Yaitu, sepertinya menyiratkan bahwa spesifikasi telah ada sejak hari pertama, dan hanya aplikasi yang telah mengabaikannya sejak awal. Tapi sebenarnya ada beberapa aplikasi yang sudah ada lebih lama dari XDG dengan spesifikasinya.
Ruslan
Sebuah versi 0.7 standar Poettering. Itu pasti sangat penting. Adakah yang bisa menjelaskan masalah yang diselesaikan standar?
ceving
@Ruslan: Sudah ada sejak 2003. Itu 15 tahun yang lalu! Benar, itu bukan hari pertama dan banyak perangkat lunak diciptakan sebelum itu. Tetapi setiap perangkat lunak seperti itu kemungkinan besar memiliki banyak pembaruan yang masih digunakan sampai sekarang, jadi aman untuk mengatakan yang tidak bermigrasi ke standar XDG sengaja memilih untuk mengabaikannya.
MestreLion
@ceving: ini memecahkan masalah mengatur dir pengguna dengan cara yang sama /diatur: tidak mencampur data dengan executable dengan konfigurasi. ~/.configadalah lawan pengguna /etc, dan ini sangat membantu dalam pencadangan misalnya. Tanpa /.config, cadangan pengaturan apa pun harus menyertakan secara manual semua dir aplikasi atau secara manual mengecualikan semua dir "big data" pengguna (Video, Musik, dan dir pribadi lainnya yang mungkin ia buat).
MestreLion
7

Jawaban yang lebih kontroversial adalah:

  • ~/.configadalah standar untuk standar XDG, yang hanya berlaku untuk aplikasi yang mengikuti standar FreeDesktop.org (juga melalui penggunaan $XDG_CONFIG_HOMEvariabel).
  • ~/.appname ada sebelum standar freedesktop
  • Tidak semua orang menyukai standar freedesktop
  • "Mengacaukan" $HOMEbukan masalah, menurut saya.
David Gardner
sumber
2
Itu bukan jawaban yang kontroversial, itu salah dan jelas salah: - Saat ini saya memiliki 120 direktori di ~/.config, dari aplikasi yang tidak ada hubungannya dengan FreeDesktop.org, seperti Libre Office, Chromium, Deluge, banyak permainan (termasuk tetapi tidak hanya semua game yang menggunakan Unity3D), aplikasi Google (Chrome, Earth), hal-hal Python (IPython, Eric), Emulator (Muppen 64, Desmune). FreeDesktop.org sendiri memiliki sedikit sekali aplikasi. - ~/.appnameadalah konvensi yang ada sebelum XDG, tetapi sebagian besar perangkat lunak yang masih digunakan saat ini dibuat jauh setelah standar.
MestreLion
5
- Dari sudut pandang pengembang perangkat lunak, tidak ada yang disukai atau tidak disukai dalam standar direktori, itu hanya mengubah konstanta save dir Anda dari $HOME/.myappke${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion
Masih merupakan standar freedesktop, didefinisikan di sini: spesifikasi.freedesktop.org/basedir-spec/… dan aplikasi mana yang bebas untuk tidak digunakan yang tidak mereka inginkan. Tidak semua orang menganggap pemisahan menjadi .config diperlukan.
David Gardner
Benar, tetapi menyiratkan bahwa aplikasi yang mengikuti standar entah bagaimana "aplikasi FreeDesktop.org" sangat menyesatkan.
MestreLion
2
apakah ada manfaat ~/.applebih ~/.config/app?
sam boosalis