Escaping `.DS_Store`: The Unconventional Solution
Problem formulation
Over the years, countless macOS users are complaining about additional files automatically created by Finder called “.DS_Store”. The “.DS_Store” files become very annoying when:
- You are working with people with different operating systems (Windows, Solaris, Arch Linux, etc.).
- You are sharing directories with a very small size (typically less than 6 KB).
- You are compressing files to share with others while the receivers do not know what the extra
.DS_Store
file does. - You are just using Finder to view the edited time or total size of a directory while it suddenly changes due to spawn of
.DS_Store
files. - You are synchronizing files with a cloud storage while most (over a thousand) fragmented files are called
.DS_Store
. - You are not willing to expose a directory tree (see ds_store_exp on GitHub).
- More cases in Wikipedia: .DS_Store.
Therefore, a way to escape .DS_Store
is crucial to the users.
Former works
There are several works trying to make macOS user directories clean. Many simple scripts to alleviate the problem.
Some users may use other file managers to avoid Finder.app
so that Finder.app
would not frequently create .DS_Store
.
Hackers may love to directly hack Finder.app
to thoroughly solve the problem. See projects like Odourless on GitHub.
However, it is complicated for normal users to handle the problem with the works above. They require users to grasp at least basic concepts of programming.
What this article introduces
Actually, there is an unconventional solution to this problem. Let’s inspect macOS directory trees by Terminal.app
and tree command.
1 |
|
User’s normal directories usually contain at least one .DS_Store
.
However, there are many special directories used by macOS ended with specific name extensions. For example, Safari browser is located at /Applications/Safari.app
and Safari.app
is a directory instead of a single file. Multiple .DS_Store
inside the special directories is inappropriate. So, a way to bypass or escape .DS_Store
is to put users’ normal files inside a special directory and treat the directory as a daily workspace.
1 |
|
See. No .DS_Store
inside a *.kext
directory!
Introducing Kext as workspace method.
- Open
Terminal.app
on macOS. - Create a Kernel Extension (Kext) directory under your home directory. Input the following lines and execute them in the terminal.
1 |
|
- Since
*.kext
cannot be treated as plain folder inFinder.app
, create a subdirectory inside the Kext directory. Input the following lines and execute them in the terminal.
1 |
|
- Drag the directory
workspace
to the (left) side panel of Finder so you can access it easily anytime.
Now enjoy your file management life without automatic spawn of .DS_Store
inside workspace
folder! If you are moving files from other paths to it, please remember to manually recursively remove all .DS_Store
automatically created before.
After two years of use of this workaround on my own MacBook, I finally pluck up the courage to introduce this method to completely get away from .DS_Store
for all subdirectories inside the workspace
folder.
Drawbacks
No more additional file info fields (only available on macOS) should be appended in a file
Since the file .DS_Store
is for Desktop Services Store, some additional information attached to the files will be no longer recommended. For example, in the workspace
folder created as described above, you should not append any information as comments inside Finder’s Get Info window. (In fact, these comments are not readable for Windows users and cloud storages.) These comments are also called Spotlight Comments for older Mac users, if you do not understand what I mean.
More explanations needed for normal users
This article is written in a hurry. The writing style should be improved and many details need polishes. But it should be very helpful for the Mac users being annoyed by .DS_Store
.
It is still a pity that for normal Mac users, the solution requires at least one first-time help from professional users, because of the steps using the terminal. But with the help of those who know how to correctly operate terminals and explain the actual usage of the workspace
folder, the solution must make file management on macOS much less painful than before.
Trivia
- See Wikipedia: AppleSingle and AppleDouble formats for similar concerns for the files started with
._
and directories called__MACOSX
. - Use
dot_clean -mnsv .
to recursively clean the AppleDouble files (at current working directory in terminal). - Use
find . -name ".DS_Store" -depth -print -exec rm {} \;
to recursively delete.DS_Store
(at current working directory in terminal).