Введение

С давних-предавних времен я использую персональную информационную систему на основе org-mode, встроенном в Emacs. Накоплено очень много полезной информации. Адреса, различные заметки, дневники, ссылки, TODO-шки ну и так далее.

Первая инкарнация системы включала в себя собственно директорию с .org файлами и репозитарий Git на арендуемом хостинге. Эта система позволяла иметь ее на нескольких рабочих станциях в локальных и синхронизировать их при помощи Git.

И все было хорошо, но появились мобильные телефоны и планшеты. Захотелось иметь доступ к информации используя устройства на Android. После некоторой возни что-то получилось. Выношу получившееся на суд общественности.

Железо

Система используется на следующих устройствах:

  • Рабочие станции под Linux (PC и Raspberry Pi). Думаю возможно пользоваться и на Windows или Mac, нужно только установить Emacs и Git.

  • Мобильный телефон (Android).

  • Планшет (Android).

Возможности

  • Работает с локальными файлами, интернет нужен только для синхронизации.

  • Синхронизация локальных файлов через репозитарий Git, думаю в качестве хранилища можно использовать GitHub.

  • Сама информационная система работает на основе org-mode emacs. Можно использовать все его возможности, такие как таблицы, списки TODO, таблицы, ссылки на файлы и ссылки на интернет сайты.

Пример: скриншот с экрана планшета под Android. На скриншоте запущен Emacs с дэшбоардом информационной системы в Android/Termux.

Используемое программное обеспечение

На Linux используем традиционное ПО: Emacs, Git, SSH.

На Android устройствах используем то же самое, но установленное в Termux.

Краткое пояснение для тех, кто никогда не имел дело с Termux, это такой эмулятор терминала для Android. На самом деле это гораздо больше, чем эмулятор терминала. Фактически, с точки зрения пользователя, это такой своеобразный дистрибутив Linux, устанавливаемый поверх Android. Он использует ядро Linux от Android, на котором установлен. Для него есть репозитории с пакетами, аналогично как на привычных дистрибутивах. Подробности можно посмотреть на их сайте: https://termux.dev/en/

Еще одно замечание по Termux. Устанавливать его нужно с F-Droid. Termux можно найти и в Play Store, но версия старая и не обновляется, возможны проблемы.

На Android я использую еще одно приложение, просмотрщик .org файлов Orgro. Это платное приложение, стоит 4.99$. Я пробовал и другие, бесплатные, но они оказались не столь удобными и в конце-концов решил, что проще заплатить. Я использую Orgro для быстрого доступа к некоторым заметкам через шорткаты на рабочем столе. Для создания шорткатов используется TotalCommander.

Создание системы

Создание базовой системы

Открываем Emacs и создаем на базовой рабочей станции иерархию .org файлов с перекрестными ссылками. Структуру директорий и файлов делаем исходя из наших вкусов и потребностей. Для примера, давайте сделаем корнем нашей системы $HOME/my_info.

Создание репозитария Git

В корне нашей иерархии подключаем Git как обычно:

cd $HOME
mkdir my_info
cd my_info
git init
git touch .gitignore
git add .
git commit -am"Initial commit"
mkdir /tmp/git
cd /tmp/git
git clone --bare $HOME/my_info my_info.git

Копируем my_info.git на свой хостинг со сконфигурированным SSH , и делаем:

cd $HOME
mv my_info my_info_bkp
git clone username@hosting.domain:/home/username/my_info.git

Теперь у нас в домашней директории есть директория my_info, подключенная через git к репозиторию
hosting.domain:/home/username/my_info.git.

Замечание 1: Пути и названия директорий и файлов приведены для примера, их нужно выбрать по своему усмотрению.

Замечание 2: В качестве хостинга репозитариев можно выбрать GitHub или что-нибудь аналогичное.

Получение копии из репозитария на другой рабочей станции Linux

Ну, здесь, собственно, действуем так, как было описано немного выше:

cd $HOME
git clone username@hosting.domain:/home/username/my_info.git

Конфигурирование системы на Android

С Android возни немного побольше.

В первую очередь устанавливаем и настраиваем Termux. Напоминаю, что его нужно устанавливать с F-Droid, а не с Play Store.

Далее устанавливаем в Termux нужный софт:

pkg upgrade
pkg install openssh
pkg install emacs
pkg install git

