SC: Sokhatsky Commander

Анотація


Є цілий клас файлових менеджеріву, серед яких Norton Commander, Volkov Commander (Всеволода Волкова), Demos Commander (Серія Вакуленко), Dos Navigator, Total Commander, FAR Manager. Такі програми розширюють класичні шели з історією команд додатковими можливостями: більш швидка навігація по файловій системі через курсори, розширений статус копіювання файлів, вбудовані радактори файлів. Командер Сохацького побудований згідно наступних принципів:

— Кросплатформенна робота під Windows, Linux, Mac, BSD;
— Конфігурований і без того маленьки розмір від 35 КБ до 100 КБ;
— Без залежностей, потрібно тільки C99/POSIX які є стандартом;
— Без використання ncurses та S-Lang, тільки termios;
— Модальність hex редагування та дизасемблера BE: Binary Editor;
— Модальність текстового редагування TV: Terminal Vision;
— Маленький розмір (бінарі 35KB, рядків 1KLOC, 5 С файлів на 64KB);
— Коректна передача управління терімінальним програмам;
— Базова функціональність історії команд і їх виводів;
— Для мікроконтролерів і максимальної портованості.

Вимоги і концепція

Цей редактор можна також використовувати у якості вправи яка може замінити написання консольних ігор типу Тетріса, Ксонікса, Арканоїда. Головним чином це сцена яка обмежена файловою системою, а дійство вібувається у вікні терміналу, один рядок якого виділений під ввід команд.

Колись Всеволод Волков написав Волков Командер в 15-му гуртожитку КПІ в 64КБ COM-файлі для DOS. З тих пір ніхто не робив командерів які вміщаються у цей розмір. Ми вирішили піти ще далі і зробити командер, який на 64-бітних операційних системах без залежнотей (termios) компілюється в 64КБ ELF-файл (з підтримкою UTF-8). Головна мета проєкту — зробити командер максимально портованим на різні гік-аматорські операційні системи і embeded системи реального часу.

$ ldd sc linux-vdso.so.1 (0x00007ffcbebbf000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7f3ea86000) /lib64/ld-linux-x86-64.so.2 (0x00007f7f436b2000) $ ls -l sc -rwxr-xr-x 1 tonpa tonpa 43152 Apr 3 17:38 sc

Модальність історії команд

Історія команд і їх ввід це головна задача шелів. Так як командери є розвиненими шелами, для них це не виняток — їх головна мета полягає не в навігації по файлам, як це може здатися не перший погляд, а ввід команд і зберігання їх історії разом з їх виводом в єдиному просторі.

LEFT — курсор вліво на одну позицію в рядку вводу,
RIGHT — курсор вправо на одну позицію в рядку вводу,
UP — вставити в рядок вводу попередню команду з історії,
DOWN — вставити в рядок вводу наступну команду з історії,
PGUP — прокрутити історичний стрім виводу команд на екран вверх,
PGDOWN — прокрутити історичний стрім виводу команд на екран вниз,
HOME — перевести історичний стрім виводу команд на початок,
END — перевести історичний стрім виводу команд в кінець,
INSERT — преключити режим INS,
DELETE — видалити символ під курсором,
ENTER — ввести команду і записати її історію,
BACKSPACE — видалити символ зліва від каретки,
SYMBOLS — вставити або перезаписати символ (INS режим).

Командер як розвинений шел — це середовище вводу команд.


˙

˙

Модальність панелей

Головна мета модальності панелей — запропонувати користувачу м'язову пам'ять до його файлів на його системі через Lynx Like Motion курсорну навігацію.

LEFT — перейти на папку вищу,
RIGHT — перейти на папку нижче,
UP — перемістити курсор вибору файлу вверх,
DOWN — перемістити курсор вибору файлу вниз,
PGUP — прокрутити панель з файлами на екран вверх,
PGDOWN — прокрутити панель з файлами на екран вниз,
HOME — перейти на перший файл папки,
END — перейти на останній файл папки,
ENTER — перейти в папку або запустити файл.

Командер — це шел з курсорною навігацією по файловим панелям.


˙

˙

Модальність меню

LEFT — попередній пункт головного меню,
RIGHT — наступний пункт головного меню,
UP — попередній пункт підлеглого меню,
DOWN — попередній пункт підлеглого меню,
ENTER — вибір пункту меню,
ESC — вихід з модальності меню.


˙

˙

Модальність вікон

SYMBOLS — прописні літери кнопок діалогового вікна,
ENTER — вибір кнопки,
ESC — вихід з модальності вікна.


˙

˙

Код

Репозиторій проекту github.com/BitEdits/sc опубліковано під DHARMA ліценцією, яка забороняє використання Sokhatsky Commander для росіян та всіх хто з ними повʼязаний. Для всіх інших це не відрізняється від ISC ліцензії. Присвячується Марії Бєліковій.


˙