Перейти к содержимому

RccHD

Пользователи
  • Публикации

    142
  • Зарегистрирован

  • Посещение

  • Победитель дней

    13

Сообщения, опубликованные пользователем RccHD


  1. ...

    1) Сейчас рамка в 1 пиксель, ее можно будет убрать, наверное

    2) Боюсь, может не хватить 2мб оперативки на все это, но я попробую

    3) нет такой возможности

    4) будет в стандартной реализации оконного менеджера ( настройка через конфиг )

    5) да, но на счет шапок не уверен... На маленьких экранах можно будет выключить шапку

    6) будет в стандартной реализации оконного менеджера ( настройка через конфиг )

    7) не уверен

    8) наверное

    9) наверное

    10) перетаскивание не буду делать, т.к. у нас маленькие экраны и МАЛО оперативки.

     

    Поддержки нескольких мониторов наверное не будет, т.к. для операций с gpu у меня используется двойная буфферизация и на несколько рабочих столов/экранов не хватит ОЗУ

     

    псы, ты точно пишешь ОС?

    Изначально я хотел написать оконный менеджер и все. Но как только я начал, стало понятно, что нужно делать еще виртуальную среду для каждого окна, кастомные обработчики событий, подмена _ENV, подмена require и loadfile, подмена event, component, component.gpu и много еще всего

    То, что я делаю можно назвать "почти ОС" или "надстройка над OpenOS"


  2.  

    Кстати, как там с поглощением эвентов?

    Два моих приложения висят на модеме, и слушают эвенты. Приложение А поймало modem_message. Поймает ли этот же мессадж приложение Б?

    Или оно окажется поглощено приложением А?

    Не знаю, приду домой -- проверю.

     

    Вообще вроде бы все приложения уловят ивент(вспомни пример, когда я управлял сразу двумя змейками)

     

    Если это работает для key_down, то и для модема сработает, я думаю

    • Нравится 3

  3. Тут еще можно подумать о виртуальных компонентах, т.к. некоторые приложения не нуждаются в монопольном доступе к компонентам.

     

    ...

    Да, нужно разделять компоненты на 3 типа.

     

    1) компонент, к которому нельзя получить прямой доступ ( только gpu ). Вместо gpu надо вернуть gpuProxy(уже реализован)

    2) компонент, который можно поделить между несколькими приложениями

    3) компонент, который не может быть использован сразу несколькими приложениями


  4. Нужно написать функции getComponent и freeComponent, которые будут разрешать коллизии компонент. ( когда два окна требуют одну и ту же компоненту )
    Функции должны распределять компоненты одинакового типа между окнами. Например если есть 2 редстоун-адаптера и 2 окна потребовали компонент "redstone", то каждое окно должно получить свой редстоун-адаптер
     

    local getComponent = function(window, componentType, componentAddress)
        --[[
    window - это окно, которое потребовало компоненту
    componentType - тип компоненты ( игнорировать GPU )
    componentAddress - адрес требуемой компоненты
        ]]
    
        return componentProxy
    end
    
    local freeComponent = function(componentAddress)
        -- пометить компонент <componentAddress> как незанятый
        return nil
    end
    

  5. Нормальные программы не должны слушать этот эвент, а должны просто перерисовываться используя значения размера окна.

    Если некоторые программы не будут перерисовываться, их можно будет вручную рестартнуть нажав Ctrl+R


  6. В классических тайловых менеджерах разрешают.

    Да и вообще, если какая-то программа закрывается - то остальные автоматом ресайзятся, чтобы занять экран полностью.

    Да, но такие программы должны слушать событие "screen_resized", чтобы сразу обновить свои переменные в соответствии с новым размером окна. 

     

    Поэтому я добавлю возможность ручного перезапуска (ctrl + R) для таких программ, которые не адаптированы под изменяющийся размер окна.

    • Нравится 1

  7. Вот например интересно, давать ли возможность юзеру изменять размер окна?

     

    При каждом изменении окна придется перерисовывать графику приложения. А в некоторых случаях придется перезапускать приложение, которое запущено в этом окне.

     

    Вот например если есть такой код, то придется перезапустить приложение, чтобы переменные соответствовали размеру окна:

    local w, h = require("component").getPrimary("gpu").getResolution()

  8. Какие файлы OpenOS были изменены? Я не понял, как извлечь эту информацию из репозитория, а просматривать все файлы в поисках изменений выше моих сил.

     

    Никакие файлы не были изменены. Мои версии некоторых системных компонент лежат в папке lib/proxy


  9. Вот исходники.

    https://github.com/RccHD/WinOS/tree/master/WinOS/dd243563-b2e6-4ba8-8c28-28ca278f0402/home

    Скопировать в таком виде в папку /home. Реализовано примерно 50% необходимого функционала.

    Все оптимизировать буду после того, как будет готов хоть немного доработанный вариант.

     

    Рабочий скрипт: test1.lua(змейка, матрица и проч.)

    Нерабочий -- test.lua(использует term, tty)

    Чтобы закрыть программу нужно нажать backspace. Помогает не всегда

    • Нравится 1

  10. Не нужно ничего придумывать, т.к. автор мода все уже сделал для нас.

     

    Вне майна есть множество программ для обучения программированию по типу 'черепаха'(я сам с таких программ начинал изучать программирование). Во время обучения ученик должен отдавать черепахе команды 'вперед 200; влево 90; вперед 200' и черепаха будет двигаться!

     

    В моде opencomputers есть роботы, которые по своей сути, не сложнее 'черепахи'. Есть все те же команды 'вперед, влево, вправо и т.д.'

     

    Если хочется, чтобы игроки(новички) начали программировать, нужно научить их программировать роботов. Нужно больше топиков "как управлять роботами", "как заставить робота копать шахту" и т.д.

     

    Если игрок не умеет мыслить алгоритмами и у него не получается программировать робота, значит этот мод он вряд ли освоит

    • Нравится 1

  11. Решил еще добавить возможность ставить приложения на паузу(coroutine позволяют и такое делать)

    Кроме того, что любую программу можно поставить на паузу, можно будет еще 'выключать графику' этой программы

     

    Пример использования: запустил 4 программы сразу и комп начал лагать. Взял и вырубил всем 4 программам графику, при этом все неграфические процессы продолжат работу. И все ок, комп перестанет лагать. Так как именно операции с графикой обычно тормозят систему

    Какие могут быть подводные камни?


  12. Вот это мне нравится. Человек задумал - человек запилил. =)

    А то наплодят 100500 тем, а толку - нуль. Ни одного завалящего скриншотика.

    Просто пока у меня есть этот энтузиазм я могу запилить что угодно хоть за пару дней. Постараюсь побыстрее закончить ОС пока не пропал настрой

    • Нравится 2

  13. Решил еще добавить возможность ставить приложения на паузу(coroutine позволяют и такое делать)

    Кроме того, что любую программу можно поставить на паузу, можно будет еще 'выключать графику' этой программы

     

    Пример использования: запустил 4 программы сразу и комп начал лагать. Взял и вырубил всем 4 программам графику, при этом все неграфические процессы продолжат работу. И все ок, комп перестанет лагать. Так как именно операции с графикой обычно тормозят систему

    • Нравится 3

  14. @@RccHD, делай конфиг на Lua и переключение кнопками.

    Да!!! Ты написал именно то, чем я сейчас занимаюсь. Будет офигенный кастомизируемый оконный менеджер. Можно будет свои сочетания клавиш регистрировать

×
×
  • Создать...