Самостоятельное использование Emacs в браузере
Долгое время я искал подходящий браузерный интерфейс для своих заметок и списков задач в org-mode. Пока не понял, что ничто не мешает мне использовать сам Emacs прямо в браузере.
Вы можете самостоятельно разместить свой Emacs с любимой конфигурацией.
Мотивация
С тех пор как я увлёкся Emacs, я искал способы получить такой же опыт в своём браузере. Иногда приходится использовать чужие компьютеры, где невозможно или нежелательно устанавливать настольный Emacs и Dropbox/Syncthing для доступа к личным данным. Поэтому я искал облачное решение, когда у меня появился VPS.
Самым близким инструментом к тому, что я хотел, был Filestash: он поддерживает привязки vim/emacs и некоторые полезные функции org-mode (https://www.filestash.app/2018/05/31/release-note-v0.1). Однако он был далеко не так удобен, как Emacs.
Dropbox не способен просматривать произвольные текстовые файлы, не говоря уже о редактировании; и даже если бы мог, вы, очевидно, не получили бы ничего похожего на обычный рабочий процесс Emacs.
И можно представить, что хотя редактирование в стиле elisp/vim довольно универсально, переписывать или переносить все удивительные пакеты и функции Emacs, к которым я привык, такие как neotree, helm, refile, swoop, agenda, projectile, org-drill и т. д., неблагодарная работа.
Поэтому я решил, что единственное, что сделает меня счастливым, — это запустить сам Emacs через Интернет! К счастью, благодаря его интерфейсу TUI он работает на удивление хорошо.
Он действительно хорошо работает со стилем spacemacs SPC/`, поскольку они по большей части не перекрываются с горячими клавишами ОС/браузера.
Как это работает?
В Dockerfile есть комментарии, и им должно быть легко следовать, но суть такова:
Попробуйте это локально
Настройка Spacemacs
Spacemacs не использует init.el, вместо этого у вас есть каталог ~/.spacemacs.d, а ~/.emacs.d служит дистрибутивом Spacemacs. Я не рекомендую вам повторно использовать ~/.emacs.d вашего дистрибутива OS Emacs, который обычно будет отличаться от контейнеров, и кто знает, что ещё может сломаться. Вместо этого просто клонируйте spacemacs в отдельный каталог и сопоставьте его.
На вашем хост-компьютере:
git clone https://github.com/syl20bnr/spacemacs.git -b develop ~/.cloudmacs.d
cd ~/.cloudmacs.d && git revert --no-edit 5d4b80 # get around https://github.com/syl20bnr/spacemacs/issues/11585
В вашем docker-compose.yml добавьте:
volumes:
- ${HOME}/.cloudmacs.d:/home/emacs/.emacs.d
Кастомизация
Некоторым пакетам нужны дополнительные двоичные файлы в контейнере (например, magit нужен git). Есть два способа справиться с этим:
Расширьте файл cloudmacs dockerfile и добавьте нужные вам пакеты: см. мой пример (Dockerfile.customized), где я расширяю контейнер с помощью git и ripgrep. Затем вы можете собрать его, например:
docker build -f Dockerfile.customized -t customized-cloudmacs --build-arg RIPGREP_VERSION="11.0.2" .
Не забудьте обновить файл docker-compose.yml именем вашего нового контейнера.
Установите пакеты непосредственно в работающий контейнер. Недостатком является то, что легко потерять изменения, если вы удалите контейнер. К сожалению, файл docker-compose не поддерживает скрипты после запуска, поэтому, если вы хотите автоматизировать этот процесс, возможно, проще всего будет написать скрипт-обёртку:
#!/bin/bash -eux
docker-compose up -d
docker exec cloudmacs sh -c "apk add --no-cache git"
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_pass http://localhost:8888;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
GPL из-за того, что я посмотрел другие файлы Docker с лицензией GPL в качестве ссылки.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )