RccHD 136 Опубликовано: 16 ноября, 2017 (изменено) В этой теме будет обсуждение жутких багов, которые вы найдете в операционке WinOS(Да, я решил дать такое название)Ссылка на "Процесс разработки данной ОС" Вот немного подробностей об получившейся "операционке":Фичи1. Возможность запускать 99% программ, которые изначально были написаны под OpenOS2. Конфиг-менеджер(про него ниже)3. Сервисы(подробнее ниже)4. Возможность запуска нескольких программ одновременно. Каждая из программ будет запущена в виртуальном изолированном окружении5. Есть переключение рабочих столов6. Тайловый оконный менеджерВспомогательные программы/usr/bin/workspace Использование: workspace <N : число> Пример: workspace 3 Описание:После выполнения "workspace N" менеджер окон переключится на рабочий стол N, либо пользователю будет сообщено, что рабочего стола с номером N не существует /usr/bin/split Использование: split <опция: v или h> <N: число> Примеры: split v 50 split h 33 Описание:Эта утилита позволяет поделить текущее окно на 2 части.Если указана опция v (по вертикали):Окно будет разделено на 2 окна.Первое окно будет иметь ширину N%, а второе окно -- (100 - N)%Высота созданных окон будет равна высоте окна до выполнения команды split ( т.е. не изменится ) Если указана опция h (по горизонтали):Окно будет разделено на 2 окна.Первое окно будет иметь высоту N%, а второе окно -- (100 - N)%Ширина созданных окон будет равна ширине окна до выполнения команды split ( т.е. не изменится ) Сервисы в WinOSСервис -- это программа, которая работает в фоне и делает что-то важное ( или не важное ).Главное отличие серсиса от обычной программы -- сервисы имеют полный доступ к глобальным переменным. Сервисы могут использовать GPU, event, component напрямую, в то время как программы запущенные стандартным способом будут иметь доступ к имитированным(подмененным) версиям компонент компьютера.Сервисы в WinOS нужны для различных менюшек, таймеров, слушателей событий и прочих программ, которые по каким-то причинам должны иметь прямой доступ к компонентам компьютера.Программы-сервисы должны быть расположены в директории /WinOS/service/Пример сервиса topbar.lua: -- /WinOS/service/topbar.lua local computer = require("computer") local event = require("event") local fs = require("filesystem") local gpu = require("component").gpu local process = require("process") local state = { title = "WinOS: ", workspace = 1 } local function draw() local w, h = gpu.getResolution() local workspaceIndex = state.workspace local manager = WinOS.manager -- менеджер окон local workspaceName = manager.workspaces[workspaceIndex]:sub(1, 8) local sec = computer.uptime() local ws = "[#"..tostring(workspaceIndex)..":"..workspaceName.."]" local mem = "Free mem: "..tostring(math.floor(computer.freeMemory() / computer.totalMemory() * 100)) local function timeFormat(v) local s = tostring(math.floor(v)) if s:len() == 1 then return "0"..s else return s:sub(1,2) end end local time = "Uptime: "..timeFormat(sec / 60)..":"..timeFormat(sec % 60) -- рисует простенькую панель -- на ней будет отображено номер и название текущего раб. стола -- а также % свободной ОЗУ и время работы компа gpu.setBackground(0xddaaaa) gpu.setForeground(0x441111) gpu.fill(1, 1, w, 1, " ") gpu.set(2, 1, ws) gpu.set(w - #time - 1, 1, time) gpu.set(w - #time - #mem - 4, 1, mem.." | ") end local ltime = 0 while true do local timer = computer.uptime() if timer > ltime + 0.1 then -- перерисовка каждые 100мс local oldbg = gpu.getBackground() -- BUGFIX local oldfg = gpu.getForeground() -- BUGFIX xpcall(draw) gpu.setBackground(oldbg) -- BUGFIX gpu.setForeground(oldfg) -- BUGFIX ltime = timer end local e = {event.pull(0.3)} -- Обновить внутреннее состояние панельки -- при событии 'WinOS_workspacechange' if e[1] == "WinOS_workspacechange" then state.workspace = e[2] end end Конфиг-менеджер в WinOSМенеджер конфигов нужен для того, чтобы пользователь мог поменять поведение или внешний вид системы. В настоящей момент менеджер конфигов позволяет менять основные цвета системы, а также дает возможность регистрировать сочетания клавиш для выполнения каких-либо действий.Дефолтный конфиг в WinOS. Расположение файла /WinOS/config.lua -- /WinOS/config.lua local computer = require("computer") local myconfig = { -- Отступ 1px для /WinOS/services/topbar.lua paddingTop = 1, -- отступ сверху экрана paddingBottom = 0, -- снизу paddingLeft = 0, -- слева paddingRight = 0, -- справа focusedWindowBorder = 0x7799bb, -- цвет рамки выбранного окна windowBorder = 0xddaaaa, -- цвет рамки невыбранного окна -- имена рабочих столов workspaces = {"Main", "Games", "?????", "Special"}, onstart = function() -- Системная библиотека сервисов local service = require("WinOS.core.service") -- Запустить сервис topbar service.run("topbar.lua") -- topbar.lua будет запущен в фоне -- расположение файла: -- /WinOS/service/topbar.lua end, onevent = function(e) -- Обработчик нажатий клавиш local currentWindow = WinOS.manager.focusedWindow local kb = require("keyboard") local ctrl = kb.isControlDown() local k_R = e[1] == "key_up" and e[4] == 19 local k_G = e[1] == "key_up" and e[4] == 34 -- <Ctrl + G> чтобы Вкл/Выкл виртуальную GPU if ctrl and k_G then currentWindow.gpu_enabled = not currentWindow.gpu_enabled -- Если gpu_enabled == false, то изображение на внутреннем холсте этого окна не будет отрисовываться. -- -- Можно использовать эту настройку для уменьшения потребления ОЗУ, -- а также для того, чтобы другие программы работали быстрее WinOS.manager.updateView() end -- <Ctrl + R> чтобы "убить" текущую программу -- вместо нее будет запущен терминал if ctrl and k_R then currentWindow.kill() currentWindow.runTerm() currentWindow.gpu_enabled = true -- Включить виртуальную GPU WinOS.manager.updateView() end end } return myconfig Установка тестовой версии системыЧтобы установить WinOS v0.0.1, запустите инсталлятор с pastebin( я скопипастил инсталлятор от ECS и поменял имена переменных ) pastebin run Df9a2c01 Во избежание различных ошибок связанных с проблемами совместимости, в стандартную поставку тестовой версии WinOS включена OpenOS 1.6.7Минимальные требования при установке:1. Любая версия OpenOS2. 2МБ оперативной памяти3. Интернет-карта4. Монитор и gpu третьего уровня5. все то, что нужно для работы с OpenOS ( питание к компу, клавиатура и пр. )6. Новая версия мода OpenComputersЧтобы запустить WinOS напишите в консоли /WinOS/init.lua Недостатки текущей версии WinOS1. Очень сырая реализация2. Много скрытых багов3. Есть проблема связанная отрисовкой контента всех окон одновременно. Так как нет возможности определения оптимального момента для перерисовки изображения на экране, отрисовка присходит в цикле 15 раз в секунду.Из-за этого ОЗУ компьютера расходуется пилообразным образом. За секунду накапливается много мусора в виде неиспользуемых переменных(около 650кб для самого большого разрешения экрана). Однако сбощик мусора успевает все "почистить".Если в момент пикового потребления ОЗУ запустить "тяжелую" программу, которая использует много оперативки, то сначала будет сделана сборка мусора, а только потом будет запущена программа.Однако иногда бывают сбои: если на компе запустить отрисовщик-рандомайзер ( заполняет весь экран рандомными пикселями ), то сборщик мусора не успеет освободить ОЗУ, и произойдет краш.Вывод: не стоит запускать отрисовщики-рандмайзеры ( особенно во весь экран ). 4. Пока не реализована возможность убрать окно с экрана, чтобы остальные окна заняли свободное пространство.5. Пока еще не реализована возможность использования нескольких клавиатур и нескольких GPU6. Баги! Тысячи их!7. Из-за того, что используется виртуальная GPU ( буфер ), операция gpu.copy работает от 2 до 6 раз медленнее Однако все остальные операции, наоборот, работают в 1.5-2 раза быстрее ( из-за оптимизации отрисовки через буфер изменений )Обращение к критикам с форумаКритика приветствуется. Однако не забывайте предлагать какие-то идеи.Воспринимайте beta-версию WinOS как экспериментальную разработку, а не как полноценную операционную систему, которую я рекомендую всем использовать. (но лично я точно буду использовать WinOS при игре на серверах)Картиночки:Включение и выключение GPU: Удобство при отладке и редактировании программ. Разделил экран на области, запустил редактор кода и интерпретатор Lua -- и вот тебе IDE На всякий случай продублирую команду для скачивания инсталлятора pastebin run Df9a2c01 Изменено 16 апреля, 2018 пользователем Alex 11 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
RccHD Автор темы 136 Опубликовано: 18 ноября, 2017 Кто пробовал установить? Хочу feedback!Может я выложил нерабочий инсталлятор или ОС не запускается, и даже не узнаю об этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Appo 86 Опубликовано: 18 ноября, 2017 - Не работает вставка из буфера обмена в консоль (колёсиком мыши)- Не запускает команды Прочитав пост полностью, оказалось что нужно было инициализатор OS запустить командой /WinOS/init.lua , вбив ручками и запустив, появилось окно что и на скрине ниже, только было всё чёрное, ну я немного потыкал по клаве и нажав enter, отобразился красный текст (часики в углу работают норм) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
RccHD Автор темы 136 Опубликовано: 18 ноября, 2017 (изменено) - Не запускает команды Ты ОС не запустил. Чтобы эти команды работали, нужно запускать /WinOS/init.lua сначала Прочитав пост полностью, оказалось что нужно было инициализатор OS запустить командой /WinOS/init.lua , вбив ручками и запустив, появилось окно что и на скрине ниже, только было всё чёрное, ну я немного потыкал по клаве и нажав enter, отобразился красный текст (часики в углу работают норм) Букв не видно из-за проблем совместимости версий OpenOS. Попробую пофиксить Какая у тебя версия OpenOS? Изменено 18 ноября, 2017 пользователем RccHD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Appo 86 Опубликовано: 18 ноября, 2017 Какая у тебя версия OpenOS? OpenOS 1.6.7 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
antonn3312578859 2 Опубликовано: 10 апреля, 2020 Авторским правом защищено? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 10 апреля, 2020 20 минут назад, antonn3312578859 сказал: Авторским правом защищено? Что именно защищено? И какой именно аспект авторских прав интересует? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
antonn3312578859 2 Опубликовано: 10 апреля, 2020 8 минут назад, eu_tomat сказал: Что именно защищено? И какой именно аспект авторских прав интересует? Могу ли я использовать ваши наработки? То есть как бы взять эту ОС под основу моей, добавить пару фич и переделать графический интерфейс? Если интересно, то вот: Блокировка экрана как на Windows 2000, верхнее меню как на маке, и постараюсь добавить команды по типу sudo, функция многоюзерства и.т.д Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 10 апреля, 2020 4 минуты назад, antonn3312578859 сказал: Могу ли я использовать ваши наработки? То есть как бы взять эту ОС под основу моей, добавить пару фич и переделать графический интерфейс? Автор темы давно не появлялся здесь, но я попробую ответить за него. На computercraft.ru обычно приветствуется развитие любых наработок, необязательно своих. Но если часть кода позаимствована, то очень желательно указать автора со ссылкой на его наработки. Также в описании своего творения желательно указать, что именно было позаимствовано, что было выполнено самостоятельно, что переработано, и в чём преимущество этих доработок. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
antonn3312578859 2 Опубликовано: 10 апреля, 2020 У кого осталась операционка? Автор удалил репу на гитхабе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 11 августа, 2020 Попробовал поискать в веб-архиве. Не вышло. Хотя особо не старался, попробовал два сервиса. Было бы здорово организовать на форуме какой-то заповедник для сохранения перезаливов годных наработок 2 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LedinecMing 5 Опубликовано: 30 сентября, 2021 Очень жаль, что автор удалил/скрыл репу, хотел посмотреть наработки, такое достояние потеряли:( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах