LINUX.ORG.RU

Сообщения wandrien

 

PC-MOS/386

Привет! Это черновик заметки, которая должна была быть опубликована в моём блоге. Но так как блог сейчас сломан, я решил опубликовать её здесь. Кто-то недавно жаловался, что на ЛОРе недостаточно ХАБРа? Ну вот вам пост в стиле хабра. Поехали.

PC-MOS/386 — это многопользовательская и многозадачная операционная система, совместимая с MS-DOS 5. Разрабатывалась компанией The Software Link до 1987-го года.

Операционная система использует защищенный режим 386 для изоляции виртуальных машин с приложениями MS-DOS. Поэтому большинство программ, использующих только документированные API MS-DOS, должны работать без проблем.

В 2017-м году исходный код был перелицензирован под GPL3 и выложен на гитхаб. Кроме исходников, репозиторий содержит образы официальных установочных дисков и сканы оригинальной документации в PDF. Также там была исправлена проблема в обработке даты модификации файлов, которая не давала открыть файлы, созданные после 2012-09-01.

Так что теперь можно вполне законно и не нарушив ни одной EULA запустить эту самобытную ОС в виртуалке или даже на реальном железе.

Я немного погонял её в qemu, и пока вопросов у меня больше, чем ответов. Почитать официальный мануал (довольно длинный и в плохом качестве скана) пока времени не было, так всё методом тыка.

Многозадачность

Многозадачность реализована в виде отдельных контейнеров с приложениями. При запуске системы пользователь попадает в первый контейнер, в котором запущена оболочка COMMAND.COM. Далее командой ADDTASK можно добавить другие задачи, в которых по умолчанию также запускается оболочка COMMAND.COM. Для каждой задачи обязательно указывать количество памяти, которое будет выделено под задачу.

Командой SWITCH можно переключаться между задачами. В справке также были упомянуты хоткеи Alt + цифра для этой же цели, но у меня они не заработали.

Можно активировать TSR-программу MONITOR, после чего через Ctrl + Space можно вызывать интерактивное меню для переключения задач и создания новых.

Правда в каждой новой задаче эту команду нужно повторять заново, чтобы в этой задаче работал хоткей Ctrl + Space. Думаю, нужно команду MONITOR прописать в AUTOEXEC.BAT, чтобы она применялась автоматически.

Команды ОС

В этой ОС команды не отвечают на ключ /? и любые другие варианты справочных ключей, которые я пробовал. Вместо этого есть интерактивная справка по команде HELP. По виду и принципу работы напоминает справку из сред разработки QBasic и Turbo C. По команде HELP .КОМАНДА (с точкой перед командой) можно попасть сразу в нужный раздел справки. (А при чём тут точка, вы можете узнать, набрав HELP .DOT.)

Справочная информация довольно куцая, в основном перечисляет ключи команд. Например для команды ADDTASK не написано, что объем выделяемой памяти нужно вводить в килобайтах. Возможно, для пользователей системы тех лет это было очевидно, но всё же. Описания каких-то общих принципов, важных для понимания работы конкретно этого клона DOS, отсутствуют. Возможно, они есть в бумажном руководстве, которое я не читал.

В командной оболочке работают стрелки влево-вправо, Backspace и Delete. Клавишей Insert можно переключать режим ВСТАВКА/ЗАМЕНА, при этом меняется форма курсора. Режим ввода по умолчанию — ЗАМЕНА, что неудобно. Чтобы ВСТАВКА была по умолчанию, нужно в AUTOEXEC.BAT вписать команду INSERT.

Я также проверил все сочетания Ctrl + буква. Ожидаемо работают Ctrl + H как аналог Backspace и Ctrl + M как аналог Enter. Ctrl + C прерывает ввод текущей команды без выполнения. Остальные сочетания просто выводят на экран символы псевдографики.

Последовательное нажатие Esc + буква в командной оболочке выполняет ту же роль, что и Ctrl + буква, только еще и наводит беспорядок на экране при этом. Сочетания Alt + что угодно или Esc + что угодно, привычные миру Unix, тут , похоже, невозможны. (В других приложениях Esc работает как самостоятельный хоткей. Например в интерактивной справке закрывает текущий раздел справки.)

История команд доступна через стрелку вверх и вниз. Между сеансами история не сохраняется.

ED — простой редактор с двумя режимами: визуальным и командным. В визуальном режиме мало отличается от любого редактора любой ОС: стандартные клавиши навигации, режим вставки и замены, хоткеи на Ctrl + буква.

Переход в командный режим по Esc. Командный режим своей лаконичностью напомнил даже не редактор vi, а редактор в составе Basic из ZX Spectrum.

В справке отсутствует клавиша для перехода обратно из командного в визуальный. Разумное предположение, что это должна быть кнопка V — оправдалось. :)

Команда ACU открывает интерактивное меню с настройками системы и встроенной справкой по каждому пункту через F1. Справка пытается быть информативной, но без мануала я всё равно не разобрался во всех настройках полностью. Выбранные настройки записываются в CONFIG.SYS.

Команды MOS и MOSADM позволяют просматривать и изменять различные параметры системы. Синтаксис команд использует подкоманды аналогично как в современных программах git, docker и т.п. Помню, что MS использовала такой же подход уже в NT-based системах для команд настройки сети, а вот были ли подобные команды с подкомандами в MS-DOS, не припомню.

Проблемы

Почему-то не работают стрелки на основном блоке клавиатуры. Стрелки на блоке NumLock работают, но пользоваться ими неудобно, так как в свою очередь на этом блоке не работает Enter. Возможно, это какая-то проблема совместимости с QEMU. Нужно будет попробовать в другой виртуалке.

Позже заметил, что кроме стрелок, такая же проблема с клавишами Insert и Delete. Они работают с Num-блока и неработают с основной части клавиатуры.

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

Упомянутые ALT + цифра для переключения между задачами не работают. Или я делаю что-то не так, или опять проблема с обработкой ввода, и система не распознаёт ALT.

Впрочем, все перечисленные проблемы и сложности могут быть связаны с тем, что я использовал версию, скачанную с какого-то сайта с коллекцией старых программ, а не чистую установку из официального образа.

Еще одна проблема — не столько даже проблема системы, сколько особенность эпохи. Ни одно из приложений системы не уводит процессор в сон между прерываниями даже когда ничего делать не нужно. (Уж хотя бы COMMAND.COM мог бы это делать по умолчанию.) Из-за этого одно ядро постоянно нагружено на 100%, и мой ноутбук показывает температуру 82 градуса. И поэтому все эксперименты с PC-MOS сопровождаются отчётливым звуком П-Ш-Ш-Ш-Ш из вентиляционной решетки.

Что дальше

Было бы интересно поэкспериментировать с этой системой, разобраться в документации и в её устройстве и, возможно, найти все куски тулчейна для сборки и покопаться в исходниках.

Учитывая, что GEM 3.13 теперь тоже опенсорсный, можно попробовать запустить на ней GUI.

Где-то мне попадалась подборка утилит наподобие grep для MS-DOS, которую было бы неплохо добавить.

Еще один интересный вопрос — установка на один раздел с FreeDOS в разные каталоги с возможностью выбора операционной системы при старте. (FreeDOS с большим уровнем совместимости с софтом или PS-MOS с меньшим уровнем совместимости, зато многозадачная.)

>>> Просмотр (724x453, 15 Kb)

 , , ,

wandrien ()

FOX Desktop (Ловите наркомана!)

Есть такой FOX Toolkit, очень давний кроссплатформенный тулкит на C++, который разрабатывается единственным разработчиком-энтузиастом. Тулкит не заброшен, хотя и не разрабатывается в активном темпе.

С самим тулкитом поставляются:

  • Файловый менеджер PathFinder.
  • Текстовый редактор Adie с простой подсветкой синтаксиса.
  • Инженерный калькулятор FOX Calculator.
  • Скриншотилка shutterbug. Вроде что особенного ждать от скриншотилки, но довольно удобная. Можно, например, с экрана анимацию записывать в gif.
  • И утилита ControlCenter, отвечающая за некоторые базовые настройки тулкита.

Есть еще двухпанельный ФМ XFE на этом тулките. Он укомплектован просмотрщиком изображений и еще одним простым редактором.

Раньше был еще проект fxdesktop — попытка сделать на этом тулките DE. Не знаю, насколько глобальные были планы у автора, но удалось сделать только часть базовых функций экранной панели, и проект был заброшен. Всё это умерло где-то к концу 00-х.

Еще есть fxprocessview — диспетчер процессов в полуработающем состоянии, тоже заброшен.

На самом деле я вспомнил о fxdesktop только потому, что у меня на машине остался неудаленный пакет с ним еще со времен до миграции с 32-битного на 64-битный Арч. (Я без переустановки ОС мигрировал; через принудительную переустановку всех системных пакетов.) Ну и тут я решил упороться, и понеслось…

Исходники fxdesktop и fxprocessview удалось найти чудом. При чем у fxdesktop нашел два архива с разным набором багов, так что там еще предстоит разбираться с отличиями.

Пока что было сделано:

У ControlCenter исправил цветовую схему, чтобы она точно имитировала цвета Windows. Потом на этом не остановился и запилил все варианты:

  • Redmond 95 (цветовая схема Windows 95, 98)
  • Redmond 2000 (цветовая схема Windows ME, 2000, а также классических стилей XP и 7)
  • Redmond XP (эта цветовая схема соответствует той, какую выбирает XP-ха, когда в ней настроена Luna, а приложение умеет только в классику.)
  • Redmond XP Olive, Redmond XP Silver (аналогично для этих вариантов оформления)
  • Redmond 7 (аналогично — если в семерке настроена Аэро, а приложение умеет только в классику, то семерка ставит такой набор цветов — вот его и имитируем)

Следом добавил цветовые схемы для классических стилей gtk2: Raleigh, Crux, Clearlooks, Industrial, ThinIce. То есть в сами эти стили FOX, разумеется, не умеет. Но при выборе соответствующих цветовых схем он, по крайней мере, использует такие же опорные цвета для окон и текста. Для Adwaita тоже добавил.

Плохая новость в том, что цветовые схемы хранятся не в конфигах, а вшиты прямо в ControlCenter. Выбранный набор цветов программа пишет в конфиг, чтобы другие приложения могли им пользоваться. А вот сами наборы — это массив в исходниках. Неудобно.

Кстати говоря, бесполезный факт, но внешний вид элементов управления практически с попиксельной точностью воспроизводит классическую Windows. Так вот по скрину окна (без рамок openbox-а) даже не знаю, можно ли отличить от Винды. Например, стиль Redmond в gtk2 сразу палится, что не винда — он совсем не pixel perfect.

Дальше я поржал с русской локализации XFE с опечатками типа «Измененять» и «Сравнитель файлов» и сел её править. Потом уперся в то, что часть бреда исправить не могу, потому что бред также в английском оригинале. (Разработчик из Франции, возможно, в этом дело.) Тут нужно будет писать письма в апстрим, ладно, это потом…

Ну и наконец я взялся за fxdesktop. Сам код компилируется без проблем спустя 10+ лет, пришлось только кривой configure-скрипт переписать. На скриншоте видно рабочий стол (оранжевый фон без ничего) и панель вверху — это всё, что есть в этой программе. Иконки на рабочем столе программа рисовать не умеет, но умеет меню по ПКМ, где планировалось что-то полезное, но почти ничего нет. На панели слева направо видно:

  • Кнопка вызова меню приложений. Не работает. С современной организацией меню приложений не пашет.
  • Кнопка «Свернуть все окна». На сворачивание работает. На разворачивание обратно ­— нет.
  • 4 кнопки-лаунчера. Вот над лаунчером сейчас работаю. Научил его отображать иконку каталога, если лаунчер ведет на каталог. Научил отображать специальные иконку каталогов, если лаунчер ведет на специальный каталог (HOME, XDG_DESKTOP_DIR, XDG_DOCUMENTS_DIR, XDG_DOWNLOAD_DIR и т.п.). Научил лаунчер распознавать и подставлять соответствующие специальные переменные окружения в путях. Научил примитивной логике загрузки иконок по имени. Пока без полной поддержки тем иконок.
  • Переключатель рабочих столов. Работает.
  • Шестеренка — выпадающее меню со списком открытых окон. Работает.
  • Часы. Работают, никаких настроек формата времени не имеют.
  • Сама панель должна быть гибко конфигурируемой (в плане добавления/удаления виджетов), но это недоделано.

Что еще видно на скриншоте. «FOX Desktop Setup» — это утилита ControlCenter. А «FOX Desktop Settings» — это настройки самого fxdesktop. Надо их какое-то более очевидно переименовать, что ли. Для скриншота открыл калькулятор и PathFinder. Текстовый редактор в композицию на мой монитор уже не влез.

PathFinder вот так по хардкору имитирует иконки то ли от 95-й винды, то ли вообще от 3.11-й. XFE пытается выглядеть чуть современнее и в свежем релизе даже обещали поддержку HiDPI.

Это никакое не DE, разумеется. Но некий смысл в этом сборнике недописанных программ всё же есть. Во-первых, их интересно дописывать. :D Во-вторых, на старом компе это должно летать. Кто-то тут у нас коллекционировал старые пни и всё такое?..

P.S. Дорогой движок форума, да какие я метки сюда поставлю? Тега «fox toolkit» у тебя, к сожалению, нет, а добавить его мне число звезд не даёт. Тега «практическая некромантия» тоже не подвезли.

>>> Просмотр (1280x1024, 210 Kb)

 , , , ,

wandrien ()

Безмятежность

Эти вечные вопросы, что тревожат умы… Что ставить? GNOME, KDE или Xfce? А может Mate или Cinnamon? И в каком дистрибутиве лучше готовят KDE? И что делать, когда что-нибудь отваливается? Не было печали — апдетов накачали…

Мой лаптоп под управлением Arch Linux обитает вдали от этих бурь. При обновлениях системы ничего не отваливается уже очень давно. А когда отваливалось, то чинилось элементарно.

Недавно пытался вспомнить, сколько лет я пользуюсь этой копией установленной системы. Так и не вспомнил точно. По одним прикидкам получается 9 лет, по другим больше 10-ти. И ни разу за эти годы система не была в состоянии «не загружается» или «не логинится». Хотя отдельные косяки, разумеется, случались.

При этом я наживую, без переустановок, мигрировал с 32 бита на 64, с grub-legacy на grub2, со скриптов на systemd. Два раза переносил запущенную систему с одного накопителя на другой. Не обновлялся по 8 месяцев, игнорируя городские легенды, что Арч не любит долгих пауз в обновлениях. И ставил кучу программ из AUR, которые согласно тем же легендам должны было непременно угробить систему.

Так что на основе многолетнего опыта эксплуатации могу сказать уверенно, что чтобы развалить Арч нужно иметь исключительно кривые лапки.

Ну а DE… А что DE?… Она не ломается, если её нет.

Точнее, она есть. Но разрабатываю я её сам и не завишу от воли других людей о том, какие фичи добавить сегодня или выпилить завтра.

Да, я так и не сделал релиза SDE. Не реализовал половину запланированных фич. И не добавил половину программ, которые должны быть в составе оболочки рабочего стола.

Но использование этого компьютера настолько не вызывает тревог, что у меня практически не было стимула что-то доделывать. Все предыдущие 5 лет я уделял много внимания чему угодно, только не проекту SDE, потому что я практически не вспоминаю о его существовании: он просто работает, выполняет свои функции, просто не мешает мне заниматься на компьютере своими делами.

На скриншоте:

Панель виджетов waterline. Сбоку настроена классическая панель задач с часами, треем, регулятором громкости и т.п. Свёрнутые окна рисуются затенёнными иконками. Также можно включить показ реального изображения окна вместо иконок. Снизу меню приложений, меню доступа к каталогам, переключатель воркспейсов и плагин multiload. В правом верхнем углу напоминание о memento mori. Убавляется каждый день. Просто напоминает, что мои шансы увидеть там «0» очень невелики. Оно реализовано shell-скриптом, потому что на панели можно создавать виджеты, управляемые внешней программой.

На рабочем столе два линка на списки дел. Больше ничего на рабочем столе обычно не держу. Если же всё-таки кладу туда что-то, то специально, чтобы оно было на глазах – чтобы не забыть. Рабочий стол управляется программой stuurman-desktop. Двойным щелчком по рабочему столу можно скрыть или показать иконки. Обои меняются в случайном порядке скриптом каждые две минуты.

В трее менеджер буфера обмена rainbow-cm. Это бывший Parcellite, из которого выкинуто процентов 60 кода, а оставшийся переписан так, чтобы всё-таки работать.

Окнами управляет openbox. Тема оформления для него составлена вручную. Всё управление окнами на хоткеях.

За глобальные хоткеи (не относящиеся к openbox) отвечает xbindkeys.

За кадром остался lilyterm — лучший из всего семейства эмуляторов терминала на базе библиотеки vte. И классика — urxvt, который я недавно наконец-то настроил, и он оказался хорош.

Запуск сеанса обеспечивается старой версией lxsession, когда её еще не успели переписать на vala. Всё никак не найду времени форкнуть её и добавить немного нужных мне фич. Видимо, не слишком они и нужны.

Больше скриншотов:

  • https://ibb.co/yBBjMvy — меню приложений классическое, по категориям.
  • https://ibb.co/tpP6cyH — рекурсивное меню каталогов и файлов, быстрый доступ ко всему нужному. Можно сразу открыть терминал в каталоге проекта и начать работу. Или открыть файловый менеджер в каталоге. Или сразу открыть файл.
  • https://ibb.co/BPqmbft — текстовый редактор qk, форк medit. Мой основной редактор.
  • https://ibb.co/cFdTykT — это редактор SynWrite, который разрабатывался by @Alexey_Tor. Редактор под оффтопик. Но прекрасно работает под wine. Поставил в качестве эксперимента. И в целом, да. Ведь почему бы и нет: если под Windows разработан софт под свободными лицензиями, то почему бы им не пользоваться?

>>> Просмотр (1366x768, 1183 Kb)

 , , , ,

wandrien ()

RSS подписка на новые темы