12 ms·
Tips on how to structure your home directory (2023)
- deepsun 3y agoI remember I deleted a built-in directory like "Documents", and it lost its custom document icon, even when I created a "Documents" directory anew. No amount of googling / asking forums and IRC could bring my custom icon back. :) (Linux Mint, Cinnamon)
- bananskalhalk 3y agohttps://man.archlinux.org/man/user-dirs.dirs.5.en https://man.archlinux.org/man/user-dirs.dirs.5.en If you delete one folder the file $HOME/.config/user-dirs.dirs will be updated sooner or later, and point to $HOME/ and the icon will not be restored by recreating any folder. Just change the values in there to whatever.
- deepsun 3y agoWhoa! I will try that, thank you!
- blindstitch 3y agoHaving come up with a light structure and kept it for 7 years now, mine is: media, life, edu, data, dev, pix The most heavily structured is /edu, everything else is a shitshow but I generally know where to find stuff. There are a few others that are dead. I don't bother putting dotfiles into this, but I probably should. I try to minimize directories with the same first letter for faster tab completion.
- azemetre 3y agoWhat type of files do you keep in edu?
- huntertwo 3y agoAnime porn
- blindstitch 3y ago/life/money/taxes/tax17/receipts/
- marginalia_nu 3y agoAll the important business documents go in ~/horseporn of course.
- formerly_proven 3y agohttps://kubernetes.io/images/blog/2024-04-17-kubernetes-1.30-release/k8s-1.30.png https://kubernetes.io/images/blog/2024-04-17-kubernetes-1.30...
- blindstitch 3y agoMy Zotero database, thesis, and classes split up by semester with short names.
- kovagoz 3y agoI have two folders: "Development" where the git repos are, and "Downloads" where everything else.
- martinbaun 3y agoI am really envious on the FreeBSD' filestructure of OS'. The simplicity is so obvious and I really like that you know what you have.
- smartmic 3y agoI bought the book "Building a Second Brain"[^1] by Tiago Forte and its recommended PARA methods is well-conceived, directly usable and tried and trusted for me. There is even a follow-up book from him about PARA only [^2]. I recommend to check it out (you'll also find many resources in the internet without the need to buy a book - although I highly recommend it and it would be an appreciation for the author) [^1]: https://www.buildingasecondbrain.com/book https://www.buildingasecondbrain.com/book [^2]: https://www.buildingasecondbrain.com/para https://www.buildingasecondbrain.com/para
- taude 3y agoI'm a big fan of PARA method, but I only use it in my note-taking app. I tried to apply it to filesystem, but it didn't work for me. So I went with his philosophy of keeping it simple and what works for you.
- bradley13 3y agoThis is so individual; his solution is not useful for me, and my solution won't be useful for anyone else. My home directory is nearly empty, because all the files I work with are in OwnCloud (so the real question is: what is the directory structure in OwnCloud). Local Git repositories are on a completely separate partition. Since KeepassXC now handles SSH keys, the keys from .ssh are now in the Keepass-file, which is on OwnCloud. That was a huge simplification, and now there is nothing in my home directory that I really care much about.
- kevindamm 3y agoI still put my .vimrc and .bashrc/.zshrc there.
- mingus88 3y agoThe only thing that matters to me is portability when I switch systems, and aware of work vs personal environments I need to be able to login and run a single command to sync to have the appropriate set of files for whatever /linux/work/personal/desktop/server I am on For example, I never want certain environment variables to be exported to work systems, like my home vault endpoint or certain tokens. I recently switched to home-manager from the NixOS project and it looks very promising. The Nix language is complicated but the abstraction to define all these different types of environments is exactly what I need, and git branches manage the work/personal split of file content
- polivier 3y agoI have found it surprizingly difficult to categorize my files in a way that is elegant and intuitive. I've been meaning to look into FUSE for a tagging-based system instead of the current hierarchical one, although I suspect that the difficulty of categorizing things is unlikely to go away even with tags.
- donatj 3y agoI am genuinely surprised tagging never got more traction in the native FS space. I use MacOS's tagging pretty extensively and Dropbox at least keeps them in sync, a lot of other services lose them.
- blowski 3y agoI've tried using tags, but the effort isn't worth it for me. Between search, occasional housekeeping, and a decent folder structure I have everything I need without being coupled to Apple.
- quesera 3y agoYou can tag bookmarks too. No one does this, of course. Tagging data is such a niche feature. But when it's useful, it's very useful.
- Ensorceled 3y agoThe problem I have is that the optimal categorization seems to change depending on my current job and life situation. Tagging requires a whole new level of discipline ...
- lifefeed 3y agoI always like the idea of tags, but whenever I get into a proper tagging system with thousands of entries I always end up having to regularly "refactor" my tags, which is fun exactly once and then it's just another goddamn chore.
- olau 3y agoThe underlying problem is that the way your brain works doesn't really map well into categories. Text searching sometimes works, but has the same problem. Source: Nearly two decades ago we worked on this problem and read a bunch of research. We ended up making an app that let you input multiple facets to narrow things down, with the basic view being a calendar: https://nemo-docs.com/ https://nemo-docs.com/ We didn't have anyone marketing it, so it never really took off. The original plan was to build a serverless/P2P storage system underneath so sharing would be seamless and not require messing with servers, but never got that far.
- xyst 3y agoThe “user-dirs.dir” setting is something I didn’t know was configurable. I thought I was always stuck with ~/Desktop, ~/Documents, … Have slowly been using nixos as my primary driver (still in an emulated vm though). One thing I love here is the declarative nature. Lately have been experimenting with various desktop environments. I tried gnome and “it works” but have been fascinated with the idea of “ricing” my setup. Currently using a Wayland compositor called hyprland to achieve something like this: https://github.com/outfoxxed/hy3?tab=readme-ov-file#demo https://github.com/outfoxxed/hy3?tab=readme-ov-file#demo Community has experienced some drama though with fdo/x/wlroots. Always willing to make a change up if a better alt comes up though.
- phone8675309 3y agoYou should know that "ricing" is a term that's based in the racist term "rice burner" which is used as a slur for Japanese cars imported into the US.
- spacebanana7 3y agoOne major complaint I have with file systems is that too many directories start with the letter “D”. Desktop, Dev, Downloads, Documents, Dropbox etc. I thought about taking action about this, but as the author points about, many applications are quite opinionated on the matter.
- maccard 3y agoI use `/src` to avoid this problem
- beretguy 3y agoI use “/Code”.
- FireInsight 3y agoI once accidentally did an `rm -rf ~/` on a machine without backups and it removed everything alphabetically up until `~/Coding` (everything else being unimportant). So I fixed that by setting up backups and renaming it `~/Zoding` lol. Haven't been foolish enough to make that same mistake again, though.
- skirmish 3y agoYay, I am quite safe, all my projects are nested inside "~/Work"!!
- BristleShopping 3y agodid that oops recently and it deleted `~/VirtualBox VMs/` while `~/Code` survived.
- eviks 3y ago> easily and quickly find what you're Yes, that's why due to yet another totally unrelated quirk of history you > have all the basic hidden stuff which ... such as .config > but I only leave those dotfiles in place which work identically across the different systems I use or you can use a better solution like chezmoi config manager and have templates to allow you to store changes even for those files while retaining the history of changes But the most important piece of advice is missing: get an Everything-like utility (fsearch is a worse alternative on Linux) and bind it to an easy shortcut, that'd be very often the fastest way to find any file and not have to remember all those folder hierarchies (not that they aren't useful)
- Dalewyn 3y agoThe only things in my home directory (note: I use Windows, but the convention still applies) are stuff that demand to be in there, like savegame files and software like Discord which demand to reside in %appdata% or else. My stuff are found literally everywhere but, usually in their own drives and partitions.
- jmbwell 3y agoSame. I’ve relinquished control over all the OS-provided directories to Adobe and Microsoft and go and whatever else assumes I want its crap in those locations. Above someone jokes about just putting everything in Desktop, but honestly, it’s what realistically winds up happening. I can’t be bothered to manage files myself, really. Mostly, the apps I use know where their things are, I have a rudimentary system for archiving finished work, and the rest I can handle with search. I’m just not in any way geared to be a file clerk or self librarian. Fortunately I have a machine that is very good at those things
- techterrier 3y agojust put everything on the desktop, then its all in one place.
- lifestyleguru 3y agoExactly, when desktop gets too cluttered I store stuff in the Trash also.
- calvinmorrison 3y agocalvin@bison:~/work$ tree -d | head . ├── 2022 │ ├── 04 │ │ ├── 19 https://git.ceux.org/today.git/about/ https://git.ceux.org/today.git/about/ so i open my shell, it drops me into ~/t/, which is symlinked to ~/work/YYYY/DD/MM. my GTK file picker is also setup to automatically give me the last 3 days on the bookmark bar. Time is not the _best_ heuristic, but it's not bad. screenshots from scrot all get dumped into ~/screenshots/ by date. the only real 'folders' i keep around are ~/src/, ~/bin/ and ~/documents/, with the last being like, tax documents.
- tetha 3y agoI have something similar with ~/Stuff. ~/Stuff contains a folder per month, and ~/CurrentStuff links to the current folder. From there I have a simple shell-function `mkstuff` to create a folder ~/CurrentStuff/$DAY-"$1". Naturally, it's a huge mess, but it helps if a colleague is like "Hey, didn't we have an issue back in August with the XYZ?". `ls ~/Stuff/2023-{07,08,09}` tends to find things again. Besides that, I mostly have Projects/ (git projects I change) and Repos/ (git projects I look at) on my work laptop.
- mistersquid 3y agocalvin@bison:~/work$ tree -d | head . ├── 2022 │ ├── 04 │ │ ├── 19 > so i open my shell, it drops me into ~/t/, which is symlinked to ~/work/YYYY/DD/MM Please confirm you are not a monster and that you meant /YYYY/MM/DD.
- inanutshellus 3y agoNow I'm wondering what month "19" is named...
- calvinmorrison 3y agoWell the 8th month ain't October
- 3y ago
- shoaki 3y agoTo alleviate the issue with most applications dumping their files in your home directory, i found xdg-ninja[0] to be helpful. In short, it scans all your programs and determines if you can configure it to respect the xdg standards. It doesn't work for everything, but most applications do seem to have such an option. [0] https://github.com/b3nj5m1n/xdg-ninja https://github.com/b3nj5m1n/xdg-ninja
- Ensorceled 3y agoRe: backups I had an experience where I attempted to install a new Mac from a Time Machine backup and my Mac couldn't see anything on the Time Machine backup. Called Apple support and found out about a rare bug where the install process can sometimes initialize the Time Machine backup instead of installing from the backup. Luckily I had backblaze set up but it took a loooong time to get a few hundred gig restored. Now I have Time Machine, BackBlaze and iCloud backups. Every now and then I dump everything to a .tgz on S3
- eadmund 3y agoI prefer to either LUKS-encrypt the volumes used by ZFS, or use ecryptfs at the user level. ZFS ‘encryption’ has some nasty gotchas, such as not encrypting snapshot names (which just boggles the mind …). I add ~/tmp (cleaned out on every boot), and use ~/.config/user-dirs.dirs to assign good lowercase names to everything. And of course all code lives in ~/src.
- weinzierl 3y agoI wish every OS had a space that is only and truly my space. No predefined directories, no config files that I did not put there myself, and no app should ever create files or directories there. I settled a very long time ago to organize all my own data into projects under /proj and an alias `cdp` for `cd /proj`. That was what decades ago my colleagues were doing, and it has worked well for me ever since. I appreciate the[1] home dir as a place for config files mostly and despise it for having become the system's junkyard otherwise. [1] I'm hesitant to say 'my' because since everyone seems to put all their junk there, it does not feel like it is mine at all.
- mingus88 3y ago/data has been that area for me. It has been common practice since the late 90s to separate OS and data on completely different devices even The homedirs belong on the OS drives and are managed by the OS. Anything you want to keep safe goes on the data volume where backups run. It’s also very nice to just disconnect the data drives before any upgrades. You can’t corrupt a filesystem that isn’t even present to the system
- kevincox 3y agoI would say that ~/Documents is pretty good here. The only trouble I have had is it being the default save location of some apps. But I haven't had something yet write there without any explicit action.
- radlad 3y agoI'm surprised nobody has mentioned homesick yet. I prefer homeshick[0], a Bash clone, so I can avoid installing Ruby. [0] https://github.com/andsens/homeshick https://github.com/andsens/homeshick
- l72 3y agoI hate having a polluted home directory, especially when an application thinks it should get a non hidden directory in my home! The one that upsets me the most is the default directory for go modules `~/go`. This frustrates me so much. I refused to install any go apps or use it for development for years. I've unfortunately had to give in, and it can at least be overridden by setting `GOPATH`, but it is a terrible, terrible default.
- Aardwolf 3y agoSame thing, wish that from the start unix had some standardized "applications put everything they want here" home directory that's separate from the "here user chooses to put their own files" home directory
- yencabulator 3y agoAt the start, unix commands didn't need or use configuration files. The world really was that simple, for a while. Now we have even simple desktop apps, that I have not changed a single setting in, insisting to write a whole directory tree of whatever data in my home. Or absolutely moronic things like ~/.config/VSCod*/*Cache* -- really, cache in config?
- Aardwolf 3y agoOr ending up with multi-gigabyte ML models somewhere in deeply nested hidden directories in your homedir
- sph 3y agoThe worst offenders are CLI tools written by people on Macs that do not respect XDG, because it's not a thing over there. So every tool gets to pollute your dotfiles with its own stupid directory. .rustup, .mix, .npm, .yarn, etc. But polluting your home directory like ~/go, without even the decency to hide it, is extremely rude and offensive.
- sevagh 3y ago
- inanutshellus 3y agoBeyond organization, I want to concisely back up and port between machines. The `.config` folder is a big headache when trying to be strategic about backups due to apps putting gigs of session data there. "session data" is not "config", consarnit! An app's "config" shouldn't be gigs large. Grumble grumble, grouse grouse, and so on. :^)
- kps 3y agoAnd it should be possible for `.config` to be read-only, provided you do not ask a program to change a persistent setting.
- lambdaxyzw 3y agoYou would love nixos - all configs are readonly.
- yonatan8070 3y agoSo much this, why do apps use .config like a place to store app data? We have .local and .cache for that
- lambdaxyzw 3y agoBecause programmers like to have something like DATA_DIR - a writable directory managed by the program. Thinking about multiple storage locations is effort and most users don't care about this too much anyway
- rubenbe 3y agoI actually have quite a simple structure that serves me well (your mileage might vary) projects/ 2023/ 2024/ 0000-something/ 0312-other-project/ 0419-hn-comment/ each year I make a year folder. And each project has a month + day prefix. Sometimes I want long term projects to pop up on top, so I prefix them with 0000 (or only make the day 00). It is simple, works on any OS. Although on Linux I do have some helper scripts. And it is very easy to quickly make a directory and move files from downloads into this directory. Keeping the nesting only one level deep helps for the discoverability. (versus the YYYY/MM/DD pattern which uses an extra month level)
- progx 3y agoWhy not use folder dates for that? It could be sorted. projects/ | 01.01.2017 something/ | 01.01.2024 other-project/ | 01.01.2023 hn-comment/ | 01.01.2022
- Karellen 3y agoA lot of filesystems don't store file creation dates. Posix only requires last modification date (which for directories, is the last time a file/subdirectory was added, removed, or renamed), last access date, and last status change date.
- jabroni_salad 3y agoMy experience with metadata is that a lot of applications don't care about its integrity but will never mess with the filename unless that is the purpose of the application. Demo a sync program and find that all the creation dates have changed to today!
- kps 3y ago> My experience with metadata is that a lot of applications don't care about its integrity [...] This has led me to formally maintaining significant metadata in the filename, for certain kinds of files; everything else gets lost or diverges. For instance, a book file might be named `Title [a=Jim Smith; isbn=9781234567890].pdf`.
- bloopernova 3y agoIn case anyone is looking for inspiration, my macOS homedir contains: # multiple organizations under Projects: ~/Projects/GitHub-org-name/repo-name # temp files: ~/Scratch/0_jira ~/Scratch/1_temp ~/Scratch/2_builds ~/Scratch/9_archive # Emacs org-mode files ~/Org # Top-level screenshots ~/Screenshots Using it with zoxide[1] allows me to run "z weba" and get taken to: ~/Projects/client_org/amazing-webapp I also use a couple of helper functions in my zshrc while working in the Scratch directories: # Marky Mark and the Function Bunch function gcd { git clone $1 && cd "$(basename "$_" .git)" } function showpath { echo $PATH | sed -e $'s/:/\\\n/g' } if [[ $OSTYPE =~ ^darwin.* ]] then function brewup { brew update && brew upgrade && brew cleanup } fi function mc { command mkdir $1 && cd $1 } function mcd { local TODAYDATE TODAYDATE=$(date +%F) command mkdir ${TODAYDATE} && cd ${TODAYDATE} } function mce { command mkdir ${EPOCHSECONDS} && cd ${EPOCHSECONDS} } EPOCHSECONDS comes from the zsh/datetime module[2] [1] https://github.com/ajeetdsouza/zoxide https://github.com/ajeetdsouza/zoxide [2] https://zsh.sourceforge.io/Doc/Release/Zsh-Modules.html#The-zsh_002fdatetime-Module https://zsh.sourceforge.io/Doc/Release/Zsh-Modules.html#The-...
- kebman 3y agoI think it's a nice idea, but don't like the media structure into family and so on. Looks like he's going to have a ton of problems with duplicates and then edited duplicates down the line, which can easily be mixed up, and then you lose your edits and so on. Pictures are better sorted with EXIF keywords. So, metadata stored in the picture itself, perhaps even in the MIME type. Thus, if a picture is family related, just tag it #family, or #personx and so on. This is why I store them in the same folder on a per-date basis. The rest is keywords edited with programs such as Adobe Bridge and so on. As for document file name structure, text files and the like, I've used both `Date then Descrpition.txt` or `Keyword Title or Description and then Date.txt` with the date obviously being an ISO date such that `YYYY-MM-DD-hhmm` with `-hhmm` being optional, also for sorting reasons. Sometimes I like sorting on "topics" i.e. keywords or titles, but other times, such as in logs, I like the date first because it's more essential to know when you logged something, and not necessarily the topic. You should think the date is superfluous since it's also stored in the system. However, my experience that when you move around a file, the date eventually changes, and certainly if you make a mistake along the way. Meanwhile a filename date doesn't change. Also it helps with list sorting where applicable.
- philsnow 3y agoMedia-specific content-addressed stores (ideally as overlays which refer to but don't change your directory structure or file organization) seem to be the way to go with this. I think photoprism and photostructure don't really care about your directory structure or organization, but paperless(-ngx, or whatever is the most current iteration) is "notorious" for being opinionated about organization / not wanting to respect your organization. I used camlistore/perkeep for photos for a while, but google photos has an absolutely killer feature of knowing who is in every picture, even accounting for age: although two of my boys who are 8 years apart look really similar at similar ages, it knows who is who. I don't know if it uses facial analysis or photo metadata or what, but it has never mistaken one for the other. I don't have a reasonable way of getting that tag information out of google photos (even though I'm paying for the service). It might be time to revisit this, though.. I don't recall whether photostructure / photoprism try to do facial recognition, but even if they don't already, I bet they'll soon be roughly on par with google photos (or good enough that I can stop depending on google for this). That's documents and photos / videos, what about music? For better or for worse, It's been at least a ~decade since I tried keeping my own music collection as files. Are there things these days like paperless / photoprism, a library system for music that has deeper integration with the content than just "files on disk"?
- vbezhenar 3y agoFor me the way I use is as follows: Capital names for GUI things, lowercase names for CLI things. I'd prefer ~/documents, etc, but GUI people insist on capitalizing, so whatever. Very rarely I have to mix those, so it's not a big problem. ~/dotfiles is my dotfiles directory with git. I create ~/.zshrc -> dotfiles/zshrc, etc. I don't use any software to manage that, I just create symlinks. In the past I've used ~/.dotfiles but I think that making it visible makes more sense. ~/projects is my projects directory. ~/projects/test is throwaway test projects to check things out, etc. ~/projects/my is my personal projects. ~/projects/company is projects for company I'm working for. I'm kind of freelancer and sometimes work for different companies, so separation is necessary. ~/tmp is my throwaway directory for everything. I have shell function mkcdtmp which creates ~/tmp/240419 (current date) and cds into it. It's a wonderful way. I rarely clean it, because I prefer to buy big discs and keep trash around, somewhat organized. If I need something from yesterday or past month, I know where to find it. That's the most important thing I did for organizing my temp work which is plenty. Of course I can create ~/tmp/whatever if needed, it's all trash stuff. Well, that's all, I guess. I don't use ~/Desktop. I rarely use ~/Documents, still need to find a way to organize it. Also I dump my short notes and stuff to my github repo which builds a personal website. I tried various notes software but ordinary website with markdown turned out the best way for me. I never was able to organize my work in a very structured way, it's always piles of trash moving around which eventually turn into something usable, so instead of fighting myself I decided to make that trash organized. Essentially my computer is disposable. Everything in ~/projects is in git. Everything in ~/tmp is not very important and more like a cache or discarded work. I'm trying to organize things in a way so restoring it from the clean state wouldn't take much time. I often reinstall OS from the scratch and I often switch between operating systems and laptops, that suits me best.
- HumblyTossed 3y agoI very much dislike capitalizing anything. I know it's only an extra key to hit, but it's annoying as all get out.
- skirmish 3y agoI personally would rather type "ThisIsSomeOtherProject" than "this-is-some-other-project" as advocated on the page. Approximately the same number of keypresses but fewer characters to read.
- koko-blat 3y ago[flagged]
- snapcaster 3y agoI just use Spotlight search now, i can't remember the last time I really put any thought towards directory structure or anything like that (besides maybe my one "code" directory)
- otterpro 3y agoI also have similar data structure for dotfiles... I've been using ~/bin, ~/dotfiles, ~/data, ~/enc (for encrypted files), etc. However, for projects and documents, I use Johnny Decimal system (https://johnnydecimal.com https://johnnydecimal.com), which works perfectly for my use case. It helps me reduce the decision fatigue of deciding what to name the folder and filenames.
- James_K 3y agoSomebody needs to tell people to stop putting their websites in monospace.
- andrewla 3y agoInstead of having a dotfiles git repository, I find it more useful to have my entire `.config` directory be in a git repository, and by default ignore everything. My .gitignore then looks like /* !.gitignore !/dotfiles !/i3 !/git and so on. Inside the `dotfiles` directory is non-hidden versions of all the home directory dotfiles, and a script to symlink from ~/.bashrc to ~/.config/dotfiles/bashrc. I also make the .config directory visible; I use ~/config and symlink ~/.config to it.
- jbverschoor 3y agoTip: refuse to use programs that don't use .config. refuse to use programs that don't use your home directory as a cache or tmp folder
- subuwm 3y agoIt seems to me that directories are a fundamentally flawed system or organizing files. A natural way to start a directory structure is by basing it on the type of file (i e. games, music, pictures etc) but that will quickly fall apart after you want your files of different "types" relating to X to be under the same directory. So now you can either create some symlink mess, include the wrong "type" of file in your directory tree, or restructure. The problem with restructuring is that it's a lot of work and the end result is not really worth it. What tends to happen (at least for me) is overly deep directory structures (and/or too much branching) that are tedious to navigate, and in the end have the same problem. Another option is to just bite the bullet and create a X subdir for each of your main directories that have relevant files for X which is what I do. But that really sucks and I wish there was a better alternative that actually worked with existing programs which assume a directory based organization. There are some alternatives that work on top of existing filesystems e.g. tag based systems but I haven't tried them yet and I suspect they have their own headaches.
- xurukefi 3y agoReading the comments here makes me feel guilty. I'm sitting on probably a few hundred files and folders called something like tmp, tmp1, foo, foo23, foobar, testxyz, etc... They all hold probably very irrelevant stuff and are safe to delete, and I have yet to resort to those files for rescue, but you never know! Every now and then I collect them and put them in an archive folder. I'm now at "archive10".
- harywilke 3y agoWhenever I'm thinking about sorting and filesystems, I think of this post from Stephen Wolfram [0] and it's HN discussion [1]. The bit on filesystems is titled 'My Filesystem'. The basic premise is broad categories are better than narrow. It has constrained my urge to waste time hyper-categorizing things. [0] https://writings.stephenwolfram.com/2019/02/seeking-the-productive-life-some-details-of-my-personal-infrastructure/ https://writings.stephenwolfram.com/2019/02/seeking-the-prod... [1] https://news.ycombinator.com/item?id=26045380 https://news.ycombinator.com/item?id=26045380
- rml 3y agoI'm glad people keep writing these "how I set up my computer" articles because it's how I learned almost everything I know - thanks to the kindness of internet strangers. anyway here's my idiosyncratic setup, would probably be terrible for anyone else: everything goes in Dropbox (paid 2TB account) my Dropbox subfolders are organized by broad filetype, e.g. ~/Dropbox/{Code,Documents,Videos,Downloads} on a new computer I install Dropbox and create symlinks, e.g. /home/rml/.emacs -> /home/rml/Dropbox/Code/personal/config/dot-emacs /home/rml/.Xinitrc -> /home/rml/Dropbox/Code/personal/config/Xinitrc /home/rml/Code -> /home/rml/Dropbox/Code ... etc Because I pretty much live in Emacs and manage files using `dired` I have lots of Elisp code and custom keybindings that take me to my most-used files and directories. For other "tier 2" things I either know where they are due to long habit (most stuff doesn't move or it's obvious which folder e.g. a PDF will be in) or I use a combination of `M-x locate` and `M-x grep` which works pretty well. Re: concerns about "where apps store stuff" I mostly don't care because everything I care about is in Dropbox. If it's something I use a lot, its config is symlinked in wherever the app expects it to be - otherwise everything is a few `dired` commands away. (On macOS `M-x locate` can be configured to use the builtin `mdfind` which works very well for finding things IME. I think it's what drives Spotlight.) At some point I may set up 'recoll' and all that but so far I haven't needed it so I haven't paid the complexity tax of trying to configure that across Windows/macOS/Linux vs. good old locate/grep FWIW because I limit myself to a "standard" set of apps (Emacs, browser, VLC, PDF/image viewer) the above setup works pretty much the same across Windows/macOS/Linux, so most of the time I don't have to care that much which system I'm typing into
- panqueca 3y ago> Hyphen vs underscore in filenames and directory names? > Originally, when I stopped using Windows back in about 1998, I was used to using spaces between words in filenames and directories. As I progressed into the world of Linux and BSD, I changed all spaces to underscores, but since I have done (and still do) a lot of web development I eventually settled on hyphens. I not only think it looks better, but the fact is that search engines interpret hyphens in file and directory names as spaces between words. Underscores are usually not recognized, and as such, their presence can negatively affect search engine optimization. Even though files in my home directory are my private files and not something I put out on the web, I have just settled on using hyphens everywhere. I couldn't agree more. It's so practice to use hyphens when navigating on terminal that i think it should be a standard. It's even better than pressing <SHIFT-KEY> every time to select an underscored filename or <BACKSLASH-KEY> for spaces. Duh
- rauhl 3y agoThat’s a minor thing I dig about Lisps: variables can be named foo-bar-baz, with nary a shift to type.
- aftbit 3y agoThe following directories always exist in my $HOME. Usually there are also a bunch of other work-in-progress files scattered around, waiting for me to either categorize them, delete them, or give up and move them to one of the catchall directories (archive, ongoing, tmp, or projects/scratch depending on what they are) 3dp -> 3d printing files archive -> manuals, papers, website backups, etc audio -> music and sound files bin -> scripts and hand-installed binaries build -> other peoples' projects that i'm building or hacking on CameraUploads -> symlink to my NextCloud camera upload folder Documents -> some random documents migrated from Dropbox days Downloads -> Downloads, organized by year, with cur year in root notes -> textfile notes ongoing -> catch all to get rid of stuff that i am not quite done with yet personal-records -> water & power bills, medical records, pay stubs, etc pics -> photos (mostly screenshots) from this PC specifically projects -> my own projects that i'm working on (mostly git repos) tmp -> theoretically, safe to delete at any time .... theoretically BACKUP.TODO -> a textfile showing what i still need to back up out of my digital empire
- yoyohello13 3y agoThese days I just put everything into ~/Documents and use fzf to find what I'm looking for.
- ivylnpvt 3y agoI hope someday we won't have to think about this anymore. I just want to write, code, and create without the overhead of organizing. I don't want to decide how to correctly "file" my cabinets, or undertake home dir refactors because my usage patterns changed. I only have respect for the unixdigest author, but I can't imagine living in his shoes. My notes tend to have more than one "category" and I'm too indecisive to accept one folder structure for them. And my notes/categories morphs a lot too.
- tmd0406 3y agogood
- brudgers 3y agoI used to worry about organizing files because searching was something I only did by hand. I still often do it by hand, but I know I am doing it wrong. Anyway I don't worry about organization as much because a hand search might take five minutes. Organizing files is never done because nobody understands someone else's organization. When it comes to file organization, present self quickly becomes someone else and the Documents folder contains an oldDocuments folder contains a Documents folder with an oldDocuments folder and so on. Date is the most reliable way to organize files. It is monotonic.
- shmerl 3y agoLooks like there is some progress with $HOME/.mozilla to be more XDG base directory compliant.
- gwern 3y ago> Actually, you SHOULD be paranoid about important data. I learned this the really hard way - a long time ago - when I had just finished writing a 200+ A4 pages book and then lost everything because of a silly mistake and had to start all over and write the book again! > > It is impossible to describe that very special feeling that arises when you have just realized what just happened! Noooooooooooooo! Pleeeeeeaseeeeee NOOOOOOOOOOO! (utter despair and disbelief - LOL).
- carlinm 3y agoI've got my own little structure: # projects I work on code/ dotfiles/ # main obsidian.md repo that everything I learn dumps into omega/ # public repos for local code spelunking, these remain untouched repos/ It's just organically evolved, borrowing from this and that.
- hgyjnbdet 3y agoI use Johnny.Decimal [0] for my folder organisation needs. I'm not strict with it but it works for me. [0] https://johnnydecimal.com/ https://johnnydecimal.com/
- pacifika 3y ago~/inbox/unordered/archive/chaos
- llmblockchain 3y agoThe best way to organize your home is gnu stow!
- ArcMex 3y agoFor the last couple of years, I've only had these directories: dev, test and prod. Whatever I am working on or learning goes in dev, whatever is ready for testing or experimentation goes in test. Everything else goes in prod. But I have been thinking of expanding on this. Thanks for sharing the article. I might gain some inspiration.
- kkfx 3y agoI have had a very curated home taxonomy, than I give up. Now nearly all my digital life is managed in a graph of org-mode notes, org-attached. So I do not need to look for some file traversing a tree but a single org-roam-node-find typing something to reach a heading title. This plus a heavy note usage allow for a far better search, full-text in notes via ripgrep as well, working far better both for structured files, like regular bills, and casual files. A small bonus the two-level cache-like global attachment dir is essentially a nicely balanced tree, meaning if I decide (experimented than dropped since of no use for me) to index my files for instance with Recoll (Xapian comfy wrapper) the indexing is typically faster than in a classic curated taxonomy.
- holoduke 3y agoDoes it really matter when your home folder is a mess. I have thousands of files in my downloads folder. Hundreds of folders in my home folder. I never run into issues. I occasionally use search to find old files or just sort by newest date.
- deleted 3y ago[deleted]
- erlkonig 3y agoMost of both this article and the discussion is covering the simple case of home on a local hard drive, rather than the more interesting real-world situations with network-mounted home directories and multiple different HW/OS architectures you'd want to be able to have handled transparently. Which is fine. For more... interesting network scenarios, it can be helpful to construct some variable, say, $HOSTABI, that includes tokens for both hardware and OS. $ echo $HOSTABI x86_64-ubu-2204 Which can then be used inside architecture-influenced variables like ARCH, LIBRARY_PATH / LD_LIBRARY_PATH, PATH, as well as inside the user's own installation system (makefiles, etc) used for anything the user compiled. Great for just installing some new hw/sw combo, mount home, cd into "~/src" or equivalent and run "make install", and just get all your own code recompiled and installed for your new architecture. This is a microcosm of what sysadmins on heterogeneous networks do, mostly for different hardware architectures, although this was a much more common situation in earlier years than more recently where Linux has taken over even more of the corporate/research world. I've found it pretty useful even at home, where I'm using my one home directory across my systems' different installations of Linux with different library requirements (although I should probably sell that SGI Onyx/RE - IRIX not Linux - that Wing Commander III was rendered on). My home directory is usually populated almost exclusively with dotfiles and some threescore subdirs with 3ish-letter names like doc/ etc/ fun/ (I'm a gamer) git/ iso/ job/<site>/<recursehere> lib/ man/ pub/ (packages of my own programs) sbin/ src/ steam/ (yep) tmp/ var/ (notes, logs, etc) vr/ ... and so on. It seems to work out alright. Contains about half a million subdirs and 4.2 million files. ;-)
- bPspGiJT8Y 3y agoI'm shifting towards simply "not having" a home directory. Actual data is stored on other partitions, eg `~/git/project1` => `/git/project1`, `~/Pictures/Wallpapers` => `/data/Pictures/Wallpapers`, etc. The shell can be set up to spawn in some custom directory, $CDPATH can be altered for quicker navigation or completions, configurations are managed by Nix so I simply don't have a reason to look at my $HOME that often. Programs can pollute it all they want, since I don't use it myself I also don't have to care about that.
- eternityforest 3y agoI manage dotfiles with Vorta backups. I don't want to deal with symlink management and such, and it's an easy way to say "These five manually selected dotfiles get saved". I have a separate Vorta profile just for them. I have projects folders for each category of project, and each project gets a folder. Anything programming related, gets a git repo. I used to have my top level folders by category, documents, code, etc, and that was a miserable idea. I much prefer sorting by project. Any folder can have an "Archive" dir for old stuff. I also have a Collected folder, for stuff that's I just found online and saved, sorted by category. Stuff like RasPi os images and sound fonts go there. It's like downloads but less ephemeral. Then I have the one that people might not like... TheRuins. Whenever I do a clean reinstall of an OS, which used to be every few years, my old home dir would go there. I don't want to just use a new home dir, because for one thing it's probably 95% stuff I don't actually need, and also it might have files for some old version of some app that might break the new one. Stuff I actually DO want, I can manually move along into my new home dir out of the old Ruins. The rest can just stay until I eventually need more space and move it into an SSD. All of my media files live in a folder synced with SyncThing, as do a lot of other things. Stuff I really want to keep gets replicated to my phone and tablet, as well as actually being backed up. Finally everything gets backed up with Vorta. It's deduplication is amazing when you often move stuff around in a Ruins folder. If I had the budget, I'd probably have a NAS with two disks, one as a backup target, and the other for general storage.