Долгое время я искал подходящий браузерный интерфейс для своих заметок в org-mode и списков задач. До тех пор пока я не осознал, что ничто не мешает мне запустить сам Emacs в браузере.
Запустите свой Emacs с вашей любимой конфигурацией.
После того как я привык к Emacs, я начал искать способы получить такой же опыт в браузере. Иногда приходится использовать неперсонализированные компьютеры, где установка десктопной версии Emacs или использование Dropbox/Syncthing для доступа к личным данным невозможно или не желательна. Поэтому я искал облачное решение, имея доступ к VPS.
Ближайшим инструментом к тому, что я хотел, был Filestash: он поддерживает сочетания клавиш vim/emacs и некоторые полезные возможности org-mode. Однако это было намного менее удобно, чем Emacs.
Dropbox не способен просматривать произвольные текстовые файлы, не говоря уже о редактировании; даже если бы он мог, вы явно не получили бы ничего, сравнимого со своим обычным рабочим процессом в Emacs.И можно представить себе, что хотя стиль редактирования elisp/vim является относительно независимым от конкретной программы агностичным, переписывание или перенос всех замечательных пакетов и возможностей Emacs, к которым я привык (например, neotree, helm, refile, swoop, agenda, projectile, org-drill и т.д.), было бы бесконечно трудозатратно.Поэтому я решил, что единственным решением, которое сделает меня довольным, будет запуск самого Emacs через Интернет! К счастью, благодаря его графическому интерфейсу на основе TUI, всё работает удивительно хорошо.
Он работает весьма эффективно с сочетаниями клавиш типа Spacemacs SPC
/,
, поскольку они в большинстве случаев не пересекаются с горячими клавишами ОС/браузера.
Dockerfile имеет несколько комментариев и должен быть достаточно прост для понимания, но вкратце:1. Gotty — это инструмент, который позволяет обращаться к любому TTY-приложению как к веб-странице (также позволяет передачу входных данных).
2. Мы используем Gotty для выполнения команды emacsclient --tty -a ''
, которая подключается к существующему экземпляру Emacs или запускает новый. Это делает сессию устойчивой к закрытию вкладок или проблемам соединения.
3. Конфигурация вашего Emacs и файлы, которые вы хотите сделать доступными для Cloudmacs, отображаются в файле docker-compose.yml
.
cp docker-compose.example.yml docker-compose.yml
docker-compose.yml
, возможно вам захочется
.emacs.d
или .spacemacs
/.spacemacs.d
). Также проверьте раздел "Настройка Spacemacs"./compose up -d
.init.el
, вместо этого у вас есть директория ~/.spacemacs.d
, а ~/.emacs.d
служит как распределение Spacemacs.
Я не рекомендую вам переиспользовать ~/.emacs.d
, ваша ОС вероятнее всего будет отличаться от контейнера,
и кто знает что ещё может сломаться. Вместо этого просто клонируйте Spacemacs в отдельную директорию и отобразите её.На вашей ОС хоста:
git clone https://github.com/syl20bnr/spacemacs.git -b develop ~/.cloudmacs.d
cd ~/.cloudmacs.d && git revert --no-edit 5d4b80 # чтобы обойти https://github.com/syl20bnr/spacemacs/issues/11585
В вашем docker-compose.yml
, добавьте:
volumes:
- ${HOME}/.cloudmacs.d:/home/emacs/.emacs.d
Некоторым пакетам требуется дополнительные двоичные файлы в контейнере (например, magit
требует git
). Есть два способа решения этой проблемы1. Расширьте Dockerfile cloudmacs и смешайте нужные вам пакеты: смотрите моё пример, где я расширяю контейнер с помощью git и ripgrep.
Затем вы можете построить его, например:
docker build -f Dockerfile.customized -t customized-cloudmacs --build-arg RIPGREP_VERSION="11.0.2" .
Не забудьте обновить docker-compose.yml
с названием вашего нового контейнера.
#!/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";
}
rg/locales/gotty
в отдельные контейнеры Docker? Возможно, локали можно как-то переместить в исходный контейнер Emacs?
emacsclient --tty
.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )