The directory structure I use on my computers.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
capntack 392b1f7f1e Clarified Linux user dir relocation directions 1 year ago
LICENSE.md First commit, added versioning and repo structure 1 year ago
README.md Clarified Linux user dir relocation directions 1 year ago
ROADMAP.md First commit, added versioning and repo structure 1 year ago
prior-versions.md Revised Windows user dir relocation directions 1 year ago

README.md

PC Directory Structure

Thank you for visiting! If you are viewing this repo on GitHub or GitLab, please note that this is just a mirror. Please visit the originating repo for any comments, issues, pull requests, etc. You can sign in with your GitHub or GitLab account via Oauth2.


I ascribe to the PARA Method for organizing my to-do and personal knowledge management / second brain systems. A deep dive on how all of that works is out of the scope of this repo (if I ever write a blog post on it, I will link that here). But the short of it regarding how it applies here is that you sort everything into 4, and only 4, root directories in order of actionability: "Projects", "Areas", "Resources", and "Archives". And you only go one subdirectory deep within thos. As you will see below, I've expanded on that when it comes to my entire working file structure on my computers. I've aded "Inbox", User Directories", "Programs", and "DevMin" (my personal term for dev/git/admin type work on my homelab). And I also am not afraid to have as many subdirectories as necessary.

I've designed this system to be as portable as possible from one system to another, and from Linux to Windows. You could just about copy and paste the file structure root directory from any one to any other. Update a few symlinks if you're using them. And then point the system's user directories to their new locations, as appropriate.

My primary reason for uploading this here is to give myself an easy place to refer to it. But I figured I might as well make it public for others. I doubt anyone will use it exactly as I have it written down here, but hopefully you can find inspiration from it. As I update, I will move the now out of date versions to the prior-versions.md file and replace them with the new ones here in the README.md to keep the files in this repo at a minimum.


Legend

Legend

  • root-directory-name >> description of directory
    • dir-with-explanation >> description of directory

      Explanation

    • symlink-source >> description of directory

      symlinked to "path/to/where/symlink/is/sent"

    • symlink-dest >> description of directory

      symlink of "path/to/where/symlink/is/from" Further explanation

    • some-dir >> description of directory
      • ${PLACE_HOLDER_FOR_SUBDIRS}
      • ./file-name >> description of file

Linux Structure for v1.0.0

  • file-structure-root >> the root directory for everything that follows

    Name this directory how you like, and place it wherever you please. Tho I recommend your $HOME directory.

    • 00-inbox >> default Desktop directory
      • downloads >> default Downloads directory
      • scans >> for printer/scanner to upload to
      • screenshots >> for screenshot util to upload to
      • tmp >> for "RAM" work
    • 10-projects >> "P" in PARA
      • ${PROJECT-DIRECTORIES}
    • 20-areas >> 1st "A" in PARA
      • ${AREA-DIRECTORIES}
    • 30-resources >> "R" in PARA
    • 40-archives >> 2nd "A" in PARA
      • filing-cabinet >> for documents you would put in a physical filing cabinet

        symlinked to "$HOME/50-user-dirs/documents/"

        • manuals >> for storing home/office manuals
      • glacial >> for long term storage

        symlinked to "$HOME/50-user-dirs/documents/"
        CD to where the directories/files to be archived are, and archive thusly:

        tar cf ${ARCHIVE_NAME}.tar.xz \
          --use-compress-program='xz -9v' \
          /path/to/glacial/${DIR_OR_FILE_TO_ARCHIVE}
        
    • 50-user-dirs user/profile directories
      • audiobooks >> self-explanatory
      • bookmarks >> symlinks to directories & files deep in the OS file system
      • documents >> default Documents directory
        • filing-cabinet >> for documents you would put in a physical filing cabinet

          symlink of "$HOME/40-archives/filing-cabinet"

        • glacial >> for long term storage

          symlink of "$HOME/40-archives/glacial"

        • obsidian-vaults >> place Obsidian.md vaults here
          • ${VAULT-DIRECTORIES}
        • templates >> default Templates directory
      • ebooks >> self-explanatory
      • images >> default Pictures directory
      • music >> default Music directory
      • shares >> a directory to place shared directories in
        • cloud-shares >> a directory to place cloud share directories in
          • ${CLOUD-SHARE-DIRECTORIES}
        • network-shares >> to "co-locate" your network shares with other shares

          symlink of "/mnt"

        • p2p-shares >> a directory to place peer to peer shared directories in
          • ${P2P-SHARE-DIRECTORIES}
        • public-directory >> default Public directory
      • videos >> default Videos directory
    • 60-programs >> portable apps and the like
    • 70-devmin >> to do any dev/git/admin work out of
      • repos >> for git/svc/etc repos
        • ${VERSION-CONTROL-SYSTEM-DIRECTORIES}
          • ${PROJECT-DIRECTORIES}
      • scripts >> place scripts in here and either add to path or copy script files from here to a dir in path
      • vsc-workspaces >> place VSCod[e|ium] workspace files in here
      • ./scratchpad.md >> a junk file use as a scratchpad

