135
3day
132

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

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 ?

Ricaz @lemmy.dbzer0.com - 3day

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

33
TriangleSpecialist @lemmy.world - 3day

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...)

17
Ricaz @lemmy.dbzer0.com - 3day

Dafuq are you doing in other people's homes?

Sysadmins are all creeps, confirmed

9
TriangleSpecialist @lemmy.world - 3day

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.

6
Victor - 2day

Breaking pots.

TriangleSpecialist

Are those the Triforce triangles perhaps?

3
TriangleSpecialist @lemmy.world - 2day

It might be?...

Oops, I meant to say: "hayaaa"

3
Victor - 2day

🛡️🗡️

2
Random Dent - 3day

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

10
FauxLiving @lemmy.world - 3day

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

5
Random Dent - 3day

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.

2
communism - 2day

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.

4
Evil_Shrubbery @thelemmy.club - 3day

There are 15 year olds using Lemmy??

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

1
mbirth 🇬🇧 - 3day

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.

30
anon_8675309 @lemmy.world - 3day

Mine is dev. I avoid capitalizing folder names.

16
astronaut_sloth @mander.xyz - 3day

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.

4
AnarchistArtificer @slrpnk.net - 1day

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

2
Dave @lemmy.nz - 3day

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?

29
underscores @lemmy.zip - 3day

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

7
Dave @lemmy.nz - 3day

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.

12
Grey Cat - 3day

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.

6
Dave @lemmy.nz - 3day

Yeah that's a pretty good argument for it.

3
vandsjov @feddit.dk - 3day

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?

3
underscores @lemmy.zip - 3day

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"

3
Quibblekrust @thelemmy.club - 3day

In a folder called javpy, of course!

4
Starfighter @discuss.tchncs.de - 3day

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.

3
QuarterSwede - 3day

~/3D Objects

27
KaChilde @sh.itjust.works - 2day

~/Homework (porn)

~/aaaaaaa (porn)

~/Stuff (memes, with a porn subfolder)

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

22
Holytimes @sh.itjust.works - 2day

What about the ~/Porn folder?!

9
xor - 2day

That's for startup ideas

11
That Weird Vegan - 1day

So where do you store your porn?

1
Evil_Shrubbery @thelemmy.club - 3day

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

15
SayCyberOnceMore - 2day

~/Stuff(1) as well?

7
Evil_Shrubbery @thelemmy.club - 2day

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

7
skankhunt42 @lemmy.ca - 3day

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.

12
RiderExMachina - 3day

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

9
underscores @lemmy.zip - 3day

Can you expand on this ?

6
pemptago - 3day

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.

10
AnarchistArtificer @slrpnk.net - 1day

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

3
RiderExMachina - 3day

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.

5
Grey Cat - 3day

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

5
skankhunt42 @lemmy.ca - 1day

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

1
homura1650 @lemmy.world - 2day
  • /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
12
BCsven @lemmy.ca - 3day

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.

10
hushable @lemmy.world - 3day

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.

3
Grey Cat - 3day

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

1
BCsven @lemmy.ca - 3day

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.

1
aesopjah @sh.itjust.works - 3day

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

9
SolarPunker @slrpnk.net - 3day

~/Projects

9
Baguette @lemmy.blahaj.zone - 2day

Archive

Archive archive

Archive_11_2025

I am not good at organizing

9
Infrapink - 3day

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.

8
TropicalDingdong @lemmy.world - 3day

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

8
pineapple - 3day

~/ linux iso's

8
moopet @sh.itjust.works - 2day

~/tmp

~/temp

~/temper

~/tempest

~/misc

/mnt/other (symlinked)

7
morto - 3day

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

7
Strit - 3day

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.

7
monovergent - 3day

~/.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.

7
bitwolf - 2day

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

7
Apparatus @programming.dev - 2day

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

8
bitwolf - 2day

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

4
steeznson @lemmy.world - 2day

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

2
MyNameIsRichard - 3day

~/Projects - for my coding projects

~/Qt - which holds the Qt framework

~/Torrents - For torrents that I share

6
treep @lemmy.world - 3day

~/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.

6
VoxAliorum - 3day

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.

6
Pika - 3day

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

6
RedSnt 🧩♂️👓🖥️ - 3day

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

2
Pika - 3day

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

2
Ricaz @lemmy.dbzer0.com - 3day

Why bot?

1
Pika - 3day

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

2
thejml @sh.itjust.works - 3day

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".

6
www-gem - 3day

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.

1
IsoKiero @sopuli.xyz - 3day

~/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.

6
vandsjov @feddit.dk - 3day

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.

2
InFerNo - 3day

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.

5
Victor - 2day

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

1
justlemmyin @lemmy.world - 3day

~/Homework

5
Björn - 3day

I just call it ~/Porn.

5
☂️- - 2day

porn gets its own directory under ~/videos

3
TurboWafflz - 3day

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

5
Count Regal Inkwell - 2day

~/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)

5
Caveman - 3day

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.

5
Victor - 2day

Have you tried chezmoi?

2
Lettuce eat lettuce - 2day

~/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)

4
fum @lemmy.world - 1day

~/bin/ which I add to my $PATH

4
stupid_asshole69 [none/use name] - 3day

Especially for systems remotely managed by ssh:

~/Desktop/stuff/mystuff/junk/funny/

4
mko @discuss.tchncs.de - 3day

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.
3
tyler @programming.dev - 3day

~/dev

~/dev/oss

~/dev/work

~/dev/personal

3
utopiah - 3day
  • ~/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
3
ZWQbpkzl [none/use name] - 3day

I generally follow the same pattern as you. ~/Code with programming language based sub folders. But there's also a ~/Code/Work and ~/Code/Orgs which is for code that has a certain purpose. Generally the by-language subfolders are for projects I cloned, not authored. There is a fair amount of symlinking also.

Also /data for long term storage drives. Directories under ~/Audio and ~/Video will usually symlink to there.

3
hexagonwin @lemmy.sdf.org - 3day

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

3
phaedrus - 3day

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.

3
TrickDacy @lemmy.world - 3day

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

1
phaedrus - 2day

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.

1
TrickDacy @lemmy.world - 2day

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!

3
phaedrus - 2day

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.

2
TrickDacy @lemmy.world - 2day

Just so you can see what I saw:

3
hushable @lemmy.world - 3day

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

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

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

2
golden_zealot - 3day

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.

3
Cysio - 3day

~/Git for all git clones

3
NutWrench - 2day

~/Transfer

for SyncThing

2
Moondye - 2day

~/nixos/ for my NixOS config ~/repos/ for git repos ~/audio/ for my sound library and recordings

2
termaxima @slrpnk.net - 2day

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)

2
PenguinCoder - 3day

Conventions I have are:

  • Downloads folder is ephemeral, don't store/keep things in there I might want
  • ~/scripts - personal scripts and one offs
  • ~/Documents/projects/[subdir] - any tech project I may be working on, gets homed here
  • /tmp - always mount it noexec

I also start off allocating ~ 50GB to / (root) volumegroup. Wine and proton have been taking up nearly the full space though, may need to expand it on my desktop soon.

2
communism - 2day

~/{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.

2
Renohren @lemmy.today - 2day

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.

2
northernlights @lemmy.today - 1day

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

2
qjkxbmwvz @startrek.website - 1day

I'm a ~/tmp man myself.

5
beerclue @lemmy.world - 3day

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.

2
selokichtli - 2day

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.

1
DonutsRMeh @lemmy.world - 3day

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

1
chaoticnumber @lemmy.dbzer0.com - 3day

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

1
Frosty - 3day

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

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

1
mystic-macaroni - 3day

~/repos

1
kutsyk_alexander - 3day

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

1
lilith267 @lemmy.blahaj.zone - 3day

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

1
oscardejarjayes [comrade/them] - 3day

A projects folder, usually. All the other folders at the root of $HOME are created by some application or another (XDG folder creator, applications that don't respect XDG).

I make a YouTube subfolder to be downloaded YouTube videos in, and subfolders for podcasts, but those aren't at the root of $HOME.

1
obscure0602 @lemmy.world - 3day

~/repos

1
sem - 1day

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.

1
Chewt @beehaw.org - 1day

~/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

1
mesa - 3day

Usually git or development.

1
Auth @lemmy.world - 1day

Public - for everything im seeding and sharing

Apps - for all app images

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

1
taaz @lemmy.world - 1day

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

1
owsei @programming.dev - 1day

~/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

1
Björn - 3day

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.

1
Theoriginalthon @lemmy.world - 2day

/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

1
Ŝan • 𐑖ƨɤ - 2day

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.

1
stupid_asshole69 [none/use name] - 2day

You gotta have your ~/ashdkeuh/

1
biocoder.ronin - 2day

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

1
vortexal - 2day

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.

1
cevn @lemmy.world - 2day

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

1