[Проект] Terminal Multiplexer

  1. Terminal Multiplexer (все още си няма късо име)

    Конзолно приложение, подобно на tmux. Идеята ми дойде, понеже понякога имам леки проблеми с tmux и ми се иска да имам по-богат контрол върху него. Ще работи под UNIX системи, като потенциално в бъдеще може да го развия с по-богат feature set за macOS.

    Основен интерфейс

    • създаване на нов mux по създаден план за изпълнение
    • създаване на празен mux, където ще се добавят нови прозорци при нужда
    • свързване към съществуващ mux

    Реализация

    • За алокиране на псевдотерминали и изпълнение на команди в тях ще се наложи да ползвам системни извиквания като posix_openpt и ioctl_tty. Мисля да ги викам директно през cgo, като ще се стремя да има добре обособен интерфейс, който ги абстрактва.
    • За свързване към вече съществуващ mux, ще трябва да направя клиент-сървър архитектура, която мисля че ще е удачно да може да работи в два режима - local и remote. За локален режим комуникацията ще се извършва посредством unix domain sockets, а в remote - чрез tcp.

    Бонус задачки

    Следните неща са опционални features, които може и да не присъстват в кода при представяне:

    • интерпретатор на собствен език, чрез който динамично можеш да преконфигурираш/управляваш терминалите.
    • опция за tls при комуникация между клиент/сървър.
    • специална опция на сървър, с която той ще служи като multiplexer на няколко други сървъра. (това + remote опцията би го направил доста удобен за ползване от контейнери)
  2. Здравей,

    На мен идеята ми харесва. Какви точно ще бъдат възможностите за работа с много прозорци в един "mux"?

    Също така ще е яко, ако можеш да се свързваш към съществуващ mux през браузъра :)

  3. На мен също ми харесва бих ти препоръчал да :

    • погледнеш termui за помощ с рисуване на прозорци в терминал
    • директно да сложиш tls-а - вервай ми не отнема много малко код :).
  4. @Ivan, ще се опитам да направя всички прозорци максимално конфигурируеми, а не задължително да трябва да ги сменяш постоянно (т.е. ще поддържам нещо като split-screen mode). Иначе, всеки mux представлява един виртуален терминал и ще може не само да четеш, но и да изпълняваш команди. Относно идеята за браузъра - не знам до колко пасва на тази идеология. Винаги мога да вдигна един websocket сървър и да пращам output по него, но това чупи read/write концепцията, понеже би било read-only.

    @Mihail, забравих да спомена в описанието на прокета, но се чудя между termui и gocui. Като цяло и двете биха ми вършили работа, обаче gocui изглежда по-добре поддържания вариант.

Трябва да сте влезли в системата, за да може да отговаряте на теми.