My personal configuration files.
Notes for a class are stored in my Obsidian Vault, but there are often additional non-note files required. These might be code projects, practice tests, or standalone portable programs.
An easy solution to this issue is to just have a folder for each class:
.
├── Class1/
│ ├── Notes
│ └── Files
├── Class2/
│ ├── Notes
│ └── Files
├── Class3/
│ ├── Notes
│ └── Files
└── Class4/
├── Notes
└── Files
However, we encounter a few issues with this approach:
- If I was in Class1 and wanted to quickly check something in Class2, changing directories can be quite clunky and a distraction from the actual content
- Notes are isolated for each class, preventing internal links (one of the main features of Obsidian)
- The Obsidian GUI would attempt to read all files as well
This inevitably has led to the very inconvenient workflow cycle of shuffling between multiple locations for notes, and a rapidly deteriorating folder structure as the semester progresses. Take the following as an example:
- Lecture notes are taken in class and put in the Obsidian Vault
- Homework assignments in latex are introduced, requiring the use of a very specific template. Obsidian is good at embedding latex snippets via MathJax, but not when it comes to fully standalone
.texfiles. Consequently, these have to be moved to a separate folder. - A code-related project is introduced in the class. It doesn't make sense
I wanted a system robust enough to always provide a consistent location for notes, but with the flexibility of adding more folders of non-note content if needed. At the end of the day, the Obsidian notes should all be grouped together--both to allow easier navigation and to allow me to access the notes from a phone:
.
└── $OBSIDIAN_VAULT/
└── Classes/
└── FALL2024/
├── Class1/
│ └── <markdown note files>
├── Class2/
│ └── <markdown note files>
├── Class3/
│ └── <markdown note files>
└── Class4/
└── <markdown note files>
The final solution is a combination of tmux and symbolic links:
.
└── FALL2024/
├── Class1/
│ ├── Notes (symlink) -> $OBSIDIAN_VAULT/Classes/FALL2024/Class1
│ └── Files
├── Class2/
│ ├── Notes (symlink) -> $OBSIDIAN_VAULT/Classes/FALL2024/Class2
│ └── Files
├── Class3/
│ ├── Notes (symlink) -> $OBSIDIAN_VAULT/Classes/FALL2024/Class3
│ └── Files
└── Class4/
├── Notes (symlink) -> $OBSIDIAN_VAULT/Classes/FALL2024/Class4
└── Files
At any given point in time, I can access my Obsidian vault through the standard GUI from any device (synchronized via Syncthing). However, most of the time I navigate via terminal:
- When I have tmux (a session manager for persisting terminal state after closing) open, I have a keybind
<prefix>Pfor opening the school manager script. - The current semester is identified by the current date. August-December is Fall semester, and January-May is Spring semester.
- The script will prompt me to either select an existing course through fzf (fuzzy finder) or create a new course.
- If a new course is inputted, a folder on Obsidian for the course will be generated, and a new directory under
Classeswill be created with a symlink to Obsidian and aFilesdirectory. - A tmux session at the course directory is either created or restored, allowing per-class session management.
- Any note changes from the symlink will be propagated to all other devices, allowing all notes to be accessible via a mobile device.