Note: To modify the default user directories on Linux, edit the user-dirs.dirs file, often located in $HOME/.config/. You cannot add directories to the config file, but you can edit the paths of the existing ones. They must be relative to $HOME and changes will take effect after relogging.


Windows Structure for v1.0.0

  • file-structure-root >> the root directory for everything that follows

    Name this directory how you like, and place it wherever you please. Tho I recommend your $HOME directory.

    • 00-inbox >> default Desktop directory
      • downloads >> default Downloads directory
      • scans >> for printer/scanner to upload to
      • screenshots >> for screenshot util to upload to
      • tmp >> for "RAM" work
    • 10-projects >> "P" in PARA
      • ${PROJECT-DIRECTORIES}
    • 20-areas >> 1st "A" in PARA
      • ${AREA-DIRECTORIES}
    • 30-resources >> "R" in PARA
    • 40-archives >> 2nd "A" in PARA
      • filing-cabinet >> for documents you would put in a physical filing cabinet

        symlinked to "$HOME/50-user-dirs/documents/"

        • manuals >> for storing home/office manuals
      • glacial >> for long term storage

        symlinked to "$HOME/50-user-dirs/documents/"
        Archive directories/files using 7zip. First "Add to archive..." as a .tar, then again as an .xz with Ultra Compression Level. Then move the archive here.

    • 50-user-dirs user/profile directories
      • audiobooks >> self-explanatory
      • bookmarks >> symlinks to directories & files deep in the OS file system
      • documents >> default Documents directory
        • filing-cabinet >> for documents you would put in a physical filing cabinet

          symlink of "$HOME/40-archives/filing-cabinet"

        • glacial >> for long term storage

          symlink of "$HOME/40-archives/glacial"

        • obsidian-vaults >> place Obsidian.md vaults here
          • ${VAULT-DIRECTORIES}
        • templates >> simply here for parity between Linux & Windows setups
      • ebooks >> self-explanatory
      • images >> default Pictures directory
      • music >> default Music directory
      • shares >> a directory to place shared directories in
        • cloud-shares >> a directory to place cloud share directories in
          • ${CLOUD-SHARE-DIRECTORIES}
        • network-shares >> to "co-locate" your network shares with other shares

          need to verify method of showing those here

        • p2p-shares >> a directory to place peer to peer shared directories in
          • ${P2P-SHARE-DIRECTORIES}
        • public-directory >> simply here for parity between Linux & Windows setups
      • videos >> default Videos directory
    • 60-programs >> portable apps and the like
    • 70-devmin >> to do any dev/git/admin work out of
      • repos >> for git/svc/etc repos
        • ${VERSION-CONTROL-SYSTEM-DIRECTORIES}
          • ${PROJECT-DIRECTORIES}
      • scripts >> place scripts in here and either add to path or copy script files from here to a dir in path
      • vsc-workspaces >> place VSCod[e|ium] workspace files in here
      • ./scratchpad.md >> a junk file use as a scratchpad

Note: To modify the default user directories on Windows, rename them first, then move them in a top down order (i.e. move Downloads into Desktop after having already moved Desktop) to avoid any weirdness.