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 опцията би го направил доста удобен за ползване от контейнери)