- writerdeck은 현대 인터넷의 산만함을 줄이는 전용 글쓰기 장치로, 새 하드웨어 대신 6년 된 노트북을 재활용한 구성임
- System76 Galago Pro는 충분한 성능, 좋은 키보드, 무광 화면, Linux 지원 덕분에 긴 타이핑과 야외 글쓰기에 적합함
- Debian Trixie를 콘솔 전용으로 설치해 X11, Wayland, 데스크톱 환경, 브라우저를 제외한 글쓰기 환경을 만듦
- neovim, kmscon, tmux, vimwiki, Syncthing으로 편집, 글꼴 크기 조절, 상태 표시줄, 동기화와 백업 흐름을 구성함
- 자동 로그인 뒤 tmux와 Vimwiki가 바로 열리게 해 브라우저와 알림 없이 더 많이 쓰는 데 집중하는 장치가 됨
기기 선택과 목표
- writerdeck은 현대 인터넷의 산만함을 줄이기 위한 전용 글쓰기 장치이며, 새 전용 하드웨어 대신 6년 된 노트북을 재활용함
- 사용한 노트북은 System76 Galago Pro로, 여전히 성능이 충분하고 키보드가 좋으며 무광 화면이라 긴 시간 타이핑하거나 야외에서 글쓰기에도 적합함
- Galago Pro는 Linux 친화적이고 커널 지원이 좋음
- 목표는 새 프로젝트를 크게 늘리는 것이 아니라, 이미 가진 장비로 바로 글쓰기를 시작하는 데 있었음
데스크톱 대신 tty 기반 Debian 설치
- 일반 데스크톱 OS를 오프라인으로만 쓰는 방법도 가능하지만, 현대 Mac이나 Windows PC에서 브라우저를 완전히 제거하기는 지원되는 방식으로 어렵다고 봄
- Linux에서는 가벼운 데스크톱이나 창 관리자에 브라우저를 설치하지 않을 수도 있지만, 데스크톱 OS 사용 습관 자체를 끊고 글에 집중하는 환경을 만들고자 함
- Debian Trixie를 콘솔 전용으로 설치해 X11, Wayland, 데스크톱 환경을 모두 제외함
- Debian 설치는 텍스트 기반 설치 모드를 사용했고, 장치에는 공개 가능한 내용만 둘 예정이라 전체 디스크 암호화는 생략함
- Debian에서 sudo를 쓰려면 root 비밀번호를 추가하지 않아야 하며, 그러면 root가 비활성화되고 사용자가 sudo 사용자로 설정됨
- 데스크톱 선택 화면에서는 모든 데스크톱 기능을 제거했고, 설치 후에는 기본 콘솔 로그인 화면에서 시작함
네트워크와 기본 편집 환경
- 처음 로그인한 뒤 sudo apt update와 sudo apt upgrade로 시스템을 최신 상태로 만들고, 네트워크 관리를 위해 network-manager 패키지를 설치함
- 핵심 목적은 네트워크 설정 파일을 직접 편집하지 않고도 nm-tui라는 curses 기반 도구로 Wi-Fi에 연결하는 것임
- sudo apt install network-manager로 설치한 뒤 nm-tui를 실행하면 주변 Wi-Fi 네트워크를 검색하고 연결할 수 있음
- 이 장치는 주로 오프라인으로 쓰지만, 필요할 때 파일 백업을 위해 네트워크에 연결할 수 있어야 함
- nano 대신 neovim을 sudo apt install neovim으로 설치했고, 평소 vim 사용자지만 neovim에 익숙해지기 위해 선택함
- kmscon은 Debian Trixie에서 backports를 통해 설치해야 했음
- /etc/apt/sources.list에 다음 두 줄을 추가해 trixie-backports 저장소를 활성화함
deb
http://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
deb-src
http://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
- 이후 sudo apt update를 실행하고 sudo apt install -t trixie-backports kmscon으로 kmscon과 의존성을 설치함
- kmscon은 부팅 시 자동 시작되며, 다음 재부팅부터 기존 tty처럼 보이지만 ctrl-plus와 ctrl-minus로 글꼴 크기를 조절할 수 있음
- 여기까지로 오프라인에서 쾌적하게 글을 쓸 수 있는 기본 writerdeck 구성이 완성됨
tmux로 화면 분할과 상태 표시줄 구성
- tmux는 터미널 타일링과 상태 표시줄을 위해 설치했고, Debian에서는 sudo apt install tmux로 설치 가능함
- 배터리와 화면 밝기 제어를 위해 acpi와 light도 sudo apt install acpi light로 함께 설치함
- 관련 설정은 홈 디렉터리의 .tmux.conf에 추가함
-
배터리 표시를 위한 ACPI
- acpi -b는 노트북 배터리 정보를 표시하며, 설치 후 감지되는 배터리가 있다면 바로 확인 가능함
- 배터리 퍼센트만 얻기 위해 다음 명령을 사용함
acpi -b | grep -m1 -o -P '.{0,2}%'
- -m1은 한 줄만 읽도록 해 여러 배터리가 있는 노트북에서도 기본 배터리만 다루게 함
- -o는 일치한 부분만 출력해 남은 시간 같은 긴 정보를 제외함
- -P는 Perl 호환 정규식을 사용하게 하며, '.{0,2}%'는 %와 그 앞의 숫자 최대 두 자리를 가져옴
- 이 방식은 100%를 표시하지 못하지만, 해당 노트북은 더 이상 그 수준까지 충전되지 않아 감수함
- tmux 상태 표시줄 오른쪽의 기본 시간 표시를 배터리 퍼센트로 바꾸기 위해 .tmux.conf에 다음을 추가함
# give me a battery readout instead of the time
set-window-option -g status-right "#(acpi -b | grep -m1 -o -P '.{0,2}%')"
-
light로 밝기 제어
- light -U 10은 밝기를 10% 낮추고, light -A 10은 밝기를 10% 높임
- 노트북의 F8, F9 키에 밝기 표시가 있어 해당 키를 밝기 감소·증가에 바인딩함
# keybinding for brightness
bind -n F8 run-shell 'light -U 10' # decrease
bind -n F9 run-shell 'light -A 10' # increase
- 다음 tmux 실행부터 F8과 F9로 화면 밝기를 조절할 수 있음
-
추가 tmux 설정
- neovim이 화면 하단에 상태줄을 두기 때문에, tmux 상태줄은 set -g status-position top으로 화면 상단에 배치함
- 상태줄 배경색은 set -g status-style bg=green으로 초록색으로 지정함
- 최종 .tmux.conf는 다음과 같음
# bar position and color
set -g status-position top
set -g status-style bg=green
# keybinding for brightness
bind -n F8 run-shell 'light -U 10' # decrease
bind -n F9 run-shell 'light -A 10' # increase
# give me a battery readout instead of the time
set-window-option -g status-right "#(acpi -b | grep -m1 -o -P '.{0,2}%')"
- 기본 tmux 조작에서는 Ctrl-B로 명령 모드에 들어간 뒤 %로 세로 분할, "로 가로 분할을 실행함
- Ctrl-B 다음 방향키를 누르면 창 사이 포커스를 이동함
neovim과 vimwiki 설정
- emacs, helix, micro, nano 등 다른 편집기도 가능하지만, 이 구성은 vim 사용자에 맞춰 neovim 중심으로 구성됨
- neovim에는 기본 색상 테마가 포함되어 있고, :colorscheme 옵션으로 시험할 수 있음
- 복고적인 분위기에 맞춰 blue 색상 테마를 선택하고, .config/nvim/init.vim에 colorscheme blue를 추가함
- 글쓰기에 맞게 단어가 다음 줄로 자연스럽게 넘어가도록 set linebreak도 추가함
- vimwiki는 Debian Trixie에서 패키지로 제공되므로 플러그인 설치 대신 sudo apt install vim-vimwiki로 설치함
Syncthing으로 글쓰기 폴더 동기화
- syncthing은 Syncthing docs에 따라 설정함
- writerdeck의 vimwiki 폴더를 서버의 writing 폴더와 연결했고, 이 서버 폴더는 더 개인적인 vimwiki 구성 안의 하위 디렉터리임
- 이 구조에서는 데스크톱 vimwiki 안의 민감한 노트가 writerdeck으로 동기화되지 않음
- 장치에 암호화가 있었다면 민감한 내용도 동기화할 수 있었겠지만, 현재는 공개 가능한 내용만 둠
- vimwiki 일기에 접근하기 위해 나중에 비밀번호 기반 LUKS 암호화를 설정할 가능성도 있음
- 브라우저가 있는 전통적인 데스크톱 환경이 없기 때문에, syncthing 웹 GUI가 127.0.0.1만이 아니라 모든 주소에서 수신하도록 설정함
- 이 방식은 선호하는 방식은 아니지만, 장치에 비공개 정보가 없기 때문에 받아들임
- 더 나은 방식으로 SOCKS 프록시를 설정해 접속하는 방법이 있지만, 별도 주제로 남겨둠
자동 로그인과 부팅 후 바로 글쓰기
- 장치를 열자마자 빠르게 글을 쓰기 위해 자동 로그인을 설정함
-
kmscon 자동 로그인
- kmscon을 설치했기 때문에 sudo systemctl edit kmsconvt@tty1.service로 systemd 서비스를 수정함
- 다음 내용을 추가함
[Service]
ExecStart=
ExecStart=/usr/bin/kmscon --login -- /bin/login -f my_username_goes_here
- kmscon은 --login 뒤의 -- 다음에 오는 명령을 실행하며, 여기서는 /bin/login -f와 사용자명을 통해 자동 로그인함
-
부팅 후 tmux와 vimwiki 자동 실행
- kmscon 로그인 뒤 기본 tty에서만 tmux가 자동으로 실행되고, 곧바로 vimwiki로 들어가게 함
- .bashrc에 다음 조건문을 추가함
# Launch tmux if we aren't already running tmux and we're in the default tty
if [ -z "${TMUX}" ] && [ $(tty) == "/dev/pts/0" ]; then
exec tmux new-session -d 'vim -c VimwikiIndex' \; attach
fi
- 이 조건문은 이미 tmux 안에 있지 않은지 확인해 재귀 실행을 막음
- 동시에 첫 번째 가상 tty에 있는지 확인한 뒤, 조건이 맞으면 vim -c VimwikiIndex 명령으로 새 tmux 세션을 만들고 해당 세션에 붙음
- vim -c VimwikiIndex는 vim이 Vimwiki 인덱스로 연결되게 함
사용 후 변화와 다음 단계
- 약 일주일 동안 이 writerdeck으로 블로그 글, 동반 영상 스크립트, 작업 중인 다른 미래 스크립트를 작성함
- 향후 맞춤법 검사기를 추가하거나, 오래된 486으로 작업 공간에 “writerdeck terminal”을 만드는 확장도 고려함
- 핵심 목적은 더 많이 쓰고, 글쓰는 동안 덜 산만해지는 것임
- 브라우저, 앱 알림, 음악 플레이어의 다음 곡 알림처럼 편리하지만 산만한 요소들이 글쓰기를 방해함
- 기술 선택을 더 의도적으로 만들고, 하나의 일을 잘 수행하는 장치를 쓰다가 끝나면 치워두는 방식을 원함
- 모든 것이 어디에나 따라오는 환경을 피하고 싶다면 writerdeck이 도움이 될 수 있음