Теперь клонируем нашу систему:

cd $HOME
git clone username@hosting.domain:/home/username/my_info.git

Все, можно запускать Emacs в терминале и пользоваться.

Подробно описывать работу с Termux не буду, в сети достаточно материалов.

Парочка замечаний. Пользоваться таким образом вполне можно на планшете, особенно с подключенной внешней BT клавиатурой. Внешняя мышь практически не нужна, т.к. Emacs в терминале рассчитан на клавиатуру, а когда нужно, можно пользоваться тачскрином вместо мышки.

Использование на мобильнике

Работать с мобильного телефона в терминальном режиме на Emacs, не то, чтобы совсем невозможно, но и удобной такую работу не назовешь.

На мобильном телефоне я в основном пользуюсь системой для доступа к небольшим заметкам в режиме чтения. Использую Orgro - читалку файлов для Android. Создаю для нужных документов шорткаты на рабочем столе. И можно пользоваться.

Вот скриншот экрана мобильника с открытым в Orgro документом.

Система меню - Yadirmenu

Если на рабочей станции Linux описанного собственно достаточно для пользования, то на Android голой системой пользоваться не совсем удобно.

Для повышения удобства совершения часто повторяющихся действий действий была разработана система меню для скриптов под названием Yadirmenu.

Вкратце эта система меню превращает дерево директорий с файлами скриптов в соответствующую систему меню. Конечно на Android/Termux можно использовать Termux-widget. Но очень не хочется делать это все вручную на каждом новом устройстве. А с такой системой можно просто установить скрипт и скопировать дерево скриптов и все уже работает.

Основные черты системы меню:

  • Написана на Python

  • Имеет три режима работы:

    • Просто консольный, без каких либо зависимостей

    • Консольный с использованием библиотеки Dialog

    • Режим графического интерфейса с использованием библиотеки Tkinter

Для примера скриншот с мобильника с Yadirmenu, работающим в Termux в режиме Dialog.

А это скриншот с рабочей станции Linux с Yadirmenu, в режиме Tkinter.

Систему меню можно установить с GitHub: Yadirmenu.

Что не удалось

Для Android очень бы хотелось иметь удобный интерфейс в виде шортката на рабочем столе для вызова Termux с запущенным легковесным вьювером файлов .org ну или хотя бы less и открытым файлом и без старта экранной клавиатуры. Сделать что-то подобное не получилось, пришлось использовать Orgro. А так бы можно бы было все решить при помощи бесплатных приложений и не выходя из текстового режима.

Может у сообщества есть какие нибудь идеи?

Открытие .gpg файла в Termux

В одном из файлов системы у меня хранятся пароли. Файл зашифрован при помощи GPG. Все работает, одна проблема, при открытии файла .gpg почти невозможно ввести пароль. Чтобы ввести один символ клавишу нужно нажимать раз 5, а то и больше. Учитывая то, что при вводе паролей символы не отображаются на терминале, задача становится нетривиальной.

Варианты

Думаю в качестве хранилища вместо Git вполне можно использовать DropBox или подобные штуки, но я не пробовал, для меня все равно Git стандарт.

