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

OSCHINA-MIRROR/mirrors-cloudmacs

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

Статус сборки Docker Cloud

Сайт Docker Hub

Долгое время я искал подходящий браузерный интерфейс для своих заметок в 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.

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

  1. cp docker-compose.example.yml docker-compose.yml
  2. Измените необходимые переменные в docker-compose.yml, возможно вам захочется
    • отобразить файлы, которые вы хотите сделать доступными для контейнера
    • отобразить путь к вашим конфигурационным файлам/папкам (например, .emacs.d или .spacemacs/.spacemacs.d). Также проверьте раздел "Настройка Spacemacs"
    • изменить порт (см. раздел "selfhost")
  3. Запустите контейнер: ./compose up -d.
  4. Проверьте его работу в браузере: 'http://localhost:8080'.# Настройка Spacemacs Spacemacs не использует 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 с названием вашего нового контейнера.

  1. Установка пакетов непосредственно в запущенном контейнере. Недостаток заключается в том, что легко потерять изменения, если удалить контейнер. К сожалению, файл docker-compose не поддерживает скрипты после старта, поэтому, если вы хотите автоматизировать это, возможно, самым простым будет написание обёртывающего скрипта следующего вида:
    #!/bin/bash -eux
    docker-compose up -d
    docker exec cloudmacs sh -c "apk add --no-cache git"
    ```# Самостоятельная установка
  • Я использую базовую аутентификацию для доступа к своему контейнеру.
  • Настроил обратный прокси для доступа к 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 из-за того, что я использовал другие лицензированные GPL Dockerfile в качестве примера.

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

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

Введение

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

Обновления

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

Участники

все

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

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