-->

Wednesday, June 22, 2016

My Home Directory

I just want to make a light post today. Let's take a look at my home directory.

% tree -L 1


.
├── bak
├── bin
├── dev
├── doc
├── etc
├── junk
├── media
├── public
└── repos


It's important to notify Linux that you've changed these directories from the defaults. Then it won't try to create the old directories over and over. Simply edit user-dirs.dirs in the config folder to point to your preferred locations. Now even Nautilus will be able to make shortcuts to your directories in the "Places" sidepane.

% vim .config/user-dirs.dirs


XDG_DESKTOP_DIR="\$HOME/doc/desktop"
XDG_DOWNLOAD_DIR="\$HOME/doc/downloads"
XDG_TEMPLATES_DIR="\$HOME/.templates"
XDG_PUBLICSHARE_DIR="\$HOME/public"
XDG_DOCUMENTS_DIR="\$HOME/doc"
XDG_MUSIC_DIR="\$HOME/media/music"
XDG_PICTURES_DIR="\$HOME/media/pics"
XDG_VIDEOS_DIR="\$HOME/media/vid"


And don't forget to run this

% xdg-user-dirs-update

bak - backups directory

This directory holds assorted files as backups. I like having these all in one spot.

bin - binary files and scripts

All the scripts I want to use system wide go in this directory. These are almost all single-file utility scripts here. If I have a larger program it usually goes in ~/dev. The Oscar for best supporting actress goes to this line in my .zshrc file:

export PATH=/home/arno/bin:$PATH

dev - development directory

This folder holds all of my personal projects. When I want to work on a new coding project I'll never finish I make a subdirectory for it here. Simple projects can just be a script with some testing files thrown in with it. More serious projects get a larger structure similar to this:

% tree -L 1

.
├── bak
├── bin
├── doc
├── include
├── makefile
├── obj
├── README
├── src
└── tests


doc - documents folder

Quite simply my documents folder. It holds the brunt of my files. I like to keep a directory for school here. I have further directories dedicated to each class in the school folder. For example the course Mechanical Engineering 366 becomes ME 366. I keep a work directory here dedicated to resumes, cover letters, and the odd timesheet. I have a pdfs directory where I keep downloaded textbooks/articles. My Dropbox folder also goes here.

etc - environment and tool configuration

The ~/etc directory contains symlinks to my most visited config files. I never liked how different programs used different config locations. They always fail to use a consistent naming scheme too (I'm looking at you .tmux.conf). By symlinking through ~/etc I've made a consistent place for all those files. I need only type

% vim ~/etc/xbk

to really get

% vim ~/.xbindkeysrc.scm

I can also use this directory for backups if I wanted. I currently don't however as git can easily take care of the regular files. The rest of etc:

% tree etc

etc
├── bash_profile -> /home/arno/.bash_profile
├── bashrc -> /home/arno/.bashrc
├── compton -> /home/arno/.config/compton.conf
├── dzen2 -> /home/arno/.config/herbstluftwm/panel.sh
├── emacs -> /home/arno/.emacs
├── functions -> /home/arno/.functions
├── hlwm -> /home/arno/.config/herbstluftwm/autostart
├── i3wm -> /home/arno/.i3/config
├── sbclrc -> /home/arno/.sbclrc
├── ssh -> /home/arno/.ssh/config
├── tmux -> /home/arno/.tmux.conf
├── vimrc -> /home/arno/.vimrc
├── xbk -> /home/arno/.xbindkeysrc.scm
├── xinitrc -> /home/arno/.xinitrc
├── zprofile -> /home/arno/.zprofile
└── zshrc -> /home/arno/.zshrc


junk - exactly what it says on the tin

Sometimes I just need to make a quick scratch file for testing. By keeping them in one place they don't end up scattered all over my system. There's not any reason to keep them past their testing phase, but I sometimes go back and reference them. I've used other names for this directory in the past such as ~/scratch and ~/tmp.

media - media directory

Collection of all my music, pics, gifs/webms, games, videos, etc... I'm rather meticulous about sorting these files by subtype.

% tree -L 1 media

media
├── games
├── music
├── pics
└── vid


public - public sharing folder

Everything that goes in here is available to any other computer on the network. I need to share files between my laptop and desktop sometimes. The share folder is the easiest way to accomplish this.

repos - repositories

This is where I put other people's projects. If I download the source for a program I store it here. This directory is my goto for git clone commands. Usually these programs place themselves in /usr/bin. If not I manually put them in ~/bin.

No comments:

Post a Comment