Ссылки

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


  1. Lazhu
    11.08.2024 18:51
    +6

    Emacs - это целая операционная система, в которой не хватает только текстового редактора ))


    1. vtb_k
      11.08.2024 18:51

      Там есть любой текстовый редактор, хватит уже эту чушь постить.


    1. dream_designer
      11.08.2024 18:51

      Шутка была в том, что не хватает хорошего текстового редактора. (Сам пользуюсь Emacs уже лет 20).


      1. pulsatrix
        11.08.2024 18:51
        +1

        не хватает хорошего текстового редактора

        Нужно просто запустить в emacs терминал и в нем запустить vim.


        1. dream_designer
          11.08.2024 18:51
          +2

          В Emacs есть https://github.com/emacs-evil/evil.


          1. EvilShadow
            11.08.2024 18:51

            https://github.com/doomemacs/doomemacs комбо


            1. ryba1967
              11.08.2024 18:51

              Если пользуетесь сами, расскажите как давно, впечатления, для чего, остаются ли рядом вимы...


              1. EvilShadow
                11.08.2024 18:51
                +2

                как давно

                Лет пять минимум, судя по репе с .dotfiles. Возможно, дольше. До этого какое-то время был spacemacs, до этого уже не помню.

                впечатления

                Не без своих проблем, но нужно понимать, что это проект практически одного автора и это bleeding edge. Если не ждать вечной стабильности, то и разочарований не будет.

                для чего

                Практически для всего, это для меня ключевой инструмент. Основные вещи - это

                - организация: org-mode + база знаний через org-roam

                - разработка: magit, разнообразные языки (в последнее время через tree-sitter режимы)

                Это всё с evil-mode, который для меня является лучшим вимом, чем сам вим.

                остаются ли рядом вимы

                На локальной машине - отредактировать что-то под рутом, это может быть быстрее, чем открывать в емаксе в tramp. На удалённых серверах vim всегда основной редактор. Мышечная память работает везде. Поэтому, допустим, helix мне не зашёл, он ломает привычные схемы использования.

                По моему мнению ценность вима - в концепции: модальность + логичные мнемонические последовательности кнопок (очень легко запомнить, что dw - это Delete Word, и очень легко сделать вывод, что Change Word - это cw). Реализовать эту концепцию можно поверх разных платформ. Emacs - вполне хороший вариант для такой базовой платформы.


                1. unreal_undead2
                  11.08.2024 18:51
                  +1

                  На удалённых серверах vim всегда основной редактор.

                  А чем тот же tramp не устраивает?


                  1. EvilShadow
                    11.08.2024 18:51
                    +2

                    Хожу на них через ssh из терминала. Когда уже там, проще запустить vim на месте, чем на локальной машине открывать нужный файл через tramp. Т.е. сперва шелл на серваке, потом редактирование. А так, чтобы понадобилось именно редактировать что-то удалённо в больших объёмах, у меня не бывает. Для такого лучше либо редактировать локально и переправлять на сервак через git, либо полноценный провижен (я использую mitamae).


                    1. unreal_undead2
                      11.08.2024 18:51
                      +1

                      Понятно, у меня на удалённой машинке разработка (редактирование/компиляция) - так что в основном tramp; если что-то по быстрому отредактировать в отдельно открытом шелле - хватает mcedit )


                  1. budnikovsergey
                    11.08.2024 18:51

                    tramp помимо тормозов на полную прокачку всего сильно гадит в bash history огроменными промптами


                    1. unreal_undead2
                      11.08.2024 18:51

                      У меня он там следов не оставляет, хотя вроде ничего специально не делал. Или имеется в виду история на локальной машине (у меня это винда, коннект в трампе через plink)?


                      1. budnikovsergey
                        11.08.2024 18:51

                        он гадит таким

                        exec env TERM='dumb' INSIDE_EMACS='29.1,tramp:2.6.0.29.1' ENV='' HISTFILE=/dev/null PROMPT_COMMAND='' PS1=///27d33a9e802653d2a0b3915807e8b3a1#$ PS2='' PS3='' /bin/sh -


                      1. unreal_undead2
                        11.08.2024 18:51

                        Не вижу такого в history на удалённой машине.

                        PS Вроде по умолчанию должен гадить в ~/.tramp_history (дефолтное значение tramp-histfile-override), но у меня и оно не создаётся, хотя переменную не менял.


              1. budnikovsergey
                11.08.2024 18:51
                +1

                я после 10 лет vim в 2015 году перебрался на emacs ради его org-mode и полностью обмазал emacs evil-mode + evil-leader на клавише space. В итоге у меня бесшовное переключение между emacs/vim на удалённых серверах/vs code + vim plugin и это очень комфортно. Я в том числе использовал spacemacs и doomemacs конфигурации как источник вдохновения по настройкам и в итоге спустя 100500 итераций получил самое комфортное конкретно мне.

                Emacs заменил почти всё, но ide-фичи я в итоге ем из IDE, чтобы не тратить время на подпилы, хотя LSP/Eglot сейчас стали очень продвинутыми и возможно IDE почти уже не нужны.

                Vim достаётся только в случаях необходимости поредактировать/пофильтровать файл в гигабайт и выше - тут его скорость вне конкуренции. Кстати, терминал vterm в emacs удобен тем, что он как и всё в Emacs может расширяться и у меня прикручены сниппеты по быстрой вставке в сессию конфигов bash/vim/tmux/алиасы и я на любой новой машине в пару кликов получаю привычные мне минимальные конфиги


          1. unreal_undead2
            11.08.2024 18:51
            +1

            Viper там был в комплекте ещё в дремучие времена.


  1. ryba1967
    11.08.2024 18:51
    +1

    https://github.com/termux/termux-widget не оно?

    Внешняя маленькая клавиатура Bluetooth


    1. evgenyk Автор
      11.08.2024 18:51

      Я использую Termux-widget. Не помню, но что-то не получалось так, как хотелось. Нужно будет совершить еще один подход.


  1. Rigidus
    11.08.2024 18:51
    +3

    Очень интересное решение, спасибо, я думал о разработке чего-то подобного, рад что теперь можно адаптировать этот подход. Интересно, работает ли внутри емакса, который внутри termux сложные штуки такие как emacs-jabber или erc или этот подход годится только для org-заметок?


    1. evgenyk Автор
      11.08.2024 18:51
      +1

      Не сталкивался с тем, что что-нибудь не работает в Emacs, но за все конечно не скажу, Emacs неисчерпаем.


      1. unreal_undead2
        11.08.2024 18:51
        +1

        Если функциональность написана на Emacs Lisp - то да, если не работает, надо просто правильно сконфигурировать или переписать под себя ) Но с системным уровнем бывают проблемы - при каком-то сочетании версий винды и Emacs клавиша Windows (использую как Hyper) никак не прокидывалась в Emacs, так что с рабочего ноута обычно заходил на линуксовую машинку под vnc и работал там. Сейчас w32-pass-lwindow-to-system работает, вернулся к использованию локального виндового Emacs и tramp для удалённого редактирования/компиляции.


  1. Tony-Sol
    11.08.2024 18:51
    +1

    Для светлой стороны силы есть orgmode и neorg


    1. evgenyk Автор
      11.08.2024 18:51

      Нужно попробовать.


  1. unreal_undead2
    11.08.2024 18:51
    +1

    Для примера скриншот с мобильника с Yadirmenu

    Похоже, вдохновлялись интерфейсом make menuconfig )


    1. evgenyk Автор
      11.08.2024 18:51

      .Похоже, вдохновлялись интерфейсом make menuconfig )

      Та же самая интерфейсная библиотека. Цель была не красота, а самая простая и распространенная библиотека.


  1. EgorBakulin
    11.08.2024 18:51
    +1

    Использовать гит для синхронизации заметок это немного как из пушки по воробьям. Есть rsync, вроде был bittorrent sync. гугл диск и дропбокс, в конце концов. С другой стороны, я понимаю, что если ты не знаешь молотки, но специалист по микроскопам, гвоздь можно и микроскопом забить.

    Куда интереснее узнать у автора, почему termux, а не нативный порт еmacs под андройд? Тот же просмотр и редактирование орг файлов там достаточно удобный.


    1. evgenyk Автор
      11.08.2024 18:51

      Насчет Git: кому-то будет удобнее rsync или Dropbox, у меня получается удобнее с Git. Обосную:

      • Система заметок, это часть моего рабочего окружения, в нем на сегодня примерно 14 проектов, это мои проектты, конфигурации, насторойки и т.д., все ведутся в Git. Поэтому мне удобнее добавить еще один проект (заметки) в мое рабочее окружение, чем испольовать что-то другое.

      • В моем рабочем окружении есть скрипт, который проверяет проекты, сделаны ли локальные коммиты, и нет ли нескачанных на локальную систему коммитов в удаленных репозиториях (Часть на моем хостинге, часть в GitHub). Список репозиториев уникален для рабочей станции. Сев за другую рабочую станцию я запускаю скрипт, он мне показывает картинку, где сделать pull, где commit/push. Сделав это я готов к работе и уверен, что ничего не забыто.

      Почему Termux, а не порт Emacs под Android:

      • Хочется иметь более-менее одинаковое рабочее окружение как на Linux так и на Android.

      • Под Termux могу более-менее использовать те же самые скрипты, настройки и софт. Тот же SSH.

      • Личное мнение. Мне нравится консольный интерфейс. Он позволяет малой кровью создавать гибкие и удобные системы и системочки под себя.

      Где-то так. Спасибо за вопрос, кстати!


  1. pecheny
    11.08.2024 18:51
    +1

    На android есть еще orgzly, он даже сам через webdav синкаться умеет. Но я один раз засинкал случайно стертую заметку и больше так не хочу.
    На телефоне сейчас MGit, там тапать для синхронизации приходится чуть больше. Удобнее было бы как в GitJournal – делает коммит-пулл-пуш по одной кнопке. Я бы использовал его вместо MGit, но в современных андроидах он пока не научился держать файлы репозитория снаружи своей песочницы.
    org-mode фантастически расширяем, поэтому про замены emacs на pc не думаю. refile, org-roam, agenda, org-super-agenda, org-ql, vulpea и пр., а так же легкость, с которой можно перегрузить любую функцию прямо у себя в конфиге благодаря лиспу.
    Единственное, тормозит он под win конечно. А запустить его с графикой под WSL у меня пока не получилось.


    1. Evgeny1503
      11.08.2024 18:51
      +1

      Использую для заметок obsidian. Для синхронизации с гитом сделал так: в термукс сделал скрипт-шорткат(который виджетом можно вынести на рабочий стол), в нем настроил синхронизацию внешнего хранилища заметок с термуксовой песочницей, а затем коммит-пул-пуш. В итоге после каких либо изменений в заметках, просто щелеаю по виджету и оно сливается в гитею. Хрень, конечно, но работает:)


  1. budnikovsergey
    11.08.2024 18:51
    +1

    Я долго перебирал всякие варианты на мобилах и каждый из них упирается в отсутствие поддержки GPG, а у меня всё закрыто им во избежание возможных неловкостей. Тут получается, что свой сервер VDS, на который я могу зайти по SSH выглядит самым эффективным способом работы с кучи устройств без граблей синхронизации и со всеми фичами. Мелкой bluetooth-клавиатуры должно быть достаточно для мобильного использования, но всё равно будет очень сильно жать, поскольку модификаторы Meta/Super/Ctrl я использую в полный рост, а андроид не даёт их пользовать с клавиатур. Ситуацию сильно облегчает то, что у меня большинство функционала на evil + evil-leader с space как leader и комбинациями вроде spc m m, но на Meta всё равно очень многое висит и нарушенные клавиатурные привычки сильно бесят.

    Когда мне нужно было переключаться между разными машинами, то я пришёл к yandex-disk + git и регулярный бэкап этого через borgbackup по cron. Получалось достаточно удачно. А потом я перешёл на один единственный ноутбук для всего и мне стало хватать git и borgbackup. А в качестве inbox у меня письма самому себе в gmail - очень быстро накликать с любого устройства на ходу и легко поддерживать непрочитанным необработанное.

    Подумываю приделать в таймер регенерацию агенды в час ночи и засылку её себе в почту для утреннего моциона


    1. evgenyk Автор
      11.08.2024 18:51

      Я долго перебирал всякие варианты на мобилах и каждый из них упирается в отсутствие поддержки GPG

      Вот этим их хорош вариантс Termux, GPG там вполне себе есть, так же как и многое другое.


      1. budnikovsergey
        11.08.2024 18:51

        с termux мне больно из-за обрезков комбинаций meta/super даже на внешней клавиатуре. Хотя, подозреваю, что классический emacs way с C-f и C-b работают хорошо :)


        1. evgenyk Автор
          11.08.2024 18:51
          +1

          Да я вроде ничего так работаю с дешовенькой внешней BT клавиатурой TECHgear. Сначала правда был ужасный ужас, пока я не заметил, что у клавиатуры переключаются режимы Android/Windows/iOS. В режиме Android не работали клаваиши. Как переключился в режим Windows, проблемы ушли.


  1. evgenyk Автор
    11.08.2024 18:51

    Открытие .gpg файла в Termux

    В одном из файлов системы у меня хранятся пароли. Файл зашифрован при помощи GPG. Все работает, одна проблема, при открытии файла .gpg почти невозможно ввести пароль. Чтобы ввести один символ клавишу нужно нажимать раз 5, а то и больше. Учитывая то, что при вводе паролей символы не отображаются на терминале, задача становится нетривиальной.

    Решил проблему.

        (require 'epa-file)
        (epa-file-enable)
    
        (setq epa-pinentry-mode 'loopback)

    Тепреь пароль вводится не в терминале, а в минибуфере Emacs. В минибуфере все работает отлично.