1. 제작 동기
옵시디언에서 폴더 내 파일들을 자동으로 인덱싱해주는 Waypoint 플러그인을 꽤나 잘 사용하고 있었다.
가장 좋았던 것은 폴더 내 파일 목록들이 단순히 런타임에만 렌더링되는 것이 아니라, 마크다운 문서 내에 실제 링크 형태로 박혀 있다는 점이 었다. 그 덕에 옵시디언의 장점인 그래프 뷰(Graph View)와 백링크(Backlink) 기능을 사용할 수 있었다.
그러나, 몇 가지 아쉬운 점도 있었다. 기본적으로 사용하고 있는 리스트(-) 형식이 예쁘지 않았고, 하위 폴더의 깊은 곳까지 전부 긁어와서 지저분하다는 점이었다.
내가 원한 것은 ‘현재 폴더의 직계 자식들만 보여주는 깔끔한 테이블’ 이었다. 그래서 코드를 직접 수정하기로 했다.
2. 주요 커스텀 사항
테이블 구조 도입
기존의 중첩 리스트 형식을 완전히 제거하고 마크다운 테이블(| TITLE | DATE | ... |) 형식을 도입했다. 이를 통해 제목뿐만 아니라 날짜, 태그 등 다양한 메타데이터를 한눈에 파악할 수 있게 되었다.
탐색 범위 제한
무한 재귀적으로 하위 폴더를 파고드는 기능을 제거했다. 현재 폴더에 직접 속한 파일과 폴더만 읽어오도록 수정하여, 복잡한 트리 구조 대신 깔끔한 인덱스 페이지를 유지할 수 있게 했다.
Frontmatter 기반 동적컬럼
폴더 노트의 프론트매터에 keys라는 배열을 정의하면, 이를 읽어와 테이블의 컬럼(Column)으로 자동 생성한다.
- 예를 들어
keys: [category, status]라고 적으면, 하위 문서들의category와status값을 필드로 가져와 표에 채워준다.
그래프 뷰 연결성 확보
단순히 예쁘게 보여주는 것을 넘어, 위키링크([[ ]])를 문서에 직접 써넣도록 했다. 덕분에 폴더 노트를 중심으로 하위 문서들이 그래프 뷰에서 연결 관계를 명확하게 형성한다.
추가 유틸리티
- 정렬: 파일 생성일(
ctime)을 기준으로 내림차순 정렬하여 최신 글이 상단에 오도록 했다. - 빠른 생성 링크: 테이블 상단에
new file,new folder링크를 자동으로 생성해, 폴더 노트를 이탈하지 않고도 즉시 해당 폴더 내에 새 문서를 만들 수 있는 환경을 구축했다.
4. 마치며
기존 도구가 내 습관에 맞지 않을 때, 코드를 직접 수정해 최적의 도구를 만드는 과정은 매우 재미있었다. 약간 책임 적은 쾌락이랄까? 이제 내 옵시디언의 폴더 노드들은 단순히 파일 목록을 보여주는 단계를 넘어, 하위 문서들의 메타데이터를 통합 관리하는 대시보드 역할을 수행한다.
개발 비화: 컴파일된 js 까보기
사실 처음에는 Github에서 원본 코드를 봐야한다는 생각도 못하고 한번 컴파일 된 main.js를 까서 수정을 했어서 엄청 힘들었다. 내가 코드 해석을 이렇게 까지 못하나 싶더라. 변수명을 잘 적어야한다는 가르침의 이유도 진짜 제대로 체감할 수 있었다. 나중에서야 원본 TS 코드가 있다는 걸 알고 허탈하게 거기서 수정을 했지만,,, 아주 재미있는 경험이었다.