.DS_Store1999 में Mac OS X के लिए Finder को दोबारा बनाते समय बने Desktop Services Store का संक्षिप्त रूप है- उस समय Finder का codebase लगभग 8 साल पुराना था, इसलिए छोटे बदलावों में भी बहुत लागत लगती थी और असंबंधित दिखने वाले फीचर टूट जाते थे, इसलिए पूरी तरह से फिर से लिखना ज़रूरी था
- नए Finder ने user interface और backend को अलग किया, और backend ने file enumeration, change monitoring, icon position और folder settings जैसे metadata को संभाला
- Finder backend, Finder के बाहर भी इस्तेमाल होने वाला एक संभावित public API बना, और Finder का नाम “Desktop” करने की योजना के साथ मिलकर इसे Desktop Services नाम मिला
.DS_Storeमूल रूप से केवल view settings या icon position बदलने पर बनना चाहिए था, लेकिन bug की वजह से अक्सर सिर्फ folder पर जाने भर से भी बन जाता है
Desktop Services Store नाम की उत्पत्ति
- 1999 में Apple में Mac OS X Finder को नया बनाते समय पुराना Finder codebase लगभग 8 साल पुराना था
- बदलावों के लिए बहुत बड़ा engineering effort चाहिए होता था
- बदलाव आमतौर पर 2-3 ऐसे फीचर तोड़ देते थे जो दिखने में असंबंधित लगते थे
- Mac OS X के लिए Finder को शुरू से फिर से लिखने का फैसला किया गया
- rewrite प्रक्रिया में Finder के user interface और मुख्य backend functionality को अलग किया गया
- इनके internal names क्रमशः
Finder_FEऔरFinder_BEथे - backend file enumeration, file system change monitoring, metadata handling, icon position, और folder settings के लिए ज़िम्मेदार था
- इनके internal names क्रमशः
- Finder backend, Finder के बाहर भी उपयोगी हो सकता था, इसलिए भविष्य में इसे public API के रूप में देने की योजना बनी
- पहले
Icon ServicesऔरNavigation Servicesनाम तय करने के अनुभव के आधार परDesktop Servicesनाम चुना गया - उस समय Finder का नाम “Desktop” करने का विकल्प भी विचाराधीन था
.DS_Storeनाम “Desktop Services Store” से आया है- शुरू का
.Unix-आधारित OS और Mac OS में इसे hidden file की तरह मानने के लिए चुना गया था
- पहले
बनने की शर्तें और बाद का प्रभाव
- नाम और अधिक वर्णनात्मक हो सकता था, लेकिन एक बार इसके व्यापक रूप से इस्तेमाल में आ जाने के बाद इसे बदलना मुश्किल हो गया
.DS_Storeफ़ाइल मूल रूप से तभी बननी चाहिए थी जब उपयोगकर्ता folder की view settings बदलता या icon position को manually सेट करता- लेकिन एक bug जो ठीक नहीं किया गया, उसकी वजह से यह फ़ाइल ज़रूरत से ज़्यादा बनने लगी
- वास्तव में, सिर्फ folder पर जाने भर से
.DS_Storeफ़ाइल बन जाना लगभग तय था
Finder_BE, यानी Desktop Services, Finder के बाहर भी इस्तेमाल हुआNavigation Services, यानी open/save dialog, ने भी बाद में इसका इस्तेमाल करना शुरू किया- Mac OS की शुरुआती releases में
Navigation Servicesइसका उपयोग नहीं करता था Desktop Services APIअभी तक पूरी तरह public नहीं हुआ था
1 टिप्पणियां
Hacker News की टिप्पणियाँ
इस फ़ाइल के अलावा भी, Mac फ़ाइल सिस्टम में fork की अवधारणा की वजह से उलझन वाले पल आए थे
यहाँ fork का मतलब
fork()नहीं था, बल्कि फ़ाइल सिस्टम के अंदर डेटा घटक और resource घटक की जोड़ी के रूप में मौजूद संरचना थी; एक को metadata और दूसरे को फ़ाइल content जैसा माना जाता थाUnix में metadata directory block inode की तरफ़ होता था और वह फ़ाइल से uniquely बंधे format में नहीं था, इसलिए
tar,cpio,zipजैसी संरचनाओं को इसे अलग से व्यक्त करना पड़ता थाUnix पर Mac-compatible फ़ाइल सपोर्ट implement करना हो तो resource fork को first-class data की तरह संभालना पड़ता था, और स्वाभाविक तरीका था हर फ़ाइल के बगल में
.fileजैसी फ़ाइल रखनाउस समय UFS के inode block में resource fork की सभी attributes map नहीं की जा सकती थीं, और उसमें icon जैसी चीज़ें भी होती थीं। ज़्यादा आधुनिक file systems में directory block structure बड़ा होता है, इसलिए वे ऐसे data को बेहतर संभाल सकते हैं
बल्कि इसे फ़ाइल content के दो सेट के रूप में देखना ज़्यादा सही है; एक को
dataऔर दूसरे कोrsrcकहा जाता था, और disk पर दोनों बस byte streams ही थेहालांकि resource fork में आम तौर पर 4-byte type code और 2-byte integer ID से indexed छोटे data pieces की structure stored होती थी
68K Mac applications code, menus, dialogs, pictures, icons, strings आदि लगभग सब कुछ resource fork में डालते थे, और पुराने Mac app को बिना conversion के PC या Unix पर copy करने पर वह खाली फ़ाइल जैसा दिखता था
इसलिए Mac app को network पर भेजने के लिए single stream में encode करना पड़ता था, और शुरुआती दौर में BinHex
.hqxया MacBinary.bin, बाद में Stuffit.sitarchives इस्तेमाल होते थेयह structure inode में fit न होने की वजह यह है कि यह असल में पूरी एक फ़ाइल को जबरन उसमें ठूँसने जैसा था। resource fork structure में खुद 16MB limit थी, लेकिन इसे अलग data stream की तरह treat करें तो इसे जितना चाहें उतना बड़ा बनाया जा सकता था
उदाहरण के लिए Escape Velocity plugins custom resource types इस्तेमाल करते थे, और ResEdit plugin से आसानी से edit किए जा सकते थे
https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(AD...
File type, creator code, lock, invisible, bozo bit आदि हमेशा file system में stored होते थे
उदाहरण के लिए MFS disk format description देख सकते हैं: https://wiki.osdev.org/MFS#File_Directory_Blocks
Mac boot DVD बनाना भी अपने आप में आसान नहीं था
पहले
.DS_Storecreation बंद करने का तरीका था, ऐसा मुझे याद है, लेकिन Apple ने उसे हटा दिया, और यह बदलाव क्यों किया यह बिल्कुल समझ नहीं आताआखिरकार मैंने खुद एक program तक लिखा जो पूरे file system को monitor करता था और
.DS_Storeबनते ही उसे delete कर देता था[0] https://github.com/slmjkdbtl/dskill
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUEhttps://support.apple.com/en-us/102064
Local volumes पर इसे बंद करने का तरीका कभी था, ऐसा मुझे याद नहीं
.से शुरू होने वाली files बनाना शुरू करके सच में गड़बड़ कर दी.DS_Storeकी अनुमति मिलने के बाद लगता है कि दूसरे engineers ने.fseventsd,.Spotlight-V100जैसी चीज़ों को भी आसानी से approve कर दियाइन files की वजह से “polluted” file systems कितनी बार देखे हैं, पता नहीं। ज़्यादातर SD cards या USB flash drives थे, लेकिन कभी-कभी इससे कहीं ज़्यादा डरावने मामले भी थे
आम तौर पर ऐसी स्थिति में
rm -rf .DS_Store .Trashes ._.Trashes .fseventsd .Spotlight-V100चलाता हूँ, और कुछ और write होने से पहले जल्दी से drive eject कर देता हूँखासकर जब किसी खराब होती disk से data copy करना हो, तो सबसे आखिरी चीज़ जो आप चाहेंगे वह है पूरी indexing शुरू होना और disk पर writes होना
सच में, इसके लिए settings option होना चाहिए
find / -name ".DS_Store" -exec rm {} \; 2>/dev/nullइसे script में डालकर
crontabमें add कर दें.DS_Storeसचमुच एक बदकिस्मत design जैसा लगता है। इसका एक उद्देश्य है और कई workarounds भी हैं, लेकिन व्यवहार में यह उससे सामना करने वाले 99% लोगों के लिए फाइल कचरा फैलाने वाली चीज बन गया हैuser experience की finishing के लिहाज से यह Apple जैसा नहीं लगता
मैं System 7.5, OS X और Windows साथ-साथ इस्तेमाल करते हुए बड़ा हुआ, और Mac आम तौर पर अनावश्यक files या file formats, या “computer अंदर से कैसे काम करता है” जैसी implementation details को सामने दिखाने से बचता था
इसलिए इस file का जगह-जगह बनना Mac के बारे में मेरे mental model से बिल्कुल मेल नहीं खाता और अजीब लगता है
.DS_Storefile कभी नहीं देखतेFinder अब hidden files दिखाने का विकल्प चालू होने पर भी उन्हें नहीं दिखाता
लेकिन जब Mac से Windows users को files share की जाती हैं, तो यह सच में बहुत भद्दा दिखता है, और Mac पर switch करने के बारे में सोच रहे लोगों पर खराब पहला impression डाल सकता है
समझ नहीं आता कि इसे उसी folder के अंदर क्यों होना चाहिए। क्या operating system कहीं अपनी छोटी database रखकर हर path को reference नहीं कर सकता?
मैं इस बात से सहमत हूं कि “यह तभी बनना चाहिए जब user वास्तव में view settings adjust करे या folder के अंदर icons की positions manually तय करे।” लेकिन असल में सिर्फ folder visit करने भर से
.DS_Storeबनना लगभग तय हैFinder को लेकर मेरी सबसे बड़ी शिकायत यही है
Classic Mac OS Finder की तरह individual folder windows का look और size अलग-अलग customize कर पाना सचमुच शानदार feature है
लेकिन जब आप उसी folder को browser window के तौर पर बस पार कर जाते हैं, तो कुछ बदले बिना भी उस customization का ज्यादातर हिस्सा browser window settings से overwrite हो जाता है
अगर यह इतनी आसानी से टूटने वाला है, तो बेहतरीन customization allow करने का मतलब ही क्या है
मैं global shortcut से Applications folder खोलता हूं, लेकिन उस window का look सजाना चाहूं तो भी कोई फायदा नहीं। shortcut दबाने पर क्या दिखेगा, पता नहीं होता और यह बार-बार reset हो जाता है
वजह यह है कि Finder में default browser window configuration set करने का कोई तरीका नहीं है। इसके बजाय यह हर visit किए गए folder में current browser settings छोड़ देता है, जो बहुत frustrating है
वही window आखिरी बार छोड़े गए look के साथ सामने आ जाती थी—यह बहुत अच्छा था और उसकी याद आती है
cmd-shift-Aसे Applications folder खोला जा सकता है, औरcmd-shift-Uसे Utilities folderमैं Mac user नहीं हूं, इसलिए GitHub जैसी जगहों से मिले
.tgzमें ढेर सारे.DS_Storeहों तो हमेशा थोड़ा झुंझलाहट होती हैmacOS शायद GNU
tarइस्तेमाल करता है, लेकिन default रूप से.DS_Storeignore करने के लिए उसे modify या configure नहीं किया गया, यह काफी हैरानी की बात हैCOPYFILE_DISABLE=trueexport करने परtar.DS_Storefiles को skip कर देता हैnetwork volumes browse करते समय
.DS_Storefile creation को default रूप से बंद करने का तरीका उल्लेख करने लायक है। वरना सिर्फ Finder से browse करने भर से directory modification time बदल जाता है, और यह सच में बहुत खराब हैhttps://old.reddit.com/r/MacOS/comments/lvju40/comment/gpc8i...
.DS_Storeहै या नहीं देखा तो नहीं दिखा, लेकिन terminal में जाकर देखा तो वास्तव में थाअब Finder के hidden files दिखाने वाले feature पर भरोसा नहीं किया जा सकता। सारी hidden files दिखाने के बजाय, Finder केवल वही hidden files दिखाता है जिन्हें वह समझता है कि user को ध्यान देना चाहिए
मेरा network share local Synology है, इसलिए बड़ा issue नहीं है, लेकिन workplace में इन files ने काफी गंदगी पैदा की थी
dot underscore (
._) files भी होती हैं। network share पर ऐसी files बनने से रोकने के लिए क्या उन्हें disable करने का कोई तरीका है?[0] https://superuser.com/questions/212896/is-there-any-way-to-p...
अच्छी बात है कि Emacs के file manager Dired का इस्तेमाल करें तो इस परेशान करने वाली छोटी file और LaTeX run से बनने वाली files को आसानी से ऐसे ignore किया जा सकता है जैसे वे मौजूद ही न हों
(setq dired-omit-mode tdired-omit-files "^.+\\.\\(DS_Store\\|aux\\|bak\\|bbl\\|bcf\\|blg\\|dvi\\|ent\\|idx\\|ilg\\|ind\\|log\\|orig\\|out\\|pdf-view-restore\\|pdf#\\|reg\\|run.xml\\|synctex.gz\\|toc\\)$")