(c) https://github.com/corporateshark/WalCommanderThe purpose of this project is to create a multi-platform open source file manager (Windows, Linux, FreeBSD, OS X) mimicking the look-n-feel of Far Manager.
Портирование заключается в переписывании Far Manager с нуля под MIT лицензией. Жаль, что Far не MIT, а так можно было бы высокоуровневые куски кода пошарить и туда-сюда по-перетягивать. Мне кажется, пошло бы на пользу и самому Far и проекту новому.
Подумалось, что праведный путь, но потом я окстился, посмотрел поближе и понял - что-то не так.
Праведный путь для любого кросс-платформенного приложения на C++ - это не изобретать свой слой совместимости над всеми операционками, а взять уже готовый фреймворк типа Qt и сделать на нём эмуляцию консоли в граф. режиме. Почему ящитаю, что этот путь праведный? Во-первых потому, что в Linux нет консоли - там есть терминал, который до сих пор работает на потоках ввода-вывода и ANSI последовательностях (или ASCII? - не суть важно). Важно то, что для записи цветной буквочки в центр экрана этому терминалу надо распарсить магический код, который вы составили, проконтроллировать состояние терминала и обработать ещё кучу хаков сверху для всякой там обратной совместимости с железом. В общем, аппарат этот хоть и добр и стар, но по современным меркам громоздок и ненадёжен. Здесь красиво и подробно, и даже немного по теме.
Всякие там критики (типа меня, :D) типа могут сказать, что это типа "не в консоли" уже, но Far Manager уже давно в окне с графическими рюшками по бокам запускается, а не в привычном 80x25 fullscreen text mode (ну или у кого-как).
Да, понятное дело, что всякие там шеллы, баши и пр., которые работают "на фоне" под всеми окошками требуют правильного обращения. Я не эксперт и не знаю, можно ли сделать правильную трансляцию всего чего требует консольные приложения под разными системами в обход основной ОС, но учитывая то, что под мои питоновские нужды (IPyhton) виндовая консоль всё равно приводится к нужному знаменателю с помощью pyreadline, то я за правильную модель современного консольного интерфейса, даже если она по умолчанию не будет совместима вообще ни с концептами винды, ни с концептами Linux. Если есть хорошая гибкая модель для базовых вещей, без хаков и извратов, то написать адаптер под хаки и извраты - это уже дело техники.