1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-cloudmacs

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Самостоятельное использование 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 есть комментарии, и им должно быть легко следовать, но суть такова:

  1. Gotty — это инструмент, который позволяет получить доступ к любому приложению TTY в виде веб-страницы (также позволяет перенаправлять ввод).
  2. Мы используем Gotty для запуска команды emacsclient --tty -a '', которая подключается к существующему экземпляру Emacs или запускает новый. Это делает сеанс постоянным, несмотря на закрытие вкладок, проблемы с подключением и т.д.
  3. Ваши конфигурации Emacs и файлы, которые вы хотите предоставить Cloudmacs, отображаются в файле docker-compose.yml.

Попробуйте это локально

  1. cp docker-compose.example.yml docker-compose.yml
  2. Измените необходимые переменные в docker-compose.yml, предположительно вы захотите:
    • сопоставить файлы, которые вы хотите сделать доступными для контейнера;
    • сопоставьте путь к вашим файлам конфигурации/каталогам (например, .emacs.d или .spacemacs/.spacemacs.d). Также проверьте раздел «Настройка Spacemacs»!
    • измените порт (см. раздел «самостоятельный хостинг»).
  3. Запустите контейнер: ./compose up -d.
  4. Проверьте это в браузере: 'http://localhost:8080'.

Настройка 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). Есть два способа справиться с этим:

  1. Расширьте файл cloudmacs dockerfile и добавьте нужные вам пакеты: см. мой пример (Dockerfile.customized), где я расширяю контейнер с помощью git и ripgrep. Затем вы можете собрать его, например: docker build -f Dockerfile.customized -t customized-cloudmacs --build-arg RIPGREP_VERSION="11.0.2" . Не забудьте обновить файл docker-compose.yml именем вашего нового контейнера.

  2. Установите пакеты непосредственно в работающий контейнер. Недостатком является то, что легко потерять изменения, если вы удалите контейнер. К сожалению, файл docker-compose не поддерживает скрипты после запуска, поэтому, если вы хотите автоматизировать этот процесс, возможно, проще всего будет написать скрипт-обёртку:

#!/bin/bash -eux
docker-compose up -d
docker exec cloudmacs sh -c "apk add --no-cache git"

Selfhost

  • Я использую базовую аутентификацию для доступа к своему контейнеру.
  • Настройте обратный прокси-сервер для доступа к Gotty. Шаги могут различаться в зависимости от вашего веб-сервера, но для моего nginx это выглядит так:
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? Также после разделения было бы легко сделать настройку более универсальной и позволить людям запускать vim/neovim, поскольку настройка довольно независима от редактора.

Ограничения

  • Мобильные телефоны — вам будет сложно использовать стандартные emacs/spacemacs на сенсорных экранах. Возможно, существует какая-то специальная конфигурация для телефонов? В любом случае я предпочитаю использовать orgzly на своём телефоне Android.

Благодарности

  • dit4c/dockerfile-gotty
  • JAremko/docker-emacs
  • JAremko/browsermax. Это похоже, но Dockerfile довольно сложный, похоже, они по какой-то причине пытаются использовать X11, тогда как меня вполне устроил бы emacsclient --tty.
  • raincoats/nginx.gotty.proxy

Лицензия

GPL из-за того, что я посмотрел другие файлы Docker с лицензией GPL в качестве ссылки.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

CloudMacs — это браузерный редактор Emacs, который можно использовать по модели SaaS. Расширить Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/mirrors-cloudmacs.git
git@gitlife.ru:oschina-mirror/mirrors-cloudmacs.git
oschina-mirror
mirrors-cloudmacs
mirrors-cloudmacs
master