Tôi đã biến chiếc laptop cũ thành một chiếc Writerdeck: Máy viết chuyên dụng tách biệt thế giới số

Công nghệ23 tháng 5, 2026·14 phút đọc

Để giải quyết vấn đề mất tập trung, tác giả đã biến một chiếc laptop cũ 6 năm tuổi chạy Debian thành một chiếc Writerdeck chuyên dụng. Thiết bị chỉ sử dụng môi trường TTY, tích hợp Neovim, Tmux và Syncthing để mang lại trải nghiệm viết lách tối giản, không xao nhãng bởi internet.

Tôi đã biến chiếc laptop cũ thành một chiếc Writerdeck: Máy viết chuyên dụng tách biệt thế giới số

Tôi thường gặp khó khăn trong việc duy trì sự tập trung. Cách đây vài tuần, tôi quyết định chuyển đổi chiếc laptop cũ của mình thành một "writerdeck" — một thiết bị viết lách chuyên dụng, hoàn toàn tách biệt với những sự xao nhãng của internet hiện đại.

Mô hình chiếc laptop được sử dụng làm writerdeckMô hình chiếc laptop được sử dụng làm writerdeck

Rất nhiều người thích xây dựng những thiết bị ngoại tuyến (offline) cầu kỳ cho mục đích này, và tôi cũng rất muốn làm điều đó... someday. Nhưng hiện tại tôi đã có đủ dự án để bận rộn, và mục tiêu cốt lõi ở đây là viết lách, nên tôi tận dụng những gì mình đang có: một chiếc laptop 6 năm tuổi vẫn chạy rất mượt, cấu hình vẫn đủ mạnh, nhưng ít được sử dụng hơn.

Điều quan trọng nhất là chiếc laptop này sở hữu một bàn phím xuất sắc và màn hình chống lóa (matte), khiến việc gõ phím trong thời gian dài trở nên tuyệt vời và vẫn sử dụng tốt dưới ánh sáng ban ngày (tôi thích ngồi ngoài vườn cùng chú chó của mình để viết). Nó là một chiếc System76 Galago Pro (không phải nội dung tài trợ), nghĩa là nó đã rất thân thiện với Linux và được hỗ trợ tốt trong hạt nhân (kernel).

Thiết lập môi trường TTY thay vì Desktop

Bạn hoàn toàn có thể sử dụng một hệ điều hành desktop thông thường và giữ nó ở chế độ ngoại tuyến, mặc dù nói thì dễ hơn làm. Tôi không nghĩ bạn có thể gỡ bỏ hoàn toàn các trình duyệt web khỏi một chiếc Mac hay Windows PC hiện đại. Ít nhất là không theo cách được hỗ trợ chính thức.

Tất nhiên, tôi là người dùng Linux, nên tôi có vô số lựa chọn. Tôi có thể chọn một môi trường desktop đơn giản hoặc một trình quản lý cửa sổ (window manager) và chỉ cần không cài trình duyệt, nhưng tôi muốn một thứ gì đó thực sự phá vỡ thói quen muscle memory của hệ điều hành desktop thông thường và buộc tôi phải thực sự suy nghĩ về từng từ ngữ mình viết.

Tôi chọn một thiết lập dựa trên TTY (Terminal), sử dụng Debian (phiên bản Trixie tại thời điểm viết bài). Chỉ có console — không có X11 hay Wayland, không có desktop nào làm phiền tôi cả.

Việc cài đặt Debian khá đơn giản. Tôi sử dụng trình cài đặt dạng văn bản (text-based installer mode) và đối với writerdeck này, tôi chọn bỏ qua mã hóa toàn bộ đĩa (full-disk encryption) vì dữ liệu trên thiết bị này chủ yếu là công khai anyway.

Người dùng thường nói với tôi rằng họ gặp khó khăn vì không thiết lập sudo trên Debian. Nếu bạn đến từ Mint, Ubuntu hay hầu hết các bản phân phối (distro) hướng tới desktop khác, điều này có thể gây vấp ngã. Nếu muốn dùng sudo cho các tác vụ quản trị, hãy bỏ qua việc thêm mật khẩu root. Điều này sẽ vô hiệu hóa root và thiết lập tài khoản của bạn thành người dùng sudo.

Màn hình cài đặt DebianMàn hình cài đặt Debian

Lưu ý: Nếu bạn muốn sử dụng người dùng sudo, hãy để mục mật khẩu root trống! Rất nhiều người không biết về tính chất này và gặp rắc rối khi chuyển từ các distro khác sang.

Ở màn hình thiết lập desktop, tôi chọn xóa bỏ tất cả các tính năng desktop, bởi lẽ tôi muốn thiết bị này trở nên tối giản nhất có thể. Chỉ có tôi và những con chữ, không có GUI nào làm phiền.

Tôi bỏ qua lựa chọn "Debian desktop environment" và "GNOME". Như vậy, nó sẽ chỉ là một chiếc TTY thuần túy. Khi mọi thứ hoàn tất, bạn sẽ được chào đón bởi màn hình đăng nhập console đơn giản. Nơi hoàn hảo để bắt đầu.

Nó nhàm chán. Hoàn hảo.

Cài đặt Network Manager

Sau khi đăng nhập lần đầu và đảm bảo mọi thứ được cập nhật bằng lệnh sudo apt updatesudo apt upgrade, tôi chọn thay thế mạng stack thông thường bằng gói network-manager. Chủ yếu là để sử dụng công cụ curses rất hay là nm-tui để kết nối mạng.

nm-tui dễ sử dụng hơn gấp ngàn lần so với việc chỉnh sửa thủ công các file cấu hình cho thiết bị mạng. Dù tôi sẽ chủ yếu làm việc ngoại tuyến với thiết bị này khi xa nhà, nhưng tôi rất trân trọng khả năng kết nối mạng để sao lưu file khi cần thiết.

Sau khi cài đặt network-manager với sudo apt install network-manager, bạn có thể dùng nm-tui để quét các mạng Wi-Fi có sẵn và kết nối. Tùy thuộc vào phần cứng của bạn, bạn cũng có thể truy cập WAN tại đây. Khá thú vị đấy.

Việc có một TUI (Text User Interface) cho mạng là một cải tiến chất lượng cuộc sống khá tốt.

Cài đặt Neovim và Kmscon

Tôi không thể chờ đợi lâu hơn nữa, tôi cài đặt neovim ngay lập tức với sudo apt install neovim. Tôi không muốn sửa văn bản bằng nano. Không có gì cá nhân cả, tôi chỉ là một người dùng vim thuần túy.

Thông thường tôi dùng vim truyền thống nhưng tôi chọn neovim vì đang muốn tìm hiểu kỹ hơn về nó.

Sau đó, tôi cài đặt kmscon. Đối với Debian Trixie, nó cần được thêm từ kho backports.

Trước tiên, tôi cập nhật danh sách nguồn Debian của mình bằng cách chỉnh sửa file tại /etc/apt/sources.list để thêm hai dòng sau:

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

Một lệnh sudo apt update nhanh và sau đó tôi có thể chạy đơn giản sudo apt install -t trixie-backports kmscon. Điều này sẽ cài đặt gói kmscon từ backports, cùng các phần phụ thuộc của nó, và thiết lập nó tự động khởi động khi boot. Lần reboot tiếp theo, bạn sẽ thấy chiếc TTY quen thuộc, nhưng giờ đây nó có thể phóng to/thu nhỏ bằng ctrl-plus và ctrl-minus, giống như hầu hết các trình duyệt web hiện đại.

Từ đây, tôi có một writerdeck hoàn toàn chức năng. Tôi có thể dừng lại tại đây và cảm thấy khá hài lòng với trải nghiệm viết lách ngoại tuyến, thú vị. Nhưng tôi muốn thêm một vài tiện nghi khác mà tôi đã quen thuộc.

Tmux để đa nhiệm và thanh trạng_bar đẹp

Tiếp theo, tôi cài đặt tmux để chia nhỏ cửa sổ terminal cơ bản và có một thanh trạng_bar đẹp. Gói này có sẵn cho Debian (và hầu hết mọi hệ điều hành khác), cài đặt bằng sudo apt install tmux.

Tôi cũng cài đặt acpi để xem chi tiết pin, và light để điều chỉnh độ sáng màn hình. Bạn có thể cài đặt chúng cùng lúc bằng sudo apt install acpi light. Tôi thiết lập chúng trong file .tmux.conf của mình, nằm trong thư mục home. Đây là cách tôi sử dụng chúng.

ACPI để đọc thông tin pin

Khi gói acpi được cài đặt, bạn có thể xem pin của mình với lệnh acpi -b (giả sử laptop của bạn có pin được phát hiện bởi acpi, điều này vẫn hoạt động trên mọi laptop tôi đã thử tại nhà).

Vì vậy, để lấy chỉ số phần trăm cụ thể và không có gì khác, bạn có thể dẫn (pipe) lệnh acpi -b vào grep như sau:

acpi -b | grep -m1 -o -P '.{0,2}%'

Lệnh grep này hơi khó hiểu, hãy cùng phân tích nó:

  • -m1: nói để dừng đọc file sau một dòng. Tôi làm điều này vì một số laptop tôi từng dùng có nhiều pin, và tôi chỉ quan tâm đến pin chính. Bạn có thể bỏ qua nó nếu acpi -b chỉ trả về một dòng.
  • -o: chỉ in ra các phần khớp của dòng. Tôi không muốn một bản in dài với thời gian còn lại. Có thể bạn thì muốn!
  • -P: diễn giải mẫu (pattern) là biểu thức chính quy tương thích Perl. Sau đó .{0,2}% sẽ lấy dấu phần trăm và hai chữ số đứng trước nó. (Lệnh này sẽ không hiển thị "100%" nhưng tôi có thể chấp nhận được điều đó, vì chiếc laptop này chẳng bao giờ chạm mức đó nữa).

Tôi muốn thay thế các chi tiết mặc định trong thanh trạng_bar tmux bằng chỉ số pin, nên tôi thêm đoạn sau vào .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 để điều chỉnh độ sáng

Tiếp theo, chúng ta có thể sử dụng lệnh light rất đơn giản mà chúng ta đã cài đặt ở trên để điều chỉnh độ sáng. Trên laptop của tôi, phím F8 và F9 có biểu thị chỉ báo độ sáng in trên phím, nên nó rất phù hợp.

light -U 10 giảm độ sáng xuống mười phần trăm, và light -A 10 tăng lên.

Vì vậy, để gán phím F8 và F9 cho việc giảm/tăng độ sáng, tôi đơn giản thêm đoạn này vào .tmux.conf:

# keybinding for brightness
bind -n F8 run-shell 'light -U 10' # decrease
bind -n F9 run-shell 'light -A 10' # increase

Giờ thì, lần tới khi tôi khởi động tmux, tôi sẽ có các điều khiển độ sáng. Rất gọn gàng!

Tùy chỉnh tmux thêm

Cuối cùng, tôi thích dòng trạng_bar của tmux ở phía trên cùng màn hình, vì neovim đặt dòng trạng_bar ở phía dưới màn hình. Điều này đạt được bằng cách thêm set -g status-position top vào file .tmux.conf.

Ngoài ra, tôi có thói quen chỉ định màu sắc. Mặc định là màu xanh lá (green) nhưng tôi vẫn thiết lập lại (có lẽ tôi sẽ thay đổi trong tương lai, ai biết được) với set -g status-style bg=green.

Vì vậy, file .tmux.conf cuối cùng của tôi trông như thế này:

# 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}%')"

Bài này không phải là bài học về tmux, nhưng theo mặc định, để chia cửa sổ, bạn dùng Ctrl-B để thoát khỏi chế độ thường và vào chế độ lệnh tmux, sau đó phím % để chia dọc, hoặc phím " để chia ngang. Ctrl-B, sau đó phím mũi tên sẽ di chuyển tiêu điểm của bạn giữa các cửa sổ con.

Có lẽ ngày nào đó tôi sẽ làm một bài học tmux chính thức. Tiếp tục nhé!

Neovim và Vimwiki

Tôi biết nhiều người sẽ không muốn dùng neovim hay vim, thay vào đó chọn emacs, helix, micro, nano, blammo hay cái gì đó khác tôi chưa đề cập (nhưng có người sắp đề cập rồi).

Thật tuyệt. Tôi mừng cho bạn. Nhưng tôi là người dùng vim, nên đó là thứ tôi thiết lập.

Neovim bao gồm một số bảng màu (colorscheme) khá tuyệt vời mà bạn có thể thử với tùy chọn :colorscheme. Tôi chọn màu xanh dương (blue), nó phù hợp với cảm giác cổ điển của tôi, nhưng bạn có thể chọn bất cứ thứ gì bạn muốn hoặc thậm chí tự viết một cái từ đầu.

Tôi thêm nó vào file .config/nvim/init.vim với colorscheme blue, và tôi cũng thêm set linebreak để từ ngữ tự động ngắt dòng xuống dòng dưới (thông thường tôi không làm thế trên desktop nhưng nhiệm vụ duy nhất của thiết bị này là viết lách).

Cuối cùng, tôi thiết lập vimwiki, cái mà tôi đã đề cập chi tiết trong một bài đăng blog khác. Điều duy nhất thay đổi là thay vì cài đặt vimwiki dưới dạng plugin, trên Trixie nó đã được đóng gói sẵn, nên bạn có thể cài nó với sudo apt install vim-vimwiki.

Màn hình terminal đang chạy tmux và vimwikiMàn hình terminal đang chạy tmux và vimwiki

Cài đặt Syncthing

Tôi thiết lập syncthing theo tài liệu của Syncthing, tài liệu đó khá hay và tôi sẽ không lặp lại quá nhiều ở đây.

Tôi thiết lập syncthing để kết nối thư mục vimwiki của writerdeck với thư mục viết lách trên máy chủ của tôi, là một thư mục con bên trong một cài đặt vimwiki riêng tư hơn. Tôi làm cách này để đảm bảo nếu có các ghi chú nhạy cảm trong vimwiki trên desktop, chúng không được đồng bộ sang writerdeck. Nếu tôi có mã hóa trên thiết bị này, tôi sẽ không bận tâm điều đó, và có lẽ tôi sẽ thiết lập mã hóa LUKS dựa trên mật khẩu chỉ để có quyền truy cập nhật ký vimwiki trên writerdeck.

Một nơi mà tôi đi chệch khỏi cài đặt syncthing mặc định là vì tôi không có desktop với trình duyệt web truyền thống, tôi phải đặt giao diện web syncthing của mình để lắng nghe trên tất cả các địa chỉ thay vì chỉ 127.0.0.1. Tôi không thích cách tiếp cận này, nhưng một lần nữa, thứ này không có gì riêng tư. Một cách tốt hơn sẽ là thiết lập proxy SOCKS và kết nối theo cách đó, nhưng đó là chủ đề cho một bài viết trong tương lai.

Thiết lập tự động đăng nhập (Autologin)

Điều cuối cùng tôi làm để biến writerdeck này thành của riêng mình là thiết lập tự động đăng nhập.

Tôi muốn có thể mở nó lên và bắt đầu viết nhanh chóng — autologin là một cách đơn giản để đạt được điều đó.

Autologin với kmscon

Vì tôi đã cài đặt kmscon, việc này khá đơn giản, chỉ cần cập nhật (ôi thôi) dịch vụ systemd với sudo systemctl edit [email protected].

Sau đó, tôi chỉ cần thêm đoạn sau:

[Service]
ExecStart=
ExecStart=/usr/bin/kmscon --login -- /bin/login -f my_username_goes_here

Điều này bảo kmscon khởi động thứ gì đó đi sau dấu -- sau khi --login. Trong trường hợp của tôi, đó là chương trình /bin/login mặc định với tham số -f và sau đó là tên người dùng của tôi.

Khởi động tmux khi boot

Sau khi kmscon đăng nhập cho tôi, tôi muốn tmux tự động khởi động vào vimwiki. Nhưng chỉ khi tôi đang ở trên tty chính (virtual terminal mặc định).

Tôi có thể làm điều này dễ dàng bằng cách thêm một đoạn if/then nhỏ vào .bashrc của mình:

# 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

Cái này hoạt động bằng cách kiểm tra đảm bảo chúng ta chưa ở trong tmux rồi (điều đó sẽ là đệ quy và tệ), và nó cũng đảm bảo chúng ta đang ở virtual terminal đầu tiên. Nếu hai điều kiện này thỏa mãn, nó sẽ khởi động một session tmux mới với lệnh vim -c VimwikiIndex (nói cho vim biết kết nối đến chỉ mục Vimwiki). Sau đó nó gắn vào session đó.

Sau khi dùng nó cho vài dự án, tôi yêu nó.

Tôi đã dùng thứ này được khoảng một tuần, và tôi đã dùng nó để viết bài đăng blog này, kịch bản cho video đi kèm, và một kịch bản khác mà tôi đang làm hiện tại. Và nó thật sự tuyệt vời.

Có lẽ tôi sẽ mở rộng ý tưởng này bằng một bộ kiểm tra chính tả (spell checker), hoặc có thể thiết lập một "writerdeck terminal" trong không gian làm việc của tôi dùng một chiếc máy 486 cũ, để thực sự đưa mình trở lại trải nghiệm có chủ đích hơn (với một bàn phím tốt hơn nữa!).

Điểm mấu chốt là viết nhiều hơn, và bớt bị xao nhãng khi làm việc đó. Tôi luôn đấu tranh rất nhiều với việc trình duyệt web cứ nhắc nhở tôi. Tôi nhận được thông báo về các ứng dụng cần sự chú ý của tôi. Trình phát nhạc của tôi báo cho tôi biết bài hát tiếp theo chúng ta sẽ chơi. Tất cả rất tiện lợi, và rất gây xao nhãng.

Tôi đang cố gắng trở nên có chủ đích hơn với các lựa chọn công nghệ của mình. Tôi muốn những thiết bị làm một điều thật tốt, và khi tôi xong việc đó, tôi có thể cất chúng đi, và làm việc khác. Tôi không muốn mọi thứ cứ đi theo tôi khắp nơi.

Nếu đó cũng là bạn, có lẽ bạn sẽ hưởng lợi từ một chiếc writerdeck. Còn với tôi, nó đã tuyệt vời. :)

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