134
126

What folders do you make in addition to the default ones ?

6mon 10d ago by lemmy.zip/u/underscores in linux@lemmy.ml

I realized I always make a source folder under home and then subfolders named after programming languages to organize projects but then I realized I somehow had my own convention for how to store my source code and I have no idea where I got it from

Then I thought. what about other Linux users ?

What sorts of conventions do you have that pertains to folder structure in Linux ?

My homedir is an infernal hellhole of junk accumulated over the past 15 years and I wouldn't have it any other way

I'd love to keep it clean but too many devs think $HOME is up for grabs, as long as they prepend their directory names with a dot (they think I'll never notice, but I notice, and I keep a list...)

Dafuq are you doing in other people's homes?

Sysadmins are all creeps, confirmed

Breaking pots. Don't mind me.

EDIT: holdup, who are you calling a sysadmin? I administer my system, sure, but that's about as far as I'm willing to go, thank you.

Breaking pots.

TriangleSpecialist

Are those the Triforce triangles perhaps?

It might be?...

Oops, I meant to say: "hayaaa"

đŸ›ĄïžđŸ—Ąïž

Mine used to be like that, but now my home folder is rehabilitated by turning ~/Documents into a hellhole of accumulated junk instead.

I just prepend everything in the home directory with a dot every 6 months or so, no problems so far

You can also just make a file called .hidden and paste the names in there and it'll hide them, that way it doesn't mess up any paths/symlinks etc. Or at least in KDE/Dolphin you can do that, I dunno about other setups.

Mine used to be the same but the last OS reinstall I reset everything, moved my files onto an external drive, and only copied them over on a needs basis. I'd been keeping the same home dir since I was like 4 or however old I was when I started using a computer. So needless to say there was a lot there that made me cringe to see every time I tried to navigate my files.

There are 15 year olds using Lemmy??

/s (my documents folder is the same, but older ... much a lot too many very older :|)

Multiple people in this topic say they organise in directories for different programming languages, something I have never considered and I find it to be an odd way of organising for some reason I can't explain.

Where do you put a project with a Javascript frontend and a Python backend?

for me I consider that a web project so it goes into the typescript folder, if it's backend only then python

Why group it into language instead of say a 'web' directory or 'android'/'mobile'?

I'm just curious, I am more of a 'throw everything in one directory and home I remember what I'm looking for' sort of organiser.

Honestly it's a pretty good way of compartmentalizing projects in your mind.
You usually remember pretty well what language your wrote a project in.
And if you want to find a project again you just have to look in that language's directory.

Second advantage is that if there's a language you only fucked around a little for fun, it doesn't clutter the directories of your most used languages.

Yeah that's a pretty good argument for it.

I agree, just have it by project. Otherwise I might have to look in different folders to find something. And what does it add, that something is grouped by language?

for me the project exists because I thought "id like to play with <language> today" but not necessarily "I want to make a <platform> project"

In a folder called javpy, of course!

Since projects of the same language often use the same tooling this makes it easier to clean up the whole directory by running something like this:

for d in ./*/ ; do (cd "$d" && somecommand); done

somecommand could be cargo clean if you're in the Rust directory for example.

My home folders on any OS have a Development folder (which conveniently sits right next to Documents and Downloads) and in that folder, I’ve also got subfolders per programming language that have the respective projects in them.

The other folder I usually have is SyncThing with whatever synced folders are relevant for that machine.

Mine is dev. I avoid capitalizing folder names.

Yep, I also have a directory for my programming projects on each of my machines, but mine is Programming. On my main desktop, I also have an ISOs folder to hold my OS ISOs for VMs and old CD-ROM game ISOs.

Having a development folder is such a good idea that I feel silly for not thinking of it sooner. Thanks for the idea.

~/3D Objects

~/Homework (porn)

~/aaaaaaa (porn)

~/Stuff (memes, with a porn subfolder)

~/misc (work docs, study docs, forms, some porn)

What about the ~/Porn folder?!

That's for startup ideas

I could be wrong, but it seems he just mounted '/porn' directly as '/' ? Efficient, I guess.

..actually, there seem to room for more improvements; I'm not sure there's any need for an 'operating system' on the system - a small fap-app (tm) could likely handle all content on the system ? Work documents could be injected in to the fap-stream (c) when he needs to stop ? That would release many gb for even more fap-ability (c) ?

At least two of these:
~/Stuff
~/Stuffs
~/Stuffz
~/Shits

~/Stuff(1) as well?

No, ofc not, I'm not a degenerate without a plan!!
This isn't a game.

I have /home/username/username/ and I sym link important dirs (like Downloads) to my new home. I strongly dislike all the dot files and dirs cluttering up my home dir.

Are you aware of the ‘xdg-user-dirs-update’ command that allows you to edit the ~/.config/user-dirs.dirs config file?

Can you expand on this ?

Not the commenter you replied to, but I change my XDG directory names to be lowercase and start with different letters. For example, Desktop, becomes "drop" (as in pick it up and put it somewhere else) and Downloads is a subdirectory dl. A program that would otherwise save to "Downloads" now saves to "~/drop/dl". When I setup my machines I run a script including the line xdg-user-dirs-update --set DESKTOP "drop" to update the XDG directory and I delete "Desketop". So og commenter has the option of updating their userdirs to be nested in their username if they wanted to avoid symlinking. Here's the relevant arch wiki page and xdg freedesktop page.

I don't use Arch, but I am eternally grateful for their excellent documentation.

I am also grateful to you for your comment, because this is a good idea

It basically allows you to define which paths are used for the Downloads, Documents, Videos, etc.. types of directories.

Reading back, my comment sounds snarky, but I was genuinely trying to be helpful.

Like what pemptago was describing, instead of symlinking your directories to /home/username/username, you could simply update that file and achieve the same effect, but in a more “official” way that may prove more robust.

Huh, no, I had no idea that was there. Thank you.

  • /ram - tmpfs filesystem
  • ~/.local/bin - added to my path
  • ~/.local/software - any user-local program more complicated than a binary gets a directory here. Generally a binary would be symlinked to ~/.local/bin
  • ~/.local/venv - shared python venv to use for one liners and small scripts
  • ~/repo - local filesystem backed package repository for which the host system is configured to install from
  • ~/.local/repo - local filesystem backed package repository for which the host system is not configured to install from (used for mock, VMs, and external systems).
  • /overflow - Used to point to a large secondary hard drive (back when having a small ssd was the economical thing to do. Nowadays, it is just where my large directories go cause I can't be bothered to get used to a more sane setup

Hardware folder (synced via sync thing). All hardware PDFs, notes images etc get subfolders by manufacturer. It is helpful for keeping track of use manuals, firmware or config settings for each piece of hardware.

I have a ~/Sync folder with a symlink to all my Syncthing shares, which I have quite a lot of. Helps me find them quickly and reminds me that everything in there us pulled or pushed somewhere else.

Shouldn't that be a subdirectory under the documents folder ?

If you want it that way, but then I'd have a mix of synced folder and regular folders inside Documents.

I like to keep if completely separate, for backing up user documents via dejadup differently than the synced stuff.

~/proj
~/note
~/sync
~/docs (/book etc)
~/imgs ~/util ~/test ~/temp

Archive

Archive archive

Archive_11_2025

I am not good at organizing

I just live out of my downloads folder until its time to back up the important stuff to the server and reinstall/ distrohop.

~/ linux iso's

~/dev for code
~/work for things I don't want to do, like taxes

I do similarly, but I use '/Development' only because I accidentally fucked up my '/dev' dir once using '/dev'

Ohh good point. Maybe I should switch to ~/code

I tend to put work dir under documents but yeah would be the same having a dev or local dir for code.

I usually create ~/git/{github,gitlab,codeberg,AUR,etc} where I clone the git stuff I need.

The rest is usually handled by my nextcloud that creates the ~/Nextcloud folder.

Your organization will vary with your usage. If you're looking for something suitable for work, I would highly recommend the PARA approach. https://fortelabs.com/blog/para/

I've tweaked it to my needs. Combined with fzf, it makes my workflow so smooth and efficient. https://www-gem.codeberg.page/sys_stay_organized/

I want to follow this, and I sorta do... but ADHD makes the P,A and other A basically the same category. And the R is just "stuff I put down to look at but haven't yet".

Drawing the line between each category indeed takes some time. Our brain is not use to this approach anymore. Perseverance is key, but it's kind of a commitment.

~/Projects

I always make a ~/.local/{bin,opt,share} if the distro lacks it. and a ~/bot that I use for my development stuff

Ahh, a ~/.local/opt folder makes so much sense. I'm currently just using a ~/.opt folder, same purpose.

yea it makes it so much easier since there's only one user in the system anyway so makes no sense for everything to be installed system level

Why bot?

The majority of my development work is on chat bots or sites so I've always just used bot as the name

I rsync my home folder across installs. These are my standard extra folders.

~/Books, with subfolders by topic.

~/Comics, with subfolders by publisher, then by title, possibly with an intermediate folder for author or franchise.

~/Programming, with subfolders by language, then project.

~/autoclean and a cron job to delete everything older than 7+ days from there. I can just download whatever, throw it in a special folder and it's gone after few days. Keeps my ~/Downloads a bit more clean, easy to store temp txt files to keep track of what I currently have on hand and so on.

I remove files and folders older than 30 days in my Downloads folder. But my work does make me download things that I often only need for less than a day. If I need to keep something, then it goes into whatever folder or online service where it should be. It is deleted to my trash bin and that has another 30 days before being permanently deleted. I haven't had to pick anything out of the trash just yet.

I always make a bin folder in my home for putting my custom scripts and downloaded binaries. At least on fedora, ~/bin is already in the path, so I don't have to make any additional configuration to make stuff in there become commands for my cli

~/.drafts, in which my text editor taskbar shortcut script creates files YYMMDD_text_N. I passionately believe in eliminating the chore of manually naming my spur-of-the-moment notes and text files.

~/progs or ~/bin where loose programs not provided by my package manager reside.

If there's a secondary drive, /media/disk1 as the mount point in fstab.

~/tmp

~/temp

~/temper

~/tempest

~/misc

/mnt/other (symlinked)

~/diy for my collection of knitting, crochet and sewing patterns and other assorted diy stuff

~/work duh.

~/tools for my collection of more or less useful small scripts

~/sync for my syncthing folders

~/data symlink to my data partition (most of the others are also symlinks to their location on data)

I don't really have a convention for programming projects yet. They used to land inside of ~/diy or in ~/tools or just random folders on data. I've got a ~/code folder now, but its contents are a mess.

Always backup your tools folder... In the past I only created backups for my "real" code folder and I was quite upset when I lost my small scripts in the last drive death.

~/Projects - for my coding projects

~/Qt - which holds the Qt framework

~/Torrents - For torrents that I share

~/Homework

I just call it ~/Porn.

I usually make src, junk, and applications for appimages and unpackaged binaries

I just at ~/projects it contains a boat load of stuff including my Neovim and bash stuff.

Guys, use GNU Stow + git for your configs shit's good.

Have you tried chezmoi?

~/Brojetos (anything relating to making stuff, writing, drawing, video creation, programming, etc., professional or personal)

~/temp (a non-hidden temp folder with a script that wipes it when the PC shuts down or reboots, used for downloads and such to prevent the "downloads folder is an abomination" problem that plagues any computer after a while of usage)

~/AppsGames (appimages, applications compiled from source and not installed to system, personal use scripts, wineprefixes, non-steam games)

aaaand ~/OtherAminals (for stuff I want to keep but have no idea where else to place)

~/bin/ which I add to my $PATH

Projects for all kinds of projects

aur_builds for the package I use from the AUR. No hand holding here, I build and install my AUR packages artisanally.

I build paru-bin manually, then it upgrades itself, very handy 😎

Under ~ I usually make ~/Application for flatpaks/appimages etc, ~/Script for any kind of script I write in bash, python, or whatever else, ~/Audio for audio/music production stuff, and ~/Games for emulators and such. ~/Documents is reserved for actual documents containing text data usually.

~/dev

~/dev/oss

~/dev/work

~/dev/personal

  • ~/Documents/incubator for my personal projects.
  • ~/Documents/<Git forge>/<user/org>/<repo> for contributing/working on my saved projects
  • ~/Documents/schule for school

This dir structure for git projects is the best one I think, especially if managing multiple identities/git configurations. Git has a 'includeif' to change your setup depending on which dir you are currently in:

https://git-scm.com/docs/git-config#_includes

I do a similar thing for code stuffs, generally always make a ~/Git and ~/Godot so I always have a spot for things.

I also delete most of the auto-created ones if I'm using a DE that does that, because I have my own organization going on with various external/network drives. Only one I have always kept is ~/Downloads.

Okay what is this <sub> convention everyone is using and why is it sometimes </sub> ?

I'm not sure exactly what you're asking about. Do you mean the directory names?

In unix, ~ expands to the user's home directory path and / just separates each level in the path.

Just so you can see what I saw:

Very weird. For some reason Boost displays those like the strings I wrote. Looking at this in the web client now, I see ~. Which btw I'm familiar with :) Thanks for the response!

Ohhh, very odd. I've been noticing a lot of inconsistencies between Lemmy and PieFed like this, and now an app is something else entirely. Seems the fediverse is not unified on markdown support!

Apologies if I came off as condescending, not my intention.

I have ~/work/code/project-name-1, ~/work/code/project-name-2 or ~/priv/code/project-name-3, but not by language... I only separate work and private repositories.

  • ~/Prototypes for ... my prototypes, typically either starting from an empty directory or cloning a repository and adapting it for my needs. I have this directory on nearly all my devices, desktop of course but also NAS, server, phone, standalone XR headset, etc.
  • ~/Apps in addition to ~/bin, typically binaries but all AppImages

$HOME/temp, $HOME/git, ln -s $HOME/git/scripts $HOME/scripts

I'm a ~/tmp man myself.

~/{nextcloud,git,pictures/screenshots,music,docs,videos}

In terms of what I manually create. Dot directories normally get automatically created but I guess I'd create a ~/.config if it didn't get created.

For source code or any project - a folder Projects (on my personal setups) or Documents/Projects/PersonalRepo (more customer specific folders under the Projects sub-folder)

  • Anything under ~/Projects that isn’t just a throwaway will be a git repo.
  • Anything under ~/Documents/Project/*Repo will be a git repo.

i have a 'src' directory. tho my home directory is extremely messy, ls | wc -l gives me 170 now..

Uh-oh... I'm going to answer this. n_n

99% just dirs in ~/. ( Does making new dirs in /bedrock/strata count when manually adding strata? That'll be about all there is in the other 1%. )

  • ~/bin
  • ~/gittings
  • ~/gittings/Digit (where I keep my local copies of my own git repos)
  • ~/images
  • ~/images/scrots
  • ~/images/ all the different things like dsktpbckgrnds, charts, memes, photos, gifs, etc & EDITS where I save most GIMP file artwork
  • ~/sounds
  • ~/.fonts (if the system does not create this already... so I can put my big tiny font collection "dbtfc" of otb and ttf fonts I made, in there, and have them "just work").

Oh, and this one's a little fun:

  • ~/testdir in which i make a dir, a file, a media file, an executable, a fifo, a symlink, and a broken symlink, so I can ls that dir to see how everything looks in new themes.

And locations for my sshfs mounts and external drives (faster to type than putting them each in ~/mount or ~/media or ~/mnt).

  • ~/bb
  • ~/o
  • ~/m or ~/t as symlinks to ~/mozart and ~/tyson depending on if on tyson or mozart. (I name my thinkpads after famous people born on the same day it arrives in the post).

And then on bb external hd, loads of dirs, some notable ones

  • ./bkps
  • ./software
  • ./software/distros (where I store ISOs and system tarballs)
  • ./software/configs/ ; crypto/ ; doc/ ; games/ ; langs/ ; other/ ; virtuals/
  • ./cinema/
  • ./cinema/library (hiding the library in cinema, so I see it more often ;D)
  • ./cinema/_docu (for documentaries, lectures, interviews, etc)

And on the webserver

  • ~/web
  • ~/web/stuff
  • ~/stuff (symlink to ^, that I use like my own personal pastebin) (... ~/o/stuff, from local machine).

~/Transfer

for SyncThing

From back when I used to freelance as a photo and video editor. ~/Media which was a mount point for my second hard drive with all the personal and paid customer's I was working on, it was a mix of Music, Photos and Videos that I was creating, but not consuming if that makes sense.

Just a remnant from back when I had a small SSD with my OS and a second larger mechanical drive for everything else

~/Repos (For all the github and other code repositories I work in)

~/Scripts (All my random Bash scripts, sometimes for testing out stuff)

~/Junk (Mostly used for testing programs or small project components that aren't mature enough to have their own repo)

Separate folders in the download one. One for each app. And a separate /home/sync folder with the same app separation folders to safekeep the backups of android apps and DCIM folder.

~/code for code

~/dots for git-backed nix configs

~/.rt for projects compiled locally ("runtime")

~/Screencast for recordings of my screen

I also create a ~/.shrc.bash symlink that points to ~/dots/bash/bashrc that reats ~/dots/bash/*.bash and sources the files

~/.shenv.bash where I keep environment (computer) specific settings

~/git

Everything else is managed by Ansible or synced via Synthing (except ~/Downloads).

I make an ~/all/ directory as a catchall for things that don't fit elsewhere, since ~ is used by so many automatic softwares and config files, I like having a place that only I'll write to.

I also make ~/bin for general use and ~/all/GitHub/ for software I install from GitHub.

I have internal RAID1s that store at least two directories apart from any OS or home dev.

../repos ../misc

Misc contain timestamp fstabs, mdadm.conf, rust/python/apt user-inatalled package names, among other notes and small files.

I also sync my master org directory between my documents snapshots and the repos dir

Outside of some folders I made specifically because an app required it, I have a "games" folder for most of my games and a ".lutriswine" folder to have Lutris use a different directory from Wine.

~/Scripts for any bash or python scripts
~/Gits for any repos I clone
~/Projects for any projects im working on (not organized by programming language, but I do have some dirs called zig, go, etc., for when im learning a new language and want to make some projects for learning purposes)

Most other files go into ~/Documents if they don’t have a home already, or don’t fit into the above directories

Public - for everything im seeding and sharing

Apps - for all app images

Games - for all lutris spam and random failed attempts at installing mods.

I have repos for things I’ve cloned from codeberg or other repositories.

There’s also Nextcloud for files I’ve synced from there.

I have a test folder where I clone various git repisitories, compile programs from source or test some small scripts.

I have one for my git repos that I clone and keep building from source. One for various projects. One for scripts
. And so on

A gits dir and a dir called "wd". Short for working dir.

Its a dumpfest of scripts, tomls, yamls, directories galore. The gits dir is where I keep my cmdb, that one is organized. wd is like a playground where I allow myself not to give a shit

Defaults are good for me but I like mounting my secondary drive to ~/Storage with subfolders media, projects, games

~/Projects which has everything I ever cloned or started. yes, it's getting kind of painful to backup :D

~/repos

Usually git or development.

/datapool or whatever the array is called for zfs pools, I often do /mail on mail servers, and /www on web servers. Not sure why but it makes it super obvious what's going on when you login remotely

Code goes in the Developer folder

(I got used to that name on macOS, where it is the "canonical" name for it, because it automatically gets a special icon)

I usually make ~/Packages for various binary packages that I can't add as repos for whatever reason. And ~/Packages/src for stuff I compile myself.

And ~/Games for games.

Apps (local executables, appimages, etc.), Projects (Work, hobbies), Sync (things I need everywhere), tmp (files I will probably delete sooner than later), and Data. Also Vaults and Boxes, only if I need them.

projects, games, and programs are the non default folders in mine

~/repos

I don't, on most machines, which are servers of some sort. I only create solution-specific folders as necessary, and ĂŸere are almost never any common ones. I end up wiĂŸ ~/go and similar because ĂŸey're created by tooling, but I don't explicitly create ĂŸem myself.

For my PCs, I've been carrying forward my ${HOME} for over a decade. I just rsync it forward to new machines, and for computers I use concurrently I keep ĂŸem synced wiĂŸ SyncThing.